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

2021-03-31 08:56:30 字數 1575 閱讀 5524

oracle 快速刪除資料字典管理的表空間

我的測試環境 :hp rp7410 主機, hp-unix11.11 os,oracle 8.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 /

已用時間 : 03: 35: 39.10

經過我耐心的等待,花了三個半小時。

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') ;

已用時間 : 00: 06: 33.25

c 、刪出這個空間。

sql> drop tablespace tbs_test including contents

2 /

已用時間 : 00: 00: 45.56

可以看到總共才花費了 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;

已用時間 : 00: 07: 35.53

可以看到總共才花費了將近 8 分鐘。

總結:我們在做資料字典管理的表空間的刪除時,最好先刪除表空間中的物件再進行刪除該錶空間操作。也可以先把它轉換為本地 (local) 管理的空間再進行刪除。不過需要補充的是本地管理的空間在 8i 以後的版本中才是有的。

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

我的測試環境 hp rp7410主機,hp unix11.11 os,oracle8.1.7.4的資料庫,乙個有90張表大約100g的測試表空間tbs test.問題的提出 oracle中在使用drop tablespace including contents 刪除資料字典管理的表空間時存在著很大...

Oracle 資料字典

資料字典包括以下內容 1.所有資料庫schema物件的定義 表,檢視,索引,聚簇,同義詞,序列,過程,函式,包,觸發器 2.資料庫的空間分配和使用情況 3.欄位的預設值 4.完整性約束資訊 5.oracle使用者名稱,角色,許可權等資訊 6.審計資訊 7.其他資料庫資訊 資料字典有4部分組成 內部r...

oracle 資料字典

oracle資料字典 select from user tab columns 檢視使用者列物件 select from user tab comments 檢視使用者表的備註 select from user tab statistics select from all users 所有使用者 s...