溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

oracle之 Oracle歸檔日志管理

發(fā)布時(shí)間:2020-08-14 06:21:31 來(lái)源:ITPUB博客 閱讀:162 作者:張沖andy 欄目:關(guān)系型數(shù)據(jù)庫(kù)

       在Oracle中,數(shù)據(jù)一般是存放在數(shù)據(jù)文件中,不過(guò)數(shù)據(jù)庫(kù)與Oracle最大的區(qū)別之一就是數(shù)據(jù)庫(kù)可以在數(shù)據(jù)出錯(cuò)的時(shí)候進(jìn)行恢復(fù)。這個(gè)也就是我們常見的Oracle中的重做日志(REDO FILE)的功能了。在重做日志分成2部分,一個(gè)是在線重做日志文件,另外一個(gè)就是歸檔日志文件。

  這里不詳細(xì)說(shuō)明在線重做日志,而是說(shuō)一下歸檔日志(Archive Log)。在線重做日志大小畢竟是有限的,當(dāng)都寫滿了的時(shí)候,就面臨著2個(gè)選擇,第一個(gè)就是把以前在線重做日志從頭擦除開始繼續(xù)寫,第二種就是把以前的在線重做日志先進(jìn)行備份,然后對(duì)被備份的日志擦除開始寫新的在線Redo File。這種備份的在線重做日志就是歸檔日志。而數(shù)據(jù)庫(kù)如果采用這種生成歸檔日志的模式的話,就是歸檔日志模式(ARCHIVELOG模式),反之如果不生成歸檔日志,就是非歸檔日志模式(NOARCHIVELOG模式)。

  有了歸檔日志有什么好處了。比如在這個(gè)月1號(hào)的時(shí)候備份了一次數(shù)據(jù),然后過(guò)了10天,這10天生成了成百上千個(gè)在線重做日志,突然發(fā)現(xiàn)其中有一個(gè)數(shù)據(jù)磁盤出問(wèn)題了,不能用了,那我該如何是好呢。

  如果沒(méi)有采用歸檔日志,那么實(shí)際上磁盤中只會(huì)有幾個(gè)最新的在線重做日志。那么我只能要不然把出問(wèn)題的數(shù)據(jù)磁盤上所占據(jù)的表空間都刪除掉。但是如果是SYSTEM表空間所涉及的磁盤出錯(cuò),就沒(méi)辦法這么做了,只能用第二種方法。那第二種方法就是把1號(hào)備份的數(shù)據(jù)拿出來(lái)恢復(fù)。那么1號(hào)到10號(hào)之間的10天的數(shù)據(jù)都丟了,如果是關(guān)鍵系統(tǒng),比如證券金融什么的系統(tǒng),就要讓你賠錢賠死掉。

  但是如果有了歸檔日志,那么你這10天的重做日志都會(huì)存放起來(lái),那么DBA首先把1號(hào)的備份數(shù)據(jù)恢復(fù),然后再拿這10天的REDO日志來(lái)進(jìn)行一次數(shù)據(jù)操作重放,那么就可以完全恢復(fù)最新的數(shù)據(jù)庫(kù),不會(huì)有什么后果了。

  在軟件開發(fā)的時(shí)候,由于測(cè)試服務(wù)器的配置有限,特別是磁盤空間有限,所以有可能要限制REDO文件的大小,有可能就把系統(tǒng)設(shè)置為NOARCHIVELOG模式了。但是在實(shí)際的生產(chǎn)運(yùn)行環(huán)境下,基本上一定要使用ARCHIVELOG模式,否則萬(wàn)一出了問(wèn)題,真是哭都來(lái)不及了。

  有人可能會(huì)怕歸檔日志造成性能損失。其實(shí)這個(gè)完全是杞人憂天的,歸檔日志只是做一個(gè)備份,其實(shí)也就是多耗一些磁盤空間而已。在當(dāng)前的軟件系統(tǒng)中,硬盤的存儲(chǔ)容量成本已經(jīng)屬于低到可以忽略的地步,而最重要的是數(shù)據(jù)庫(kù)的安全。DBA的任務(wù)本來(lái)就是確保數(shù)據(jù)的安全,如果連安全都保證不了,那點(diǎn)微乎其微的性能提高又有什么用呢。

  歸檔日志(Archive Log)是非活動(dòng)的重做日志備份.通過(guò)使用歸檔日志,可以保留所有重做歷史記錄,當(dāng)數(shù)據(jù)庫(kù)處于ARCHIVELOG模式并進(jìn)行日志切換式,后臺(tái)進(jìn)程ARCH會(huì)將重做日志的內(nèi)容保存到歸檔日志中.當(dāng)數(shù)據(jù)庫(kù)出現(xiàn)介質(zhì)失敗時(shí),使用數(shù)據(jù)文件備份,歸檔日志和重做日志可以完全恢復(fù)數(shù)據(jù)庫(kù).

  日志操作模式:ARCHIVELOG NOARCHIVELOG

  1,改變?nèi)罩静僮髂J?

  檢查當(dāng)前日志操作模式

  SELECT log_mode from v$database;

  關(guān)閉數(shù)據(jù)庫(kù),然后裝載數(shù)據(jù)庫(kù)

  SHUTDOWN IMMEDIATE

  STARTUP MOUNT

  改變?nèi)罩静僮髂J?然后打開數(shù)據(jù)庫(kù)

  ALTER DATABASE ARCHIVELOG;

  ARCHIVE LOG START;

  ALTER DATABASE OPEN;

  2,執(zhí)行手工歸檔

  從oracle database 10g開始,當(dāng)將日志操作模式轉(zhuǎn)變未ARCHIVELOG模式時(shí),oracle會(huì)自動(dòng)啟動(dòng)ARCH進(jìn)程.如果要使用手工歸檔.那么在改變?nèi)罩静僮髂J綍r(shí)必須使用命令A(yù)LTER DATABASE ARCHIVELOG MANUAL.

  需要注意,使用手工歸檔方式,數(shù)據(jù)庫(kù)管理員必須手工執(zhí)行歸檔命令.如果沒(méi)有執(zhí)行手工歸檔命令,日志組的原有內(nèi)容將不能被覆蓋.ALTER DATABASE ARCHIVELOG MANUAL 命令是為了與先前的版本兼容而保留的,.將來(lái)的oracle版本會(huì)淘汰該命令,使用手工歸檔方式是,數(shù)據(jù)庫(kù)管理員可以執(zhí)行以下命令歸檔重做日志:

  SLTER SYSTEM ARCHIVELOG ALL;

  3,配置歸檔進(jìn)程

  初始化參數(shù)LOG_ARCHIVE_MAX_PROCESSES用于指定例程初始啟動(dòng)的最大歸檔進(jìn)程個(gè)數(shù),當(dāng)將數(shù)據(jù)庫(kù)轉(zhuǎn)變?yōu)锳RCHIVELOG模式時(shí),默認(rèn)情況下oracle會(huì)自動(dòng)啟動(dòng)兩個(gè)歸檔進(jìn)程.通過(guò)改變初始化參數(shù)LOG_ARCHIVE_MAX_PROCESS的值,可以動(dòng)態(tài)地增加或降低歸檔進(jìn)程的個(gè)數(shù):

  ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3;

  配置歸檔位置和文件格式

  當(dāng)數(shù)據(jù)庫(kù)處于ARCHIVELOG模式時(shí),如果進(jìn)行日志切換,后臺(tái)進(jìn)程將自動(dòng)生成歸檔日志,歸檔日志的默認(rèn)位置為%oracle_home%rdbms,在oracle database 10g中,歸檔日志的默認(rèn)文件格式為ARC%S_%R.%T.為了改變歸檔日志的位置和名稱格式,必須改變相應(yīng)的初始化參數(shù),

  1,初始化參數(shù)LOG_ARCHIVE_FORMAT用于指定歸檔日志的文件名格式,設(shè)置該初始化參數(shù)時(shí),可以指定以下匹配符:

  %s: 日志序列號(hào):

  %S: 日志序列號(hào)(帶有前導(dǎo)0)

  %t: 重做線程編號(hào).

  %T: 重做線程編號(hào)(帶有前導(dǎo)0)

  %a: 活動(dòng)ID號(hào)

  %d: 數(shù)據(jù)庫(kù)ID號(hào)

  %r RESETLOGS的ID值.

  從10g開始,配置歸檔日志文件格式時(shí),必須帶有%s,%t和%r匹配符,配置了歸檔文件格式后,必須重啟數(shù)據(jù)庫(kù).

  2,使用LOG_ARCHIVE_DEST配置歸檔位置

  如果不使用備用數(shù)據(jù)庫(kù),只需要將歸檔日志存放到本地目錄.配置本地歸檔位置可以使用初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST,其中,第一個(gè)參數(shù)用于設(shè)置第一個(gè)歸檔位置,第二個(gè)參數(shù)用于指定第二個(gè)歸檔位置.

  ALTER SYSTEM SET log_archive_dest=’d:demoarchive1’;

  ALTER SYSTEM SET log_archive_duplex_dest=’d:demoarchive2’;

3,使用LOG_ARCHIVE_DEST_n配置多個(gè)歸檔位置.

  初始化參數(shù)LOG_ARCHIVE_DEST_n用于指定多個(gè)歸檔位置,該參數(shù)最多可以指定10個(gè)歸檔位置.通過(guò)使用初始化參數(shù)LOG_ARCHIVE_DEST_n,不僅可以配置本地歸檔位置,還可以配置遠(yuǎn)程歸檔位置.

  如果既要在主節(jié)點(diǎn)上生成歸檔日志,又要將歸檔日志傳遞到備用節(jié)點(diǎn),那么必須使用參數(shù)LOG_ARCHIVE_DEST_n.該參數(shù)與LOG_ARCHIVE_DEST具有如下區(qū)別;

  初始化參數(shù)LOG_ARCHIVE_DEST_n可以配置本地歸檔位置和遠(yuǎn)程歸檔位置,而初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST只能配置本地歸檔位置.

  初始化參數(shù)LOG_ARCHIVE_DEST_n可以配置多達(dá)10個(gè)歸檔位置,而初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST最多只能配置兩個(gè)歸檔位置.

  初始化參數(shù)LOG_ARCHIVE_DEST_n 不能與初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同時(shí)使用.

  因?yàn)槌跏蓟瘏?shù)LOG_ARCHIVE_DEST_n不能與初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同時(shí)使用,所以必須禁用初始化參數(shù)LOG_ARCHVE_DEST和LOG_ARCHIVE_DUPLEX_DEST.當(dāng)使用初始化參數(shù)LOG_ARCHIVE_DEST_n配置本地歸檔位置時(shí),需要指定LOCALTION選項(xiàng).當(dāng)配置遠(yuǎn)程歸檔位置時(shí),需要指定SERVICE選項(xiàng).

  示例如下:

  ALTER SYSTEM SET log_archive_duplex_dest=’’;

  ALTER SYSTEM SET log_archive_dest=’’;

  ALTER SYSTEM SET log_archive_dest_1=’location=d:demoarchive1’;

  ALTER SYSTEM SET log_archive_dest_2=’location=d:demoarchive2’;

  ALTER SYSTEM SET log_archive_dest_3=’location=d:demoarchive3’;

  ALTER SYSTEM SET log_archive_dest_4=’service=standby’;

  配置遠(yuǎn)程歸檔位置時(shí),SERVICE選項(xiàng)需要指定遠(yuǎn)程數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)服務(wù)名(在tnsnames.ora文件中配置)

  4,使用LOG_ARCHIVE_DEST_n選項(xiàng)

  使用初始化參數(shù)LOG_ARCHIVE_DEST_n配置歸檔位置時(shí),可以在歸檔位置上指定OPTIONAL或MANDATORY選項(xiàng).指定MANDATORY選項(xiàng)時(shí),可以設(shè)置REOPEN屬性.

  OPTIONAL:該選項(xiàng)是默認(rèn)選項(xiàng).使用該選項(xiàng)時(shí),無(wú)論歸檔是否成功,都可以覆蓋重做日志.

  MANDATORY:強(qiáng)制歸檔.使用該選項(xiàng)時(shí),只有在歸檔成功之后,重做日志才能被覆蓋.

  REOPEN:該屬性用于指定重新歸檔的時(shí)間間隔,默認(rèn)值為300秒,必須跟在MANDATORY后.

  例:

  Alter system set log_archive_dest_1=’location=d:demoarchive1 mandatory’;

  Alter system set log_archive_dest_2=’location=d:demoarchive2 mandatory reopen=500’;

  Alter system set log_archive_dest_3=’location=d:demoarchive3 optional’;

  5,控制本地歸檔成功的最小個(gè)數(shù).

  使用初始化參數(shù)LOG_ARCHIVE_MIN_SUCCEED_DEST控制本地歸檔的最小成功個(gè)數(shù)

  Alter system set log_archive_min_succeed_dest=2;

  6,使用初始化參數(shù)LOG_ARCHIVE_DEST_STATE_n控制歸檔位置的可用性.設(shè)置該參數(shù)為ENABLE(默認(rèn)值),表示會(huì)激活相應(yīng)的歸檔位置;設(shè)置該參數(shù)為DEFER,表示禁用相應(yīng)歸檔位置.當(dāng)歸檔日志所在磁盤損壞或填滿時(shí),DBA需要暫時(shí)禁用該歸檔位置.

  Alter system set log_archive_dest_state_3=defer;(禁用)

  Alter system set log_archive_dest_state_3=enable;(啟用)

  顯示歸檔日志信息

  1,使用ARCHIVE LOG LIST命令可以顯示日志操作模式,歸檔位置,自動(dòng)歸檔機(jī)器要?dú)w檔的日志序列號(hào)等信息.

  2顯示日志操作模式

  SELECT name,log_mode FROM v$database;

  3,顯示歸檔日志信息.

  Col name format a40

  Select name, swquence#, first_change# FROM v$archived_log;

  Name用于表示歸檔日志文件名,sequence#用于表示歸檔日志對(duì)應(yīng)的日志序列號(hào),firs_change#用于標(biāo)識(shí)歸檔日志的起始SCN值.

  4執(zhí)行介質(zhì)恢復(fù)時(shí),需要使用歸檔日志文件,此四必須準(zhǔn)確定位歸檔日志的存放位置.通過(guò)查詢動(dòng)態(tài)性能視圖v$archive_dest可以取得歸檔日志所在目錄.

  SELECT destination FROM v$archive dest;

  5,顯示日志歷史信息

  SELECT * FROM v$loghist;

  THREAD#用于標(biāo)識(shí)重做線程號(hào),SEQUNCE#用于標(biāo)識(shí)日志序列號(hào),FIRST_CHANGE#用于標(biāo)識(shí)日志序列號(hào)對(duì)應(yīng)的起始SCN值,FIRST_TIME用于標(biāo)識(shí)起始SCN的發(fā)生時(shí)間.SWICTH_CHANGE#用于標(biāo)識(shí)日志切換的SCN值.

  6.顯示歸檔進(jìn)程信息.

  進(jìn)行日志切換時(shí),ARCH進(jìn)程會(huì)自動(dòng)將重做日志內(nèi)容復(fù)制到歸檔日志中,為了加快歸檔速度,應(yīng)該啟用多個(gè)ARCH進(jìn)程.通過(guò)查詢動(dòng)態(tài)性能視圖V$ARCHIVE_PROCESSES可以顯示所有歸檔進(jìn)程的信息!

  SELECT * FROM v$archive_processes;

  Porcess用于標(biāo)識(shí)ARCH進(jìn)程的編號(hào),status用于標(biāo)識(shí)ARCH進(jìn)程的狀態(tài)(ACTIVE:活動(dòng),STOPPED:未啟動(dòng)),log_sequence用于標(biāo)識(shí)正在進(jìn)行歸檔的日志序列號(hào),state用于標(biāo)識(shí)ARCH進(jìn)程的工作狀態(tài).

       說(shuō)明:整理與網(wǎng)絡(luò)

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI