找回Oracle中Delete刪除的記錄
SCN提供了Oracle的內部時鐘機制,可被看作邏輯時鐘,這對於恢復操作是至關重要的
註釋:Oracle 僅根據 SCN 執行恢復。[@more@]它定義了資料庫在某個確切時刻提交的版本。在事物提交時,它被賦予一個唯一的標示事物的SCN 。一些人認為 SCN 是指, System Commit Number ,而通常 SCN 在提交時才變化,所以很多情況下,
這兩個名詞經常被交替使用。
究竟是哪個詞其實對我們來說並不是最重要的,重要的是我們知道 SCN 是 Oracle 內部的時鐘機制, Oracle 透過 SCN 來維護資料庫的一致性,並透過SCN 實施 Oracle 至關重要的恢復機制。
具體執行流程我們可從以下幾個示例圖中體會;
具體執行流程我們可從以下幾個示例圖中體會;
1.原表記錄 $ sqlplus eygle/eygle
SQL*Plus: Release 10.1.0.2.0 - Production on Wed Mar 30 08:52:04 2005
Copyright (c) 1982, 2004, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL>select count(*) from t1;
COUNT(*)
----------
9318
2.誤刪除所有記錄
並且提交更改。
SQL>delete from t1;
9318 rows deleted.
SQL>commit;
Commit complete.
SQL>select count(*) from t1;
COUNT(*)
----------
0
3.獲得當前SCN
如果能夠確切知道刪除之前SCN最好,如果不知道,可以進行閃回查詢嘗試.
SQL>select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
10671006
SQL>select count(*) from t1 as of scn 10671000;
COUNT(*)
----------
0
SQL>select count(*) from t1 as of scn 10670000;
COUNT(*)
----------
9318
我們看到在SCN=10670000時,資料都在。
4.恢復資料.
SQL>insert into t1 select * from t1 as of scn 10670000;
9318 rows created.
SQL>commit;
Commit complete.
SQL>select count(*) from t1;
COUNT(*)
----------
9318
文章2
誤刪資料後的還原
select timestamp_to_scn(to_timestamp('2009-03-13 09:00:00','YYYY-MM-DD HH:MI:SS')) from dual;
結果:13526973
將刪除時間轉換為scn
select * from reportinfo
AS OF SCN 13526973
將reportinfo表中的scn點的資料取出
然後可以根據這個資料進行還原操作
create table reporttest as select * from reportinfo where 1=0;
insert into reporttest select * from reportinfo AS OF SCN 13526973;
--上面兩句應該可以合成一句
--create table reporttest as select * from reportinfo AS OF SCN 13526973;
這是reporttest表中就是scn點的reportinfo資料.處理即可
from:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22036495/viewspace-1058824/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 刪除表中重複記錄的DELETE SQLOracledeleteSQL
- 如何刪除oracle庫中相同的記錄Oracle
- oracle delete 分批刪除Oracledelete
- mysql支援跨表delete刪除多表記錄MySqldelete
- Oracle快速找回被刪除的表Oracle
- Oracle如何刪除表中重複記錄Oracle
- Oracle中審計刪除(DELETE)操作的觸發器Oracledelete觸發器
- 刪除Oracle重複記錄Oracle
- oracle刪除重複記錄Oracle
- 高效快速刪除Oracle表中重複記錄Oracle
- 單表的更新UPDATE和刪除記錄DELETE(二十六)delete
- oracle-快速刪除重複的記錄Oracle
- oracle 對錶中的記錄進行大批量刪除Oracle
- 面試題: 資料庫:delete和trancate刪除表記錄的區別面試題資料庫delete
- Mac 備忘錄( Notes)裡筆記被永久刪除後的找回方法Mac筆記
- Eclipse 刪除找回Eclipse
- 檢視oracle 資料庫中的級聯刪除(delete cascade)Oracle資料庫delete
- Oracle如何刪除表中重複記錄保留第一條Oracle
- MYSQL中刪除重複記錄的方法薦MySql
- 用SQL語言刪除表中的記錄SQL
- Oracle使用over()partition by刪除重複記錄Oracle
- LARGE DELETE快速刪除delete
- win10怎麼找回shift delete刪除的檔案_win10按shiftdelete刪除的檔案如何恢復Win10delete
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- 查詢刪除表中重複記錄
- 怎麼刪除電腦中開啟的檔案記錄?刪除電腦中開啟的檔案記錄方法教程
- ORACLE資料庫刪除表中記錄報record is locked by another userOracle資料庫
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄) 轉Oracle
- 【轉】oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- 刪除不掉的資料記錄
- 刪除重複id的記錄
- delete和truncate刪除的區別delete
- 轉載:Oracle中查詢和刪除重複記錄方法簡介Oracle
- db2中刪除重複記錄的問題DB2
- sql server 中刪除內容重複的某條記錄SQLServer
- Elasticsearch增刪改查 之 —— Delete刪除Elasticsearchdelete
- mysql刪除一條記錄MySql
- Oracle 查詢並刪除重複記錄的SQL語句OracleSQL