我的測試環境:Hp rp
主機
Hp
unix
OS
Oracle
的數據庫
一個有
張表大約
G的測試表空間TBS_TEST
問題的提出
Oracle中在使用drop tablespace including contents;刪除數據字典管理的表空間時存在著很大的效率問題
測試開始:
使用drop tablespace including contents;方式直接來刪除
SQL>set linesize
SQL>set pagezie
SQL>set timing on
SQL>drop tablespace TBS_TEST including contents
/
已用時間:
:
:
經過我耐心的等待
花了三個半小時
測一下同樣的表空間
把它轉換為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
刪出這個空間
SQL> drop tablespace TBS_TEST including contents
/
已用時間:
:
:
可以看到總共才花費了
分多鐘
測一下同樣的表空間
先刪除其中的對象
然後再刪這個表空間的效率如何
a
把TBS_TEST通過恢復回來
b
形成刪除表的語句
SQL>set linesize
SQL>set pagezie
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
這一步大約花費
秒
d
刪出這個空間
SQL>set timing on
SQL> drop tablespace TBS_TEST including contents;
已用時間:
:
:
可以看到總共才花費了將近
分鐘
總結
我們在做數據字典管理的表空間的刪除時
最好先刪除表空間中的對象再進行刪除該表空間操作
也可以先把它轉換為本地(local)管理的空間再進行刪除
不過需要補充的是本地管理的空間在
i以後的版本中才是有的
From:http://tw.wingwit.com/Article/program/Oracle/201311/18327.html