• 正文
    • Oracle 歸檔日志文件
  • 相關推薦
申請入駐 產業(yè)圖譜

DBA | Oracle 歸檔日志文件介紹配置實踐指南

05/26 10:35
456
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大家好,我是 WeiyiGeek,一名深耕安全運維開發(fā)(SecOpsDev)領域的技術從業(yè)者,致力于探索DevOps與安全的融合(DevSecOps),自動化運維工具開發(fā)與實踐,企業(yè)網絡安全防護,歡迎各位道友一起學習交流、一起進步 ,若此文對你有幫助,收藏學習不迷路??。

又有一段時間,沒有給大家更新文章,最近確實有些懈怠了,不過還好,通過這段時間的沉淀,又整理了一些實用技巧,我都放在了?全棧工程師修煉指南?知識星球,部分文章同步到公眾號,希望對各位正在學習 Oracle 數(shù)據(jù)庫的童鞋有幫助。

Oracle 歸檔日志文件

什么是歸檔日志文件?

描述:歸檔日志文件(Archive Log Files)是Oracle數(shù)據(jù)庫重做日志文件的持久化備份,當數(shù)據(jù)庫處于歸檔模式(ARCHIVELOG)時,LGWR進程寫滿一個重做日志文件后,ARCn進程會將其內容復制到指定的歸檔位置,形成歸檔日志文件。

由上可知,歸檔日志文件在數(shù)據(jù)容災備份非常重要,在生產環(huán)境中一定、一定要開啟;前面我們提到在線重做日志文件發(fā)生切換后,就需要被歸檔到磁盤中永久存放,歸檔在線重做日志文件后可用于數(shù)據(jù)備份、及數(shù)據(jù)恢復,防止重做日志循環(huán)寫入導致的歷史數(shù)據(jù)丟失 ,支持數(shù)據(jù)庫恢復到任意時間點。

歸檔日志文件命名格式

通常為:O1_MF_%t_%s_%r_.ARC?,例如?O1_MF_1_6_MZDJQL71_.ARC,其中:

文件名部分 說明 示例值 含義
O1_MF_ 固定前綴 O1_MF_ Oracle 12c的標準前綴
1 線程號(%t) 1 產生該日志的線程編號(單實例通常為1)
6 日志序列號(%s) 6 日志序列號,唯一標識歸檔文件
MZDJQL71 重做日志ID(%r) MZDJQL71 重做日志的唯一標識符
.ARC 固定后綴 .ARC 歸檔日志的標準擴展名

歸檔文件命名常用參數(shù),如下所示:

%t:線程號(Thread number)

%s:日志序列號(Log sequence number)

%r:重做日志ID(Resetlogs ID)

%d:數(shù)據(jù)庫ID(Database ID)

%a:激活ID(Activation ID)

歸檔日志文件存放路徑

Windows:
C:apporaclefast_recovery_area<SID>ARCHIVELOG?# 缺省
C:apporaclerecovery_area<SID>ARCHIVELOG ? ? ?# 自定義

如何配置和修改歸檔設置

特別注意:Oracle 數(shù)據(jù)庫默認未啟用歸檔,所以通常需要將數(shù)據(jù)庫置于MOUNT階段,然后我們手動開啟歸檔模式,若已上線的生產環(huán)境則需要在閑時停機維護。

1.檢查當前歸檔狀態(tài)

-- # 使用SQL語句查看數(shù)據(jù)庫日志模式
SELECT?log_mode?FROM?v$database;
-- NOARCHIVELOG # 表示數(shù)據(jù)庫日志模式為非存檔模式
-- # 或者使用 arhive 命令查看數(shù)據(jù)庫日志模式,當前為非存檔模式
SQL> archive log list;
-- 數(shù)據(jù)庫日志模式 ? ? ? 非存檔模式
-- 自動存檔 ? ? ? ? ? ? 禁用
-- 存檔終點 ? ? ? ? ? ? USE_DB_RECOVERY_FILE_DEST
-- 最早的聯(lián)機日志序列 ? ? 2
-- 當前日志序列 ? ? ? ? ? 6

-- # 查看歸檔進程狀態(tài)
SELECT?process,?statusFROM?v$archive_processes;
-- PROCESS STATUS
-- 0 STOPPED
-- 1 STOPPED

-- # 查看歸檔日志文件信息
SELECTname,?sequence#, first_time, completion_time?
FROM?v$archived_log
ORDERBYsequence# DESC;

-- # 檢查歸檔目標配置
SELECT?dest_name,?status, destination?FROM?v$archive_dest;

-- # 檢查歸檔空間使用
SELECTNAME,SPACE_LIMIT/1024/1024"SPACE_LIMIT", SPACE_USED ?FROM?v$recovery_file_dest;
-- NAME SPACE_LIMIT SPACE_USED
-- C:apprecovery_area 9546 0

2.啟用日志歸檔模式和手動切換日志文件生成歸檔文件

# 1.關閉數(shù)據(jù)庫實例,并將實例置于MOUNT階段
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;?
? ? 數(shù)據(jù)庫裝載完畢。
? ??
# 2.啟用數(shù)據(jù)庫日志模式
SQL> ALTER DATABASE ARCHIVELOG;

# 3.將數(shù)據(jù)庫實例置于OPEN狀態(tài)
SQL> ALTER DATABASE OPEN;

# 4.再次查看日志歸檔模式
SQL> archive?log?list;
# 數(shù)據(jù)庫日志模式 ? ? ? ? ? ?存檔模式
# 自動存檔 ? ? ? ? ? ? 啟用
# 存檔終點 ? ? ? ? ? ?USE_DB_RECOVERY_FILE_DEST
# 最早的聯(lián)機日志序列 ? ? 2
# 下一個存檔日志序列 ? 6
# 當前日志序列 ? ? ? ? ? 6

# 5.手動切換重做日志,自動生成歸檔文件
SQL> alter system switch logfile;
C:apporaclerecovery_areahistdbARCHIVELOG2025_04_09

# 7.之后,我們了解一下歸檔相關的 recover 參數(shù),查看到歸檔路徑、大小限制等信息。
SQL> show parameter recover;
# NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE ? ? ? ?VALUE
# ------------------------------------ ----------- ------------------------------
# db_recovery_file_dest ? ? ? ? ? ? ? ?string ? ? ?C:apporaclerecovery_area ?# 歸檔路徑 ?
# db_recovery_file_dest_size ? ? ? ? ? big integer 9546M ?# 歸檔快速恢復區(qū)目錄的總容量限制
# db_unrecoverable_scn_tracking ? ? ? ?boolean ? ? TRUE
# recovery_parallelism ? ? ? ? ? ? ? ? integer ? ? 0
# remote_recovery_file_dest ? ? ? ? ? ?string

# 8.查詢確認快速恢復區(qū)的使用情況
SQL>?set?linesize 140 pagesize 50;
SQL> col NAME?for?a30;
SQL> SELECT * FROM V$RECOVERY_FILE_DEST;
# NAME ? ? ? ? ? ? ? ? ? ? ? ? ? SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES ? ? CON_ID
# ------------------------------ ----------- ---------- ----------------- --------------- ----------
# C:apporaclerecovery_area ? ? 1.0010E+10 ? ?2248704 ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? 1 ? ? ? ? ?0

weiyigeek.top-啟用歸檔模式查看歸檔文件

3.若要關閉歸檔則同樣需要進入到?MOUNT?階段,然后執(zhí)行如下命令。

-- 1. 關閉數(shù)據(jù)庫
SQL> SHUTDOWN IMMEDIATE;
-- 2. 啟動到mount狀態(tài)
SQL> STARTUP MOUNT;?
-- 3.關閉歸檔模式
SQL>?ALTER?DATABASE?NOARCHIVELOG; ?
-- 4. 打開數(shù)據(jù)庫
ALTER?DATABASE?OPEN;?

4.配置歸檔目標路徑及格式

-- 設置主歸檔目標
ALTERSYSTEMSET?log_archive_dest_1='LOCATION=/oracle/data/arch/ORCL'SCOPE=BOTH;

-- 設置備用歸檔目標(可選)
ALTERSYSTEMSET?log_archive_dest_2='LOCATION=/oracle/data/arch2/ORCL'SCOPE=BOTH;

-- 查看與設置歸檔文件格式
SHOW?PARAMETER log_archive_format;
ALTERSYSTEMSET?log_archive_format='ARCH_%t_%s_%r.arc'SCOPE=SPFILE;

5.修改歸檔進程數(shù)量

-- 增加歸檔進程(默認4個,最大30個)
ALTER?SYSTEM?SET?log_archive_max_processes=5?SCOPE=BOTH;

6.歸檔日志管理

-- # 查看所有日志組及其歸檔狀態(tài)
SELECTgroup#, sequence#, bytes/1024/1024 "Size(MB)",?
? ? ? ?members,?status,?archived, first_time, next_time
FROM?v$log
ORDERBYgroup#;
-- GROUP# SEQUENCE# Size(MB) MEMBERS STATUS ARCHIVED FIRST_TIME NEXT_TIME
-- 1 4195 200 1 CURRENT NO 2025-05-23 08:13:38?
-- 2 4193 200 1 INACTIVE NO 2025-05-22 22:00:36 2025-05-23 00:18:15
-- 3 4194 200 1 INACTIVE NO 2025-05-23 00:18:15 2025-05-23 08:13:38

-- # 查看當前正在使用的重做日志組(即將被歸檔的組)
SELECTgroup#, sequence#, bytes/1024/1024 "Size(MB)", members, status, archived
FROM?v$log
WHEREstatus?=?'CURRENT';

-- 3 查看日志組成員的具體信息
SELECTgroup#, member, type, is_recovery_dest_file
FROM?v$logfile
ORDERBYgroup#, member;
-- GROUP# MEMBER ? ? ? ? ? ? ? ? ? ? ? TYPE IS_RECOVERY_DEST_FILE
-- 1 C:APPORADATAORCLREDO01.LOG ONLINE NO
-- 2 C:APPORADATAORCLREDO02.LOG ONLINE NO
-- 3 C:APPORADATAORCLREDO03.LOG ONLINE NO

-- # 歸檔指定日志組
ALTERSYSTEMARCHIVELOGGROUP3;

-- # 手動歸檔當前日志組
ALTERSYSTEMARCHIVELOGCURRENT;

最后提及一點,歸檔日志文件是Oracle數(shù)據(jù)庫實現(xiàn)持續(xù)運行和數(shù)據(jù)保護的關鍵組件,合理配置和管理歸檔模式對數(shù)據(jù)庫的可用性和可恢復性至關重要。

加入:作者【全棧工程師修煉指南】知識星球

獲?。鹤髡吖ぷ鲗W習全棧筆記

作者整理了10年的工作學習筆記(涉及網絡、安全、運維、開發(fā)),需要學習實踐筆記的看友,可添加作者微信或者回復【工作學習實踐筆記】,當前價格¥199,除了獲得從業(yè)筆記的同時還可進行問題答疑以及每月遠程技術支持,希望大家多多支持,收獲定大于付出!

相關推薦