oracle 10g flashback version query 和 flashback transaction query實驗
這幾天在學習oracle10g的 flashback ,參考oracle的官方文件
做了flashback version query 和flashback transaction 的實驗,
記錄下來,便於以後查閱
OS: redhat linux as 4 u2
DB: oracle10gr2
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.
C:\>sqlplus sxit/sxit@ora10hha
SQL*Plus: Release 10.1.0.2.0 - Production on 星期四 6月 30 13:59:42 2011
Copyright (c) 1982, 2004, Oracle. All rights reserved.
連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> create table emp
(empno number,
empname varchar2(16),
salary number);
表已建立。
SQL> insert into emp values (111,'mike',555);
已建立 1 行。
SQL> commit ;
提交完成。
SQL> create table dept
(deptno number,
deptname varchar2(32));
表已建立。
SQL> insert into dept values (10,'accounting');
已建立 1 行。
SQL> commit;
提交完成。
接下來,簡單模擬不小心刪掉資料
SQL> update emp set salary =salary +100 where empno=111;
已更新 1 行。
SQL> insert into dept values(20,'finance');
已建立 1 行。
SQL> delete from emp where empno=111;
已刪除 1 行。
SQL> commit;
提交完成。
Subsequently, a new transaction reinserts employee id 111 with a new employee name into the emp table.
SQL> insert into emp values (111,'tom',777);
已建立 1 行。
SQL> update emp set salary =salary +100 where empno=111;
已更新 1 行。
SQL> update emp set salary =salary +50 where empno=111;
已更新 1 行。
SQL> commit;
提交完成。
此時發現誤操作了,想要查詢之前所做的修改。於是,透過
flashback version query 查詢:
C:\>sqlplus system@ora10hha
SQL*Plus: Release 10.1.0.2.0 - Production on 星期四 6月 30 14:08:19 2011
Copyright (c) 1982, 2004, Oracle. All rights reserved.
請輸入口令:
連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> SELECT versions_xid XID, versions_startscn START_SCN,
versions_endscn END_SCN, versions_operation OPERATION,
empname, salary FROM sxit.emp
VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE
where empno=111;
XID START_SCN END_SCN OP EMPNAME
---------------- ---------- ---------- -- --------------------------------
SALARY
----------
05002100A6000000 876197 I tom
927
07000E00A0000000 876146 D mike
555
05001A00A7000000 875980 876146 I mike
555
透過flashback version query 查到了誤操作時候的XID,並透過
flashback transaction query 找到相關的撤銷語句
SELECT xid, start_scn , commit_scn ,
operation , logon_user ,
undo_sql FROM flashback_transaction_query
WHERE xid = HEXTORAW('07000E00A0000000');
執行結果見附件中的圖片,然後根據附件中的undo_sql 直接拷到命令列執行,就撤銷了原有的事物。
flashback transaction query 結果.jpg
做了flashback version query 和flashback transaction 的實驗,
記錄下來,便於以後查閱
OS: redhat linux as 4 u2
DB: oracle10gr2
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.
C:\>sqlplus sxit/sxit@ora10hha
SQL*Plus: Release 10.1.0.2.0 - Production on 星期四 6月 30 13:59:42 2011
Copyright (c) 1982, 2004, Oracle. All rights reserved.
連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> create table emp
(empno number,
empname varchar2(16),
salary number);
表已建立。
SQL> insert into emp values (111,'mike',555);
已建立 1 行。
SQL> commit ;
提交完成。
SQL> create table dept
(deptno number,
deptname varchar2(32));
表已建立。
SQL> insert into dept values (10,'accounting');
已建立 1 行。
SQL> commit;
提交完成。
接下來,簡單模擬不小心刪掉資料
SQL> update emp set salary =salary +100 where empno=111;
已更新 1 行。
SQL> insert into dept values(20,'finance');
已建立 1 行。
SQL> delete from emp where empno=111;
已刪除 1 行。
SQL> commit;
提交完成。
Subsequently, a new transaction reinserts employee id 111 with a new employee name into the emp table.
SQL> insert into emp values (111,'tom',777);
已建立 1 行。
SQL> update emp set salary =salary +100 where empno=111;
已更新 1 行。
SQL> update emp set salary =salary +50 where empno=111;
已更新 1 行。
SQL> commit;
提交完成。
此時發現誤操作了,想要查詢之前所做的修改。於是,透過
flashback version query 查詢:
C:\>sqlplus system@ora10hha
SQL*Plus: Release 10.1.0.2.0 - Production on 星期四 6月 30 14:08:19 2011
Copyright (c) 1982, 2004, Oracle. All rights reserved.
請輸入口令:
連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> SELECT versions_xid XID, versions_startscn START_SCN,
versions_endscn END_SCN, versions_operation OPERATION,
empname, salary FROM sxit.emp
VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE
where empno=111;
XID START_SCN END_SCN OP EMPNAME
---------------- ---------- ---------- -- --------------------------------
SALARY
----------
05002100A6000000 876197 I tom
927
07000E00A0000000 876146 D mike
555
05001A00A7000000 875980 876146 I mike
555
透過flashback version query 查到了誤操作時候的XID,並透過
flashback transaction query 找到相關的撤銷語句
SELECT xid, start_scn , commit_scn ,
operation , logon_user ,
undo_sql FROM flashback_transaction_query
WHERE xid = HEXTORAW('07000E00A0000000');
執行結果見附件中的圖片,然後根據附件中的undo_sql 直接拷到命令列執行,就撤銷了原有的事物。
flashback transaction query 結果.jpg
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28373936/viewspace-1722313/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle10g之flashback version query 和flashback transaction query 實驗Oracle
- flashback version query和 flashback transaction query簡單應用
- flashback version query in oracle 10gOracle 10g
- 【實驗】【Flashback】Flashback Transaction Query功能實踐
- flashback技術之---flashback Transaction Query
- 【實驗】【Flashback】Flash Version Query功能實踐
- flashback技術之---flashback version query
- Oracle10g的Flashback之Flashback Transaction QueryOracle
- flashback總結六之Flashback_Transaction_Query
- Oracle閃回技術--Flashback Version QueryOracle
- Oracle10g的Flashback version QueryOracle
- flashback總結五之Flashback_Query_Version(上)
- 【Flashback】Flashback Query功能實踐
- 閃回之 Flashback Query (dml表、過程、函式、包等)、Flashback version Query函式
- 閃回版本查詢(Flashback Version Query)
- flashback總結五之Flashback_Query_Version(下)_補充
- ORACLE Flashback Query偽列Oracle
- oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- 聊聊閃回事務查詢Flashback Transaction Query
- flashback_transaction_query的資料來源!
- flashback技術之---flashback query
- 聊聊閃回版本查詢Flashback Version Query
- Overview of Oracle Flashback Query I (366)ViewOracle
- Overview of Oracle Flashback Query II (367)ViewOracle
- flashback_transaction_query資料保留的時間
- Flashback Query Benefits (368)
- oracle檢視flashback_transaction_query中列operation為unknownOracle
- Oracle OCP 1Z0-053 Q252(Flashback Version Query)Oracle
- ORACLE 11G Flashback Versions QueryOracle
- flashback總結四之Flashback_Query
- 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
- Oracle Flashback query查詢的侷限Oracle
- 【閃回特性之閃回事務查詢】Flashback Transaction Query
- 使用FLASHBACK_TRANSACTION_QUERY查詢回滾事務SQLSQL
- 【徵文】全面學習oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle