ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [20120810]11GR2的flashback database.txt

[20120810]11GR2的flashback database.txt

原创 Linux操作系统 作者:lfree 时间:2012-08-10 11:15:10 0 删除 编辑
[20120810]11GR2的flashback database.txt

flashback database是oracle 10g下非常好的特性,它可以回滚到特定的时刻,而不需要rman之类的程序恢复.
但是10g下我想许多人选择的是不打开这个功能,除非一些特殊的情况,比如升级等情况.

而且10g仅仅在在database mount阶段才能打开flashback database这个功能:

SQL> select * from v$version ;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production

SQL> select log_mode,flashback_on,open_mode  from v$database;
LOG_MODE     FLASHBACK_ON       OPEN_MODE
------------ ------------------ ----------
ARCHIVELOG   NO                 READ WRITE

SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38759: Database must be mounted by only one instance and not open.

--很明显在10g下数据库在open后无法激活flashback database这个功能.

那么11G下呢?

SQL> select * from v$version ;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> select log_mode,flashback_on,open_mode  from v$database;
LOG_MODE     FLASHBACK_ON       OPEN_MODE
------------ ------------------ --------------------
ARCHIVELOG   NO                 READ WRITE

SQL> alter database flashback on;

Database altered.

SQL> select log_mode,flashback_on,open_mode  from v$database;
LOG_MODE     FLASHBACK_ON       OPEN_MODE
------------ ------------------ --------------------
ARCHIVELOG   YES                READ WRITE

SQL> select * from V$FLASHBACK_DATABASE_LOG;
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
-------------------- ------------------- ---------------- -------------- ------------------------
            15807763 2012-08-10 10:19:46             1440       15941632                        0

--可以发现11G2可以在数据库open的状态下打开flashback database功能.

--测试是否能正常使用!

1.建立测试数据:
create table t (id number,ins_date date,ins_scn number);

SQL> select 1,sysdate,current_scn from v$database ;
         1 SYSDATE             CURRENT_SCN
---------- ------------------- -----------
         1 2012-08-10 10:26:46    15808025

SQL> insert into t select 1,sysdate,current_scn from v$database ;

1 row created.

SQL> commit ;

Commit complete.

SQL> select sysdate,current_scn from v$database ;
SYSDATE             CURRENT_SCN
------------------- -----------
2012-08-10 10:27:06    15808081

SQL> insert into t select 2,sysdate,current_scn from v$database ;

1 row created.

SQL> commit ;

Commit complete.

SQL> select sysdate,current_scn from v$database ;
SYSDATE             CURRENT_SCN
------------------- -----------
2012-08-10 10:27:18    15808088

SQL> select * from t;
        ID INS_DATE               INS_SCN
---------- ------------------- ----------
         1 2012-08-10 10:26:57   15808073
         2 2012-08-10 10:27:13   15808084

2.测试开始:

SQL> startup mount
ORACLE instance started.

Total System Global Area 2137886720 bytes
Fixed Size                  2215064 bytes
Variable Size            1543504744 bytes
Database Buffers          587202560 bytes
Redo Buffers                4964352 bytes
Database mounted.
SQL> flashback database to scn 15808081;

Flashback complete.

SQL> alter database open read only ;

Database altered.

SQL> select * from scott.t;

        ID INS_DATE               INS_SCN
---------- ------------------- ----------
         1 2012-08-10 10:26:57   15808073

--可以发现仅仅存在1条记录.

SQL> shutdown immediate ;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 2137886720 bytes
Fixed Size                  2215064 bytes
Variable Size            1543504744 bytes
Database Buffers          587202560 bytes
Redo Buffers                4964352 bytes
Database mounted.
SQL> flashback database to scn 15808088;
Flashback complete.

SQL> alter database open read only ;
Database altered.

SQL> select * from scott.t ;
        ID INS_DATE               INS_SCN
---------- ------------------- ----------
         1 2012-08-10 10:26:57   15808073
         2 2012-08-10 10:27:13   15808084

--可以发现仅仅存在2条记录.说明这样操作没有问题.

3.关闭flashback database.
SQL> select database_role,open_mode,flashback_on,current_scn from v$database;

SQL> select database_role,open_mode,flashback_on,current_scn from v$database;

DATABASE_ROLE    OPEN_MODE            FLASHBACK_ON       CURRENT_SCN
---------------- -------------------- ------------------ -----------
PRIMARY          READ WRITE           YES                   15808929

SQL> alter database flashback off;

Database altered.

SQL> select database_role,open_mode,flashback_on,current_scn from v$database;
DATABASE_ROLE    OPEN_MODE            FLASHBACK_ON       CURRENT_SCN
---------------- -------------------- ------------------ -----------
PRIMARY          READ WRITE           NO                    15808981
总结:
--oracle总是在不经意间改进oracle数据库.看来11G越来越好用了.
--这样flashback database更加实用,可以在需要的时候打开,而不需要的时候关闭.



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

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969542