詳解Oracle控制文件及日志文件的管理問題
目錄
- 一、控制文件的管理
- 1、控制文件的概述
- 2、控制文件的創建
- 1、控制文件的重新建立
- 3、控制文件的備份
- 1、將控制文件備份為二進制文件
- 2、將控制文件備份為文本文件
- 4、控制文件的恢復
- 5、添加多路復用的控制文件
- 二、重做日志文件的管理
- 1、重做日志文件概述
- 2、查詢重做日志文件信息
- 3、重做日志文件組及成員的創建
- 4、重做日志文件組及成員的刪除
- 5、修改重做日志文件的名稱或位置
- 三、歸檔日志文件的管理
- 1、歸檔日志文件概述
- 2、歸檔日志信息的查詢
- 3、歸檔模式的設置
- 四、總結
一、控制文件的管理
控制文件是oracle的物理文件之一,每個oracle數據庫都必須至少有一個控制文件,它記錄了數據庫的名字、數據文件的位置等信息。在啟動數據實例時,oracle會根據初始化參數定位控制文件,然后oracle會根據控制文件在實例和數據庫之間建立關聯。控制文件的重要性在于,一旦控制文件損壞,數據庫將會無法啟動。
1、控制文件的概述
控制文件在數據庫創建時被自動創建,并在數據庫發生物理變化時會同時更新。在任何時候都要保證控制文件是可用的。只有oracle進程才能夠安全地更新控制文件的內容,所以,任何時候都不要試圖手動編輯控制文件。
2、控制文件的創建
數據庫在創建的時候,系統會根據初始化參數文件中control_files的設置創建控制文件。在后期數據庫的使用過程中,如果控制文件丟失或者損壞,可以通過手工創建新的控制文件。
手工創建控制文件的基本語法如下所示。
create controlfile reuse database db_name logfile group 1 redofiles_list1 ... datafile ... maxlogfiles max_value1 maxlogmembers max_value2 maxinstances max_value3 maxdatafiles max_value4 noresetlogsiresetlogs archiveloginoarchivelog;
參數說明如下。
db_name:數據庫名稱。
logfile:表示下面定義日志組文件。
redofiles_list1:重做日志組中的重做日志文件列表1名稱及路徑。
datafile:表示下面定義數據文件。
max_value1:最大的重做日志文件數。
max_value2:最大的重做日志組成員數。
max_value3:最大實例數。
max_value4:最大數據文件數。
新建控制文件的基本步驟如下。
1、查看數據庫中所有的數據文件和重做日志文件的名稱和路徑。
2、關閉數據庫。
3、備份所有的數據文件和重做日志文件。
4、啟動數據庫實例。
5、創建新的控制文件。
6、編輯初始化參數。
7、重新打開數據庫。
1、控制文件的重新建立
1、查看數據庫中所有的數據文件和重做日志文件的名稱和路徑。
如果數據庫可以打開,則可以使用數據字典獲取數據文件和日志文件的基本信息,如下所示。
使用數據字典v$logfile獲取日志文件信息。
select member from v$logfile;
使用數據字典v$datafile獲取數據文件信息。
select name from v$datafile;
使用數據字典v$controlfile獲取控制文件信息。
select name from v$controlfile;
2、關閉數據庫
如果數據庫處于運行狀態,在創建控制文件之前,首先以sys用戶登錄,關閉數據庫。
conn sys/change_on_install as sysdbashutdown normal
3、備份所有的數據文件和重做日志文件。
4、啟動數據庫實例。
備份完成后,啟動數據庫,但是先不加載數據庫,這主要是因為如果加載數據庫,會同時打開控制文件,就無法實現創建新的控制文件的目的。
startup nomount
3、控制文件的備份
在日常數據庫維護過程中,為了避免由于控制文件丟失或者損壞而導致數據庫系統崩潰,需要經常對控制文件進行備份。特別是當修改了數據庫結構之后,例如數據文件的添加、刪除等,都需要及時重新備份控制文件。
備份控制文件可以使用下面語句來實現。
alter database backup controlfile
使用該語句一般有兩種備份,一種是以二進制文件的形式進行備份,另一種是以文本文件的形式進行備份。下面就分別看一下如何實現控制文件的備份。
1、將控制文件備份為二進制文件
alter database backup controlfile to "c:\bak.bkp";
上面代碼實現將控制文件備份到C盤根目錄下,文件名為bak.bkp,該文件以二進制形式存在。
2、將控制文件備份為文本文件
alter database backup controlfile to trace;
4、控制文件的恢復
當數據庫由于各種情況發生損壞時,這時可以使用所備份的文件來恢復數據庫。在日常維護中,經常會遇到兩種情況,一種是控制文件損壞,另一種情況是磁盤發生故障。
當控制文件損壞時,這種情況較為簡單,只需要用備份文件替換損壞的文件即可,不過復制之前要先關閉數據庫,然后再復制,復制完成后需要重新啟動。
5、添加多路復用的控制文件
為了提高數據庫的可靠性,可以建立多個鏡像的控制文件,并且分別保存在不同的磁盤中進行多路復用,這樣就可以避免由于單個設備故障而使得數據庫無法啟動的情況發生,這種管理策略被稱為多路復用控制文件。當某個磁盤發生物理損壞導致控制文件損壞,數據庫將被關閉,此時就可以利用另一個磁盤中保存的控制文件來恢復被損壞的控制文件,然后再重新啟動數據庫,達到保護控制文件的目的。
二、重做日志文件的管理
重做日志文件也稱為日志文件,是記錄系統的日常操作、異常等行為的文件,是包含系統信息的文件,包括內核、服務、在系統上運行的應用程序等。重做日志文件是數據庫安全和恢復的基本保障,當數據庫出現故障的時候,管理員可以根據日志文件和數據庫備份文件,將崩潰的數據庫恢復到最近一次記錄日志時的狀態。
1、重做日志文件概述
在oracle數據庫中,重做日志文件用于記錄用戶對數據庫所做的各種變更操作所引起的數據變化,此時,所產生的操作會先寫入重做日志緩沖區,當用戶提交一個事務的時候,LGWR進程將與該事務相關的所有重做記錄寫入重做日志文件,同時生成一個“系統變更數”,scn會和重做記錄一起保存到重做日志文件組,以標識與該事務提交成功。如果某個事務提交出現錯誤,可以通過重做記錄找到數據庫修改之前的內容,進行數據恢復。
2、查詢重做日志文件信息
在oracl數據庫日常運行過程中,數據庫管理員可以查看重做日志文件信息,用于了解數據庫的運行情況。這可以通過查詢數據字典視圖v l o g 、 v log、v log、vlogfile和v l o g h i s t o r y 來 實 現 , 通 過 它 們 可 以 查 詢 的 信 息 如 下 。 v log_history來實現,通過它們可以查詢的信息如下。 v logh?istory來實現,通過它們可以查詢的信息如下。vlog:包含重做日志文件組的信息。
v l o g f i l e : 包 含 重 做 日 志 文 件 成 員 信 息 。 v logfile:包含重做日志文件成員信息。 v logfile:包含重做日志文件成員信息。vlog_history:包含日志歷史信息。
3、重做日志文件組及成員的創建
在數據庫的日常維護過程中,數據庫管理員可以通過手工方式向數據庫中添加新的重做日志組或日志文件,也可以改變重做日志文件的名稱與位置,或者刪除重做日志組或其成員。
1、創建重做日志文件組
語法如下:
alter database add logfile [group] [編號](日志文件) size
上面語句中group可選,當不選擇的時候,系統會自動產生組號,為當前重做日志文件組的個數加1。
4、重做日志文件組及成員的刪除
當重做日志文件組,其成員不合適或者所在存儲位置出現錯誤時,此時可以將重做日志文件組或者其成員刪除。
1、刪除重做日志成員文件
刪除重做日志文件成員使用如下語法。
alter database drop logfile member 文件名
刪除group5添加的新成員文件
alter database drop logfile member "d:\app\redo05_3.log";
5、修改重做日志文件的名稱或位置
在數據庫正常使用中,如果想要改變重做日志文件的名稱或位置,可以按照如下步驟進行重做日志文件的修改。
1、關閉數據庫。
2、復制或者修改日志文件的位置。
3、啟動數據庫實例,但不打開數據庫,只加載數據庫。
4、重新設置重做日志文件的名稱或位置。
5、打開數據庫。
三、歸檔日志文件的管理
在oracle數據庫中,重做日志文件用于記錄用戶對數據庫所做的各種變更操作所引起的數據變化。在把這些變化寫入重做的日志文件的時候,一般情況下有多個重做日志文件組,每個文件組有多個文件,oracle向這些重做文件寫入的時候,一般情況下有多個重做日志文件組,每個文件組有多個文件,oracle向這些重做文件寫入的時候,是使用循環的方式向這些重做日志文件組中的文件進行寫入的,當最后一個重做日志文件組中的文件內容寫滿后,會重新寫入第一個重做日志文件組中的文件。在這種情況下,原先重做日志文件的內容如何處理,是直接覆蓋還是把原先的記錄保存,就是我們要介紹的歸檔日志。
1、歸檔日志文件概述
所謂歸檔日志文件就是指當重做日志文件寫滿的時候,把其中內容保存到新的文件中,這些新的文件集合就是歸檔日志文件。但是重做日志文件并不一定主動被保存到新的文件中,根據數據庫設置不同,oracle有兩種日志模式:歸檔日志模式和非歸檔日志模式。在非歸檔日志模式下,原日志文件的內容會被新的日志內容所覆蓋;在歸檔日志模式下,oracle會首先對原日志文件進行歸檔存儲,且在歸檔未完成之前不允許覆蓋原有日志。
2、歸檔日志信息的查詢
數據庫管理人員可以修改歸檔日志文件和非歸檔日志文件,但首先需要了解歸檔日志信息。在oracle中,可以通過查詢數據字典了解歸檔日志的一些基本信息,常用的數據字典有v a r c h i v e d l o g 、 v archived_log、v archivedl?og、varchive_dest、v$database等
3、歸檔模式的設置
默認情況下,oracle數據庫處于非歸檔日志模式,即當重做日志文件寫滿的時候,直接覆蓋里面的內容,原先的日志記錄不會被寫入到歸檔日志文件中。根據oracle數據庫對應的應用系統不同,數據庫管理員可以把數據庫的日志模式在歸檔模式和非歸檔模式之間進行切換。可以通過alter database archivelog或noarchivelog語句實現數據庫在歸檔模式與非歸檔模式之間進行切換。
切換步驟如下:
1、關閉數據庫
shutdown immediate;
2、將數據庫啟動到加載狀態。
startup mount;
3、修改數據庫的歸檔模式或非歸檔模式
歸檔模式修改為非歸檔模式
alter database noarchivelog;
非歸檔模式修改為歸檔模式
alter database archivelog;
4、重新打開數據庫
alter database open;
四、總結
這里的相關內容還沒有整理完畢,文章后面持續更新,建議收藏。
文章中涉及到的命令大家一定要像我一樣每個都敲幾遍,只有在敲的過程中才能發現自己對命令是否真正的掌握了。
到此這篇關于Oracle控制文件及日志文件的管理的文章就介紹到這了,更多相關Oracle控制文件管理內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!
