Oracle 如何实现dataguard无缝切换
在12c环境上的Dataguard配置中,当我执行从主(Oracle 如何实现dataguard无缝切换,oracle,dataguard,Oracle,Dataguard,在12c环境上的Dataguard配置中,当我执行从主(foo)到备用(bar)的切换,然后尝试使用user@foo,我收到“ORA-011033:ORACLE正在初始化或关闭””错误,无法连接到新的主设备(条形) 现在,我知道这是因为连接仍然指向foo地址而不是bar地址,并且根据许多文章,您需要创建一个新的“虚拟”服务来处理不同的连接,以及在角色更改后停止/启动此服务的触发器 我这样做了,并且将service\u name参数设置为这个新的“虚拟”服务,切换将起作用,也可以切换回来,但在尝试
foo
)到备用(bar
)的切换,然后尝试使用user@foo
,我收到“ORA-011033:ORACLE正在初始化或关闭”
”错误,无法连接到新的主设备(条形)
现在,我知道这是因为连接仍然指向foo
地址而不是bar
地址,并且根据许多文章,您需要创建一个新的“虚拟”服务来处理不同的连接,以及在角色更改后停止/启动此服务的触发器
我这样做了,并且将service\u name
参数设置为这个新的“虚拟”服务,切换将起作用,也可以切换回来,但在尝试使用sqlplus时user@foo
它抛出ORA-011033
。触发器是无用的,服务继续在foo和bar上运行,因为设置该参数似乎会覆盖触发器尝试执行的任何操作
现在,如果我不定义该参数,我的切换工作正常,触发器完成它们的工作,当我sqlplus时user@foo
,它将正确地将我重定向到栏
地址。但是,当我尝试切换回foo
时,我在DG警报日志中收到以下信息:
检测到重做传输问题:重做传输到数据库foo有以下错误:ORA-16047:目标设置和目标数据库之间的DGID不匹配 08/05/2016 16:01:02 连接初始化失败。 预期目标数据库\唯一\名称为foo。 实际到达的数据库是bar 无法将消息发送到站点foo。错误代码是ORA-16642。 Data Guard Broker状态摘要:
类型名称严重性状态 配置foo_dg警告ORA-16607 主数据库条错误ORA-16778 物理备用数据库foo错误ORA-16642 关于FOO: log\u archive\u dest\u 2='service=“bar”','ASYNC NOAFFIRM delay=0可选 压缩=禁用最大故障=0最大连接=1重新打开=300 db_unique_name=“bar” net_timeout=30','valid_for=(联机_日志文件,所有_角色)' fal_client='foo'fal_server='bar' 酒吧: log\u archive\u dest\u 2='service=“foo”,异步NOAFFIRM延迟=0可选 压缩=禁用最大故障=0最大连接=1重新打开=300 db_unique_name=“foo”有效_for=(在线_日志文件,所有_角色)' fal_client='bar'fal_server='foo' LDAP中的条目: 傅: (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=foo_home)(PORT=15940))(ADDRESS=(PROTOCOL=TCP)(HOST=bar_home)(PORT=15940))(CONNECT_DATA=(SERVICE_NAME=virtual_foo)(故障切换模式=(TYPE=SESSION)(METHOD=basic))) 酒吧: (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=bar_home)(PORT=15940))(CONNECT_DATA=(SERVICE_NAME=bar))) 我不确定我遗漏了什么或误解了什么。谁能解释一下我可能做错了什么?如果需要,可以提供更多信息。。