2

在 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)))

我不确定我错过了什么或误解了什么。谁能阐明我可能做错了什么?如果需要,可以提供更多信息。

4

0 回答 0