flashback總結五之Flashback_Query_Version(上)
相對於Flashback Query的以點看物件狀態,那麼Flashback Version Query可以以面開看物件狀態。
這樣根據歷史情況,DBA可以快速判斷資料在什麼地方出現錯誤,進而恢復到到之前的狀態。
Flashback version Query中有一個偽列,是用來記錄每次commit之後,新產生的scn。
******************************個人操作********************************
SQL> insert into scott.emp values(7968,'sheng','CLERK',7902,to_date('2011-09-09'
,'YYYY-mm-dd'),'800','300',20);
已建立 1 行。
SQL> commit;
SQL> select ora_rowscn, empno from scott.emp;
ORA_ROWSCN EMPNO
---------- ----------
3466170 7369
3466170 7499
3466170 7521
3466170 7566
3466170 7654
3466170 7698
3466170 7782
3466170 7788
3466170 7839
3466170 7844
3466170 7876
ORA_ROWSCN EMPNO
---------- ----------
3466170 7900
3466170 7902
3466170 7934
3466170 7968(7968出現,當前的scn也改變了)
3466170 7964
再來插入一條看看,
SQL> insert into scott.emp values(7970,'dong','CLERK',7902,'2011-09-09','800','3
00',20);
已建立 1 行。
SQL> commit;
SQL> select ora_rowscn, empno from scott.emp;
ORA_ROWSCN EMPNO
---------- ----------
3466203 7369
3466203 7499
3466203 7521
3466203 7566
3466203 7654
3466203 7698
3466203 7782
3466203 7788
3466203 7839
3466203 7844
3466203 7876
ORA_ROWSCN EMPNO
---------- ----------
3466203 7900
3466203 7902
3466203 7934
3466203 7970(7970出現,ORA_ROWSCN記錄也相應的改變了)
3466203 7968
3466203 7964
SQL> Select versions_xid,versions_startscn,versions_endscn,
DECODE(versions_operation,'I','Insert','U','Update','D','Delete', 'Original') "Operation", empno from scott.emp
versions between scn minvalue and maxvalue;
VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN Operatio EMPNO
---------------- ----------------- --------------- -------- ----------
Original 7369
Original 7499
Original 7521
Original 7566
Original 7654
Original 7698
Original 7782
Original 7788
Original 7839
Original 7844
Original 7876
VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN Operatio EMPNO
---------------- ----------------- --------------- -------- ----------
Original 7900
Original 7902
Original 7934
Original 7964
09001F00AF040000 3466170 Insert 7968
09000D00B0040000 3466203 Insert 7970
已選擇17行。
從上面語句可以看出,Operation的操作,有兩條插入操作,分別對應的scn是3466170和3466203。
如果,你想退回到,插入7970之前,可以進行如下操作:
**************************這個是flashback table的概念********************************
SQL> flashback table scott.emp to scn 3466170;
flashback table scott.emp to scn 3466170
*
第 1 行出現錯誤:
ORA-08189: 因為未啟用行移動功能, 不能閃回表
由於報錯,我可以檢視row_movement是否啟用
SQL> select row_movement,table_name from user_tables where table_name='EMP';
ROW_MOVE TABLE_NAME
-------- ------------------------------
DISABLED EMP
(
--啟用
JSSWEB> ALTER TABLE table_name ENABLE ROW MOVEMENT;
表已更改。
--禁止
JSSWEB> ALTER TABLE table_name DISABLE ROW MOVEMENT;
表已更改。
這個是啟用和禁用語句
)
SQL> ALTER TABLE EMP ENABLE ROW MOVEMENT;
表已更改。
SQL> flashback table scott.emp to scn 3466170;
閃回完成。
**************************這個是flashback table的概念********************************
SQL> select ora_rowscn, empno from scott.emp;
ORA_ROWSCN EMPNO
---------- ----------
3468264 7369
3468264 7499
3468264 7521
3468264 7566
3468264 7654
3468264 7698
3468264 7782
3468264 7788
3468264 7839
3468264 7844
3468264 7876
ORA_ROWSCN EMPNO
---------- ----------
3468264 7900
3468264 7902
3468264 7934
3468264 7968
3468264 7964
已選擇16行。(可以看到,原來插入的7970已經沒有了,我們回到了插入7970之前的狀態)
現在可以分析閃回之後,flashback_Qurey_Version的狀態是什麼樣子的?
SQL> Select versions_xid,versions_startscn,versions_endscn,
2 DECODE(versions_operation,'I','Insert','U','Update','D','Delete', 'Or
ginal') "Operation", empno from scott.emp
3 versions between scn minvalue and maxvalue;
VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN Operatio EMPNO
---------------- ----------------- --------------- -------- ----------
01001300D2030000 3468264 Insert 7369
01001300D2030000 3468264 Delete 7369
3468264 Original 7369
01001300D2030000 3468264 Insert 7499
01001300D2030000 3468264 Delete 7499
3468264 Original 7499
01001300D2030000 3468264 Insert 7521
01001300D2030000 3468264 Delete 7521
3468264 Original 7521
01001300D2030000 3468264 Insert 7566
01001300D2030000 3468264 Delete 7566
VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN Operatio EMPNO
---------------- ----------------- --------------- -------- ----------
3468264 Original 7566
01001300D2030000 3468264 Insert 7654
01001300D2030000 3468264 Delete 7654
3468264 Original 7654
01001300D2030000 3468264 Insert 7698
01001300D2030000 3468264 Delete 7698
3468264 Original 7698
01001300D2030000 3468264 Insert 7782
01001300D2030000 3468264 Delete 7782
3468264 Original 7782
01001300D2030000 3468264 Insert 7788
VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN Operatio EMPNO
---------------- ----------------- --------------- -------- ----------
01001300D2030000 3468264 Delete 7788
3468264 Original 7788
01001300D2030000 3468264 Insert 7839
01001300D2030000 3468264 Delete 7839
3468264 Original 7839
01001300D2030000 3468264 Insert 7844
01001300D2030000 3468264 Delete 7844
3468264 Original 7844
01001300D2030000 3468264 Insert 7876
01001300D2030000 3468264 Delete 7876
3468264 Original 7876
VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN Operatio EMPNO
---------------- ----------------- --------------- -------- ----------
01001300D2030000 3468264 Insert 7900
01001300D2030000 3468264 Delete 7900
3468264 Original 7900
01001300D2030000 3468264 Insert 7902
01001300D2030000 3468264 Delete 7902
3468264 Original 7902
01001300D2030000 3468264 Insert 7934
01001300D2030000 3468264 Delete 7934
3468264 Original 7934
01001300D2030000 3468264 Insert 7964
01001300D2030000 3468264 Delete 7964
VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN Operatio EMPNO
---------------- ----------------- --------------- -------- ----------
3468264 Original 7964
01001300D2030000 3468264 Insert 7968
01001300D2030000 3468264 Delete 7968
3468264 Original 7968
01001300D2030000 3468264 Delete 7970
3468264 Original 7970
已選擇50行。
(可能有點長,不過耐心的觀察可以發現,每一個都是有一個insert和delete的操作,這個就是閃回它做的操作,
最後一個7970做了delete之後,就沒有insert了,所以7970被刪除了)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26446098/viewspace-712205/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- flashback總結五之Flashback_Query_Version(下)_補充
- flashback總結三之Flashback_DROP
- flashback總結一之Flashback_DatabaseDatabase
- flashback總結四之Flashback_Query
- flashback總結六之Flashback_Transaction_Query
- Oracle Flashback 技術 總結Oracle
- Oracle Flashback技術總結Oracle
- flashback總結二之相關的三個檢視
- oracle flashback特性學習總結Oracle
- flashback database的一點總結Database
- FlashBack總結之閃回資料庫與閃回刪除資料庫
- 田淵棟:博士五年之後五年的總結
- 【軟工文件總結之後五個文件總結(重點篇)】軟工
- Oracle分割槽之五:建立分割槽索引總結Oracle索引
- flashback技術之---flashback query
- flashback技術之---flashback drop
- flashback技術之---flashback table
- flashback技術之---flashback databaseDatabase
- NIO(五)Buffer總結
- 五月總結
- 五日研究總結
- 第五週總結
- flashback技術之---flashback Transaction Query
- flashback技術之---flashback version query
- 漏洞重溫之檔案上傳(總結)
- iOS面試題總結(五)iOS面試題
- 第五週Swift總結Swift
- 暑期第五週總結
- oracle flashback特性(2.1)--Flashback Table之RECYCLEBINOracle
- Redis總結(上)Redis
- 上機總結
- 上架總結
- 應用oracle flashback--Flashback Table之RECYCLEBINOracle
- 第五週學習總結
- 自學Java第五週總結Java
- 第五週報告總結
- Django model總結(上)Django
- Oracle10g的Flashback之Flashback Transaction QueryOracle