概述
在 Oracle Data Guard 环境中,可以将物理备库切换为快照数据库(Snapshot Standby),以便在备库上进行读写操作,用于模拟业务功能测试。在使用完成后,可以将快照数据库切换回物理备库。在此期间,备库可以接受主库传输过来的日志,但不能应用日志,需要在切换回物理备库后才能应用日志。
(一)将物理备库切换为快照数据库
-
备库配置快速恢复区
alter system set db_recovery_file_dest_size=10g; alter system set db_recovery_file_dest='/u01/app/oracle/fast_recovery_area/adgdb';
-
备库关闭 redo apply 应用
-- 在关闭之前,备库的开启状态为:READ ONLY WITH APPLY -- 关闭 redo apply 后,备库的开启状态为:READ ONLY alter database recover managed standby database cancel;
-
切换为快照数据库
-- 执行转换为快照数据库后,备库的开启状态为:MOUNTED alter database convert to snapshot standby;-- 开启备库后,数据库开启状态为:READ WRITE alter database open;
-
查看状态
SQL> select open_mode, database_role, protection_mode, protection_level from v$database;OPEN_MODE DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL -------------------- ---------------- -------------------- -------------------- READ WRITE SNAPSHOT STANDBY MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
-
在快照数据库上进行读写操作
SQL> select * from scott.test01;ID NAME ---------- --------------------1 1111112 2222223 3333334 aaaSQL> insert into scott.test01 values(5, 'bbb'); 1 row created.SQL> commit; Commit complete.SQL> select * from scott.test01;ID NAME ---------- --------------------1 1111112 2222223 3333334 aaa5 bbb
(二)将快照数据库切回物理备库
-
关闭备库,将备库启动到 mount 状态
shutdown immediate startup mount
-
执行切回命令
alter database convert to physical standby;
-
再次关闭备库,启动到 open 状态,开启实时应用
-- 关闭备库 shutdown immediate-- 启动数据库到 open 状态 startup-- 开始备库实时应用 alter database recover managed standby database using current logfile disconnect;
-
查看备库状态
SQL> select name, open_mode, database_role, protection_mode from v$database;NAME OPEN_MODE DATABASE_ROLE PROTECTION_MODE --------- -------------------- ---------------- -------------------- ADGDB READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM AVAILABILITY
-
验证数据变化
-- 这个时候,再回去查看 test01 表信息,发现处于 snapshot 数据库时 insert 的数据已经不存在 SQL> select * from scott.test01;ID NAME ---------- --------------------1 1111112 2222223 3333334 aaa
总结
通过上述步骤,可以在 Oracle Data Guard 环境中将物理备库切换为快照数据库,进行读写操作,然后再切换回物理备库。这样可以在不影响主库的情况下,进行各种测试和验证工作。切换回物理备库后,所有在快照数据库期间进行的写操作将被丢弃,备库将继续应用主库传输过来的日志。