版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Oracle11g數(shù)據(jù)庫應(yīng)用教程
1Oracle11g數(shù)據(jù)庫應(yīng)用教程
1第6章控制文件和日志文件的管理本章概述本章的學(xué)習(xí)目標(biāo)主要內(nèi)容2第6章控制文件和日志文件的管理本章概述2本章概述
Oracle數(shù)據(jù)庫包含的文件類型有三種——數(shù)據(jù)文件、控制文件和重做日志文件。數(shù)據(jù)文件主要存儲數(shù)據(jù)庫中的數(shù)據(jù),包括各種數(shù)據(jù)庫對象和數(shù)據(jù)。控制文件存放數(shù)據(jù)庫的結(jié)構(gòu)信息。重做日志文件存放用戶執(zhí)行數(shù)據(jù)庫定義和數(shù)據(jù)庫操縱語言命令的記錄。保證控制文件和重做日志文件的可用性和可靠性是確保Oracle數(shù)據(jù)庫正??煽窟\行的前提。
在第5章主要介紹了數(shù)據(jù)文件的相關(guān)知識點,本章重點介紹控制文件和日志文件的管理和維護。3本章概述Oracle數(shù)據(jù)庫包含的文件類型有三種—本章的學(xué)習(xí)目標(biāo):了解控制文件的作用理解控制文件的內(nèi)容掌握如何控制文件,包括創(chuàng)建、刪除和查看等操作了解日志文件的作用掌握如何對日志文件進行管理,包括創(chuàng)建、查看、切換、刪除等操作理解歸檔的概念切換數(shù)據(jù)庫到歸檔模式設(shè)置歸檔參數(shù)4本章的學(xué)習(xí)目標(biāo):4主要內(nèi)容6.1控制文件管理6.2重做日志管理6.3歸檔日志管理6.4小結(jié)6.5習(xí)題5主要內(nèi)容6.1控制文件管理56.1控制文件管理
控制文件是Oracle數(shù)據(jù)庫中最重要的物理文件,每個Oracles數(shù)據(jù)庫都必須有一個控制文件,一個控制文件只屬于一個數(shù)據(jù)庫。在啟動數(shù)據(jù)庫實例時,Oracle會根據(jù)初始化參數(shù)定位控制文件;然后Oracle會根據(jù)控制文件在實例和數(shù)據(jù)庫直接建立關(guān)聯(lián)。如果控制文件被損壞,則會造成整個Oracle數(shù)據(jù)庫無法啟動。本節(jié)重點介紹控制文件的管理。66.1控制文件管理控制文件是Oracle數(shù)據(jù)庫中最6.1.1控制文件概述
控制文件是一個很小的二進制文件,它包含了數(shù)據(jù)庫的結(jié)構(gòu)信息(即構(gòu)成數(shù)據(jù)庫的數(shù)據(jù)文件和日志文件)。在創(chuàng)建數(shù)據(jù)庫時會創(chuàng)建控制文件,在數(shù)據(jù)庫發(fā)生改變時會自動修改控制文件,以記錄當(dāng)前數(shù)據(jù)庫的狀態(tài)??刂莆募饕韵滦畔ⅲ骸駭?shù)據(jù)庫名稱?!?/p>
數(shù)據(jù)文件和重做日志文件的位置和名稱?!?/p>
數(shù)據(jù)庫創(chuàng)建的時間戳?!?/p>
當(dāng)前日志序列號?!?/p>
檢查點信息。●
表空間名稱?!?/p>
備份和恢復(fù)信息。76.1.1控制文件概述控制文件是一個很小的二進制
Oracle數(shù)據(jù)庫的控制文件是在數(shù)據(jù)庫創(chuàng)建的同時創(chuàng)建的。默認情況下,在數(shù)據(jù)庫創(chuàng)建期間至少有一個控制文件副本。
總之,控制文件用來描述Oracle實體結(jié)構(gòu),在啟動Oracle數(shù)據(jù)庫時讀取控制文件才能取得所有數(shù)據(jù)庫文件的相關(guān)信息。一旦控制文件被損壞,數(shù)據(jù)庫就無法順利啟動??梢?,控制文件的管理與維護工作非常重要且必不可少。6.1.2創(chuàng)建控制文件
控制文件是在創(chuàng)建數(shù)據(jù)庫時自動創(chuàng)建的,在數(shù)據(jù)庫服務(wù)器運行的過程中,重新創(chuàng)建控制文件的機會一般不是很多。需要重新創(chuàng)建控制文件的時機有以下幾種情況:8Oracle數(shù)據(jù)庫的控制文件是在數(shù)據(jù)庫創(chuàng)建的同時創(chuàng)建
●控制文件全部損壞,而且沒有可用的備份。●修改某些永久性參數(shù),如:MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY、MAXINSTANCES等?!裥薷臄?shù)據(jù)庫名稱。創(chuàng)建控制文件的命令是CREATECONTROLFILE。一般創(chuàng)建控制文件的任務(wù)由SYS用戶完成,如果以普通用戶的身份創(chuàng)建控制文件,則需要有SYSDBA權(quán)限。創(chuàng)建控制文件的語法格式及部分語法說明注釋如下:9●控制文件全部損壞,而且沒有可用的備份。9
CREATECONTROLFILE
REUSEDATABASEdatabase_name[NORESETLOGS|RESETLOGS][NOARCHIVELOG|ARCHIVELOG] MAXLOGFILES//最大日志文件大小MAXLOGMENBERS//日志文件組的成員數(shù)MAXINSTANCES//最大實例個數(shù)MAXLOGHISTORY//最大歷史日志文件個數(shù)LOGFILEGROUP1‘logfile_name1’SIZEsize,
…GROUPn‘logfile_namen1’SIZEsizeDATAFILE
‘datafile_name1’,
…
‘datafile_namen’CHARACTERSETWE8DEC//指定字符集10CREATECONTROLFILE10
其中,NORESETLOGS|RESETLOGS代表是否重做日志或重命名數(shù)據(jù)庫,NOARCHIVELOG|ARCHIVELOG代表歸檔狀態(tài)。LOGFILE子句制定了日志文件名稱和位置,DATAFILE指定了數(shù)據(jù)文件的名稱和位置大小。
創(chuàng)建控制文件必須嚴(yán)格遵照創(chuàng)建的步驟,下面以示例說明。11其中,NORESETLOGS|RESETLOGS【例6-1】創(chuàng)建一控制文件。
(1)獲取數(shù)據(jù)庫的數(shù)據(jù)文件和重做日志文件列表。
當(dāng)控制文件沒有損壞,則可以從控制文件中直接獲取。如果控制文件損壞了,可以從系統(tǒng)視圖V$DATAFILE和V$LOGFILE中獲取數(shù)據(jù)文件和重做日志文件的信息。前面的途徑要求數(shù)據(jù)庫能夠正常啟動,如果數(shù)據(jù)庫不能正常啟動,那么此時可以根據(jù)查看警告文件中的內(nèi)容來找原因。如果數(shù)據(jù)庫可以啟動,可以通過執(zhí)行下面的查詢來生成文件列表。
從視圖V$DATAFILE中獲取數(shù)據(jù)文件的信息,代碼如下:SQL>SELECTNAMEFROMV$DATAFILE;
從視圖V$LOGFILE中獲取日志文件的信息,代碼如下:SQL>SELECTMEMBERFROMV$LOGFILE;12【例6-1】創(chuàng)建一控制文件。12執(zhí)行結(jié)果如圖6-1。圖6-1查詢datafile和logfile13執(zhí)行結(jié)果如圖6-1。13(2)關(guān)閉數(shù)據(jù)庫。在創(chuàng)建控制文件之前要關(guān)閉數(shù)據(jù)庫,一般采用正常模式關(guān)閉(SHUTDOWNIMMEDIAE),可以減少數(shù)據(jù)庫重新啟動過程中可能出現(xiàn)的問題。為保證數(shù)據(jù)庫的安全,在關(guān)閉數(shù)據(jù)庫后,應(yīng)該把數(shù)據(jù)庫的日志文件、數(shù)據(jù)文件、參數(shù)文件的等備份到其他磁盤上。(3)備份所有的數(shù)據(jù)文件和重做日志文件。(4)使用STARTUPNOMOUNT啟動數(shù)據(jù)庫實例。執(zhí)行結(jié)果如圖6-2。圖6-2啟動NOMOUNT實例14(2)關(guān)閉數(shù)據(jù)庫。14
(5)使用CREATECONTROLFILE語句創(chuàng)建控制文件。如果需要重命名數(shù)據(jù)庫,則使用RESETLOGS子句,否則使用NORESETLOGS子句。執(zhí)行結(jié)果如圖6-3。圖6-3創(chuàng)建控制文件15(5)使用CREATECONTROLFILE語句創(chuàng)(6)將新的控制文件備份到其他不在線的存儲介質(zhì)中,如U盤、移動硬盤或磁帶等。
(7)修改CONTROL_FILE參數(shù),使其指向新建的控制文件;如果修改了數(shù)據(jù)庫名稱,則還需要修改DB_NAME參數(shù)。SQL>ALTERSYSTEMSETCONTROL_FILES=2‘G:\app\Administrtor\oradata\orcl\CONTROL01.CTL’,3‘G:\app\Administrtor\oradata\orcl\CONTROL02.CTL’,4‘G:\app\Administrtor\oradata\orcl\CONTROL03.CTL’5SCOPE=SPFILE;系統(tǒng)已更改。
(8)如果需要的話,則恢復(fù)數(shù)據(jù)庫。
(9)如果在第8步中進行了恢復(fù)數(shù)據(jù)庫的操作,則需要執(zhí)行ALTERDATABASEOPEN語句打開數(shù)據(jù)庫。SQL>ALTERDATABASEOPEN;16(6)將新的控制文件備份到其他不在線的存儲介質(zhì)中,如U盤、移
如果在創(chuàng)建控制文件時使用了RESETLOGS子句,則需要使用ALTERDATABASEOPENRESETLOGS語句。SQL>ALTERDATABASEOPENRESETLOGS;
新的控制文件已經(jīng)創(chuàng)建成功,并且數(shù)據(jù)庫已經(jīng)被新創(chuàng)建的控制文件打開。6.1.3控制文件備份和恢復(fù)
由于控制文件本身具有特殊的重要性,為了提高數(shù)據(jù)庫的可靠性,DBA要經(jīng)常對控制文件進行備份,尤其是修改了數(shù)據(jù)庫結(jié)構(gòu)之后,需要立刻對控制文件進行備份。
17如果在創(chuàng)建控制文件時使用了RESETLOGS子句,
備份控制文件的方法有兩種:在操作系統(tǒng)下進行和在數(shù)據(jù)庫中進行。如果是在操作系統(tǒng)下備份,需要先停止數(shù)據(jù)庫服務(wù)器的運行,然后將控制文件復(fù)制到備份設(shè)備上,最后重新啟動數(shù)據(jù)庫服務(wù)器。用該方法備份時,數(shù)據(jù)庫服務(wù)器暫時停止的這段時間內(nèi)用戶無法訪問數(shù)據(jù)庫。如果使用數(shù)據(jù)庫備份控制文件,則不需要關(guān)閉數(shù)據(jù)庫服務(wù)器??梢詫⒖刂莆募浞轂橐粋€二進制文件,也可以在跟蹤文件中生成一條SQL語句?!纠?-2】備份控制文件,使用如下語句可以把控制文件備份為一個二進制文件,即復(fù)制當(dāng)前的控制文件:SQL>ALTERDATABASEBACKUPCONTROLFILETO2‘G:\ORACLE_BACKUP\BACKUP_CONTROLFILE\CONTROL_12-2-5’;數(shù)據(jù)庫已更改。18備份控制文件的方法有兩種:在操作系統(tǒng)下進行和在數(shù)據(jù)庫使用下面語句可以講控制文件備份為可讀的文本文件:SQL>ALTERDATABASEBACKUPCONTROLFILETOTRACE;數(shù)據(jù)庫已更改。 需要注意的是,將控制文件以文本形式備份時,所創(chuàng)建的文件也為跟蹤文件,該文件實際上是一個SQL腳本,可以利用它來重新創(chuàng)建新的控制文件。跟蹤文件的存放位置由參數(shù)USER_DUMP_DEST決定。通過下面的代碼可以查看,執(zhí)行結(jié)果如圖6-4。SQL>SHOWPARAMETERUSER_DUMP_DEST;
圖6-4查看跟蹤文件
備份工作完成后,即使發(fā)出了特殊情況,如控制文件損壞或丟失時,可以按照下面的方法恢復(fù)控制文件。19使用下面語句可以講控制文件備份為可讀的文本文件:圖6-4查
如果控制文件被損壞,但是存儲目錄仍然是可訪問的,并且存在控制文件副本,則可以首先關(guān)閉數(shù)據(jù)庫實例,然后使用操作系統(tǒng)命令將控制文件副本復(fù)制到控制文件目錄下,覆蓋被損壞的控制文件,最后重新啟動數(shù)據(jù)庫。
SQL>SHUTDOWNIMMEDIATE;--使用控制文件副本覆蓋當(dāng)前控制文件
SQL>STARTUP;
控制文件副本的創(chuàng)建方法很簡單,首先關(guān)閉數(shù)據(jù)庫,然后將當(dāng)前的控制文件復(fù)制到其他目錄下,接著修改初始化參數(shù)CONTROL_FILES,增加新的控制文件或者修改原有的控制文件,最后啟動數(shù)據(jù)庫即可。
20如果控制文件被損壞,但是存儲目錄仍然是可訪問的,并
如果因為永久性介質(zhì)故障的原因,不能訪問CONTROL_FILES參數(shù)指定的某個控制文件,并且有這個控制文件的副本。則可首先關(guān)閉數(shù)據(jù)庫實例,然后使用操作系統(tǒng)命令把當(dāng)前控制文件的副本復(fù)制到一個新的可訪問位置。接著編輯初始化參數(shù)CONTROL_FILES,用新的控制文件的位置替換原來被損壞的位置。最后使用STARTUP命令重新打開數(shù)據(jù)庫。6.1.4刪除控制文件
如果部分控制文件損壞,或者希望減少控制文件的數(shù)目,就需要刪除無用的控制文件。刪除步驟如下:
(1)使用SHUTDOWN命令關(guān)閉數(shù)據(jù)庫;
(2)編輯初始化參數(shù)CONTROL_FILES,使其中不再包含要刪除的控制文件的名稱;
(3)重新啟動數(shù)據(jù)庫。21如果因為永久性介質(zhì)故障的原因,不能訪問CONTROL_6.1.5查看控制文件信息
在創(chuàng)建數(shù)據(jù)庫的同時控制文件自動被創(chuàng)建,當(dāng)數(shù)據(jù)庫的信息發(fā)生改變時,控制文件也隨之被改變;控制文件不能手動修改,只能由Oracle數(shù)據(jù)庫本身自己來修改??刂莆募跀?shù)據(jù)庫啟動和關(guān)閉時都要使用,Oracle提供了包含控制文件信息的數(shù)據(jù)字典視圖和動態(tài)性能視圖。如表6-1所示。226.1.5查看控制文件信息在創(chuàng)建數(shù)據(jù)庫的同時控制文【例6-3】查詢控制文件數(shù)據(jù)字典的描述信息,代碼如下,結(jié)果如圖6-5。SQL>descv$controlfile圖6-5數(shù)據(jù)字典v$controlfile注意:在數(shù)據(jù)字典前面加上v$符號,代表的是當(dāng)前實例的動態(tài)視圖。23【例6-3】查詢控制文件數(shù)據(jù)字典的描述信息,代碼如下,結(jié)果如【例6-4】通過查詢視圖V$CONTROLFILE_RECORD_SECTION獲取控制文件的記錄類型、記錄大小、記錄總數(shù)量和使用記錄數(shù)量等信息,結(jié)果如下:SQL>SELECTTYPE,RECORD_SIZE,RECORDS_TOTAL,RECORDS_USED2FROMV$CONTROLFILE_RECORD_SECTION;圖6-6數(shù)據(jù)字典v$controlfile_RECORD_SECTION24【例6-4】通過查詢視圖V$CONTROLFILE_RECO6.1.6使用OEM工具管理控制文件
啟動OEM,單擊“服務(wù)器”|“控制文件”超鏈接,即可顯示出當(dāng)前數(shù)據(jù)庫中的控制文件信息,如圖6-7所示。圖6-7OEM顯示的控制文件信息256.1.6使用OEM工具管理控制文件啟動OEM,單擊“
“一般信息”頁面中,顯示了所有的控制文件信息,包括控制文件的名稱與位置。如果需要查看控制文件中記錄文檔段的信息,則可進入“記錄文檔段”頁面。如果單擊“備份到跟蹤文件”按鈕,就可以將控制文件備份到跟蹤文件中。
控制文件是Oracle非常重要的文件之一,如何安全地管理這個文件對數(shù)據(jù)庫的日常維護、備份和恢復(fù)都具有重要意義。26“一般信息”頁面中,顯示了所有的控制文件信息,包括控6.2重做日志管理
在Oracle中,事務(wù)對數(shù)據(jù)庫所作的修改將以重做記錄的形式保存在重做日志緩存中。當(dāng)事務(wù)提交時,由LGWR進程將緩存中與該事務(wù)相關(guān)的重做記錄全部寫入重做日志文件,此時該事務(wù)被認為成功提交。重做日志對數(shù)據(jù)庫恢復(fù)來說是至關(guān)重要的。本節(jié)將重點介紹重做日志的基本概念,以及如何管理重做日志。6.2.1重做日志概述
重做日志文件由重做記錄組成,而每個重做記錄由一組變化元素組成,變化元素中記錄了數(shù)據(jù)庫中每個單獨的數(shù)據(jù)塊的變化情況。276.2重做日志管理在Oracle中,事務(wù)對數(shù)據(jù)庫
重做日志文件是由重做記錄組成的,重做記錄由一組修改向量組成。每個修改向量都記錄了數(shù)據(jù)庫中某個數(shù)據(jù)塊所做的修改。可以使用重做記錄不僅能夠恢復(fù)對數(shù)據(jù)文件所做的修改操作,還能夠恢復(fù)對回滾段所做的修改操作。當(dāng)使用重做數(shù)據(jù)恢復(fù)數(shù)據(jù)庫時,數(shù)據(jù)庫將從重做記錄中讀取變化元素,然后將變化應(yīng)用到相關(guān)的數(shù)據(jù)塊中。
在Oracle中,用戶對數(shù)據(jù)庫所做的修改首先被保存在內(nèi)存中,這樣可以提高數(shù)據(jù)庫的性能,因為對內(nèi)存中的數(shù)據(jù)進行操作要比對磁盤進行操作快得多。Oracle每隔一段時間就會啟動LGWR進程將內(nèi)存中的重做記錄保存到重做日志文件中。因此,即使發(fā)生故障導(dǎo)致數(shù)據(jù)庫崩潰,Oracle也可以利用重做信息恢復(fù)丟失的數(shù)據(jù)。28重做日志文件是由重做記錄組成的,重做記錄由一組修改
每個Oracle數(shù)據(jù)庫至少兩個重做日志文件,Oracle以循環(huán)方式使用重做日志文件的。即當(dāng)一個重做日志文件被寫滿后,后臺進程LGWR開始寫入下一個重做日志文件;當(dāng)所有重做日志文件都寫滿后,LGWR進程再重新寫入第一個重做日志文件中。在安裝Oracle11g時,默認創(chuàng)建三組重做日志文件。圖6-8顯示了重做日志的循環(huán)寫入方式。圖6-8LGWR寫入重做日志的過程29每個Oracle數(shù)據(jù)庫至少兩個重做日志文件,Ora
為了提高數(shù)據(jù)庫的可靠性,Oracle提供了多路復(fù)用聯(lián)機重做日志文件的功能。也就是說,系統(tǒng)在不同的位置上自動維護重做日志的兩個或更多副本。從安全角度出發(fā),這些副本的保存位置應(yīng)該在不同的磁盤上。多路復(fù)用指通過創(chuàng)建重做日志組來實現(xiàn),組包括一個重做日志文件和它的多元副本。每個重做日志組由數(shù)字來定義,如圖6-9所示。圖6-9多路復(fù)用重做日志文件30為了提高數(shù)據(jù)庫的可靠性,Oracle提供了多路復(fù)用
圖中,A、B、C分別屬于不同的組,A_LOG1和A_LOG2都是組1的成員。每個日志文件組的成員必須同時處于激活狀態(tài),這樣LGWR進程就可以同時寫入這兩個日志文件。LGWR不會同時寫入不同組的日志文件。如果LGWR寫入不同組中的一個成員文件,則數(shù)據(jù)庫將此成員標(biāo)記為INVALID,并在LGWR追蹤文件和數(shù)據(jù)庫警告日志中寫入一條錯誤信息,記錄下它的日志文件組編號和成員編號,以幫助DBA確定故障,并進一步排除故障。 在設(shè)置或更改數(shù)據(jù)庫實例的重做日志文件之前,需要考慮數(shù)據(jù)庫對重做日志文件的限制:31圖中,A、B、C分別屬于不同的組,A_L
●參數(shù)MAXLOGFILES:在創(chuàng)建數(shù)據(jù)庫CREATEDATABASE語句中使用該參數(shù)可以為數(shù)據(jù)庫指定重做日志文件的最大組數(shù)?!駞?shù)MAXLOGMEMBERS:在創(chuàng)建數(shù)據(jù)庫CREATEDATABASE語句中使用該參數(shù)可以為每個組指定成員的最大數(shù)量。如果需要修改以上兩個參數(shù)的值的唯一辦法是重新創(chuàng)建數(shù)據(jù)庫的控制文件。32●參數(shù)MAXLOGFILES:在創(chuàng)建數(shù)據(jù)庫CREATE6.2.2創(chuàng)建重做日志組及成員
在創(chuàng)建數(shù)據(jù)庫的時候,可以規(guī)劃數(shù)據(jù)庫的重做日志,并創(chuàng)建重做日志組及其成員文件。但在數(shù)據(jù)庫創(chuàng)建后,有時也需要添加新的重做日志。要創(chuàng)建新的重做日志組及其成員,用戶必須擁有ALTERDATABASE的系統(tǒng)權(quán)限。1.創(chuàng)建重做日志組使用ALRERDATABASE語句創(chuàng)建重做日志組。語法如下:ALTERDATABASE[database_name]ADDLOGFILEGROUPnfilenameSIXEsize336.2.2創(chuàng)建重做日志組及成員在創(chuàng)建數(shù)據(jù)庫的時候
database_name:需要修改的數(shù)據(jù)庫名,省略表示當(dāng)前數(shù)據(jù)庫。
n:表示創(chuàng)建重做日志組的組號,組號在重做日志組中是唯一的。
filename:日志文件組存儲的位置。
m:日志文件組的大小,默認的大小是50MB。34 database_name:需要修改的數(shù)據(jù)庫名,省略表示當(dāng)【例6-5】使用ALTERDATABASE語句中的ADDLOGFILE子句創(chuàng)建重做日志組,代碼如下,執(zhí)行結(jié)果如圖6-10。SQL>ALTERDATABASE2ADDLOGFILEGROUP53‘G:\app\Administrator\oradata\orcl\NEWLOG5-1.LOG’SIZE10M;圖6-10創(chuàng)建重做日志文件組圖中所示,在數(shù)據(jù)庫中已經(jīng)創(chuàng)建了新的重做日志文件組。35【例6-5】使用ALTERDATABASE語句中的ADD2.創(chuàng)建重做日志成員在ALRERDATABASE語句中使用ADDLOGFILEMEMBER關(guān)鍵字創(chuàng)建重做日志成員。語法如下:ALTERDATABASE[database_name]ADDLOGFILEMEMBERfilenameTOGROUPn362.創(chuàng)建重做日志成員36【例6-6】使用ALTERDATABASE語句中的ADDLOGFILE子句添加重做日志文件到重做日志文件組中5,代碼如下,執(zhí)行結(jié)果如圖6-11。SQL>ALTERDATABASE2ADDLOGFILEMEMBER3‘G:\app\Administrator\oradata\orcl\NEWLOG5-2.LOG’
4TOGROUP5;圖6-11創(chuàng)建重做日志文件成員通過查看操作系統(tǒng)文件夾,發(fā)現(xiàn)日志文件NEWLOG5-2.LOG文件已添加到指定文件夾下。37【例6-6】使用ALTERDATABASE語句中的ADD6.2.3修改重做日志文件的存儲位置和名稱
在數(shù)據(jù)庫的運行過程中,有時可能會根據(jù)需要修改重做日志文件的存儲位置或名稱。重做日志文件的信息是記錄在控制文件中的,修改重做日志文件的存儲位置或名稱實際上意味著修改控制文件中的信息。修改之前,還要保證用戶擁有ALTERDATABASE系統(tǒng)權(quán)限、復(fù)制文件到指定位置的操作系統(tǒng)權(quán)限以及打開和備份數(shù)據(jù)庫的權(quán)限。386.2.3修改重做日志文件的存儲位置和名稱在數(shù)據(jù)【例6-7】修改當(dāng)前數(shù)據(jù)庫的重做日志文件的存儲位置和名稱,具體操作步驟如下:(1)使用SHUTDOWN命令關(guān)閉數(shù)據(jù)庫。SQL>SHUTDOWN;(2)在操作系統(tǒng)中重命名重做日志文件或?qū)⒅刈鋈罩疚募?fù)制到新的位置上。(3)重啟數(shù)據(jù)庫實例,加載數(shù)據(jù)庫但不打開數(shù)據(jù)庫。SQL>STARTUPMOUNT;39【例6-7】修改當(dāng)前數(shù)據(jù)庫的重做日志文件的存儲位置和名稱,具(4)使用RENAMEFILE子句的ALTERDATABASE語句重新設(shè)置重做日志文件的名稱和路徑。SQL>ALTERDATABASERENAMEFILE2‘G:\app\Administrator\oradata\orcl\REDO01.LOG’,3‘G:\app\Administrator\oradata\orcl\REDO02.LOG’,4‘G:\app\Administrator\oradata\orcl\REDO03.LOG’5TO6‘G:\app\Administrator\oradata\orcl\REDONEW01.LOG’,7‘G:\app\Administrator\oradata\orcl\REDONEW02.LOG’,8‘G:\app\Administrator\oradata\orcl\REDONEW03.LOG’;數(shù)據(jù)庫已更改。40(4)使用RENAMEFILE子句的ALTERDATA(5)打開數(shù)據(jù)庫。SQL>ALTERDATABASEOPEN;
(6)備份控制文件。重啟啟動數(shù)據(jù)庫,通過查詢數(shù)據(jù)字典V$LOGFILE可以查看數(shù)據(jù)庫現(xiàn)在所使用的重做日志文件。SQL>SELECTMEMBERFROMV$LOGFILE;6.2.4刪除重做日志文件
在某些情況下,需要將某個重做日志組或日志成員刪除。例如,由于某個日志成員損壞而導(dǎo)致整個重做日志組不可用,這時需要將損壞的日志成員刪除。1.刪除日志文件刪除成員日志文件之前,需要注意以下幾種情況:●刪除重做日志文件是合理的,每個重做日志組中至少要包含一個可有的成員。41(5)打開數(shù)據(jù)庫。6.2.4刪除重做日志文件在某
●當(dāng)刪除日志文件屬于INACTIVE日志組時,才可以刪除。如果不是,可以先強制進行日志切換。●刪除日志文件,如果是歸檔模式,則要確保已經(jīng)歸檔,才可以刪除。刪除日志文件的語法如下:ALTERDATABASE[database_name]DROPLOGFILEMEMBERfilename其中,filename是指日志文件的名字,包括路徑。42●當(dāng)刪除日志文件屬于INACTIVE日志組時,才可以【例6-8】在SQL*Plus中刪除名為NEWLOG5-2的日志文件,執(zhí)行結(jié)果如圖6-12。圖6-12刪除重做日志文件成員43【例6-8】在SQL*Plus中刪除名為NEWLOG5-22.刪除日志文件組如果某個重做日志組不再需要使用,可以將整個日志組刪除。刪除一個日志組時,其中的成員文件也將被一起刪除。刪除日志組時,也需要注意如下幾點:●無論日志組中有多少個成員,一個數(shù)據(jù)庫至少需要兩個日志組?!裰荒軇h除處于INACTIVE狀態(tài)的日志組。如果要刪除CURRENT狀態(tài)的重做日志組,則必須執(zhí)行一個手工切換日志,使其切換到INACTIVE狀態(tài)。●如果數(shù)據(jù)庫處于歸檔模式下,在刪除重做日志組之前必須確定它已經(jīng)被歸檔??梢酝ㄟ^查詢V$LOG數(shù)據(jù)字典視圖,查看是否已經(jīng)對日志組進行過歸檔??梢詤⒖既缦麓a:SQL>SELECTGROUP#,ARCHIVED,STATUSFROMV$LOG;442.刪除日志文件組44刪除重做日志文件組的語法如下:ALTERDATABASE[database_name]DROPLOGFILEGROUPn【例6-9】在SQL*Plus中刪除組號是5的日志文件組,執(zhí)行結(jié)果如圖6-12。圖6-13刪除重做日志文件組需要注意的是,刪除重做日志文件成員和刪除重做日志文件組的操作只是在數(shù)據(jù)字典和控制文件中將它們的記錄信息刪除,并不會物理地刪除操作系統(tǒng)中相應(yīng)的文件,這需要手工在操作系統(tǒng)中將相應(yīng)的文件刪除。45刪除重做日志文件組的語法如下:456.2.5清空重做日志文件
在數(shù)據(jù)庫運行過程中,如果由于重做日志文件的損壞而導(dǎo)致歸檔操作無法進行,數(shù)據(jù)庫服務(wù)器的運行最終將停止。在這種情況下,可以將重做日志文件的內(nèi)容全部清空。清空重做日志文件的操作可以在不關(guān)閉數(shù)據(jù)庫的情況下手工清空日志文件中的內(nèi)容。清空重做日志文件的語法結(jié)構(gòu)如下:ALTERDATABASE[database_name]CLEARLOGFILEGROUPn466.2.5清空重做日志文件46【例6-10】在SQL*Plus中清空組號是4的日志文件組,代碼如下:SQL>ALTERDATABSECLEARLOGFILEGROUP4;數(shù)據(jù)庫已更改。如果重做日志沒有歸檔,則可以在語句中添加UNARCHIVED關(guān)鍵字,代碼如下:SQL>ALTERDATABSECLEARUNARCHIVEDLOGFILEGROUP4;數(shù)據(jù)庫已更改。需要注意的是,如果被清空的重做日志組還沒有歸檔,有可能造成數(shù)據(jù)丟失。所以,應(yīng)提前創(chuàng)建數(shù)據(jù)庫的另一個備份。47【例6-10】在SQL*Plus中清空組號是4的日志文件組6.2.6重做日志文件的切換
數(shù)據(jù)庫服務(wù)器在運行過程中,LGWR后臺進程將重做日志寫入重做日志文件。當(dāng)?shù)谝粋€日志組寫滿后,LGWR將自動切換到第二個日志組,并將重做日志寫入第二個日志組。依此類推,當(dāng)最后一個日志組被寫滿后,LGWR將自動切換到第一個日志組,這個循環(huán)的過程是自動的。在某些特殊的情況下,需要手工切換日志,即在當(dāng)前重做日志組尚未寫滿的時候,強制LGWR進程將重做日志寫入下一個日志組。
執(zhí)行手工切換重做日志任務(wù)的用戶需要有ALTERSYSTEM系統(tǒng)權(quán)限,完整的語法格式如下:ALTERSYSTEMSWITCHLOGFILE486.2.6重做日志文件的切換48
每進行一次切換,Oracle都會在數(shù)據(jù)庫警告文件中對其進行記錄,而且無論是自動切換還是手動切換,日志序列號都會自動加1。雖然日志組是循環(huán)使用的,但是日志序列號是無限遞增的。重做日志序列號唯一標(biāo)識了重做日志文件和歸檔日志文件。當(dāng)進行數(shù)據(jù)庫恢復(fù)時,就可以按照序列號遞增的順序依次查找所需的重做日志文件和歸檔日志文件。6.2.7查看重做日志文件
由于日志文件自身的重要性,DBA可能要經(jīng)常查詢?nèi)罩疚募?。與重做日志文件相關(guān)的數(shù)據(jù)字典視圖有三個,如表6-2所示。49每進行一次切換,Oracle都會在數(shù)據(jù)庫警告文件中
通過查詢數(shù)據(jù)字典視圖V$LOG可以查看重做日志文件組的組號、序列號、大小、是否歸檔、狀態(tài)等信息。執(zhí)行效果如圖6-14。其中重做日志文件的狀態(tài)如表6-3所示。圖6-14查看重做日志文件組50通過查詢數(shù)據(jù)字典視圖V$LOG可以查看重做日
通過查詢數(shù)據(jù)字典視圖V$LOGFILE可以獲得每個重做日志組中的日志成員及其狀態(tài)等信息。其中日志成員的狀態(tài)如表6-4所示。51通過查詢數(shù)據(jù)字典視圖V$LOGFILE可以獲得每個6.2.8使用OEM管理重做日志文件
使用OEM工具也可以很方便的管理重做日志文件。啟動OEM,單擊“服務(wù)器”|“重做日志文件組”超鏈接,即可顯示出當(dāng)前數(shù)據(jù)庫中的所有重做日志組信息,如圖6-15所示。圖6-15OEM顯示的重做日志文件組信息526.2.8使用OEM管理重做日志文件52
在顯示的重做日志組信息頁面如果單擊“創(chuàng)建”按鈕,可以為數(shù)據(jù)庫添加一個日志文件組;如果單擊“編輯”按鈕,可以對當(dāng)前選中的重做日志文件進行修改,包括添加/刪除成員日志文件、移動或重命名成員日志文件;如果選擇了“操作”列表框中的某一操作類型(如切換日志),單擊“開始”按鈕,將執(zhí)行該操作。6.3歸檔日志管理
歸檔日志(ArchiveLog)是非活動的重做日志備份。通過使用歸檔日志,可以保留所有重做歷史記錄,當(dāng)數(shù)據(jù)庫處于ARCHIVELOG模式并進行日志切換式,后臺進程ARCH會將重做日志的內(nèi)容保存到歸檔日志中,這個過程叫做歸檔。當(dāng)數(shù)據(jù)庫出現(xiàn)介質(zhì)故障時,使用數(shù)據(jù)文件備份、歸檔日志和重做日志可以完全恢復(fù)數(shù)據(jù)庫。53在顯示的重做日志組信息頁面如果單擊“創(chuàng)建”按鈕,可以為6.3.1歸檔日志概述
Oracle數(shù)據(jù)庫的修改內(nèi)容都記錄在重做日志文件中,但是由于重做日志文件是以循環(huán)方式工作的,會出現(xiàn)重做日志文件被新寫入的重做日志文件覆蓋的問題。為了完整地記錄數(shù)據(jù)庫的全部更新操作,Oracle提出了歸檔日志的概念來解決這一問題。
在重做日志文件被覆蓋之前,Oracle能夠?qū)⒁呀?jīng)寫滿的重做日志文件通過復(fù)制保存到指定的位置,保存下來的所有重做日志文件被稱為“歸檔重做日志”,這個過程就是“歸檔過程”。只有數(shù)據(jù)庫處于歸檔模式時,才會對重做日志文件執(zhí)行歸檔操作。歸檔操作可以由后臺進程ARCn自動完成,也可以由DBA手工來完成。
546.3.1歸檔日志概述Oracle數(shù)據(jù)庫的修改內(nèi)
歸檔日志文件中包含了被覆蓋的日志文件和重做日志文件的序列號。當(dāng)數(shù)據(jù)庫處于歸檔模式下,寫日志進程LGWR不能夠?qū)ξ礆w檔的重做日志文件組進行重用和改寫操作。如果設(shè)置了自動歸檔模式,則后臺進程ARCn將自動地執(zhí)行歸檔操作。為了提高歸檔的速度,可以考慮啟動多個ARCn進程加速歸檔的速度。
使用歸檔日志文件可以實現(xiàn)恢復(fù)數(shù)據(jù)庫、更新備用數(shù)據(jù)庫以及獲取數(shù)據(jù)庫的歷史信息等目的。用戶可以選擇自動歸檔或手動歸檔,但自動歸檔模式更加方便快捷。55歸檔日志文件中包含了被覆蓋的日志文件和重做日志文件6.3.2管理歸檔模式
數(shù)據(jù)庫服務(wù)器有兩種日志模式:歸檔模式和非歸檔模式。在非歸檔模式下,當(dāng)一個重做日志組被寫滿時,LGWR進程將自動切換到下一重做日志組,這個重做日志組中以前的重做日志文件將被覆蓋。而在歸檔模式下,每個重做日志組在被覆蓋之前都做了歸檔操作,生成一個歸檔日志文件。
用戶可以在創(chuàng)建數(shù)據(jù)庫時,設(shè)置數(shù)據(jù)庫的初始歸檔模式。在CREATEDATABASE語句中使用關(guān)鍵字ARCHIVELOG可以將數(shù)據(jù)庫設(shè)置為歸檔模式,使用關(guān)鍵字NOARCHIVELOG可以將數(shù)據(jù)庫設(shè)置為非歸檔模式。具體操作方法參見第4章。566.3.2管理歸檔模式數(shù)據(jù)庫服務(wù)器有兩種日志模式在默認情況下,數(shù)據(jù)庫初始處于非歸檔模式,數(shù)據(jù)庫管理員可以在兩種模式下進行切換。切換前可以先執(zhí)行命令A(yù)RCHIVELOGLIST查看當(dāng)前數(shù)據(jù)庫處于什么模式。執(zhí)行結(jié)果如圖6-16。圖6-16查看當(dāng)前數(shù)據(jù)庫所處的模式用戶也可通過SELECT語句查詢數(shù)據(jù)庫的日志模式。SQL>SELECTlog_modeFROMV$DATABASE;57在默認情況下,數(shù)據(jù)庫初始處于非歸檔模式,數(shù)據(jù)庫管理員可以在兩只有SYSDBA用戶才能改變數(shù)據(jù)庫的歸檔模式。操作步驟:首先關(guān)閉數(shù)據(jù)庫服務(wù)器,然后備份數(shù)據(jù)庫以防止數(shù)據(jù)丟失,接著啟動數(shù)據(jù)庫到MOUNT狀態(tài),執(zhí)行切換模式,最后重新打開數(shù)據(jù)庫到OPEN狀態(tài)?!纠?-11】將當(dāng)前數(shù)據(jù)庫從非歸檔模式切換到歸檔模式,代碼如下。SQL>SHUTDOWNSQL>STARTMOUNT;SQL>ALTERDATABASEARCHIVELOG;SQL>ALTERDATABASEOPEN;切換后再次查看當(dāng)前數(shù)據(jù)庫的模式狀態(tài),已經(jīng)切換到歸檔模式,如圖6-17所示。圖6-17切換后數(shù)據(jù)庫所處的模式58只有SYSDBA用戶才能改變數(shù)據(jù)庫的歸檔模式。操作步驟:首先
如果數(shù)據(jù)庫處于歸檔模式下,利用ARCn進程進行歸檔是最佳選擇。然而也可以采用手工歸檔方式,即DBA需要執(zhí)行命令,對重做日志文件進行歸檔。當(dāng)數(shù)據(jù)庫處于MOUNT狀態(tài)時,執(zhí)行如下命令:SQL>ALTERDATABASEARCHIVELOGMANUAL;
執(zhí)行此命令時,數(shù)據(jù)庫必須處于已裝載但未打開的狀態(tài)??梢允紫仁褂肧HUTDOWNIMMEDIATE語句關(guān)閉數(shù)據(jù)庫,再使用STARTUP語句裝載數(shù)據(jù)庫。手動歸檔所有日志文件的代碼如下:SQL>ALTERSYSTEMARCHIVELOGALL;59如果數(shù)據(jù)庫處于歸檔模式下,利用ARCn進程進行歸檔是
在歸檔模式下,如果啟動了自動歸檔功能,重做日志的歸檔是由后臺進程ARCn自動完成的。在默認情況下數(shù)據(jù)庫服務(wù)器啟動2個ARCn進程。當(dāng)重做日志組的切換非常頻繁時,可能需要多個ARCn進程同時工作。初始化參數(shù)LOG_ARCHIVE_MAX_PROCESSES可以指定啟動的ARCn進程的數(shù)目。在一個數(shù)據(jù)庫服務(wù)器最多可以啟動30個ARCn進程?!纠?-12】設(shè)置啟動的ARCn進程的數(shù)目,代碼如下。SQL>ALTERSYSTEMSETLOG_ARCHIVE_MAX_PROCESSES=4;系統(tǒng)已更改。60在歸檔模式下,如果啟動了自動歸檔功能,重做日志的歸6.3.3設(shè)置歸檔位置
歸檔日志文件存儲在數(shù)據(jù)庫服務(wù)器的某個特定位置。在Oracle中,歸檔日志文件的存儲位置和文件名稱是由初始化參數(shù)指定的。由于歸檔日志文件的特殊重要性,在數(shù)據(jù)庫服務(wù)器中可以對每個重做日志組同時產(chǎn)生多個歸檔日志文件,這些歸檔日志文件的內(nèi)容完全相同,為了防止磁盤損壞并且縮短歸檔的時間,可以把這些歸檔日志文件存放在不同的磁盤上??墒褂贸跏蓟瘏?shù)LOG_ARCHIVE_DEST_n指定多個歸檔位置。其中,n的取值從1到31。初始化參數(shù)LOG_ARCHIVE_DUPLEX_DEST可用于指定次歸檔位置。歸檔前首先關(guān)閉數(shù)據(jù)庫。然后設(shè)置初始化參數(shù)LOG_ARCHIVE_DEST_n,本地目錄的指定格式為“LOCATION=本地目錄”,例如:616.3.3設(shè)置歸檔位置歸檔日志文件存儲在數(shù)據(jù)庫服SQL>ALTERSYSTEMSETLOG_ARCHIVE_DEST_1=”LOCATION=G:\Oracle_backup\archive1”;SQL>ALTERSYSTEMSETLOG_ARCHIVE_DEST_2=”LOCATION=G:\Oracle_backup\archive2”;SQL>ALTERSYSTEMSETLOG_ARCHIVE_DEST_3=”LOCATION=G:\Oracle_backup\archive3”;如果設(shè)置的歸檔位置是網(wǎng)絡(luò)上另一臺數(shù)據(jù)庫服務(wù)器,格式為“SERVICE=網(wǎng)絡(luò)服務(wù)”,例如:SQL>ALTERSYSTEMSETLOG_ARCHIVE_DEST_4=”SERVICE=DB1”;其中,DB1是遠程備用數(shù)據(jù)庫的服務(wù)名。62SQL>ALTERSYSTEMSETLOG_ARCH
設(shè)置歸檔位置后,還可以進一步設(shè)置歸檔日志名稱。設(shè)置歸檔日志名稱的初始化參數(shù)是LOG_ARCHIVE_FORMAT。其命名方式為:使用%S指定歸檔文件名稱中包含日志序列號,使用%T表示歸檔文件名稱中包含的歸檔線程號,使用%R表示重置日志編號。例如,下面語句指定了歸檔日志文件命名的方法:SQL>ALTERSYSTEMSETLOG_ARCHIVE_FORMAT=ARC%S_%R%T_.ARC’SCOPE=SPFILE;
重新啟動數(shù)據(jù)后,設(shè)置L
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 礦石處理工風(fēng)險識別測試考核試卷含答案
- 無線電設(shè)備運維員操作技能知識考核試卷含答案
- 口腔清潔劑制造工安全防護評優(yōu)考核試卷含答案
- 飛機管工QC管理能力考核試卷含答案
- 機繡工風(fēng)險識別強化考核試卷含答案
- 老年癡呆患者疼痛行為觀察法
- 化工行業(yè)數(shù)字化轉(zhuǎn)型實戰(zhàn)經(jīng)驗總結(jié)
- 老年慢性腎病患者的營養(yǎng)支持依從性提升策略驗證
- 2026年及未來5年市場數(shù)據(jù)中國內(nèi)河碼頭行業(yè)市場深度分析及發(fā)展趨勢預(yù)測報告
- 2026年及未來5年市場數(shù)據(jù)中國吸管杯行業(yè)市場競爭格局及投資前景展望報告
- JJG 499-2021 精密露點儀檢定規(guī)程
- T-CPQS A0011-2022 二手車車況檢測及評估通則
- 吸毒的危害性后果
- 2025年湖南邵陽經(jīng)開貿(mào)易投資有限公司招聘12人筆試考試參考試題及答案解析
- 白內(nèi)障手術(shù)術(shù)前準(zhǔn)備和術(shù)后護理流程
- 多動癥兒童在感統(tǒng)訓(xùn)練
- 環(huán)保生產(chǎn)應(yīng)急預(yù)案
- 殯葬禮儀服務(wù)創(chuàng)新創(chuàng)業(yè)項目商業(yè)計劃書
- 數(shù)據(jù)驅(qū)動的零售商品陳列優(yōu)化方案
- 錄用通知(入職通知書)offer模板
- 畜禽屠宰加工工國家職業(yè)標(biāo)準(zhǔn)(征求意見稿)
評論
0/150
提交評論