Oracle歸檔模式的命令及引數說明

2021-06-18 08:04:45 字數 4477 閱讀 8340

oracle資料庫中,主要有兩種日誌操作模式,分別為非歸檔模式與歸檔模式。預設情況下,

資料庫

採用的是非歸檔模式。作為乙個合格的資料庫

管理

員,應當深入了解這兩種日誌操作模式的特點,並且在資料庫建立時,選擇合適的操作模式。

筆者今天就談談自己對這兩種操作模式的理解,並且給出一些可行的建議,跟大家一起來提高oracle資料庫的

安全性

一、非歸檔模式的利與弊。

非歸檔模式是指不保留重做歷史的日誌操作模式,只能夠用於保護例程失敗,而不能夠保護介質損壞。如果資料庫採用的是日誌操作模式的話,則進行日誌切換時,新的日誌會直接覆蓋原有日誌檔案的內容,不會保留原有日誌檔案中的資料。

這麼說聽起來可能比較難理解。筆者舉乙個簡單的例子,就會清楚許多。如現在oracle資料庫中有四個日誌組,日誌序列號分別為11、 12、13、14。當資料庫事務變化寫滿第乙個日誌組檔案(序列號為11)時,oracle資料庫就會自動切換到第二個日誌組檔案(序列號為12)中。依次類推。當第三個日誌組檔案(序列號為13)寫滿時,就會切換到第四個日誌組(序列號為14)。當第四個日誌組(序列號為14)滿時,其就會切換到第乙個日誌組(序列號為15)。這裡,序列號雖然與剛才第乙個日誌檔案組不同,但是日誌組仍然是同乙個。此時,由於資料庫的操作模式選擇為非歸檔模式,所以第一組日誌檔案(序列號為11)中的內容並沒有歸檔。新的日誌檔案的內容將直接覆蓋第乙個日誌組檔案中的內容。若第乙個日誌組檔案(序列號為15)滿時,切換到第二個日誌檔案組時,新的內容又會在第二個日誌檔案組沒有歸檔的情況下,直接覆蓋日誌檔案12中的原有資料。

通過以上的分析,我們可以歸納出非歸檔操作日誌模式的一些特點。

一是當檢查點完成之後,後台程序可以覆蓋原有重做日誌的內容。也就是說,在日誌切換時,後來的日誌檔案內容可以在以前的日誌檔案內容沒有歸檔的情況下,覆蓋原有日誌檔案的內容。如此的話,當出現資料檔案損壞時,資料庫管理員只能夠恢復到過去的完全被分點。如資料庫有四個日誌組。如果在日誌組序列號為16的時候資料庫管理員進行了完全

備份

。而在日誌組序列號為28的時候資料檔案出現了損壞。此時,由於中間的日誌檔案內容被覆蓋掉了。所以,此時資料庫管理員只能夠恢復到完全備份的那個點,而不能夠恢復資料庫檔案損壞時的點的資料(即序列號為28)的資料。如果在序列號為18的時候出現了資料檔案損壞的事故,則可以先對資料庫進行還原(還原點為序列號為16時的資料),然後再利用重做日誌檔案(序列號為17、18),即可以把資料恢復到故障發生時的資料。故雖然不用對重做日誌檔案進行歸檔,節省磁碟空間。但是,卻給後續資料庫的恢復帶來的麻煩,降低了資料庫的安全性。為此,如何取捨,還是需要資料庫管理員根據自己

企業

的情況,作出選擇。

二是執行資料庫備份時,必須要備份所有資料檔案和控制檔案。根據上面筆者所講述的,因為重做日誌會被後來的所覆蓋,所以,基本上資料庫管理員不能夠通過重做日誌檔案來恢復資料庫的資料,或者說,通過重做日誌檔案不能夠恢復全部的資料。為此,在執行資料庫備份時,就必須備份所有的資料檔案和控制檔案。同時,還必須使用shutdownnormal等命令關閉資料庫。

二、歸檔日誌模式。

歸檔日誌模式與非歸檔日誌模式相對應,是指保留重做日誌歷史的日誌操作模式。這種日誌操作模式不僅可用於保護例程失敗,還可以用於保護介質損壞的情況。如果資料庫管理員把日誌設定為歸檔日誌模式,則當後台程序在進行日誌切換時,後台程序會自動將重做日誌的內容複製到歸檔日誌中。歸檔日誌就是非活動重做日誌的備份。

如現在oracle資料庫中有四個日誌組,日誌序列號分別為11、12、13、14。當資料庫事務變化寫滿第乙個日誌組檔案(序列號為11) 時,後台程序就會切換到第二個日誌組中(序列號為12)。不過在這個切換之前,資料庫有乙個程序,會負責將第乙個日誌組中的檔案內容複製到歸檔日誌中去。依次類推。這就是歸檔日誌模式與非歸檔日誌模式最本質的區別。不過這個區別卻給資料庫安全性帶來了很大的變化。

如當日誌序列號為28時出現了資料檔案的錯誤或者

伺服器

硬碟損壞的事故時,因為日誌檔案中記錄了從資料庫備份以來所有的資料變化情況。而且這些日誌檔案與資料庫備份檔案儲存在其他**中,那麼資料庫管理員就可以通過這些資料,把資料庫恢復到介質損壞時(即日誌檔案序列號為28)的資料。從保護資料庫資料的角度講,這是乙個接近於比較理想的狀態了。

若把非歸檔模式與歸檔模式進行對比的話,可以發現歸檔模式有如下的特點。

一是當出現介質損壞(如硬碟損壞或者意外刪除資料檔案)或者出現例程失敗(如伺服器突然斷電)時,資料庫管理員可以憑藉歸檔日誌檔案來防止丟失資料。而非歸檔模式則往往只能夠應對例程失敗的情況。所以,其應用範圍要比非歸檔模式大的多。

二是資料備份的限制條件。正如上面所說的,如果資料庫處於非歸檔模式,則對資料庫進行備份時,要先用shutdownnormal等命令關閉資料庫。而處於歸檔模式的時候,則當資料庫處於open狀態時,資料庫管理員仍然可以備份資料庫,而且不會影響資料庫的正常使用。除了資料庫備份兩者有本質上的差異之外,在資料庫恢復上也有很大的差別。若資料庫採用歸檔日誌模式,不僅可以執行完全恢復,而且在歸檔日誌檔案的幫助下,還可以將資料庫恢復到特定的點。從而當資料庫出現意外故障時,最大限度的保護資料的安全性。

不過若採取歸檔模式的話,則必須要犧牲一定的磁碟空間。

三、如何選擇合適的日誌操作模式?

oracle歸檔模式的命令及引數說明

oracle資料庫可以執行在2種模式下:歸檔模式(archivelog)和非歸檔模式(noarchivelog)。歸檔模式可以提高oracle資料庫的可恢復性,生產資料庫都應該執行在此模式下,歸檔模式應該和相應的備份策略相結合,只有歸檔模式沒有相應的備份策略只會帶來麻煩。

檢查歸檔模式命令:

sql> archive log list

database log mode no archive mode

automatic archival disabled

archive destination use_db_recovery_file_dest

oldest online log sequence 15

current log sequence 17

設定歸檔模式: 

sql> shutdown immediate;

database closed.

database dismounted.

oracle instance shut down.

sql> startup mount

oracle instance started.

total system global area 1258291200 bytes

fixed size 1219160 bytes

variable size 318768552 bytes

database buffers 922746880 bytes

redo buffers 15556608 bytes

database mounted.

sql> alter database archivelog;

database altered.

sql> alter database open;

database altered.

sql> archive log list;

database log mode archive mode

automatic archival enabled

archive destination use_db_recovery_file_dest

oldest online log sequence 15

next log sequence to archive 17

current log sequence 17

如果需要停止歸檔模式,使用:alter database noarchivelog 命令。oracle10g之前,你還需要修改初始化引數使資料庫處於自動歸檔模式。在pfile/spfile中設定如下引數: log_archive_start = true

重啟資料庫此引數生效,此時資料庫處於自動歸檔模式。也可以在資料庫啟動過程中,手工執行: archive log start

使資料庫啟用自動歸檔,但是重啟後資料庫仍然處於手工歸檔模式。10g使用db_recovery_file_dest來作為歸檔日誌的存放地。 sql> show parameter db_recovery

name type value

db_recovery_file_dest string /home/oracle/ora10g/flash_reco

very_area/

db_recovery_file_dest_size big integer 20g

可以修改db_recovery_file_dest_size引數的大小 alter system set db_recovery_file_dest_size=21474836480

Oracle歸檔模式的命令及引數說明

oracle資料庫可以執行在2種模式下 歸檔模式 archivelog 和非歸檔模式 noarchivelog 歸檔模式可以提高oracle資料庫的可恢復性,生產資料庫都應該執行在此模式下,歸檔模式應該和相應的備份策略相結合,只有歸檔模式沒有相應的備份策略只會帶來麻煩。檢查歸檔模式命令 sql ar...

檢視Oracle歸檔模式及啟動歸檔方法

select from v recovery file dest 歸檔空間的實際使用情況 select from v flash recovery area usage 閃回恢復區里的空間使用情況 show parameter db recovery file 歸檔路徑及大小 啟動歸檔 sqlplu...

oracle的歸檔模式

一。檢視oracle資料庫是否為歸檔模式 1.select name,log mode from v database name log mode query noarchivelog 2.使用archive log list 命令 database log mode no archive mode...