對於DEV以及UAT環境,有些時候,資料庫需要處于歸檔模式,但並不需要備份資料庫。因此,archive歸檔日誌不停的增長導致磁碟空間被大量耗用。對於這種情形,可以使用一個shell指令碼來定時自動清除這些歸檔日誌。本文給出了清除歸檔日誌的指令碼。
1、清除歸檔日誌shell指令碼
robin@SZDB:~/dba_scripts/custom/bin> more remove_arch_dump.sh#!/bin/bash# ------------------------------------------------------------+# FileName: remove_arch_dump.sh |# Desc: | # Remove old archived log and data pump file |# Usage: |# ./remove_arch_dump.sh |# |# Authror : Robinson |# Blog : http://blog.csdn.net/robinson_0612 |# ------------------------------------------------------------+filename=/etc/oratabcat $filename | while read LINEdo case $LINE in \#*) ;; #comment-line in oratab *) ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -` echo $ORACLE_SID # --------------------------------- # define archived log directory # --------------------------------- dir=/u02/database/$ORACLE_SID/archive/ echo $dir filelist=`ls -t $dir` echo $filelist # ---------------------------------------------------------- # start to remove archived log and keep last 2 archived log # ---------------------------------------------------------- count=0 for filename in $filelist do echo $filename count=$(($count+1)) if [ $count -gt 2 ]; then echo $count rm -vrf $dir$filename fi done ls -tr $dir # -------------------------------- # define data pump dump directory # -------------------------------- dir=/u02/database/$ORACLE_SID/BNR/dump/ echo $dir filelist=`ls -t $dir` echo $filelist # --------------------------------------------------------- # start to remove data pump file and keep last 5 dump file # --------------------------------------------------------- count=0 for filename in $filelist do echo $filename count=$(($count+1)) if [ $count -gt 5 ]; then echo $count rm -vrf $dir$filename fi done ls -tr $dir ;; esacdoneexit
2、指令碼說明
a、該指令碼通過一個外部迴圈來讀取oratab中定義的資料庫的SID來尋找對應資料庫的歸檔日誌路徑以及datapump dump路徑。
b、使用了一個for迴圈來清除歸檔日誌,且保留最後的2個歸檔記錄檔。
c、接下來的另一個for迴圈則用來清除當前SID下對應的dump(Oracle datapump)目錄下匯出的dump檔案。
d、同清除歸檔日誌一樣,設定了保留dump目錄最近的5個檔案。保留多少個最近的檔案(dump的5,或者歸檔日誌2)可以修改。
e、如果不需要清除dump路徑,可以將dump部分注釋掉。
f、根據需要將其部署到crontab。
更多參考
PL/SQL --> 遊標
PL/SQL --> 隱式遊標(SQL%FOUND)
批量SQL之 FORALL 語句
批量SQL之 BULK COLLECT 子句
PL/SQL 集合的初始化與賦值
PL/SQL 聯合數組與巢狀表格
PL/SQL 變長數組
PL/SQL --> PL/SQL記錄
SQL tuning 步驟
高效SQL語句必殺技
父遊標、子遊標及共用遊標
綁定變數及其優缺點
dbms_xplan之display_cursor函數的使用
dbms_xplan之display函數的使用
執行計畫中各欄位各模組描述
使用 EXPLAIN PLAN 擷取SQL語句執行計畫
Oracle ROWID
NULL 值與索引(一)
NULL 值與索引(二)
啟用 AUTOTRACE 功能
函數使得索引列失效
Oracle 綁定變數窺探
Oracle 自適應共用遊標
Oracle 資料表空間與資料檔案
Oracle 密碼檔案
Oracle 參數檔案
Oracle 聯機重做記錄檔(ONLINE LOG FILE)
Oracle 控制檔案(CONTROLFILE)
Oracle 歸檔日誌
Oracle 復原(ROLLBACK)和撤銷(UNDO)
Oracle 資料庫執行個體啟動關閉過程
Oracle 10g SGA 的自動化管理
Oracle 執行個體和Oracle資料庫(Oracle體繫結構)