#逻辑备库配置
配置逻辑备库需要先创建物理备库,然后执行相关操作将其转换为逻辑备库。
# 步骤1:创建备库
请参考一主一备部署中的备库准备操作创建备库,此时该备库为物理备库状态。
# 步骤2:新增STANDBY LOG文件
standby log文件用于存储逻辑备库业务产生的redo日志,在构建逻辑备库前需要规划standby log文件的空间占用、文件路径以及数量。
每个逻辑备库至少需要3个standby log文件,如果当前环境中已经配置了standby log文件则可跳过本操作。
在主库执行如下语句,创建standby log文件:
ALTER DATABASE ADD STANDBY LOGFILE 'REDO11' SIZE 128M;
ALTER DATABASE ADD STANDBY LOGFILE 'REDO12' SIZE 128M;
ALTER DATABASE ADD STANDBY LOGFILE 'REDO13' SIZE 128M;
Copied!
# 步骤3:停止备库的redo回放
物理备库在转换为逻辑备库前,请停止物理备库上的redo回放,以免后续构建逻辑备库操作被物理回放。
在备库执行如下语句停止物理回放:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
Copied!
# 步骤4:执行build操作
在主库执行BUILD操作:
执行DBMS_LOGSTDBY.BUILD过程等待所有活跃事务完成,在主库执行长时间运行的事务会影响该命令的执行效率。
执行DBMS_LOGSTDBY.BUILD过程后会自动开启库级附加日志,附加日志的模式为PRIMARY KEY,生效的表类型为HEAP。
EXECUTE DBMS_LOGSTDBY.BUILD;
Copied!检查确认build操作已同步到备库。
-- 查看备库的状态以及同步状态。 SELECT DEST_ID, CONNECTION, STATUS, SYNCHRONIZED FROM V$ARCHIVE_DEST_STATUS;
Copied!如果备库已处于同步状态(SYNCHRONIZED为TRUE),则说明build操作已同步到备库。否则,需获取当前的日志刷盘点,等待备库同步到该刷盘点。
-- 获取主库当前的日志刷盘点 SELECT FLUSH_POINT FROM V$DATABASE; -- 等待备库日志同步到该日志点 -- 获取当前备库的日志接收点 SELECT DEST_ID, CONNECTION, STATUS, RECEIVED_SEQ#, RECEIVED_LFN FROM V$ARCHIVE_DEST_STATUS;
Copied!
# 步骤5:转换为逻辑备库
重启备库至mount阶段,并执行相关语句将其转换为逻辑备库。
-- 关闭数据库
SHUTDOWN IMMEDIATE;
-- 启动数据库
yasdb mount &
-- 执行切换操作
ALTER DATABASE RECOVER TO LOGICAL STANDBY KEEP IDENTITY;
-- open数据库
ALTER DATABASE OPEN;
Copied!
操作完成后,该备库的角色将变为LOGICAL STANDBY,且DBID也会发生变化。
# 步骤6:开启SQL Apply
逻辑备库默认不启用逻辑回放功能,需在备库执行如下语句,开启逻辑回放(即将redo数据应用到逻辑备库)。
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
Copied!