我的測試環境:hp rp7410主機,hp-unix11.11 os,oracle8.1.7.4的資料庫,乙個有90張表大約100g的測試表空間tbs_test.
問題的提出:oracle中在使用drop tablespace including contents;刪除資料字典管理的表空間時存在著很大的效率問題。
測試開始:
1、使用drop tablespace including contents;方式直接來刪除.
sql>set linesize 132
sql>set pagezie 0
sql>set timing on
sql>drop tablespace tbs_test including contents
2 /經過我耐心的等待,花了三個半小時。
2、測一下同樣的表空間,把它轉換為local方式管理的刪除效率。
a、把tbs_test通過恢復回來。
b、把tbs_test轉化為local管理的方式。
sql>set timing on
sql> exec sys.dbms_space_admin.tablespace_migrate_to_local('tbs_test') ;
c、刪出這個空間。
可以看到總共才花費了7分多鐘。
3、測一下同樣的表空間,先刪除其中的物件,然後再刪這個表空間的效率如何。
a、把tbs_test通過恢復回來。
b、形成刪除表的語句
sql>set linesize 132
sql>set pagezie 0
sql>set timing off
sql>spool drop_test_tables.sql
sql>select 'drop table '||table_name||';' from dba_tables where tablespace_name='tbs_test';
sql>spool off
c、刪除表
sql>@drop_test_tables.sql
這一步大約花費20秒
d、刪出這個空間。
sql>set timing on
sql> drop tablespace tbs_test including contents;
總結:我們在做資料字典管理的表空間的刪除時,最好先刪除表空間中的物件再進行刪除該錶空間操作。也可以先把它轉換為本地(local)管理的空間再進行刪除。不過需要補充的是本地管理的空間在8i以後的版本中才是有的。
oracle刪除資料
oracle在表中刪除資料的語法是 語法結構 delete from表名 where 條件 演示 sql delete from infos where stuid s100103 1 row deleted sql commit truncate 在資料庫操作中,truncate命令 是乙個ddl...
MySQL中如何刪除資料
使用delete子句 delete from 表名 where 條件 例 刪除 e 表中 emp id 為 1 的雇員資訊。delete from e where emp id 1 使用truncate清空表 truncate table 表名 例 刪除 e 表中的所有資料 truncate tab...
Oracle中主從多表刪除資料
oracle中主從多表刪除資料時,必須用級聯刪除嗎?乙個主表,帶了三個從表,一一關聯,a為主表 a b c d 從a表中刪除一條資料時,要把bcd表裡相關的資料都刪除的話 用什麼方法最好,必須用級聯刪除嗎?1.用觸發器 2.建表時加關鍵字。比如b表某列關聯a表主鍵列,則 create table b...