標籤:使用 strong 檔案 資料 問題 資料庫 sql size
通常ORACLE資料庫佔用硬碟空間過大的原因有這麼幾個(以oracle 10.2.0版本為例):
1、oracle的安裝目錄...\oracle\product\10.2.0\admin\orcl\udump目錄下,追蹤日誌檔案佔用大量硬碟空間;
2、oracle的安裝目錄...\oracle\product\10.2.0\oradata\orcl目錄下,UNDO資料表空間檔案佔用大量硬碟空間。
針對以上兩個問題,解決方案如下。
第一個問題解決方案:
udump目錄下面是oracle的追蹤記錄檔,如果平常不去關心的話,建議刪除掉。對資料庫不會造成影響。另外在SQLPLUS中輸入:
alter system set sql_trace =false;
如果需要保留追蹤記錄檔的,那可以給設定一個限額。命令列如下:
alter system set max_dump_file_size=‘100m‘ ;
註:max_dump_file_size預設大小值的單位是資料區塊,因此如果限定了大小為100M,需要加單引號。
第二個問題的解決方案:
需要回收UNDO資料表空間。先建立一個新的過度的資料表空間UNDOTBS02,將UNDO資料表空間指向到UNDOTBS02,然後DROP原來的資料表空間UNDOTBS01,刪除UNDOTBS01.DBF檔案,釋放磁碟空間。接著建立新的資料表空間UNDUTBS01,再將UNDO資料表空間指向到建立資料表空間的UNDOTBS01,DROP過度的資料表空間UNDOTBS02。
具體操作如下:
1)使用DBA登陸SQLPLUS
2)建立過度資料表空間undotbs02
create undo tablespace undotbs02 datafile ‘e:\undotbs02.dbf‘ size 100M;
3)切換UNDO資料表空間為新的UNDO資料表空間
alter system set undo_tablespace=undotbs02 scope=both;
4)刪除原UNDO資料表空間
drop tablespace undotbs01 including contents;
5)刪除硬碟上...\oracle\product\10.2.0\oradata\orcl目錄下的undotbs01.dbf檔案。
6)建立新的資料表空間undotbs01,切換UNDO資料表空間到建立的undotbs01,刪除undotbs02資料表空間。方法同上。
至此,完成了UNDO資料表空間回收。
上面的操作是臨時解決UNDO資料表空間過大的方法。Oracle的AUM(Auto Undo Management)從出生以來就經常出現只擴充,不收縮(shrink),通常我們可以設定足夠的UNDO資料表空間大小,然後取消其自動擴充屬性。