Snapshot standby 模式,即在备库进行,开启此模式时为了在备库进行一些测试操作,而又不
留存在数据库中,当备库切换回physical standby物理备库时,
之前在snapshot standby模式进行的测试将会被丢弃。
Oracle 11g 物理 Data Guard 之 Snapshot Standby 数据库功能
注意: 1. 需首先 确认备库已经 结束日志应用 了!
2.snapshot
standby
模式时
,闪回数据库功能可开启也也可关闭,
默认是关闭状态;
但必须设置快速恢复区大小及路径
——查询状态:(本次是
不开闪回数据库功能)
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO
SQL> select database_role,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
---------------- --------------------
PHYSICAL STANDBY READ ONLY
——进行切换到 snapshot standby 模式:
SQL> alter database convert to snapshot standby; (是在 open 状态下操作的)
Database altered.
——再次查看状态:(变为 mount )
SQL> select database_role,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
---------------- --------------------
SNAPSHOT STANDBY MOUNTED
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
RESTORE POINT ONLY
——最后启动数据库至 open 下(已经变为 read write ,可以做任何测试操作了)
SQL> alter database open;
Database altered.
SQL> select database_role,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
---------------- --------------------
SNAPSHOT STANDBY READ WRITE
SQL>
此时可以查看 alert 日志,会发现数据库创建了一个 guaranteed restore point ,确保我们切回主备,可应用日志。
=========================================================================
alter database convert to snapshot standby
Starting background process RVWR
Thu Oct 20 19:52:16 2016
RVWR started with pid=53, OS id=10342
Allocated 3981120 bytes in shared pool for flashback generation buffer
Created guaranteed restore point SNAPSHOT_STANDBY_REQUIRED_10/20/2016 19:52:16
Killing 3 processes with pids 10290,10294,10298 (all RFS) in order to disallow current and future RFS connections. Requested by OS process 10039
All dispatchers and shared servers shutdown
==========================================================================
——此时备库已经打开,可以做任何测试,测试如下:
SQL> show user
USER is "SYS"
SQL> create table hr.st(x int);
Table created.
SQL> insert into hr.st values(1);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from hr.st;
X
----------
1
—— 恢复物理备库,数据库需要在 mount 下完成切换:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> startup mount;
ORACLE instance started.
Total System Global Area 830930944 bytes
Fixed Size 2257800 bytes
Variable Size 679480440 bytes
Database Buffers 146800640 bytes
Redo Buffers 2392064 bytes
Database mounted.
SQL>
SQL> alter database convert to physical standby ;
Database altered.
切换完成后,数据库需要再次重启至 mount
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL>
SQL> startup mount;
ORACLE instance started.
Total System Global Area 830930944 bytes
Fixed Size 2257800 bytes
Variable Size 679480440 bytes
Database Buffers 146800640 bytes
Redo Buffers 2392064 bytes
Database mounted.
——应用日志,使同步:
SQL> recover managed standby database using current logfile disconnect from session;
Media recovery complete.
SQL>
SQL> select database_role,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
---------------- --------------------
PHYSICAL STANDBY MOUNTED
SQL> recover managed standby database cancel;
Media recovery complete.
SQL>
SQL> alter database open;
Database altered.
SQL> select database_role,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
---------------- --------------------
PHYSICAL STANDBY READ ONLY
——最后验证 snapshot standby 模式下创建的表(正常是不存在的)
SQL> select * from hr.st;
select * from hr.st
*
ERROR at line 1:
ORA-00942: table or view does not exist
结束!!!!!!!