DataGuard快照(snapshot)数据库

在Dataguard中,可以将standby备库切换为snapshot快照数据库,在切换为snapshot数据库后,备库将置于可读写的模式。可用于模拟业务功能测试。在使用完成之后,可以将快照数据库切换为物理备库。在此期间,备库可以接受主库传输过来的日志,但是不能应用日志,需要处于物理备库的时候才可以应用。

(一)将物理备库切换为快照数据库
1.备库配置快速恢复区

alter system set db_recovery_file_dest_size=10g;
alter system set db_recovery_file_dest='/u01/app/oracle/fast_recovery_area/adgdb';


2.备库关闭redo apply应用

--在关闭之前,备库的开启状态为:READ ONLY WITH APPLY
--关闭redo apply后,备库的开启状态为:READ ONLY
alter database recover managed standby database cancel;

 

3.切换为快照数据库

--执行转换为快照数据库后,备库的开启状态为: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 lijiaman.test01;

    ID NAME
---------- --------------------
     1 lijiaman
     2 gegeman
     3 man
     4 a

SQL> insert into lijiaman.test01 values(5,'b');
1 row created.

SQL> commit;
Commit complete.
复制代码


(二)将快照数据库切回物理备库
1.关闭备库,将备库启动到mount状态

shutdown immediate
start mount


2.执行切回命令

alter database convert to physical standby;


3.再次关闭备库,启动到open状态,开启实时应用

复制代码
--关闭备库
shutdown immediate

--启动数据库到open状态
startup

--开始备库实时应用
alter database recover managed standby database using current logfile disconnect;
复制代码


4.查看备库状态

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

 

5.这个时候,再回去查看test01表信息,发现处于snapshot数据库时insert的数据已经不存在

复制代码
SQL> select * from lijiaman.test01;

    ID NAME
---------- --------------------
     1 lijiaman
     2 gegeman
     3 man
     4 a
复制代码

 

【完】

posted @   gegeman  阅读(877)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示