Oracle 如何实现dataguard无缝切换

Oracle 如何实现dataguard无缝切换,oracle,dataguard,Oracle,Dataguard,在12c环境上的Dataguard配置中,当我执行从主(foo)到备用(bar)的切换,然后尝试使用user@foo,我收到“ORA-011033:ORACLE正在初始化或关闭””错误,无法连接到新的主设备(条形) 现在,我知道这是因为连接仍然指向foo地址而不是bar地址,并且根据许多文章,您需要创建一个新的“虚拟”服务来处理不同的连接,以及在角色更改后停止/启动此服务的触发器 我这样做了,并且将service\u name参数设置为这个新的“虚拟”服务,切换将起作用,也可以切换回来,但在尝试

在12c环境上的Dataguard配置中,当我执行从主(
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)))

我不确定我遗漏了什么或误解了什么。谁能解释一下我可能做错了什么?如果需要,可以提供更多信息。