DELETE误操作_oracle
對(duì)于DELETE的誤操作
當(dāng)不小心用DELETE刪除了表中的一條或多條記錄的恢復(fù)
1,基于時(shí)間的閃查
閃查的查詢能力是受到undo表空間的大小和undo_retention的影響
以SCOTT.EMP為例子簡(jiǎn)單示范下
SQL> SHOW USER
USER is "SCOTT"
SQL> SELECT COUNT(*) FROM EMP;
? COUNT(*)
----------
??????? 14
SQL> DELETE EMP WHERE ENAME='SCOTT';
1 row deleted.
SQL> COMMIT;
Commit complete.
SQL> SELECT COUNT(*) FROM EMP;
? COUNT(*)
----------
??????? 13
SQL> SELECT * FROM EMP AS OF TIMESTAMP SYSDATE-5/1440 WHERE ENAME='SCOTT';
??? (上一個(gè)5分鐘之內(nèi)的,1440表示24*60,也可以根據(jù)自己定義的時(shí)間格式來寫具體的時(shí)間)
EMPNO ENAME????? JOB????????? MGR HIREDATE????????????? SAL? COMM???? DEPTNO
----- ---------- ---------- ----- ------------------- ----- ----- ----------
?7788 SCOTT????? ANALYST???? 7566 1987-04-19 00:00:00? 3000?????????????? 20
SQL> INSERT INTO EMP SELECT * FROM EMP AS OF TIMESTAMP SYSDATE-5/1440 WHERE ENAME='SCOTT';
1 row created.
SQL> SELECT COUNT(*) FROM EMP;
? COUNT(*)
----------
??????? 14
SQL> COMMIT;
Commit complete.
2,基于SCN的閃查(刪除的步驟就不重復(fù)了)
SQL> SHOW USER
USER is "SYS"
SQL> SELECT SCN,TIME_DP FROM (SELECT SCN,TIME_DP FROM SMON_SCN_TIME ORDER BY TIME_DP DESC) WHERE ROWNUM<5;
?????? SCN TIME_DP
---------- -------------------
??? 874277 2011-06-18 01:05:48
??? 874073 2011-06-18 01:00:21
??? 873920 2011-06-18 00:59:57
??? 873774 2011-06-18 00:54:27
??? (5分鐘一寫,可以根據(jù)時(shí)間查詢SCN來進(jìn)行恢復(fù).)
SQL> SELECT * FROM SCOTT.EMP AS OF SCN 873774 WHERE ENAME='SCOTT';
EMPNO ENAME????? JOB????????? MGR HIREDATE????????????? SAL? COMM???? DEPTNO
----- ---------- ---------- ----- ------------------- ----- ----- ----------
?7788 SCOTT????? ANALYST???? 7566 1987-04-19 00:00:00? 3000?????????????? 20
注:初學(xué)者,歡迎指點(diǎn),不斷改進(jìn)。doo
?
轉(zhuǎn)載于:https://blog.51cto.com/dongyin/591189
總結(jié)
以上是生活随笔為你收集整理的DELETE误操作_oracle的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 静静守候属于我们的幸福。坚守我们的约定
- 下一篇: Symantec Backup Exec