在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#;
然后启动节点二即可。