您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么刪除表和Oracle的回收站”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
首先,我們來看一下Oracle Drop Table的語法格式。
解釋一下里面的參數:
1 | schema |
Schema表示方案名稱,這里可以理解為用戶名,缺省為當前用戶下的表。比如,要刪除scott用戶下的emp表,drop table scott.emp
1 | purge |
purge可選項,如果開啟了回收站(oracle 10g以后,回收站默認是開啟的)功能,不帶purge選項,表示刪除的表放進回收站,空間不回收 。使用flashbask可以閃回該表。帶purge選項,則表示將表刪除,釋放空間。
1 | cascade constraints |
可選項,如果有其它表關聯到要刪除的表的主鍵列或唯一鍵列(要刪除的表是主表(父表),從表(子表)有外鍵關聯到這張表),那么,直接用drop table會報錯,這時候如果想要強制刪除這張表,就需要加上cascade constraints選項。
使用閃回刪除功能,可以撤消 DROP TABLE 語句產生的影響,而不需要求助于傳統時間點恢復。這是由回收站實現的,通過 DBA_RECYCLEBIN 視圖可查詢回收站。
查看當前數據庫的回收站功能是否開啟
1 2 | conn / as sysdba select value from v $parameter where name= 'recyclebin' ; |
執行drop table語句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 使用scott用戶登錄 SQL> conn scott /tiger Connected. 查看當前用戶下的表 SQL> select * from tab; TNAME TABTYPE CLUSTERID -------------------- ------- ---------- BONUS TABLE DEPT TABLE EMP TABLE EMP1 TABLE SALGRADE TABLE 刪除一張表 SQL> drop table emp1; Table dropped. 查看當前用戶下的表 SQL> select * from tab; TNAME TABTYPE CLUSTERID -------------------- ------- ---------- BIN$opkhRg3T0MPgVaUg TABLE q /kbkw ==$0 BONUS TABLE DEPT TABLE EMP TABLE SALGRADE TABLE |
通過回收站中的對象名稱查詢表的數據
1 2 3 4 5 | 下面的方式是錯誤的: select * from BIN$opkhRg3T0MPgVaUgq /kbkw ==$0; 需要加上雙引號: select * from "BIN$opkhRg3T0MPgVaUgq/kbkw==$0" ; |
查看回收站
1 | show recyclebin; |
flashback table的語法格式
在執行閃回表操作期間,數據庫獲取閃回列表中所有指定的報表獨立DML鎖。當正在恢復到之前狀態時,這些鎖阻止對表的任何操作。閃回表操作在單個事物中執行,不管閃回表中指定表的數量。要么所有的表都恢復到早期狀態,要么都沒恢復。如果任何表的閃回表操作失敗,那么整個語句都失敗。閃回操作完成時,表中的數據與表之前的時間點一直。但是,FLASHBACK TABLE到SCN或時間戳不保存rowid,FLASHBACK TABLE TO BEFORE DROP不能恢復引用約束。數據庫不能恢復與表關聯的早期結構的統計信息。表當前的索引是恢復,并反映還原點表的狀態。如果該索引在還原點不存在,數據更新索引里來反映還原點表的狀態。然而,如果索引是在當前時間和還原點之間被刪除,是不能恢復。
執行閃回刪除
1 2 3 4 | flashback table emp1 to before drop; 也可以通過回收站中的名字執行閃回: flashback table “BIN$opkhRg3T0MPgVaUgq /kbkw ==$0” to before drop; |
清空回收站
1 | purge recyclebin; |
“怎么刪除表和Oracle的回收站”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。