加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用flashback database 特性将dataguard 的standby 库激活为rea

发布时间:2020-12-15 06:13:12 所属栏目:百科 来源:网络整理
导读:可以利用 10g 的 flashback 特性来实现激活为 standby 库为 read write 状态, standby 库处于 read write 状态时可以在 standby 库上进行一些不能在主库上进行的 测试 工作,在完成之后可以将 read write 状态 stnadby 库 flashback 到原来的 recover mount

可以利用10gflashback特性来实现激活为standby库为read write状态,standby库处于read write状态时可以在standby库上进行一些不能在主库上进行的测试工作,在完成之后可以将read write状态stnadbyflashback到原来的recover mount状态,下图为操作原理过程:


下为实验过程:

一.从库:

1.?设置flashback区域:

要使用这个特性就必须在standby库中设置flashback

在我的库中:

SQL> show parameter DB_RECOVERY_FILE_DEST

NAME????????????????????????????????TYPE???????VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest???????????????string?????/dg_flashback

db_recovery_file_dest_size??????????big integer??980M

?

2.?Standby库取消redo日志的应用并创建一个数据库flashback?

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Database altered.

?

SQL> CREATE RESTORE POINT before_application_test GUARANTEE FLASHBACK

?2?DATABASE;

Restore point created.

?

?主库

1.归档当前的日志文件,可从库确认这个flackbackSCN

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

System altered.

2.停止主库的日志传到从库:

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER;

System altered.

?

三.激活为standby库为read write状态

1.激活为standby

SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;

Database altered.

?

2,如果standb处于readonly状态时,强制重启到mount

SQL> STARTUPMOUNTFORCE;

ORA-32004: obsolete and/or deprecated parameter(s) specified

ORACLE instance started.

Total System Global Area?218103808 bytes

Fixed Size?????????????????1260984 bytes

Variable Size?????????????83886664 bytes

Database Buffers?????????130023424 bytes

Redo Buffers???????????????2932736 bytes

Database mounted.

?

3.standb改成?performance保护模式,并打开数据到read write状态,主库并不受standby库的影响,可以按正常的方式进行操作:

SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

Database altered.

?

SQL> ALTER DATABASE OPEN;

?

Database altered.

SQL> select open_mode from v$database;

?

OPEN_MODE

----------

READ WRITE

这时可以进行各种test工作:我在主库建表t_flash,standby库建了一张f_t表:可以在flashback之后看他是否还存在:

?

在主库建:

SQL> create table t_flash(name char(30));

Table created.

SQL> insert into?t_flash values('just a test');

1 row created.

?

SQL> commit;

Commit complete.

从库建表f_t

SQL> create table f_t( a int);

?

Table created.

?

SQL> insert into f_t values(34);

?

1 row created.

?

SQL> commit;

?

Commit complete.

?

?

三.将standbyflashbackbefore_application_tes时的SCN并重新置为physical standby role

1从库:

SQL> STARTUP MOUNT FORCE;

ORA-32004: obsolete and/or deprecated parameter(s) specified

ORACLE instance started.

?

Total System Global Area?218103808 bytes

Fixed Size?????????????????1260984 bytes

Variable Size?????????????92275272 bytes

Database Buffers?????????121634816 bytes

Redo Buffers???????????????2932736 bytes

Database mounted.

SQL> FLASHBACK DATABASE TO RESTORE POINT before_application_test;

?

Flashback complete.

?

SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;

?

Database altered.

?

SQL> STARTUP MOUNT FORCE;

ORA-32004: obsolete and/or deprecated parameter(s) specified

ORACLE instance started.

?

Total System Global Area?218103808 bytes

Fixed Size?????????????????1260984 bytes

Variable Size????????????100663880 bytes

Database Buffers?????????113246208 bytes

Redo Buffers???????????????2932736 bytes

Database mounted.

SQL> select * from v$archive_gap;??

?

no rows selected

?

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

?

Database altered.

?

?

2.主库

?SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;

?

四.检查在standby库被激活时的分别在pirmary,standby库上建的表,此时在standby库中是否存在:

SQL> alter database recover managed standby database cancel;

Database altered.

?

SQL> alter database open read only;

?

Database altered.

---从库的表已经不存在:

SQL> select * from f_t;

select * from f_t

?????????????*

ERROR at line 1:

ORA-00942: table or view does not exist

?

主库的表已经通过archivelogapplystandby库中已经可以查询到了:

SQL> select * from t_flash;

?

NAME

------------------------------

just a test

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读