Physical Standby上开启flashback database实验日志

闪回数据库的主要作用是针对数据库的逻辑错误,比如用户误操作数据,drop或者truncate表之类的,如果你的数据库是一个DataGuard环境,那么在Standby上开启闪回有几点好处:

1.不影响主库性能的情况下还能使用闪回数据库的功能。
2.备库闪回后以read only方式打开然后将需要的数据导出,最后open备库继续应用日志,整个过程不影响主库运行,并且不破坏当前DataGuard环境。

有关闪回数据库的几个参数说明:
db_flashback_retention_target
该参数指定了数据库能够闪回到过去多久的时间,单位是分钟。默认值为1440,即24小时。

db_recovery_file_dest_size
该 参数指定了快速恢复区能够使用的最大容量值。该值可以根据数据库的redo产生量或者数据改动量进行设置。如果快速恢复区的使用率为100%,并且归档日 志或者备份集存在于该区域中的话,那么数据库会因为无法归档等原因而hang住。如果只保存flashback log的话,是不会因为使用率为100%而hang住的。

db_recovery_file_dest
该参数指定了快速恢复区的位置。

flashback log是循环写的,有点像redo log,它必须存放在快速恢复区下,并且空间使用是由Oracle自动管理的,如果由于flashback log产生过多或者快速恢复区使用率达到100%,则Oracle会自动收缩flashback log,这样可能无法保证能够闪回至db_flashback_retention_target值。

实验环境主库是2节点RAC,备库为单实例:
os version: Red Hat Linux 5.5 32bit
rdbms version: Oracle 11.2.0.4

下面是在Physical Standby上开启flashback的步骤:
SYS@pcendbas>alter system set db_flashback_retention_target=240;
System altered.
SYS@pcendbas>alter system set db_recovery_file_dest_size=1g;
System altered.
SYS@pcendbas>alter system set db_recovery_file_dest='+ORADATA1';
System altered.
SYS@pcendbas>select force_logging,flashback_on from v$database;

FOR FLASHBACK_ON
--- ------------------
NO NO

SYS@pcendbas>alter database force logging;
Database altered.

SYS@pcendbas>alter database flashback on ;
Database altered.

SYS@pcendbas>select force_logging,flashback_on from v$database;
FOR FLASHBACK_ON
--- ------------------
YES YES

SYS@pcendbas>select * from v$flash_recovery_area_usage;
FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------- ------------------ ------------------------- ---------------
CONTROL FILE                       1.76                         0               1
REDO LOG                              0                         0               0
ARCHIVED LOG                          0                         0               0
BACKUP PIECE                         .2                         0               1
IMAGE COPY                            0                         0               0
FLASHBACK LOG                      9.96                         0               2
FOREIGN ARCHIVED LOG                  0                         0               0

7 rows selected.

SYS@pcendbas>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.

SYS@pcendbas>select * from v$flashback_database_log;
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
-------------------- ------------------- ---------------- -------------- ------------------------
             1323031 2016-05-15 06:51:15              240      104857600                 60657664

在主库端新建3个表作为测试,分别对3个表进行delete,drop,truncate,然后闪回数据库,最后再开启redo apply.
create table test1 (id int,name varchar2(10));
insert into test1 values (1,'xx');
create table test2 (id int,name varchar2(10));
insert into test2 values (2,'xx');
create table test3 (id int,name varchar2(10));
insert into test3 values (3,'xx');
commit;

SYS@pcendbas>select sysdate from dual;
SYSDATE
-------------------
2016-05-17 21:12:47

模拟用户对3张表的误操作
SQL> delete from test1;
1 row deleted.
SQL> commit;
Commit complete.
SQL> drop table test2 purge;
Table dropped.
SQL> truncate table test3;

在standby端进行闪回,并进行数据验证
SYS@pcendbas>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@pcendbas>startup mount
ORACLE instance started.

Total System Global Area  627732480 bytes
Fixed Size                  1366444 bytes
Variable Size             511706708 bytes
Database Buffers          109051904 bytes
Redo Buffers                5607424 bytes
Database mounted.
SYS@pcendbas>flashback standby database to timestamp to_timestamp('2016-05-17 21:12:47','yyyy-mm-dd hh24:mi:ss');

Flashback complete.

SYS@pcendbas>alter database open read only;

Database altered.

SYS@pcendbas>select * from test1;

        ID NAME
---------- ----------
         1 xx

SYS@pcendbas>select * from test2;

        ID NAME
---------- ----------
         2 xx

SYS@pcendbas>select * from test3;

        ID NAME
---------- ----------
         3 xx

接下来就可以对数据进行导出,导出之后以open方式打开数据库,可以继续进行redo apply,直至与主库同步。
SYS@pcendbas>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@pcendbas>startup
ORACLE instance started.

Total System Global Area  627732480 bytes
Fixed Size                  1366444 bytes
Variable Size             511706708 bytes
Database Buffers          109051904 bytes
Redo Buffers                5607424 bytes
Database mounted.
Database opened.

SYS@pcendbas>alter database recover managed standby database using current logfile disconnect from session;

Database altered.

SYS@pcendbas>select thread#,max(sequence#) from v$archived_log where applied='YES' group by thread#;

   THREAD# MAX(SEQUENCE#)
---------- --------------
         1            139
         2            115


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26753337/viewspace-2101734/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26753337/viewspace-2101734/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值