時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
在Oracle中,數(shù)據(jù)一般是存放在數(shù)據(jù)文件中,不過數(shù)據(jù)庫與Oracle最大的區(qū)別之一就是數(shù)據(jù)庫可以在數(shù)據(jù)出錯的時候進行恢復。這個也就是我們常見的Oracle中的重做日志(REDO FILE)的功能了。在重做日志分成2部分,一個是在線重做日志文件,另外一個就是歸檔日志文件。
這里不詳細說明在線重做日志,而是說一下歸檔日志(Archive Log)。在線重做日志大小畢竟是有限的,當都寫滿了的時候,就面臨著2個選擇,第一個就是把以前在線重做日志從頭擦除開始繼續(xù)寫,第二種就是把以前的在線重做日志先進行備份,然后對被備份的日志擦除開始寫新的在線Redo File。這種備份的在線重做日志就是歸檔日志。而數(shù)據(jù)庫如果采用這種生成歸檔日志的模式的話,就是歸檔日志模式(ARCHIVELOG模式),反之如果不生成歸檔日志,就是非歸檔日志模式(NOARCHIVELOG模式)。
有了歸檔日志有什么好處了。比如在這個月1號的時候備份了一次數(shù)據(jù),然后過了10天,這10天生成了成百上千個在線重做日志,突然發(fā)現(xiàn)其中有一個數(shù)據(jù)磁盤出問題了,不能用了,那我該如何是好呢。
如果沒有采用歸檔日志,那么實際上磁盤中只會有幾個最新的在線重做日志。那么我只能要不然把出問題的數(shù)據(jù)磁盤上所占據(jù)的表空間都刪除掉。但是如果是SYSTEM表空間所涉及的磁盤出錯,就沒辦法這么做了,只能用第二種方法。那第二種方法就是把1號備份的數(shù)據(jù)拿出來恢復。那么1號到10號之間的10天的數(shù)據(jù)都丟了,如果是關鍵系統(tǒng),比如證券金融什么的系統(tǒng),就要讓你賠錢賠死掉。
但是如果有了歸檔日志,那么你這10天的重做日志都會存放起來,那么DBA首先把1號的備份數(shù)據(jù)恢復,然后再拿這10天的REDO日志來進行一次數(shù)據(jù)操作重放,那么就可以完全恢復最新的數(shù)據(jù)庫,不會有什么后果了。
在軟件開發(fā)的時候,由于測試服務器的配置有限,特別是磁盤空間有限,所以有可能要限制REDO文件的大小,有可能就把系統(tǒng)設置為NOARCHIVELOG模式了。但是在實際的生產(chǎn)運行環(huán)境下,基本上一定要使用ARCHIVELOG模式,否則萬一出了問題,真是哭都來不及了。
有人可能會怕歸檔日志造成性能損失。其實這個完全是杞人憂天的,歸檔日志只是做一個備份,其實也就是多耗一些磁盤空間而已。在當前的軟件系統(tǒng)中,硬盤的存儲容量成本已經(jīng)屬于低到可以忽略的地步,而最重要的是數(shù)據(jù)庫的安全。DBA的任務本來就是確保數(shù)據(jù)的安全,如果連安全都保證不了,那點微乎其微的性能提高又有什么用呢。
歸檔日志(Archive Log)是非活動的重做日志備份.通過使用歸檔日志,可以保留所有重做歷史記錄,當數(shù)據(jù)庫處于ARCHIVELOG模式并進行日志切換式,后臺進程ARCH會將重做日志的內容保存到歸檔日志中.當數(shù)據(jù)庫出現(xiàn)介質失敗時,使用數(shù)據(jù)文件備份,歸檔日志和重做日志可以完全恢復數(shù)據(jù)庫.
日志操作模式:ARCHIVELOG NOARCHIVELOG
1,改變日志操作模式:
檢查當前日志操作模式
SELECT log_mode from v$database;
關閉數(shù)據(jù)庫,然后裝載數(shù)據(jù)庫
SHUTDOWN IMMEDIATE
STARTUP MOUNT
改變日志操作模式,然后打開數(shù)據(jù)庫
ALTER DATABASE ARCHIVELOG;
ARCHIVE LOG START;
ALTER DATABASE OPEN;
2,執(zhí)行手工歸檔
從oracle database 10g開始,當將日志操作模式轉變未ARCHIVELOG模式時,oracle會自動啟動ARCH進程.如果要使用手工歸檔.那么在改變日志操作模式時必須使用命令ALTER DATABASE ARCHIVELOG MANUAL.
需要注意,使用手工歸檔方式,數(shù)據(jù)庫管理員必須手工執(zhí)行歸檔命令.如果沒有執(zhí)行手工歸檔命令,日志組的原有內容將不能被覆蓋.ALTER DATABASE ARCHIVELOG MANUAL 命令是為了與先前的版本兼容而保留的,.將來的oracle版本會淘汰該命令,使用手工歸檔方式是,數(shù)據(jù)庫管理員可以執(zhí)行以下命令歸檔重做日志:
SLTER SYSTEM ARCHIVELOG ALL;
3,配置歸檔進程
初始化參數(shù)LOG_ARCHIVE_MAX_PROCESSES用于指定例程初始啟動的最大歸檔進程個數(shù),當將數(shù)據(jù)庫轉變?yōu)锳RCHIVELOG模式時,默認情況下oracle會自動啟動兩個歸檔進程.通過改變初始化參數(shù)LOG_ARCHIVE_MAX_PROCESS的值,可以動態(tài)地增加或降低歸檔進程的個數(shù):
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3;
配置歸檔位置和文件格式
當數(shù)據(jù)庫處于ARCHIVELOG模式時,如果進行日志切換,后臺進程將自動生成歸檔日志,歸檔日志的默認位置為%oracle_home%rdbms,在oracle database 10g中,歸檔日志的默認文件格式為ARC%S_%R.%T.為了改變歸檔日志的位置和名稱格式,必須改變相應的初始化參數(shù),
1,初始化參數(shù)LOG_ARCHIVE_FORMAT用于指定歸檔日志的文件名格式,設置該初始化參數(shù)時,可以指定以下匹配符:
%s: 日志序列號:
%S: 日志序列號(帶有前導0)
%t: 重做線程編號.
%T: 重做線程編號(帶有前導0)
%a: 活動ID號
%d: 數(shù)據(jù)庫ID號
%r RESETLOGS的ID值.
從10g開始,配置歸檔日志文件格式時,必須帶有%s,%t和%r匹配符,配置了歸檔文件格式后,必須重啟數(shù)據(jù)庫.
2,使用LOG_ARCHIVE_DEST配置歸檔位置
如果不使用備用數(shù)據(jù)庫,只需要將歸檔日志存放到本地目錄.配置本地歸檔位置可以使用初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST,其中,第一個參數(shù)用于設置第一個歸檔位置,第二個參數(shù)用于指定第二個歸檔位置.
ALTER SYSTEM SET log_archive_dest=’d:demoarchive1’;
ALTER SYSTEM SET log_archive_duplex_dest=’d:demoarchive2’;
#p#副標題#e#
3,使用LOG_ARCHIVE_DEST_n配置多個歸檔位置.
初始化參數(shù)LOG_ARCHIVE_DEST_n用于指定多個歸檔位置,該參數(shù)最多可以指定10個歸檔位置.通過使用初始化參數(shù)LOG_ARCHIVE_DEST_n,不僅可以配置本地歸檔位置,還可以配置遠程歸檔位置.
如果既要在主節(jié)點上生成歸檔日志,又要將歸檔日志傳遞到備用節(jié)點,那么必須使用參數(shù)LOG_ARCHIVE_DEST_n.該參數(shù)與LOG_ARCHIVE_DEST具有如下區(qū)別;
初始化參數(shù)LOG_ARCHIVE_DEST_n可以配置本地歸檔位置和遠程歸檔位置,而初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST只能配置本地歸檔位置.
初始化參數(shù)LOG_ARCHIVE_DEST_n可以配置多達10個歸檔位置,而初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST最多只能配置兩個歸檔位置.
初始化參數(shù)LOG_ARCHIVE_DEST_n 不能與初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同時使用.
因為初始化參數(shù)LOG_ARCHIVE_DEST_n不能與初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同時使用,所以必須禁用初始化參數(shù)LOG_ARCHVE_DEST和LOG_ARCHIVE_DUPLEX_DEST.當使用初始化參數(shù)LOG_ARCHIVE_DEST_n配置本地歸檔位置時,需要指定LOCALTION選項.當配置遠程歸檔位置時,需要指定SERVICE選項.
示例如下:
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’;
配置遠程歸檔位置時,SERVICE選項需要指定遠程數(shù)據(jù)庫的網(wǎng)絡服務名(在tnsnames.ora文件中配置)
4,使用LOG_ARCHIVE_DEST_n選項
使用初始化參數(shù)LOG_ARCHIVE_DEST_n配置歸檔位置時,可以在歸檔位置上指定OPTIONAL或MANDATORY選項.指定MANDATORY選項時,可以設置REOPEN屬性.
OPTIONAL:該選項是默認選項.使用該選項時,無論歸檔是否成功,都可以覆蓋重做日志.
MANDATORY:強制歸檔.使用該選項時,只有在歸檔成功之后,重做日志才能被覆蓋.
REOPEN:該屬性用于指定重新歸檔的時間間隔,默認值為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,控制本地歸檔成功的最小個數(shù).
使用初始化參數(shù)LOG_ARCHIVE_MIN_SUCCEED_DEST控制本地歸檔的最小成功個數(shù)
Alter system set log_archive_min_succeed_dest=2;
6,使用初始化參數(shù)LOG_ARCHIVE_DEST_STATE_n控制歸檔位置的可用性.設置該參數(shù)為ENABLE(默認值),表示會激活相應的歸檔位置;設置該參數(shù)為DEFER,表示禁用相應歸檔位置.當歸檔日志所在磁盤損壞或填滿時,DBA需要暫時禁用該歸檔位置.
Alter system set log_archive_dest_state_3=defer;(禁用)
Alter system set log_archive_dest_state_3=enable;(啟用)
顯示歸檔日志信息
1,使用ARCHIVE LOG LIST命令可以顯示日志操作模式,歸檔位置,自動歸檔機器要歸檔的日志序列號等信息.
2顯示日志操作模式
SELECT name,log_mode FROM v$database;
3,顯示歸檔日志信息.
Col name format a40
Select name, swquence#, first_change# FROM v$
關鍵詞標簽:oracle歸檔,歸檔日志管
相關閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務器設置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法