oralce 10g閃回學習(一)

genweihua發表於2012-02-10
           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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章