web-dev-qa-db-ja.com

データベースが重複すると、孤立したアーカイブログファイルが残る

本番データベースを別のデータベースに複製しています。定期的にCLONEDBとしましょう。次のようなrman duplicate databaseスクリプトを使用しています。

run {
duplicate target database to CLONEDB
FROM ACTIVE DATABASE
PASSWORD FILE
SPFILE
SET ....
DB_FILE_NAME_CONVERT=....
LOGFILE
  GROUP 1 (
     ....
  ) SIZE 100M,
....
;
}

スクリプトを実行する前に、CLONEDBのアーカイブログrmanバックアップ(バックアップされたアーカイブログを削除します)とDROP DATABASE CLONEDBを実行しています。

duplicate databaseの実行中、rmanはソースデータベースからデータファイルとアーカイブログをコピーします。たとえば、そのようなファイルがコピーされたことがわかります。

input archived log thread=1 sequence=666 ...
output file name=+DYSK/archivelog/2015_01_16/thread_1_seq_666
channel ORA_DISK_1: archived log copy complete, elapsed time: 00:00:01

次に、rmanは(set until scn 666666; recover clone database delete archivelog;を介して)データベースを回復するため、上記のアーカイブログがデータベースに適用されます。

starting media recovery
archived log for thread 1 with sequence 666 is already on disk as file +DYSK/archivelog/2015_01_16/thread_1_seq_666
archived log file name=+DYSK/archivelog/2015_01_16/thread_1_seq_666 thread=1 sequence=666
media recovery complete, elapsed time: 00:00:02
Finished recover at 2015.01.16 16:21:57
Oracle instance started

すべてが正常で、データベースが起動し、ユーザーは満足しています。ただし、archivelogファイル(この例ではthread_1_seq_666)はディスクに残ります。また、rmanは複製プロセス後にデータベースのインカネーションを変更するため、このファイルは前のインカネーションに由来するため、バックアッププロセス中に削除されることはありません。

時々私はハウスキーピングを行い、孤立した古いアーカイブログをディスクから直接削除する必要があります。もちろん、複製スクリプトを使用して、自動的に実行したいと思います。古いファイルに対してrmからasmcmdコマンドを追加することもできますが、duplicate databaseの実行中にrmanにそれを実行させる方法があるかもしれません

4
Grych

duplicate database ... from active databaseは、既存のバックアップなしで機能するように設計されています。 Oracleがクローンプロセス中に使用されたアーカイブログをクリーンアップすると期待します。

したがって、これは予期しない動作です。 Oracleでサービスリクエストを記録してみてください。

クローン処理後にアーカイブログをクリーンアップする必要があったかどうか思い出せません。まあ、私は何もチェックしなかったので、dbクローン後にアーカイブログを削除したことはなかったと言えます。クローンを作成することはほとんどありませんfrom active database。私は通常、プライマリデータベースに接続せずにバックアップ場所からクローンを作成します。私はどういうわけかそれを好みます。

回避策として、後でスクリプトを使用してそれらを削除します。

4
ora-600

Control_file_record_keep_timeの値を増やしてみてください。データベースを削除する前に、アーカイブログとバックアップを強制的に削除してみることもできます。

SQL> show parameter control_file_record_keep_time

NAME                             TYPE      VALUE
-------------------------------- --------- ------
control_file_record_keep_time    integer   7
0
Gandolf989