首頁 > 軟體

詳解Oracle控制檔案及紀錄檔檔案的管理問題

2022-07-07 14:05:10

一、控制檔案的管理

控制檔案是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:appredo05_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控制檔案管理內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com