ITPub博客

首页 > 数据库 > Oracle > oralce 10g闪回学习(一)

oralce 10g闪回学习(一)

原创 Oracle 作者:genweihua 时间:2012-02-10 16:42:51 0 删除 编辑
           oracle的闪回功能主要是为了提高数据恢复的时间,提高DBA的工作效率。自从9i引入闪回功能以后,oracle一直在加强闪回的功能。主要的功能有闪回查询、闪回删除、闪回版本查询、闪回事物查询、闪回表查询、闪回数据库、闪回函数。
        为了学习闪回,参照oracle base 网站上oracle 10g的例子,做了以下的实验:
一、闪回查询

SQL> conn test/test@study
已连接。
SQL> desc v$database
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------

 DBID                                               NUMBER
 NAME                                               VARCHAR2(9)
 CREATED                                            DATE
 RESETLOGS_CHANGE#                                  NUMBER
 RESETLOGS_TIME                                     DATE
 PRIOR_RESETLOGS_CHANGE#                            NUMBER
 PRIOR_RESETLOGS_TIME                               DATE
 LOG_MODE                                           VARCHAR2(12)
 CHECKPOINT_CHANGE#                                 NUMBER
 ARCHIVE_CHANGE#                                    NUMBER
 CONTROLFILE_TYPE                                   VARCHAR2(7)
 CONTROLFILE_CREATED                                DATE
 CONTROLFILE_SEQUENCE#                              NUMBER
 CONTROLFILE_CHANGE#                                NUMBER
 CONTROLFILE_TIME                                   DATE
 OPEN_RESETLOGS                                     VARCHAR2(11)
 VERSION_TIME                                       DATE
 OPEN_MODE                                          VARCHAR2(10)
 PROTECTION_MODE                                    VARCHAR2(20)
 PROTECTION_LEVEL                                   VARCHAR2(20)
 REMOTE_ARCHIVE                                     VARCHAR2(8)
 ACTIVATION#                                        NUMBER
 SWITCHOVER#                                        NUMBER
 DATABASE_ROLE                                      VARCHAR2(16)
 ARCHIVELOG_CHANGE#                                 NUMBER
 ARCHIVELOG_COMPRESSION                             VARCHAR2(8)
 SWITCHOVER_STATUS                                  VARCHAR2(20)
 DATAGUARD_BROKER                                   VARCHAR2(8)
 GUARD_STATUS                                       VARCHAR2(7)
 SUPPLEMENTAL_LOG_DATA_MIN                          VARCHAR2(8)
 SUPPLEMENTAL_LOG_DATA_PK                           VARCHAR2(3)
 SUPPLEMENTAL_LOG_DATA_UI                           VARCHAR2(3)
 FORCE_LOGGING                                      VARCHAR2(3)
 PLATFORM_ID                                        NUMBER
 PLATFORM_NAME                                      VARCHAR2(101)
 RECOVERY_TARGET_INCARNATION#                       NUMBER
 LAST_OPEN_INCARNATION#                             NUMBER
 CURRENT_SCN                                        NUMBER
 FLASHBACK_ON                                       VARCHAR2(18)
 SUPPLEMENTAL_LOG_DATA_FK                           VARCHAR2(3)
 SUPPLEMENTAL_LOG_DATA_ALL                          VARCHAR2(3)
 DB_UNIQUE_NAME                                     VARCHAR2(30)
 STANDBY_BECAME_PRIMARY_SCN                         NUMBER
 FS_FAILOVER_STATUS                                 VARCHAR2(21)
 FS_FAILOVER_CURRENT_TARGET                         VARCHAR2(30)
 FS_FAILOVER_THRESHOLD                              NUMBER
 FS_FAILOVER_OBSERVER_PRESENT                       VARCHAR2(7)
 FS_FAILOVER_OBSERVER_HOST                          VARCHAR2(512)

SQL> select current_scn,systimestamp from v$database;

CURRENT_SCN
-----------
SYSTIMESTAMP
---------------------------------------------------------------------------
     897516
10-2月 -12 04.24.22.656000 下午 +08:00
已用时间:  00: 00: 00.25
SQL> select current_scn,to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss') from v$dat
abase;

CURRENT_SCN TO_CHAR(SYSTIMESTAM
----------- -------------------
     897545 2012-02-10 16:25:30

已用时间:  00: 00: 00.50
SQL> insert into flashback values('1');

已创建 1 行。

已用时间:  00: 00: 00.06
SQL> insert into flashback values('2');

已创建 1 行。

已用时间:  00: 00: 00.00
SQL> insert into flashback values('3');

已创建 1 行。

已用时间:  00: 00: 00.01
SQL> select current_scn,to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss') from v$dat
abase;

CURRENT_SCN TO_CHAR(SYSTIMESTAM
----------- -------------------
     897597 2012-02-10 16:26:28

已用时间:  00: 00: 00.04
SQL> select * from flashback;

ID
--
1
2
3

已用时间:  00: 00: 00.26
SQL> select * from flashback as of scn 897597;

未选定行

已用时间:  00: 00: 00.00
SQL> insert into flashback values('4');

已创建 1 行。

已用时间:  00: 00: 00.00
SQL> commit;

提交完成。

已用时间:  00: 00: 00.01
SQL> select current_scn,to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss') from v$dat
abase;

CURRENT_SCN TO_CHAR(SYSTIMESTAM
----------- -------------------
     898112 2012-02-10 16:28:12

已用时间:  00: 00: 00.14
SQL> select * from flashback as of scn 898112;

ID
--
1
2
3
4

已用时间:  00: 00: 00.03
SQL> insert into flashback values('5');

已创建 1 行。

已用时间:  00: 00: 00.00
SQL> commit;

提交完成。

已用时间:  00: 00: 00.06
SQL> select current_scn,to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss') from v$dat
abase;

CURRENT_SCN TO_CHAR(SYSTIMESTAM
----------- -------------------
     898124 2012-02-10 16:28:44

已用时间:  00: 00: 00.31
SQL> select * from flashback as of scn 897597;

未选定行

已用时间:  00: 00: 00.01
SQL> select * from flashback as of scn 898112;

ID
--
1
2
3
4

已用时间:  00: 00: 00.01
SQL> select * from flashback;

ID
--
1
2
3
4
5

已用时间:  00: 00: 00.01
SQL> select * from flashback as of timestamp to_timestamp('2012-02-10 16:28:44',
'yyyy-mm-dd  hh24:mi:ss');

ID
--
1
2
3
4
5

已用时间:  00: 00: 00.00
SQL> select * from flashback as of timestamp to_timestamp('2012-02-10 16:28:12',
'yyyy-mm-dd  hh24:mi:ss');

ID
--
1
2
3
4

已用时间:  00: 00: 00.03
二、闪回删除
drop table tablename purge 和purge table tablename 可以清除回收站里已删除的表信息,导致表无法被闪回回来。
SQL> drop table flashback;

表已删除。

已用时间:  00: 00: 00.28
SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------

FLASHBACK        BIN$Mc1fEsuER7aZB4uBD4l56A==$0 TABLE        2012-02-10:17:10:16

SQL> flashback table flashback to before drop;

闪回完成。

已用时间:  00: 00: 00.03
SQL> select * from flashback;

ID
--
1
2
3
4
5
SQL> drop table flashback;

表已删除。

已用时间:  00: 00: 00.06
SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------

FLASHBACK        BIN$tvRAsgUQRrG+WD9Uk//aIQ==$0 TABLE        2012-02-10:17:17:03
SQL> flashback table flashback to before drop;

闪回完成。

已用时间:  00: 00: 00.06
SQL> drop table flashback;

表已删除。

已用时间:  00: 00: 00.04
SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------

FLASHBACK        BIN$+5VWz/EZQ/eyfl71Xl96nw==$0 TABLE        2012-02-10:17:20:22
SQL> flashback table flashback to before drop rename to  flash_drop;

闪回完成。

已用时间:  00: 00: 00.03
SQL> select * from flash_drop;

ID
--
1
2
3
4
5

已用时间:  00: 00: 00.03
SQL> create table flashback as select * from flash_drop;

表已创建。

已用时间:  00: 00: 00.64
SQL> drop table flashback;

表已删除。

已用时间:  00: 00: 00.09
SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------

FLASHBACK        BIN$Uo26MrOfRI+R/SIAjwVCag==$0 TABLE        2012-02-10:17:22:28

SQL> purge table  flashback;

表已清除。

已用时间:  00: 00: 00.07
SQL> show recyclebin
SQL> drop table flash_drop purge;

表已删除。

已用时间:  00: 00: 00.23
SQL> show recyclebin
SQL> commit;

提交完成。

已用时间:  00: 00: 00.01

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

请登录后发表评论 登录
全部评论

注册时间:2009-08-28

  • 博文量
    110
  • 访问量
    539517