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