我們在基於物理standby的基礎上搭建邏輯備庫過程過程中,在執行:
alter database recover to logical standby READDB;
我們的業務是passport應用,無法停止或者停掉非常麻煩,總之,藥不能停。
經過摸索,我們得到一個經驗:需要等到MRP應用日志到跟主庫一致,此時執行該命令才不會hang住。
具體流程大概是這樣的:
1. 開啟實時日志應用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION在這個過程中,我們可以邊查看日志應用情況,在備庫執行如下命令:
SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
在主庫執行:
archive log list
select max(sequence#) from v$archived_log;
2. 接著,我們需要在備庫停掉MRP進程:
alter database recover managed standby database cancel;
ERROR at line 1: ORA-16136: Managed Standby Recovery not active
3. 然後,我們可以在主庫生成數據字典
exec dbms_logstdby.build;
alter system archive log current;
alter database recover to logical standby READDB;
Good Luck!