程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle閃回技術總結之閃回查詢(DML)

oracle閃回技術總結之閃回查詢(DML)

編輯:Oracle教程

oracle閃回技術總結之閃回查詢(DML)


我們需要把時間顯示出來set time on;就可以顯示出時間。先把表delete刪除,然後在插入幾行數據。   SQL> set time on; SQL> create table emp1 as select * from scott.emp; 01:27:52 SQL> delete from emp1; 14 rows deleted. 01:28:44 SQL> commit; Commit complete. 01:29:10 SQL> insert into emp1 select * from scott.emp whererownum<=3; 3 rows created. 01:29:22 SQL> commit; Commit complete. 01:30:25 SQL> select count(*) from emp1;   COUNT(*) ----------  3 我們需要閃回查詢出,時間為上面的操作時間,在01:27:52時delete刪除的emp1這個表。然後,你在需要確定一下數據庫的年月日,我這裡的年月日就是今天2015年11月23日。 01:35:03SQL> select * from emp1 as of timestampto_timestamp('2015-11-23 01:27:52','yyyy-mm-dd hh24:mi:ss');        EMPNO ENAME     JOB               MGRHIREDATE              SAL        COMM          DEPTNO -------------------- --------- ---------- ------------ ---------- ---------- ----------       7369 SMITH     CLERK              790217-DEC-80              800                      20       7499 ALLEN     SALESMAN              769820-FEB-81             1600         300              30       7521 WARD      SALESMAN              769822-FEB-81             1250         500              30       7566 JONES     MANAGER              783902-APR-81             2975                      20       7654 MARTIN    SALESMAN              769828-SEP-81             1250        1400              30       7698 BLAKE     MANAGER              783901-MAY-81             2850                      30       7782 CLARK     MANAGER              783909-JUN-81             2450                      10       7788 SCOTT     ANALYST              756619-APR-87             3000                      20       7839 KING       PRESIDENT          17-NOV-81             5000                      10       7844 TURNER    SALESMAN              769808-SEP-81             1500           0              30       7876 ADAMS     CLERK              778823-MAY-87             1100                      20        EMPNO ENAME     JOB               MGRHIREDATE              SAL        COMM          DEPTNO -------------------- --------- ---------- ------------ ---------- ---------- ----------       7900 JAMES     CLERK              769803-DEC-81              950                      30       7902 FORD      ANALYST              756603-DEC-81             3000                      20       7934 MILLER    CLERK              778223-JAN-82             1300                      10 14 rowsselected. 這時,我們已經閃回查詢看到了在01:27:52時的emp11的表了。   這時我們需要把查詢出來的結果,放在一個新表中保存,這個新表需要自己創建然後插入。新表的名字是epm1_bak 01:38:02 SQL> create table emp1_bak as select * from emp1 as oftimestamp to_timestamp('2015-11-23 01:27:52','yyyy-mm-dd hh24:mi:ss');   Table created.   之前我們在emp1中,又插入了三條不要的垃圾數據,這時把原來那三條數據truncate掉。 01:38:21 SQL> select count(*) from emp1;   COUNT(*) ----------  3 01:39:38 SQL> truncate table emp1; Table truncated.   這時候emp1的表數據已經清空了,我們在把新表epm1_bak的數據插入到emp1中即可,數據已經得到了恢復 01:39:44 SQL>insert into emp1 select * from emp1_bak;   14 rows created. 查看一下emp1的數據總數,應該為原來的14條。 01:40:52 SQL> select count(*) from emp1;   COUNT(*) ---------- 14

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved