Oracle自動清理歸檔日誌指令碼

2021-09-20 20:56:17 字數 1529 閱讀 7225

本文**

一、背景 

由於業務增長,頻繁的備份還原對於磁碟空間有了更大的空間需求,基本每週500g的磁碟,空間使用率都會達到85%以上,故編寫oracle清理指令碼結合crond自動清理oracle歸檔日誌。

二、工具介紹

rman(recovery manager)是一種用於備份(backup)、還原(restore)和恢復(recover)資料庫的 oracle 工具。rman只能用於oracle8或更高的版本中。它能夠備份整個資料庫或資料庫部件,如表空間、資料檔案、控制檔案、歸檔檔案以及spfile引數檔案。rman也允許您進行增量資料塊級別的備份,增量rman備份是時間和空間有效的,因為他們只備份自上次備份以來有變化的那些資料塊。而且,通過rman提供的介面,第三方的備份與恢復軟體如veritas將提供更強大的備份與恢復的管理功能。通過rman,也提供了其它更多功能,如資料庫的轉殖、採用rman建立備用資料庫、利用rman備份與移動裸裝置(raw)上的檔案等工作將變得更方便簡單。9i的rman通過增強的自動配置與管理功能,以及特有的塊級別的恢復,將使備份與恢復工作變得更加快捷與完美。

使用rman連線到資料庫時,預設使用sysdba角色登陸。

rman target /             #連線進rman

delete noprompt archivelog all completed before 'sysdate-7'; #刪除系統時間7天以前的歸檔日誌,不會刪除閃回區有效的歸檔日誌由於物理 #磁碟dbf檔案很多,如果進行物理刪除dbf檔案較麻煩,列出以下命令供物理刪除參考

<20) print$0}'` #刪除20號以前的日誌

如果手動在磁碟清理過日誌檔案,需要在rman內檢查,然後刪除過期的日誌

crosscheck archivelog all;            #檢查所有歸檔日誌

list expired archivelog all; #列出過期的歸檔日誌

delete noprompt expired archivelog all; #刪除過期的歸檔日誌

delete noprompt archivelog all; #清除所有的歸檔日誌

三、自清理指令碼

#!/bin/bash

oracle_env

() oracle_clean

() target /<'sysdate-7';

crosscheck archivelog all;

list expired archivelog all;

delete noprompt expired archivelog all;

exit;

eof}

main

() -gt 80 ];then

oracle_clean

fi} main

配合定時任務清理磁碟,此在指令碼內寫的判斷磁碟使用率大於80%進行清理,也可根據自己需求進行判斷,或每次都執行清理。

oracle歸檔日誌清理

rman清除方式會自動清除磁碟上的歸檔日誌檔案,同時會釋放控制檔案中對應的歸檔日誌的歸檔資訊。list expired archivelog all 列出所有失效的歸檔日誌 delete archivelog until sequence 16 刪除log sequence為16及16之前的所有歸檔...

自動清理歸檔日誌 Oracle重做日誌和日誌挖掘

重做日誌包含所有資料產生的歷史改變記錄。重做日誌檔案通常用於 v log從控制檔案中顯示日誌檔案的資訊。可參考官網資料 v log 日誌檔案的六種狀態unused,current,active,clearing,clearing current,inactive代表的意思分別如下所述 上圖就是ora...

mysql 清理歸檔日誌 oracle歸檔日誌清理

在開啟歸檔並沒有截斷日誌的情況下,歸檔日誌會越來越大,在此情況下,我們該如何去清理!兩種方法 1 配置rman自動管理archivelog。也可在rman中將資料備份到磁帶上,然後將過期的archivelog刪除 2 可以手工來處理,步驟如下 1 將 oracle下的相關archivelog日誌檔案...