DBA必備工具之Oracle環(huán)境中自動刪除歸檔日志
簡介
delete_archive 是一個用于自動化管理 Oracle 數(shù)據(jù)庫歸檔日志的 Go 語言腳本。
此腳本來源于之前有2個客戶的需求:
- 一是一次遷移幾百套數(shù)據(jù)庫,其中要用ADG來遷移,即不能影響到客戶當前歸檔刪除策略或者是原來非歸檔數(shù)據(jù)庫中轉為歸檔模式后磁盤空間的容量,又不能因為過度刪除歸檔日志影響到我們遷移的同步,所以當時就寫了shell版本的一鍵自動刪除歸檔的腳本。
- 而是一個客戶歸檔日志采用了自動刪除策略,但是在還原過程中發(fā)現(xiàn)歸檔日志缺失,最后分析原因是自動刪除策略將未備份的歸檔日志刪除了。
腳本的初衷就是盡可能保留舊的歸檔日志,同時也考慮到空間自定義規(guī)則。
獲取腳本
公眾號回復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(電話/微信同號)
獲取腳本
公眾號回復delete_archive即可,目前腳本只編譯了Linux版本。
注意事項
- 需以有權限的 Oracle 用戶運行,確保能訪問數(shù)據(jù)庫和相關歸檔目錄。
- 需在 Oracle 數(shù)據(jù)庫服務器上運行,且環(huán)境變量
ORACLE_SID可被正確設置。 - 腳本會自動檢測并切換
ORACLE_SID,無需手動干預。 - 強制刪除模式下,歸檔日志即使未備份也會被刪除,請謹慎設置閾值。
- 如遇腳本報錯或異常退出,請檢查日志文件獲取詳細信息。
功能說明
- 自動檢測 Oracle 實例歸檔日志的存儲使用率。
- 支持文件系統(tǒng)和 ASM 磁盤組歸檔路徑的檢測與處理。
- 支持 FRA(閃回恢復區(qū))和手動歸檔管理模式。
- 根據(jù)設定的閾值自動刪除最老的歸檔日志,優(yōu)先刪除已備份的歸檔。
- 支持強制刪除(無備份也可刪除),防止磁盤空間耗盡。
- 支持多實例批量處理。
- 詳細日志輸出,便于問題追蹤。
總結
到此這篇關于DBA必備工具之Oracle環(huán)境中自動刪除歸檔日志的文章就介紹到這了,更多相關Oracle自動刪除歸檔日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Oracle中rank,over partition函數(shù)的使用方法
本文主要介紹Oracle中rank,over partition函數(shù)的用法,希望對大家有所幫助。2016-05-05
Oracle數(shù)據(jù)庫ORA 54013錯誤的解決辦法
ORA 54013 不允許對虛擬列執(zhí)行INSERT 操作,這是Oracle 11 的新特性。接下來通過本文給大家介紹oracle數(shù)據(jù)庫ORA 54013錯誤的解決辦法,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧2016-10-10
Oracle RAC環(huán)境下的阻塞(blocking blocked)介紹和實例演示
這篇文章主要介紹了Oracle RAC環(huán)境下的阻塞(blocking blocked)介紹和實例演示本文提供了2個查詢腳本,并給出實例演示那些session為阻塞者,哪些為被阻塞者,需要的朋友可以參考下2014-09-09
oracle關聯(lián)查詢報invalid number錯誤的解決方法
這篇文章主要介紹了oracle關聯(lián)查詢報invalid number錯誤的解決方法,文中通過代碼示例和圖文結合的方式講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-09-09

