【實驗】【Flashback】Flashback Transaction Query功能實踐
1.Flashback Transaction Query功能
從FLASHBACK_TRANSACTION_QUERY檢視中獲得事務的歷史以及Undo_sql,也就是說可以透過查詢檢視FLASHBACK_TRANSACTION_QUERY獲得表的操作記錄,同時可以獲得恢復錯誤操作的SQL語句。
2.體驗一下這個功能帶給我們的神奇吧
1)建立測試表test_ftq,並進行一些簡單的插入和刪除操作
sec@orcl> create table test_ftq (a int, b int);
Table created.
sec@orcl> insert into test_ftq values (1,1);
1 row created.
sec@orcl> insert into test_ftq values (2,2);
1 row created.
sec@orcl> insert into test_ftq values (3,3);
1 row created.
sec@orcl> commit;
Commit complete.
2)查詢在一個時間段內對錶test_ftq的操作記錄
sec@orcl> select versions_xid, versions_operation
2 from test_ftq
3 versions between timestamp to_date('2009-04-28 05:28:06','yyyy-mm-dd hh24:mi:ss') and maxvalue
4 WHERE versions_xid is not null
5 order by versions_starttime;
VERSIONS_XID V
---------------- -
04001E0043950400 I
04001E0043950400 I
04001E0043950400 I
04001A0042950400 D
3)根據VERSIONS_XID的資訊可以透過查詢檢視FLASHBACK_TRANSACTION_QUERY得到相應的回滾SQL語句
sec@orcl> SELECT UNDO_SQL FROM FLASHBACK_TRANSACTION_QUERY where xid='04001E0043950400';
UNDO_SQL
------------------------------------------------------------------------------------------------------------------------------
delete from "SEC"."TEST_FTQ" where ROWID = 'AABIejAAfAAAAASAAA';
sec@orcl> SELECT UNDO_SQL FROM FLASHBACK_TRANSACTION_QUERY where xid='04001A0042950400';
UNDO_SQL
------------------------------------------------------------------------------------------------------------------------------
insert into "SEC"."TEST_FTQ"("A","B") values ('1','1');
3.之所以有這樣神奇的效果,與檢視FLASHBACK_TRANSACTION_QUERY是分不開的,OK,讓我們看看oracle官方文件中關於該檢視的描述
--The End --
從FLASHBACK_TRANSACTION_QUERY檢視中獲得事務的歷史以及Undo_sql,也就是說可以透過查詢檢視FLASHBACK_TRANSACTION_QUERY獲得表的操作記錄,同時可以獲得恢復錯誤操作的SQL語句。
2.體驗一下這個功能帶給我們的神奇吧
1)建立測試表test_ftq,並進行一些簡單的插入和刪除操作
sec@orcl> create table test_ftq (a int, b int);
Table created.
sec@orcl> insert into test_ftq values (1,1);
1 row created.
sec@orcl> insert into test_ftq values (2,2);
1 row created.
sec@orcl> insert into test_ftq values (3,3);
1 row created.
sec@orcl> commit;
Commit complete.
2)查詢在一個時間段內對錶test_ftq的操作記錄
sec@orcl> select versions_xid, versions_operation
2 from test_ftq
3 versions between timestamp to_date('2009-04-28 05:28:06','yyyy-mm-dd hh24:mi:ss') and maxvalue
4 WHERE versions_xid is not null
5 order by versions_starttime;
VERSIONS_XID V
---------------- -
04001E0043950400 I
04001E0043950400 I
04001E0043950400 I
04001A0042950400 D
3)根據VERSIONS_XID的資訊可以透過查詢檢視FLASHBACK_TRANSACTION_QUERY得到相應的回滾SQL語句
sec@orcl> SELECT UNDO_SQL FROM FLASHBACK_TRANSACTION_QUERY where xid='04001E0043950400';
UNDO_SQL
------------------------------------------------------------------------------------------------------------------------------
delete from "SEC"."TEST_FTQ" where ROWID = 'AABIejAAfAAAAASAAA';
sec@orcl> SELECT UNDO_SQL FROM FLASHBACK_TRANSACTION_QUERY where xid='04001A0042950400';
UNDO_SQL
------------------------------------------------------------------------------------------------------------------------------
insert into "SEC"."TEST_FTQ"("A","B") values ('1','1');
3.之所以有這樣神奇的效果,與檢視FLASHBACK_TRANSACTION_QUERY是分不開的,OK,讓我們看看oracle官方文件中關於該檢視的描述
FLASHBACK_TRANSACTION_QUERY
FLASHBACK_TRANSACTION_QUERY displays information about all flashback transaction queries in the database.
Column | Datatype | NULL | Description |
---|---|---|---|
XID | RAW(8) | Transaction identifier | |
START_SCN | NUMBER | Transaction start system change number (SCN) | |
START_TIMESTAMP | DATE | Transaction start timestamp | |
COMMIT_SCN | NUMBER | Transaction commit system change number (null for active transactions) | |
COMMIT_TIMESTAMP | DATE | Transaction commit timestamp (null for active transactions) | |
LOGON_USER | VARCHAR2(30) | Logon user for the transaction | |
UNDO_CHANGE# | NUMBER | Undo system change number (1 or higher) | |
OPERATION | VARCHAR2(32) | Forward-going DML operation performed by the transaction:
|
|
TABLE_NAME | VARCHAR2(256) | Name of the table to which the DML applies | |
TABLE_OWNER | VARCHAR2(32) | Owner of the table to which the DML applies | |
ROW_ID | VARCHAR2(19) | Rowid of the row that was modified by the DML | |
UNDO_SQL | VARCHAR2(4000) | SQL to undo the DML indicated by OPERATION |
--The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-592080/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Flashback】Flashback Query功能實踐
- 【實驗】【Flashback】Flash Version Query功能實踐
- oracle 10g flashback version query 和 flashback transaction query實驗Oracle 10g
- oracle10g之flashback version query 和flashback transaction query 實驗Oracle
- 【實驗】【Flashback】Flashback EXP功能實踐
- flashback技術之---flashback Transaction Query
- 【Flashback】Flashback Table功能實踐
- flashback version query和 flashback transaction query簡單應用
- flashback總結六之Flashback_Transaction_Query
- Oracle10g的Flashback之Flashback Transaction QueryOracle
- 【Flashback】Flashback Drop閃回刪除功能實踐
- 【Flashback】Flashback Database閃回資料庫功能實踐Database資料庫
- 【Flashback】Flashback Database閃回資料庫功能實驗Database資料庫
- 聊聊閃回事務查詢Flashback Transaction Query
- flashback_transaction_query的資料來源!
- flashback技術之---flashback query
- flashback_transaction_query資料保留的時間
- Flashback Drop閃回刪除功能實踐
- flashback技術之---flashback version query
- [Flashback]Flashback Database閃回資料庫實驗Database資料庫
- oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- flashback總結四之Flashback_Query
- 【閃回特性之閃回事務查詢】Flashback Transaction Query
- 使用FLASHBACK_TRANSACTION_QUERY查詢回滾事務SQLSQL
- oracle實驗記錄 (flashback)Oracle
- Flashback Query Benefits (368)
- oracle檢視flashback_transaction_query中列operation為unknownOracle
- flashback總結五之Flashback_Query_Version(上)
- ORACLE Flashback Query偽列Oracle
- Oracle OCP 1Z0 053 Q387(FLASHBACK_TRANSACTION_QUERY)Oracle
- Oracle OCP 1Z0 053 Q63(flashback_transaction_query)Oracle
- 全面學習oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- Oracle OCP 1Z0 053 Q677(Flashback Transaction Query)Oracle
- 閃回之 Flashback Query (dml表、過程、函式、包等)、Flashback version Query函式
- flashback總結五之Flashback_Query_Version(下)_補充
- flashback query閃回資料
- flashback drop/query/table/database/archiveDatabaseHive
- Flashback Query閃回查詢