Oracle中如何快速刪除資料字典管理的表空間

2021-04-17 07:48:26 字數 1366 閱讀 8933

我的測試環境: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...