DBA必備工具之Oracle環(huán)境中自動刪除歸檔日志
簡介
delete_archive 是一個用于自動化管理 Oracle 數(shù)據(jù)庫歸檔日志的 Go 語言腳本。
此腳本來源于之前有2個客戶的需求:
- 一是一次遷移幾百套數(shù)據(jù)庫,其中要用ADG來遷移,即不能影響到客戶當前歸檔刪除策略或者是原來非歸檔數(shù)據(jù)庫中轉(zhuǎn)為歸檔模式后磁盤空間的容量,又不能因為過度刪除歸檔日志影響到我們遷移的同步,所以當時就寫了shell版本的一鍵自動刪除歸檔的腳本。
- 而是一個客戶歸檔日志采用了自動刪除策略,但是在還原過程中發(fā)現(xiàn)歸檔日志缺失,最后分析原因是自動刪除策略將未備份的歸檔日志刪除了。
腳本的初衷就是盡可能保留舊的歸檔日志,同時也考慮到空間自定義規(guī)則。
獲取腳本
公眾號回復(fù)delete_archive即可獲得下載鏈接
使用方法
語法
Usage: ./delete_archive [options]
參數(shù)說明
-s <instance>指定要處理的 Oracle 實例名,0表示所有實例(默認:htz)-n <num>歸檔日志刪除的磁盤使用率閾值,達到該百分比時觸發(fā)刪除(默認:90),刪除時,自動刪除最舊的2個已經(jīng)成功備份的歸檔日志。-f <num2>強制刪除的磁盤使用率閾值,達到該百分比時強制刪除(默認:98),不會進行是否進行備份的判斷。-d啟用腳本調(diào)試模式,輸出詳細調(diào)試日志(默認false)-v顯示腳本版本號和聯(lián)系方式-h, --help顯示幫助信息
[oracle@oracleadg tmp]$ ./deletearchive -help Usage: ./deletearchive [options] Options: -s <instance> instance name you will delete archivelog, 0 means all instances (default: htz) -n <num> Threshold (percent) to trigger log deletion (default: 90) -f <num2> Threshold (percent) to trigger forced log deletion (default: 98) -d Enable script debugging -v display script version and contact info -h, --help display this help information Version: 0.1 Contact: For the latest version, contact phone/WeChat: 18081072613
示例
- 刪除所有實例歸檔日志,使用默認閾值:
./delete_archive -s 0 [oracle@oracleadg tmp]$ ./deletearchive -s 0 2025-07-02 00:48:03.184868 main.main : Script started at: 2025-07-02T00:48:03+08:00 2025-07-02 00:48:03.212655 main.getRunningInstances : Running instances: htz191, htz192 2025-07-02 00:48:03.212726 main.setOracleSID : beging executing modify Oracle sid 2025-07-02 00:48:03.212754 main.checkCkptProcess : beging executing check ckpt process 2025-07-02 00:48:03.238535 main.setOracleSID : Set ORACLE_SID to: htz191 2025-07-02 00:48:03.314795 main.setOracleSID : beging executing modify Oracle sid 2025-07-02 00:48:03.314854 main.checkCkptProcess : beging executing check ckpt process 2025-07-02 00:48:03.337470 main.setOracleSID : Set ORACLE_SID to: htz191 2025-07-02 00:48:03.511368 main.getDiskUsage : The archive path is configured as a file system 2025-07-02 00:48:03.581760 main.getDiskUsage : Using FRA to manage archive logs 2025-07-02 00:48:03.644475 main.deleteMain : Current archive used PCT :76 2025-07-02 00:48:03.644534 main.setOracleSID : beging executing modify Oracle sid 2025-07-02 00:48:03.644555 main.checkCkptProcess : beging executing check ckpt process 2025-07-02 00:48:03.666678 main.setOracleSID : Set ORACLE_SID to: htz192 2025-07-02 00:48:03.749803 main.setOracleSID : beging executing modify Oracle sid 2025-07-02 00:48:03.749859 main.checkCkptProcess : beging executing check ckpt process 2025-07-02 00:48:03.772382 main.setOracleSID : Set ORACLE_SID to: htz192 2025-07-02 00:48:03.923390 main.getDiskUsage : The archive path is configured as a file system 2025-07-02 00:48:03.998782 main.getDiskUsage : Using FRA to manage archive logs 2025-07-02 00:48:04.078302 main.deleteMain : Current archive used PCT :76 2025-07-02 00:48:04.078363 main.main : Script ended at: 2025-07-02T00:48:04+08:00
- 刪除指定實例(如 htz1)歸檔日志,刪除閾值 85%,強制閾值 95%:
./delete_archive -s htz1 -n 85 -f 95 部分日志: [oracle@oracleadg tmp]$ ./deletearchive -s $ORACLE_SID -f 75 2025-07-02 00:48:42.010254 main.main : Script started at: 2025-07-02T00:48:42+08:00 2025-07-02 00:48:42.010318 main.setOracleSID : beging executing modify Oracle sid 2025-07-02 00:48:42.010336 main.checkCkptProcess : beging executing check ckpt process 2025-07-02 00:48:42.041291 main.setOracleSID : Set ORACLE_SID to: htz191 2025-07-02 00:48:42.107775 main.setOracleSID : beging executing modify Oracle sid 2025-07-02 00:48:42.107832 main.checkCkptProcess : beging executing check ckpt process 2025-07-02 00:48:42.131013 main.setOracleSID : Set ORACLE_SID to: htz191 2025-07-02 00:48:42.267686 main.getDiskUsage : The archive path is configured as a file system 2025-07-02 00:48:42.340124 main.getDiskUsage : Using FRA to manage archive logs 2025-07-02 00:48:42.415996 main.deleteMain : Current archive used PCT :76 and Force delete archive log 2025-07-02 00:48:42.416059 main.deleteArchLog : Begin delete archive log 2025-07-02 00:48:50.260200 main.getDiskUsage : The archive path is configured as a file system 2025-07-02 00:48:50.337404 main.getDiskUsage : Using FRA to manage archive logs 2025-07-02 00:48:50.404294 main.deleteMain : Current archive used PCT :76 and Force delete archive log 2025-07-02 00:48:50.404363 main.deleteArchLog : Begin delete archive log 2025-07-02 00:48:57.816066 main.getDiskUsage : The archive path is configured as a file system 2025-07-02 00:48:57.895482 main.getDiskUsage : Using FRA to manage archive logs 2025-07-02 00:48:57.975555 main.deleteMain : Current archive used PCT :76 and Force delete archive log 2025-07-02 00:48:57.975615 main.deleteArchLog : Begin delete archive log 2025-07-02 00:49:04.846875 main.getDiskUsage : The archive path is configured as a file system 2025-07-02 00:49:04.919516 main.getDiskUsage : Using FRA to manage archive logs 2025-07-02 00:49:04.996407 main.deleteMain : Current archive used PCT :76 and Force delete archive log 2025-07-02 00:49:04.996468 main.deleteArchLog : Begin delete archive log 2025-07-02 00:49:12.081336 main.getDiskUsage : The archive path is configured as a file system 2025-07-02 00:49:12.160922 main.getDiskUsage : Using FRA to manage archive logs 2025-07-02 00:49:12.245844 main.deleteMain : Current archive used PCT :76 and Force delete archive log 2025-07-02 00:49:12.245906 main.deleteArchLog : Begin delete archive log 2025-07-02 00:49:12.322223 main.deleteArchLog : Get error archive log info :no rows selected
- 啟用調(diào)試模式:
./delete_archive -d
- 查看幫助信息:
./delete_archive -h ./delete_archive --help ./delete_archive -help
- 查看版本信息:
./delete_archive -v
日志說明
- 日志文件默認保存在腳本同級目錄下的
log/目錄中。 - 主要日志文件:
delete_archiveerrors.txt錯誤日志delete_archivedebug.txt調(diào)試日志
- 日志內(nèi)容包括操作時間、函數(shù)名、日志級別和詳細信息。
版本信息
- 當前版本:0.1
- 聯(lián)系方式:如有問題或建議,請聯(lián)系 18081072613(電話/微信同號)
獲取腳本
公眾號回復(fù)delete_archive即可,目前腳本只編譯了Linux版本。
注意事項
- 需以有權(quán)限的 Oracle 用戶運行,確保能訪問數(shù)據(jù)庫和相關(guān)歸檔目錄。
- 需在 Oracle 數(shù)據(jù)庫服務(wù)器上運行,且環(huán)境變量
ORACLE_SID可被正確設(shè)置。 - 腳本會自動檢測并切換
ORACLE_SID,無需手動干預(yù)。 - 強制刪除模式下,歸檔日志即使未備份也會被刪除,請謹慎設(shè)置閾值。
- 如遇腳本報錯或異常退出,請檢查日志文件獲取詳細信息。
功能說明
- 自動檢測 Oracle 實例歸檔日志的存儲使用率。
- 支持文件系統(tǒng)和 ASM 磁盤組歸檔路徑的檢測與處理。
- 支持 FRA(閃回恢復(fù)區(qū))和手動歸檔管理模式。
- 根據(jù)設(shè)定的閾值自動刪除最老的歸檔日志,優(yōu)先刪除已備份的歸檔。
- 支持強制刪除(無備份也可刪除),防止磁盤空間耗盡。
- 支持多實例批量處理。
- 詳細日志輸出,便于問題追蹤。
總結(jié)
到此這篇關(guān)于DBA必備工具之Oracle環(huán)境中自動刪除歸檔日志的文章就介紹到這了,更多相關(guān)Oracle自動刪除歸檔日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redhat 6.2 下 oracle 11g R2的安裝詳解
這篇文章主要介紹了Redhat 6.2 下 oracle 11g R2的安裝詳解,需要的朋友可以參考下2016-07-07
Oracle數(shù)據(jù)庫刪除表空間后磁盤空間不釋放的問題及解決
這篇文章主要介紹了Oracle數(shù)據(jù)庫刪除表空間后磁盤空間不釋放的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
Oracle數(shù)據(jù)庫遷移所有文件到新掛載磁盤路徑
根據(jù)實際須要,有時安裝了oracle以后須要擴展磁盤空間時,每每是新增一個單獨的文件路徑并掛載存儲,這時便須要總體遷移數(shù)據(jù)庫文件數(shù)據(jù)庫,本文就來介紹一下Oracle數(shù)據(jù)庫遷移所有文件到新掛載磁盤路徑2024-01-01

