熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle快速刪除數據字典管理的表空間

2013-11-13 22:08:39  來源: Oracle 

  我的測試環境:Hp rp主機Hpunix OSOracle的數據庫一個有張表大約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 sysdbms_space_admintablespace_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_tablessql
  
  SQL>SELECT Drop table ||TABLE_name||; FROM dba_tables WHERE tablespace_name=TBS_TEST;
  
  SQL>spool off
  
  c刪除表
  
  SQL>@drop_test_tablessql
  這一步大約花費
  
  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
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.