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

來源:互聯網
上載者:User
oracle|資料
我的測試環境:Hp rp7410主機,Hp-unix11.11 OS,Oracle8.1.7.4的資料庫,一個有90張表大約100G的測試資料表空間TBS_TEST.

問題的提出:Oracle中在使用drop tablespace <tablespace_name> including contents;刪除資料字典管理的資料表空間時存在著很大的效率問題。

測試開始:

1、使用drop tablespace <tablespace_name> 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以後的版本中才是有的。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.