【DG】之 Snapshot standby模式

Oracle物理备库互转快照备库.txt

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

结束!!!!!!!

请使用浏览器的分享功能分享到微信等