【Flashback】回收站中被標記刪除的表不可以DML和DDL操作
這裡體現的是回收站中儲存的表本身操作上的侷限性。既然表被DROP掉後存放到了回收站中,自然會有一些侷限性,例如,回收站中被標記刪除的表不可以DML和DDL操作。
1.模擬表被不含有PURGE關鍵字的DROP語句刪除
1)檢視資料庫版本
sec@ora10g> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
2)確認回收站功能已經開啟
sec@ora10g> show parameter recyclebin
NAME TYPE VALUE
----------- ------- ------------
recyclebin string on
3)建立表T並初始化資料
sec@ora10g> create table t (x int);
sec@ora10g> insert into t values (1);
sec@ora10g> insert into t values (2);
sec@ora10g> commit;
sec@ora10g> select * from t;
X
----------
1
2
3)刪除T表
sec@ora10g> drop table t;
Table dropped.
2.檢視回收站中的內容
sec@ora10g> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
T BIN$pnchvzFWXVTgQMKQt8Boqw==$0 TABLE 2011-06-25:22:36:49
可見,剛剛被刪除的T表已經在回收站中得以體現。
3.對回收站中的表嘗試查詢
sec@ora10g> select * from "BIN$pnchvzFWXVTgQMKQt8Boqw==$0";
X
----------
1
2
查詢功能生效。
4.對回收站中的表嘗試DML操作
1)嘗試插入操作
sec@ora10g> insert into "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" values (3);
insert into "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" values (3)
*
ERROR at line 1:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin
說明對回收站中的表進行插入操作是不可行的。
2)嘗試刪除操作
sec@ora10g> delete from "BIN$pnchvzFWXVTgQMKQt8Boqw==$0";
delete from "BIN$pnchvzFWXVTgQMKQt8Boqw==$0"
*
ERROR at line 1:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin
說明對回收站中的表進行刪除操作是不可行的。
3)嘗試更新操作
sec@ora10g> update "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" set x=100;
update "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" set x=100
*
ERROR at line 1:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin
說明對回收站中的表進行更新操作是不可行的。
透過增刪改等一系列DML操作測試,表明回收站中的表不可被DML操作的。
5.對回收站中的表嘗試DDL操作
以重新命名操作為例演示DDL操作。
sec@ora10g> alter table "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" rename to t;
alter table "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" rename to t
*
ERROR at line 1:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin
說明對回收站中的表進行DDL操作是不可行的。
6.小結
存放在回收站中的表可以使用閃回技術恢復為原始表的狀態,這是它的優勢。與此同時,回收站中的資料是有其自身的限制的。本文以回收站中表不可DML和DDL操作為例進行了演示。
Good luck.
secooler
11.06.25
-- The End --
1.模擬表被不含有PURGE關鍵字的DROP語句刪除
1)檢視資料庫版本
sec@ora10g> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
2)確認回收站功能已經開啟
sec@ora10g> show parameter recyclebin
NAME TYPE VALUE
----------- ------- ------------
recyclebin string on
3)建立表T並初始化資料
sec@ora10g> create table t (x int);
sec@ora10g> insert into t values (1);
sec@ora10g> insert into t values (2);
sec@ora10g> commit;
sec@ora10g> select * from t;
X
----------
1
2
3)刪除T表
sec@ora10g> drop table t;
Table dropped.
2.檢視回收站中的內容
sec@ora10g> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
T BIN$pnchvzFWXVTgQMKQt8Boqw==$0 TABLE 2011-06-25:22:36:49
可見,剛剛被刪除的T表已經在回收站中得以體現。
3.對回收站中的表嘗試查詢
sec@ora10g> select * from "BIN$pnchvzFWXVTgQMKQt8Boqw==$0";
X
----------
1
2
查詢功能生效。
4.對回收站中的表嘗試DML操作
1)嘗試插入操作
sec@ora10g> insert into "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" values (3);
insert into "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" values (3)
*
ERROR at line 1:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin
說明對回收站中的表進行插入操作是不可行的。
2)嘗試刪除操作
sec@ora10g> delete from "BIN$pnchvzFWXVTgQMKQt8Boqw==$0";
delete from "BIN$pnchvzFWXVTgQMKQt8Boqw==$0"
*
ERROR at line 1:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin
說明對回收站中的表進行刪除操作是不可行的。
3)嘗試更新操作
sec@ora10g> update "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" set x=100;
update "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" set x=100
*
ERROR at line 1:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin
說明對回收站中的表進行更新操作是不可行的。
透過增刪改等一系列DML操作測試,表明回收站中的表不可被DML操作的。
5.對回收站中的表嘗試DDL操作
以重新命名操作為例演示DDL操作。
sec@ora10g> alter table "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" rename to t;
alter table "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" rename to t
*
ERROR at line 1:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin
說明對回收站中的表進行DDL操作是不可行的。
6.小結
存放在回收站中的表可以使用閃回技術恢復為原始表的狀態,這是它的優勢。與此同時,回收站中的資料是有其自身的限制的。本文以回收站中表不可DML和DDL操作為例進行了演示。
Good luck.
secooler
11.06.25
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-700771/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL的DDL和DML操作語法MySql
- 配置支援DML和DDL操作同步的GoldenGateGo
- 使用Logminer工具分析DML和DDL操作
- DML操作 DDL觸發器觸發器
- Flashback Drop閃回刪除功能實踐(基於回收站)
- 程式碼中被植入了惡意刪除操作,太狠了!
- DDL、DML、DCL、DQL相關操作
- Mysql 基礎操作 DDL DML DCLMySql
- DML, DDL操作的自動提交問題
- flashback database 恢復誤刪除的表空間。Database
- 表的建立修改及增刪改查-DML操作
- Flashback Query 針對DML誤操作的恢復
- SQL基礎——DML(插入、修改和刪除)SQL
- Oracle DBLINK 抽數以及DDL、DML操作Oracle
- DDL,DML操作對結果快取的影響快取
- 通過flashback database恢復被刪除的表空間Database
- 刪使用者刪表空間的操作還能flashback回來嗎?
- MySQL DDL操作表MySql
- MsSql資料庫使用SQL plus建立DDL和DML操作方法SQL資料庫
- 【Flashback】Flashback Drop閃回刪除功能實踐
- Oracle10g 回收站及徹底刪除table : drop table xx purge 以及flashbackOracle
- MsSql 資料庫使用sqlplus建立DDL和DML操作方法SQL資料庫
- 【Oracle】刪除大表操作一則Oracle
- FLASHBACK DATABASE可以恢復刪除的TABLESPACEDatabase
- logminer來恢復在表DDL之前被刪除的資料
- 04 MySQL 表的基本操作-DDLMySql
- 刪除listener中被佔用的2100、8080埠
- DBF刪除和改名的恢復操作
- 閃回之 Flashback Query (dml表、過程、函式、包等)、Flashback version Query函式
- DML、DDL、DCL區別
- DDL,DML,DCL區別
- MYSQL學習筆記4: DML資料操作(增刪改)MySql筆記
- vue+element-ui操作刪除(單行和批量刪除)VueUI
- Begin end程式碼段裡面有DDL和DML,如果DDL成功了而DML失敗了,則DDL的程式碼也會回滾
- MySQL之資料庫和表的基本操作(建立表、刪除表、向表中新增欄位)MySql資料庫
- 處理表重複記錄(查詢和刪除)
- 單表的更新UPDATE和刪除記錄DELETE(二十六)delete
- DML操作涉及到的系統表