Oracle 歸檔日誌
--====================
-- Oracle 歸檔日誌
--====================
Oracle可以將聯機日誌檔案儲存到多個不同的位置,將聯機日誌轉換為歸檔日誌的過程稱之為歸檔。相應的日誌被稱為歸檔日誌。
一、歸檔日誌
是聯機重做日誌組檔案的一個副本
包含redo記錄以及一個唯一的log sequence number
對日誌組中的一個日誌檔案進行歸檔,如果該組其中一個損壞,則另一個可用的日誌將會被歸檔
對於歸檔模式的日誌切換,當日志歸檔完成後,下一個日誌才能被覆蓋或重新使用
自動歸檔功能如開啟,則後臺程式arcn在日誌切換時自動完成歸檔,否則需要手動歸檔
歸檔日誌用途
恢復資料庫
更新standby資料庫
使用LogMiner 提取歷史日誌的相關資訊
二、日誌的兩種模式
1.非歸檔模式
不適用與生產資料庫
建立資料庫時,預設的日誌管理模式為非歸檔模式
當日志切換,檢查點產生後,聯機重做日誌檔案即可被重新使用
聯機日誌被覆蓋後,介質恢復僅僅支援到最近的完整備份
不支援聯機備份表空間,一個表空間損壞將導致整個資料庫不可用,需要刪除掉損壞的表空間或從備份恢復
對於作業系統級別的資料庫備份需要將資料庫一致性關閉
應當備份所有的資料檔案、控制檔案(單個)、引數檔案、密碼檔案、聯機日誌檔案(可選)
2.歸檔模式
能夠對聯機日誌檔案進行歸檔,生產資料庫強烈建議歸檔
在日誌切換時,下一個即將被寫入日誌組必須歸檔完成之後,日誌組才可以使用
歸檔日誌的Log sequence number資訊會記錄到控制檔案之中
必須有足夠的磁碟空間用於存放歸檔日誌
Oracle 9i 需要設定引數log_archive_start=true 才能夠進行自動歸檔
備份與恢復
支援熱備份,且當某個非系統表空間損壞,資料庫仍然處於可用狀態,且支援線上恢復
使用歸檔日誌能夠實現聯機或離線時點恢復(即可以恢復到指定的時間點、指定的歸檔日誌或指定的SCN)
三、兩種模式的切換設定及手動歸檔
1.非歸檔到歸檔模式
a.一致性關閉資料庫(shutdown [immediate | transactional |normal])
b.啟動到mount階段(startup mount)
c.切換到歸檔模式(alter database archivelog [manual])
d.切換到open階段(alter database open)
e.對資料做一個完整備份(full backup)
--演示非歸檔到歸檔模式
SQL> ARCHIVE LOG LIST --檢視資料庫是否處於歸檔模式
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 14
Current log sequence 16
SQL> SELECT log_mode FROM v$database; --檢視資料庫是否處於歸檔模式
LOG_MODE
------------
NOARCHIVELOG
SQL> SHUTDOWN IMMEDIATE; --一致性關閉資料庫
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP MOUNT; --啟動到mount狀態
ORACLE instance started.
Total System Global Area 251658240 bytes
Fixed Size 1218796 bytes
Variable Size 75499284 bytes
Database Buffers 171966464 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> ALTER DATABASE ARCHIVELOG; --切換到自動歸檔模式
Database altered.
SQL> ALTER DATABASE OPEN; --切換到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 14
Next log sequence to archive 16
Current log sequence 16
--備份資料庫步驟省略
2.歸檔模式切換到非歸檔模式(步驟同非歸檔到歸檔模式僅僅是c步驟使用alter database noarchivelog,演示省略)
a.一致性關閉資料庫(shutdown [immediate | transactional |normal])
b.啟動到mount階段(startup mount)
c.切換到歸檔模式(alter database noarchivelog )
d.切換到open階段(alter database open)
e.對資料做一個完整備份(full backup)
3.手動歸檔
手動歸檔時需要將日誌模式切換為alter database archivelog manual
再使用alter system archive log current | all 實現歸檔
更多手動歸檔命令:
注意:
手動歸檔模式下不支援stanby資料庫
在alter database archivelog模式下也可以實現對日誌的歸檔
SQL> ALTER DATABASE ARCHIVELOG MANUAL; --將日誌模式切換為手工歸檔模式
Database altered.
SQL> ALTER DATABASE OPEN; --開啟資料庫
Database altered.
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; --對當前的日誌進行歸檔(建議在mount階段完成)
System altered.
SQL> ALTER SYSTEM ARCHIVE LOG ALL; --對所有的日誌進行歸檔
alter system archive log all
*
ERROR at line 1:
ORA-00271: there are no logs that need archiving --沒有需要歸檔的日誌
4.歸檔程式的調整
透過設定LOG_ARCHIVE_MAX_PROCESSES 引數,可以指定資料庫規定所需初始化的程式數,預設的歸檔程式數為2
一般情況下不需要修改該引數,Oracle會根據歸檔情況自動啟動額外的歸檔程式
也可以動態的增加或減少歸檔程式數,比如有些業務在月底需要進行大量歸檔,平時則歸檔較少,對此可以動態修改
修改方法
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3;
5.配置歸檔(兩種歸檔位置配置方法)
a.歸檔到本機且少於等於兩個歸檔位置
設定LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST引數
alter system set log_archive_dest = '/u01/app/oracle/archivelog1' scope = spfile;
alter system set log_archive_duplex_dest = '/u01/app/oracle/archivelog2' scope = spfile;
b.歸檔到本機或遠端主機
設定LOG_ARCHIVE_DEST_n 引數,n最大值為10
alter system set log_archive_dest_1 = 'LOCATION=/u01/app/oracle/archivelog3';
alter system set log_archive_dest_2 = 'SERVICE=standby1';
對於遠端歸檔位置,SERVICE選項需要指定遠端資料庫的網路服務名(在tnsnames.ora檔案中配置)
LOG_ARCHIVE_DEST_n的兩個常用選項
MANADATORY | OPTIONAL:
MANADATORY表示歸檔必須成功複製到目的路徑之後,聯機重做日誌才能被複用,OPTIONAL正好相反
REOPEN:
指定歸檔失敗後指定間隔多少時間重試歸案,預設的為300秒
示例:
log_archive_dest_1 = 'LOCATION=/u01/app/oracle/archivelog3 manadatory reopen = 600'
log_archive_dest_2 = 'SERVICE=standby1 manadatory reopen'
c.兩種歸檔方法異同(前者log_archive_dest、log_archive_duplex_dest ,後者log_archive_dest_n)
兩者都可以歸檔到本機,後者可以歸檔到遠端主機,前者不支援該功能
前者最多配置兩個歸檔位置,後者可以配置10個歸檔位置
兩者互不相容,要麼使用前者,要麼使用後者
使用後者歸檔到本地時需要增加LOCATION選項,備份到遠端主機需要使用SERVICE選項
但上述兩種方式未指定路徑時,歸檔日誌位於db_recovery_file_dest 預設為$ORACLE_BASE/flash_recovey_area
d.歸檔日誌命名格式
設定LOG_ARCHIVE_FORMAT引數,Unix下的預設設定為LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf
%s: 日誌序列號:
%S: 日誌序列號(帶有前導)
%t: 重做執行緒編號.
%T: 重做執行緒編號(帶有前導)
%a: 活動ID號
%d: 資料庫ID號
%r RESETLOGS的ID值.
alter system set log_archive_format = 'arch_%t_%s_%r.arc';
e.歸檔位置狀態
Valid/Invalid --磁碟位置及服務名等是否有效
Enabled/Disabled --磁碟位置的可用狀態及資料庫能否使用該歸檔位置
Active/Inactive --訪問歸檔目的地是否有異常
f.歸檔成功的最小個數(使用引數log_archive_min_succeed_dest = n)
alter system set log_archive_min_succeed_dest = 2; --預設為1
聯機重做日誌組能夠被覆蓋的前提
所有強制路徑歸檔位置成功實現歸檔
歸檔目的地的成功歸檔的個數大於或等於上述引數設定的值
當強制個數大於該引數設定的個數,則以強制個數為準
當強制個數小於該引數設定的個數,則可選的成功歸檔路徑加上強制的歸檔路徑個數至少等於該引數設定值
g.控制歸檔的可用性(使用引數log_archive_dest_state_n)
alter system set log_archive_dest_state_1 = enable | defer
enable -->預設狀態,可以在該歸檔位置進行歸檔
defer -->禁用該歸檔位置
h.演示歸檔路徑配置及檢視歸檔程式,歸檔位置狀態
SQL> ARCHIVE LOG LIST; --檢視日誌是否處於歸檔狀態
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 24
Next log sequence to archive 26
Current log sequence 26
SQL> ho ps -ef | grep ora_arc --檢視歸檔程式是否已啟動
oracle 4062 1 0 11:43 ? 00:00:00 ora_arc0_orcl
oracle 4064 1 0 11:43 ? 00:00:00 ora_arc1_orcl
SQL> SHOW PARAMETER ARCHIVE --檢視歸檔路徑是否已設定,為空值表示未設定
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target integer 0
log_archive_config string
log_archive_dest string
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_2 string
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string enable
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_9 string enable
log_archive_duplex_dest string
log_archive_format string %t_%s_%r.dbf
log_archive_local_first boolean TRUE
log_archive_max_processes integer 2
log_archive_min_succeed_dest integer 1
log_archive_start boolean FALSE --該引數在9i中使用
log_archive_trace integer 0
remote_archive_enable string true
standby_archive_dest string ?/dbs/arch
SQL> alter system set log_archive_dest = '/u01/app/oracle/archivelog1' scope = spfile;
System altered.
SQL> alter system set log_archive_duplex_dest= '/u01/app/oracle/archivelog2' scope=spfile;
System altered.
SQL> alter system set log_archive_format = 'arch_%t_%s_%r.arc' scope = spfile;
--設定完畢後需要重新啟動例項,在此省略關閉啟動資訊
SQL> ho ls /u01/app/oracle/archivelog1 --檢視歸檔路徑下是否存在檔案或資料夾
SQL> ho ls /u01/app/oracle/archivelog2 --檢視歸檔路徑下是否存在檔案或資料夾
SQL> alter system archive log current; --手動進行歸檔
System altered.
SQL> ho ls -l /u01/app/oracle/archivelog1 --在指定的資料夾archivelog1已產生歸檔日誌
total 18224
-rw------- 1 oracle oinstall 18636800 Jul 28 20:39 arch_1_26_724852763.arc
SQL> ho ls -l /u01/app/oracle/archivelog2 --在指定的資料夾archivelog2已產生歸檔日誌
total 18224
-rw------- 1 oracle oinstall 18636800 Jul 28 20:39 arch_1_26_724852763.arc
SQL> ho mkdir /u01/app/oracle/archivelog3 --建立新的歸檔路徑
SQL> ho mkdir /u01/app/oracle/archivelog4 --建立新的歸檔路徑
SQL> alter system set log_archive_dest_1 = 'location=/u01/app/oracle/archivelog3'
2 scope = spfile;
System altered.
SQL> alter system set log_archive_dest_2 = 'location=/u01/app/oracle/archivelog4'
2 scope = spfile;
System altered.
SQL> shutdown immediate; --關閉例項
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup --啟動例項後,收到錯誤提示表明兩種歸檔方式不相容
ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
--關於上述設定導致的錯誤處理請參照:又一例SPFILE設定錯誤導致資料庫無法啟動
--下面是正確的處理辦法,應當先將一種歸檔方式路徑置空,此處是將log_archive_dest置空
SQL> alter system set log_archive_dest = '' scope = spfile;
System altered.
--此處是將log_archive_duplex_dest置空
SQL> alter system set log_archive_duplex_dest = '' scope = spfile;
System altered.
--接下來再設定log_archive_dest_1,log_archive_dest_2
SQL> alter system set log_archive_dest_1 = 'location=/u01/app/oracle/archivelog3'
2 scope = spfile;
System altered.
SQL> alter system set log_archive_dest_2 = 'location=/u01/app/oracle/archivelog4'
2 scope = spfile;
System altered.
--由於沒有配置standby伺服器,所以省略配置到遠端主機
--設定完畢後需要重新啟動例項,此時系統能正常啟動,在此省略關閉啟動資訊
SQL> alter system archive log current; --進行手動歸檔
System altered.
SQL> ho ls -l /u01/app/oracle/archivelog3/ --檢視歸檔日誌
total 27752
-rw------- 1 oracle oinstall 28382208 Aug 2 13:46 arc_1_38_724852763.arc
SQL> ho ls -l /u01/app/oracle/archivelog4/ --檢視歸檔日誌
total 27752
-rw------- 1 oracle oinstall 28382208 Aug 2 13:45 arc_1_38_724852763.arc
SQL> col dest_name format a20;
SQL> col destination format a30;
SQL> select dest_name,status,archiver,destination,
2 log_sequence,reopen_secs,transmit_mode,process
3 from v$archive_dest; --檢視歸檔目的地的相關狀態資訊
DEST_NAME STATUS ARCHIVER DESTINATION LOG_SEQUENCE REOPEN_SECS TRANSMIT_MOD PROCESS
-------------------- --------- ---------- ------------------------------ ------------ ----------- ------------ -------
LOG_ARCHIVE_DEST_1 VALID ARCH /u01/app/oracle/archivelog3/ 38 300 SYNCHRONOUS ARCH
LOG_ARCHIVE_DEST_2 VALID ARCH /u01/app/oracle/archivelog4/ 38 300 SYNCHRONOUS ARCH
LOG_ARCHIVE_DEST_3 INACTIVE ARCH 0 0 SYNCHRONOUS ARCH
-----------------------------------------------------------------------------------------------------------------------
SQL> alter system set log_archive_dest_state_2 = defer; --停用log_archive_dest_state_2
System altered.
SQL> show parameter log_archive_dest_state
NAME TYPE VALUE
------------------------------------ ----------- ---------------
log_archive_dest_state_1 string enable
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string DEFER --該路徑顯示為defer
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
SQL> alter system archive log current; --手動歸檔
System altered.
SQL> ho ls -l /u01/app/oracle/archivelog3; --可以看出archivelog3比archivelog4多出幾個歸檔檔案
total 124772 --建議將多出檔案件的使用系統命令複製到archivelog4
-rw------- 1 oracle oinstall 28382208 Aug 2 13:46 arc_1_38_724852763.arc
-rw------- 1 oracle oinstall 1788416 Aug 2 20:41 arc_1_39_724852763.arc
-rw------- 1 oracle oinstall 30257664 Aug 2 22:21 arc_1_40_724852763.arc
-rw------- 1 oracle oinstall 30257664 Aug 2 22:22 arc_1_41_724852763.arc
-rw------- 1 oracle oinstall 30257664 Aug 2 22:22 arc_1_42_724852763.arc
-rw------- 1 oracle oinstall 6647296 Aug 2 22:23 arc_1_43_724852763.arc
SQL> ho ls -l /u01/app/oracle/archivelog4;
total 29504
-rw------- 1 oracle oinstall 28382208 Aug 2 13:45 arc_1_38_724852763.arc
-rw------- 1 oracle oinstall 1788416 Aug 2 20:41 arc_1_39_724852763.arc
SQL> alter system set log_archive_dest_state_2 = enable; --啟用log_archive_dest_state_2
System altered.
SQL> alter system archive log current; --手動歸檔
System altered.
SQL> ho ls -l /u01/app/oracle/archivelog3; --啟用後出現了相同的arc_1_44_724852763.arc檔案
total 124856
-rw------- 1 oracle oinstall 28382208 Aug 2 13:46 arc_1_38_724852763.arc
-rw------- 1 oracle oinstall 1788416 Aug 2 20:41 arc_1_39_724852763.arc
-rw------- 1 oracle oinstall 30257664 Aug 2 22:21 arc_1_40_724852763.arc
-rw------- 1 oracle oinstall 30257664 Aug 2 22:22 arc_1_41_724852763.arc
-rw------- 1 oracle oinstall 30257664 Aug 2 22:22 arc_1_42_724852763.arc
-rw------- 1 oracle oinstall 6647296 Aug 2 22:23 arc_1_43_724852763.arc
-rw------- 1 oracle oinstall 81408 Aug 2 22:25 arc_1_44_724852763.arc
SQL> ho ls -l /u01/app/oracle/archivelog4;
total 29588
-rw------- 1 oracle oinstall 28382208 Aug 2 13:45 arc_1_38_724852763.arc
-rw------- 1 oracle oinstall 1788416 Aug 2 20:41 arc_1_39_724852763.arc
-rw------- 1 oracle oinstall 81408 Aug 2 22:25 arc_1_44_724852763.arc
四、歸檔日誌相關檢視
v$archived_log -->從控制檔案中獲得歸檔的相關資訊
v$archive_dest -->歸檔路徑及狀態
v$log_history -->控制檔案中日誌的歷史資訊
v$database -->檢視資料庫是否處於歸檔狀態
v$archive_processes -->歸檔相關的後臺程式資訊
命令:archive log list
SQL> select name,sequence#,registrar,standby_dest,archived,status
2 from v$archived_log;
NAME SEQUENCE# REGISTR STA ARC S
------------------------------------------------------- ---------- ------- --- --- -
/u01/app/oracle/archivelog4/arc_1_38_724852763.arc 38 FGRD NO YES A
/u01/app/oracle/archivelog3/arc_1_39_724852763.arc 39 ARCH NO YES A
/u01/app/oracle/archivelog4/arc_1_39_724852763.arc 39 ARCH NO YES A
/u01/app/oracle/archivelog3/arc_1_40_724852763.arc 40 ARCH NO YES A
/u01/app/oracle/archivelog3/arc_1_41_724852763.arc 41 ARCH NO YES A
/u01/app/oracle/archivelog3/arc_1_42_724852763.arc 42 ARCH NO YES A
/u01/app/oracle/archivelog3/arc_1_43_724852763.arc 43 ARCH NO YES A
/u01/app/oracle/archivelog3/arc_1_44_724852763.arc 44 FGRD NO YES A
/u01/app/oracle/archivelog4/arc_1_44_724852763.arc 44 FGRD NO YES A
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23490154/viewspace-1062364/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle歸檔日誌Oracle
- 【Oracle】歸檔日誌管理-設定歸檔日誌路徑以及歸檔日誌冗餘Oracle
- 歸檔oracle alert日誌Oracle
- Oracle歸檔日誌清理Oracle
- oracle之 Oracle歸檔日誌管理Oracle
- Oracle RMAN 清除歸檔日誌Oracle
- ORACLE 歸檔日誌資訊sqlOracleSQL
- oracle刪除歸檔日誌Oracle
- Oracle RMAN清除歸檔日誌Oracle
- Oracle歸檔日誌管理技巧Oracle
- oracle archive log 歸檔日誌OracleHive
- Oracle歸檔日誌刪除Oracle
- 當ORACLE歸檔日誌滿後如何正確刪除歸檔日誌Oracle
- oracle歸檔日誌過滿清理Oracle
- ORACLE RMAN 還原歸檔日誌Oracle
- Oracle archive log 歸檔日誌管理OracleHive
- oracle 10g 歸檔日誌Oracle 10g
- 歸檔日誌
- oracle11G歸檔日誌管理Oracle
- oracle 歸檔日誌開啟,關閉Oracle
- oracle 10g 歸檔日誌清除Oracle 10g
- 歸檔日誌挖掘
- PostgreSQL 歸檔日誌SQL
- 【REDO】Oracle 日誌挖掘,分析歸檔日誌線上日誌主要步驟Oracle
- 【SQL】Oracle 歸檔日誌暴增原因分析SQLOracle
- oracle 刪除過期的歸檔日誌Oracle
- oracle dg 歸檔日誌恢復情況Oracle
- Oracle歸檔日誌暴增排查優化Oracle優化
- Oracle基礎 04 歸檔日誌 archivelogOracleHive
- ORACLE 歸檔日誌開啟關閉方法Oracle
- oracle 歸檔日誌的小知識點Oracle
- oracle dataguard 自動刪除歸檔日誌Oracle
- Oracle RAC中使用RMAN管理歸檔日誌Oracle
- 【Oracle】 rman 刪除歸檔日誌的命令Oracle
- oracle rman備份歸檔日誌需要先切換日誌嗎Oracle
- oracle歸檔切換以及歸檔日誌滿報錯問題Oracle
- 控制檔案/歸檔日誌
- 如何正確刪除ORACLE歸檔日誌檔案Oracle