有的人可能還不知道什麼是重做日誌文件,其實就是你的oradata目錄下面的那幾個redo.log文件。
作用:當你的數據庫崩潰的時候,管理員可以通過重做日誌文件和數據庫備份文件,把數據庫恢復到最近一次記錄日誌時的狀態。
在創建oracle數據庫的時候,默認創建了3個重做日誌組(對於數據庫來說,至少需要2個重做日誌組),每一個日誌組包含一個或者多個重做日誌文件。
每一個重做日誌組都有自己的內部序號,oracle按照序號從小到大的順序向日志組中寫入日誌信息。當一個重做日誌組寫滿後,後臺進程LGWR開始寫入下一個重做日誌組,依次類推,假如說所有的重做日誌組都寫滿了,則從第一個日誌組開始覆蓋重寫,如此循環寫入。
其中,重做日誌文件有三種狀態:
current(當前狀態):正在被lgwr進程寫入
active(活動狀態):正在被實例用於數據庫恢復
inactive(未活動狀態):顧名思義,就是沒被使用的狀態
日誌組狀態可以通過視圖v$log進行查看:
好,接下來我們開始搞一下如下幾個技術點:
⒈增加日誌組及其成員
實際工作中,爲了防止後臺進程LGWR等待寫入日誌組導致效率太低,作爲管理員,我們要增加重做日誌組。注意:重做日誌文件的大小一般在10M - 50M之間,默認是50M。
接下來我就在數據庫中添加一個日誌組(日誌組是由日誌文件組成的,我們只能查到日誌組序號,看到的只是日誌文件):
如上圖所示,紅框中是直接創建了日誌組4,默認序號是往後面自動排的。也可以在增加日誌組的時候直接指定組序號,如藍框中的語句。
⒉創建日誌組中的日誌文件
舉例:爲第5個重做日誌組添加一個新的日誌文件
注意:
A:如果我們在工作中發現存放某個日誌文件的磁盤損壞了,這時候就需要刪除該損壞磁盤的日誌文件,防止oracle將重做日誌繼續寫入到損壞的日誌文件中。
① 如果整個日誌文件組都不再需要(刪除日誌組,其中的成員日誌文件也會刪除)
其中:
Ⅰ.一個數據庫至少需要兩個重做日誌組,刪除時不能超過這個限制;
Ⅱ.只能刪除處於inactive狀態的日誌組,如果要刪除處於current狀態的日誌組,則必須手動切換日誌,將它切換到inactive狀態。
切換日誌組方法如下:
Ⅲ.如果數據庫處於歸檔狀態,在刪除重做日誌組之前必須確定目標日誌組已經歸檔。
② 僅僅只是刪除日誌組成員
舉例:刪除第4個日誌組中的成員redo4_2.log,如下圖所示:
需要注意的是,無論是刪除日誌組還是刪除日誌成員,刪除的都只是數據字典和控制文件中的日誌組和日誌成員信息,對應的物理文件並沒有刪除。打開我的Linux裏面,給大家看一下就會發現,我的物理文件還是存在的。若要刪除,則需要手工幹掉。(window更簡單,這裏不講)
③ 清空日誌文件
舉例:清空第4個日誌組中的所有日誌文件內容
B:如果你的某一個日誌文件存放在/home目錄下,結果磁盤空間不足,是不是應該把日誌文件移動到別的盤呢?怎麼移動呢?步驟如下:
① 關閉數據庫
② 手動複製源文件到目標位置
③ 啓動實例,加載數據庫,但不打開數據庫
④ 重新設置重做日誌文件的路徑
注意:to上面的是源文件路徑,下面的是目標文件路徑。
⑤ 打開數據庫
OK,到此爲止已經成功更改了重做日誌文件路徑,現在系統使用的redo4*.log的路徑是/home/oracle/backup下面的redo4_1bak.log,來,我們通過查看數據字典視圖v$logfile證實一把:
特別地,查看重做日誌信息常用視圖:
v$log 查看重做日誌組信息
v$logfile 查看日誌組中日誌文件信息
v$log_history 查看日誌歷史信息
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈!
看到了吧?
就是這麼好玩
就是這麼6
有木有?