Oracle資料庫日常維護詳細講解

來源:果殼範文吧 2.42W

Oracle資料庫日常維護詳細講解

Oracle資料庫日常維護詳細講解

在Oracle資料庫執行期間,DBA應該對資料庫的執行日誌及表空間的使用情況進行監控,及早發現數據庫中存在的問題。

一、Oracle警告日誌檔案監控

Oracle在執行過程中,會在警告日誌檔案(alert_)中記錄資料庫的一些執行情況:

●資料庫的啟動、關閉,啟動時的非預設引數;

●資料庫的重做日誌切換情況,記錄每次切換的時間,及如果因為檢查點(checkpoint)操作沒有執行完成造成不能切換,會記錄不能切換的原因;

●對資料庫進行的某些操作,如建立或刪除表空間、增加資料檔案;

●資料庫發生的錯誤,如表空間不夠、出現壞塊、資料庫內部錯誤(ORA-600)

DBA應該定期檢查日誌檔案,根據日誌中發現的問題及時進行處理

問題處理

啟動引數不對檢查初始化引數檔案

因為檢查點操作或歸檔操作沒有完成造成重做日誌不能切換如果經常發生這樣的情況,可以考慮增加重做日誌檔案組;想辦法提高檢查點或歸檔操作的效率;

有人未經授權刪除了表空間檢查資料庫的安全問題,是否密碼太簡單;如有必要,撤消某些使用者的系統許可權

出現壞塊檢查是否是硬體問題(如磁碟本生有壞塊),如果不是,檢查是那個資料庫物件出現了壞塊,對這個物件進行重建

表空間不夠增加資料檔案到相應的表空間

出現ORA-600根據日誌檔案的內容檢視相應的'TRC檔案,如果是Oracle的bug,要及時打上相應的補丁

二、資料庫表空間使用情況監控(字典管理表空間)

資料庫運行了一段時間後,由於不斷的在表空間上建立和刪除物件,會在表空間上產生大量的碎片,DBA應該及時瞭解表空間的碎片和可用空間情況,以決定是否要對碎片進行整理或為表空間增加資料檔案。

select tablespace_name,

count(*) chunks ,

max(bytes/1024/1024) max_chunk

from dba_free_space

group by tablespace_name;

上面的SQL列出了資料庫中每個表空間的空閒塊情況,如下所示:

TABLESPACE_NAME CHUNKS MAX_CHUNK

-------------------- ---------- ----------

INDX 1 57.9921875

RBS 3 490.992188

RMAN_TS 1 16.515625

SYSTEM 1 207.296875

TEMP 20 70.8046875

TOOLS 1 11.8359375

USERS 67 71.3671875

其中,CHUNKS列表示表空間中有多少可用的空閒塊(每個空閒塊是由一些連續的Oracle資料塊組成),如果這樣的空閒塊過多,比如平均到每個資料檔案上超過了100個,那麼該表空間的碎片狀況就比較嚴重了,可以嘗試用以下的SQL命令進行表空間相鄰碎片的接合:

alter tablespace 表空間名 coalesce;

然後再執行查看錶空間碎片的SQL語句,看錶空間的碎片有沒有減少。如果沒有效果,並且表空間的碎片已經嚴重影響到了資料庫的執行,則考慮對該表空間進行重建。

MAX_CHUNK列的結果是表空間上最大的可用塊大小,如果該表空間上的物件所需分配的空間(NEXT值)大於可用塊的大小的話,就會提示ORA-1652、ORA-1653、ORA-1654的錯誤資訊,DBA應該及時對錶空間的空間進行擴充,以避免這些錯誤發生。

對錶空間的擴充對錶空間的資料檔案大小進行擴充套件,或向表空間增加資料檔案,具體操作見“儲存管理”部份。

熱門標籤