在 12c 环境中的 Dataguard 配置中,当我执行从主 ( foo
) 到备用 ( bar
) 的切换,然后尝试 sqlplus in with 时user@foo
,我收到“ ORA-011033: ORACLE initialization or shutdown in progress
”错误,而不是能够连接到新的主 (bar)。
现在,我知道这是因为连接仍然指向foo
地址而不是bar
地址,并且根据许多文章,您需要创建一个新的“虚拟”服务来处理不同的连接,以及一个停止的触发器/在角色更改后启动此服务。
我这样做了,并且将service_names
参数设置为这个新的“虚拟”服务,切换将起作用并且也可以切换回来,但是当尝试使用它的 sqlplus 时user@foo
会抛出ORA-011033
. 触发器没用,服务继续在 foo 和 bar 上运行,因为似乎拥有该参数集会覆盖触发器尝试执行的任何操作。
现在,如果我不定义该参数,我的切换工作正常,触发器完成他们的工作,当 I 时sqlplus user@foo
,它会正确地将我重定向到该bar
地址。但是,当我尝试切换回 时foo
,我在 DG 警报日志中收到以下信息:
Redo transport problem detected: redo transport to database foo has the following error:
ORA-16047: DGID mismatch between destination setting and target database
08/05/2016 16:01:02
Initialization of connection failed.
Expected destination db_unique_name is foo.
Database actually reached is bar
Failed to send message to site foo. Error code is ORA-16642.
Data Guard Broker Status Summary:
Type Name Severity Status
Configuration foo_dg Warning ORA-16607
Primary Database bar Error ORA-16778
Physical Standby Database foo Error ORA-16642
在 FO 上:
log_archive_dest_2='service="bar"','ASYNC NOAFFIRM 延迟=0 可选压缩=禁用 max_failure=0 max_connections=1 重新打开=300 db_unique_name="bar" net_timeout=30','valid_for=(online_logfile,all_roles)' fal_client= 'foo' fal_server='bar'
酒吧:
log_archive_dest_2='service="foo", ASYNC NOAFFIRM 延迟=0 可选压缩=禁用 max_failure=0 max_connections=1 重新打开=300 db_unique_name="foo" valid_for=(online_logfile,all_roles)' fal_client='bar' fal_server='foo'
LDAP 中的条目: foo:
(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)(FAILOVER_MODE=(TYPE=SESSION)(METHOD=basic))))
酒吧:
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=bar_home)(PORT=15940)))(CONNECT_DATA=(SERVICE_NAME=bar)))
我不确定我错过了什么或误解了什么。谁能阐明我可能做错了什么?如果需要,可以提供更多信息。