2008年12月3日 星期三

Change redo log file size

註 : 本範例為 oracle 8.1.7.0


前言 :

在安裝好 oracle redo log file 都沒去變更過 都是建資料庫時的內定值
最近發先資料庫效能有問題所以才想到去變動這些設定檔
首先變更 init.ora 裡面的 log_buffer 的內定值 原本的值為 32768 = 32K 太小
導致常常會做寫入動作 , 首先先改這參數 , 至於要多大就看各環境而定。


1. 建立新的 redo log file :

redo log file 自從建立資料庫後就一直使用內定值沒變動過 , 內定值及數量如下圖 :



這一次要調整為一樣有 3個 group , 但是每個 group 有2個member,
其目的為容錯之用 , 並加大每個redolog file 至 10M.

建立新的 REDO LOG GROUP的語法 :
alter database add logfile group X ('/$oracle_HOME/datafilename ') size XXM
如下圖 :






2. Drop 舊有的 redo log file :

檢查現有的 redo log file 狀態 , 若是 inactive 才可以drop

語法 : select * from v$log;

在 STATUS 的欄位,各種值的說明如下:

CURRENT :  目前正在寫入的群組。
ACTIVE :      Checkpoint 正在進行中,寫入 datafile,尚未完成。
INACTIVE :  Checkpoint 已經完成。資料可以覆蓋。
CLEANING : 日誌正被清除內容但尚未完成。
UNUSED :      尚未被使用過或已經被清除完成。


清除  redo log file 語法 :
alter database drop logfile group X;

如下圖 :



若要移除的 redo log 目前的狀態是 active , 可以用下面指令切換到
下一個 redo log file 使其狀態由 active 變成 inactive

alter system switch logfile;
alter system checkpoint;

當已經都 drop 掉舊有的 redo log file 後 , 在 8.1.7.0版本 在 OS 裡面
檔案還是存在 , 這時才可以到檔案管理員去 delete file .

沒有留言: