racle 11g dataguard已经能够临时打开可读写备库,打开后能够进行更改,作压力测试等工做,完成后不用进行从新恢复备库直接能够将角色更改成standby继续应用管理日志。sql
理备库的初始状态是正在应用日志,咱们执行下面的命令生成快照数据库,数据库
SQL> alter database convert to snapshot standby;oracle
alter database convert to snapshot standby测试
*rest
ERROR at line 1:日志
ORA-38784: Cannot create restore point 'SNAPSHOT_STANDBY_REQUIRED_11/23/201210:49:53'.blog
ORA-01153: an incompatible media recovery is activeget
看到了报错信息,不过从报错信息中,咱们也能看到,实际上所谓的快照数据库,Oracle是利用了闪回数据库的功能,首先他要生成一个restore point,flash
也就是未来闪回数据库的起点。it
正确的操做是中止日志应用,而后把数据库转换成快照数据库
SQL> recover managed standby database cancel;
Media recovery complete.
SQL> alter database convert to snapshot standby;
Database altered.
SQL> select status from v$instance;
STATUS
MOUNTED
SQL> alter database open;
Database altered.
查看数据库状态,是以读写的方式打开的,而且数据库是快照数据库的状态
SQL> select name,open_mode,database_role,flashback_on from v$database;
NAME OPEN_MODE DATABASE_ROLE FLASHBACK_ON
---------
DB01 READ WRITE SNAPSHOT STANDBY RESTORE POINT ONLY
接下来就能够作操做了,若是有压力测试需求在这个状态下能够进行
SQL> create table d(x int,y char(3));
Table created.
SQL> insert into d values(100,'t');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t;
no rows selected
SQL> select * from d;
X Y
---
100 t
若是要改回原来的物理备库状态,要关闭数据库,在mount状态下执行命令
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 634679296 bytes
Fixed Size 2231032 bytes
Variable Size 411043080 bytes
Database Buffers 218103808 bytes
Redo Buffers 3301376 bytes
Database mounted.
SQL> alter database convert to physical standby;
Database altered.
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 634679296 bytes
Fixed Size 2231032 bytes
Variable Size 411043080 bytes
Database Buffers 218103808 bytes
Redo Buffers 3301376 bytes
Database mounted.
Database opened.
数据库状态已是物理备库,固然刚才作的操做也看不到了,好比说D表
SQL>select name,open_mode,database_role,flashback_on from v$database;
NAME OPEN_MODE DATABASE_ROLE FLASHBACK_ON
---------
DB01 READ ONLY PHYSICAL STANDBY NO
SQL> select * from d;
select * from d
*
ERROR at line 1:
ORA-00942: table or view does not exist
开启日志应用模式
SQL> recover managed standby database disconnect;
Media recovery complete.
SQL> select name,open_mode,database_role,flashback_on from v$database;
NAME OPEN_MODE DATABASE_ROLE FLASHBACK_ON
---------
DB01 READ ONLY WITH APPLY PHYSICAL STANDBY NO
在主库上:
SQL> create table d(x number);
Table created.
SQL> insert into d values(1);
1 row created.
SQL> commit;
Commit complete.
SQL> alter system switch logfile;
System altered.
回到备库:
SQL> select * from d;
X
1