在Oracle中,将一个物理DG转换为逻辑DG有哪些步骤呢?
♣ 答案部分
1. 停用备库MRP进程
对于将物理备库切换到逻辑备库,需要在主库构建LogMiner字典及启用补充日志,因此应先停用备库的MRP进程,避免产生额外的Redo Apply。如果正在使用Broker管理现有的物理备库,应先在Broker中禁用目标数据库。
1alter database recover managed standby database cancel;
2. 主库构建LogMiner字典
这里字典表空间尽量大一点,不然逻辑DG搭建可能不能同步,另外,如果表空间出现问题就不能删除表空间,那么应该先把表空间数据移除,再删除LOGMNRTBS的数据。
在主库上运行:
1create tablespace logmnrtbs datafile '+DATA' size 100m autoextend on next 5m maxsize 2000m; 2execute dbms_logmnr_d.set_tablespace('logmnrtbs'); 3exec dbms_logstdby.build;
3. 把物理备库恢复为逻辑备库
如果物理备库是RAC,那么应该修改CLUSTER_DATABASE=FALSE,然后再以exclusive模式启动,不然会报错:“ORA-19952: database should be mounted exclusively”。
关闭物理备库的2个节点数据库,然后在节点1上执行:
1ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=SPFILE SID='*'; 2shutdown immediate; 3startup mount exclusive; 4ALTER DATABASE RECOVER TO LOGICAL STANDBY testdglg parallel 4; 5startup mount;
4. 修改备库参数、打开逻辑备用数据库、启用SQL应用
1ALTER SYSTEM SET CLUSTER_DATABASE=TRUE SCOPE=SPFILE SID='*'; 2startup force MOUNT 3ALTER DATABASE OPEN RESETLOGS; 4alter database start logical standby apply immediate; 5! ps -ef|grep -i ora_lsp 6 7----可以看到name自动改变,为读写模式,日志序列也从1开始 8set line 1000 9select inst_id,name,open_mode,database_role,protection_mode from gv$database; 10archive log list; 11 12 13---逻辑DG日志应用情况 14SET LINE 9999 PAGESIZE 9999 15COL FILE_NAME FORMAT A120 16SELECT THREAD#,SEQUENCE#, FILE_NAME, APPLIED, TIMESTAMP 17FROM DBA_LOGSTDBY_LOG D 18WHERE D.SEQUENCE# >=(SELECT MAX(SEQUENCE#)-3 FROM DBA_LOGSTDBY_LOG NB WHERE NB.THREAD#=D.THREAD# AND NB.APPLIED='YES' ) 19ORDER BY THREAD#,D.SEQUENCE#;
然后启动节点二即可。