大家好,我是 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è)筆記的同時還可進行問題答疑以及每月遠程技術支持,希望大家多多支持,收獲定大于付出!