Oracleデータベース管理者の皆さん、こんにちは。
過去数か月の間に、rmanのバックアップを監視し、バックアップが必要なファイルがあるかどうかを確認することをお勧めします。
RMAN> report need backup;
--> Report ERROR if any records show up.
さらに、次のコマンドを監視したいと思います。
RMAN> report unrecoverable;
--> Report ERROR if any records show up.
RMANの出力を解析したくありません。 これが私の質問です:SQLやPL/SQLを使用してこれら2つのコマンドを監視する方法を知っている人はいますか?
RMANはSQLとPL/SQLを使用して結果を取得するだけですが、sqltraceを使用すると、暗号化されたコードを使用した文書化されていないpl/sql関数が表示されます。
A)Oracleは、SQLを手動で実行することはサポートされていないとSRに返信しました。これは完全に正しいわけではありませんが、私はそのようなことを期待していました。
B)2番目のコマンドreport unrecoverable
はSQLで照会できます。結果は、RMANよりもさらに正確です。
select file#, unrecoverable_change#, unrecoverable_time from v$datafile;
RMANのreport unrecoveryble
は、回復不能なコンテンツを含むファイルのみを報告します後最新のバックアップ。このSQLは、一般に回復不能なものを報告します。通常、データベースをのみ最新のバックアップ後に回復可能にしようとはしません。
C)両方のコマンドについて、「スクリーンリーダー」を作成しました。コードスニペットは次のとおりです。
## Execute RMAN command report need backup
RMANOUT=$(rman target / << EOF 2>&1
report need backup;
exit
EOF
)
## Execute RMAN command report unrecoverable
RMANOUT=$(rman target / << EOF 2>&1
report unrecoverable;
exit
EOF
)
# Filter file list
DATAFILES=$(echo -e "${RMANOUT}" | sed '1,/---/d' | sed '/Recovery Manager complete./d' | sed 's/RMAN>//g' | sed '/^[[:space:]]/d')
## Parse all files
while IFS=$'\n' read -a ROW
do
# Convert lines into array (separator " ")
IFS=' ' read -a VAL <<< ${ROW[0]}
# No files reported
if [ "${VAL}" == "" ]; then break; fi
# Do whatever you like! In my case generate XMLdoc
XMLDOC="${XMLDOC}<ROW><DBID>${DBID}</DBID><INST_ID>${INST_ID}</INST_ID><FILE_ID>${VAL[0]}</FILE_ID><BACKUP_CNT>${VAL[1]}</BACKUP_CNT><FILE_NAME>${VAL[2]}</FILE_NAME></ROW>"
done < <(echo -e "${DATAFILES}")