Oracle的閃回技術--閃回錯誤的DML操作

來源:互聯網
上載者:User

標籤:cti   時間   where   opera   sel   value   oracle   更改   bsp   

  提交DML操作後,該操作使用的還原段就可以被其它對象使用了,為了保證閃回操作時這些資料仍然被儲存在還原段中,可能需要重新設定undo_retention參數,表示一個事務提交後,該事務的資料必須儲存在還原段中的時間;但是這也並不能完全保證指定的時間的資料一定能夠被恢複,還原資料表空間沒有足夠的時間時,仍會覆蓋要求保留的磁碟空間。

 

查看undo_retention的當前值:

SQL> show parameter undo_retentionNAME                     TYPE     VALUE------------------------------------ ----------- ------------------------------undo_retention                 integer     900

預設是900s

 

設定undo_retention的值為2個小時

 

SQL> alter system set undo_retention = 7200;系統已更改。

 

  

執行個體測試:

  目標:將emp_bak表中的員工的工資統一更新為9999,提交後使用閃回技術復原回初始值。

 

--更新emp_bak

SQL> update emp_bak set sal = 9999;已更新10行。
SQL> commit;提交完成。

 

--查出更新操作對應的事務號

SQL> select  versions_xid,ename,sal from emp_bak  2         versions between scn minvalue and maxvalue  3         where empno = 7900; VERSIONS_XID     ENAME            SAL---------------- ---------- ---------08001D0018060000 JAMES        9999.00                 JAMES         950.00

  versions_xid為事務號,minvalue為最小值,maxvalue為最大值。

 

--從資料字典flashback_transaction_query中查詢出事務號所對應的SCN號

select start_scn from flashback_transaction_query  2         where xid = hextoraw(‘08001D0018060000‘); START_SCN----------   2206522   2206522   2206522   2206522   2206522   2206522   2206522   2206522已選擇8行。

--啟用行移動功能, 否則不能閃回表

SQL> alter table scott.emp_bak enable row movement;表已更改。

--閃回表

SQL> flashback table scott.emp_bak to scn 2206522;閃回完成。SQL> select sal from scott.emp_bak where empno=7900;       SAL----------       950

   閃回已經完成了。

 注意閃回是閃回到該SCN之前的一個狀態。

 

附錄:

   除了根據SCN號閃回,還可以根據時間閃回

如果查詢flashback_transaction_query視圖中的列operation全是unknown 而且undo_sql 也為空白,要開啟對DML更改引用的列值和主索引值的日誌記錄

SQL>  alter database add supplemental log data (primary key) columns;

再查詢就可以見到了

SQL> select  start_scn,operation,undo_sql from flashback_transaction_query  2         where xid = hextoraw(‘05000C00DE060000‘);  START_SCN OPERATION                        UNDO_SQL---------- -------------------------------- --------------------------------------------------------------------------------   2210297 UPDATE                           update "SCOTT"."EMP_BAK" set "JOB" = NULL where ROWID = ‘AAASNGAAEAAAADrAAT‘;   2210297 UPDATE                           update "SCOTT"."EMP_BAK" set "JOB" = NULL where ROWID = ‘AAASNGAAEAAAADrAAS‘;   2210297 UPDATE                           update "SCOTT"."EMP_BAK" set "JOB" = NULL where ROWID = ‘AAASNGAAEAAAADrAAR‘;   2210297 UPDATE                           update "SCOTT"."EMP_BAK" set "JOB" = NULL where ROWID = ‘AAASNGAAEAAAADrAAQ‘;   2210297 UPDATE                           update "SCOTT"."EMP_BAK" set "JOB" = NULL where ROWID = ‘AAASNGAAEAAAADrAAP‘;   2210297 UPDATE                           update "SCOTT"."EMP_BAK" set "JOB" = NULL where ROWID = ‘AAASNGAAEAAAADrAAO‘;   2210297 UPDATE                           update "SCOTT"."EMP_BAK" set "JOB" = NULL where ROWID = ‘AAASNGAAEAAAADrAAN‘;   2210297 UPDATE                           update "SCOTT"."EMP_BAK" set "JOB" = NULL where ROWID = ‘AAASNGAAEAAAADrAAM‘;   2210297 UPDATE                           update "SCOTT"."EMP_BAK" set "JOB" = NULL where ROWID = ‘AAASNGAAEAAAADrAAL‘;   2210297 UPDATE                           update "SCOTT"."EMP_BAK" set "JOB" = NULL where ROWID = ‘AAASNGAAEAAAADrAAK‘;

 

Oracle的閃回技術--閃回錯誤的DML操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.