WindowsプラットフォームでOracle 11gデータベースを使用しています。また、私のdbはarchivelogモードで、毎日RMANバックアップを取っています。次に、Rmanバックアップを毎日および毎週スケジュールする必要があります。私はdbms_scheduler
について読んで、Windowsタスクスケジューラを使用してこれをスケジュールしました。
今私の質問です:これをスケジュールするためのより良い方法はどれですか? dbms_scheduler
またはバッチスクリプトを使用しますか、それともOEMを使用する方法がありますか?
TL/DR
ほとんどのWindows Oracle Shopsは通常、Windowsスケジューラのルートを使用します。ただし、環境に最適なものを決定できるように、Oracle RMANバックアップをスケジュールできる主な3つの方法をリストします。
1) docs からすべてを読み取ることができるOracle Enterprise Manager(Enterprise => Jobを使用)。
利点
すべてのバックアップ管理を一元化された場所に保管します。バックアップを管理するOracleデータベースが多数ある場合、これはかなり大きな問題になる可能性があります。
短所
OEMとすべてのバックアップの間に依存関係を作成します。 OEMがダウンした場合、バックアップはどのデータベースに対しても実行されません。 OEMデータベースにリカバリカタログを保持している場合、これはそれほど大きな問題ではない可能性があります。これが当てはまる場合、依存関係はすでに存在しているためです(フェールオーバーで制御ファイルを使用してバックアップを実行する場合を除き、バックアップスクリプトはリカバリカタログと通信できません)。
2)DBMS_SCHEDULER
利点
外部依存関係なし(バックアップスクリプトがローカルである場合)。レポート用の実行の自動ロギング。
短所
Oracleからデスクトップ実行可能ファイルを実行することは、少し注意が必要です。 11gで非推奨になったOracleJobSchedulerサービスを開始するか、dbms_scheduler資格情報を作成してから、それらの資格情報をスケジューラジョブに添付する必要があります。これはTim Hallが説明している here です。一元化されたメンテナンスまたはレポートはありません(同じマシンからスケジュールしない限り、そこで不要な依存関係を作成する可能性があります)。
3)Windowsスケジューラ
利点
セットアップとメンテナンスが簡単。
短所
一元化されたメンテナンスまたはレポートはありません(同じマシンからスケジュールしない限り、そこで不要な依存関係を作成する可能性があります)。
個人的には、Windowsスケジューラを使用してスケジュールします。バックアップファイルを別のサーバーにコピーする場合は、robocopyを取得することをお勧めします。 DOSからメールを送信できるメールクライアントがあると便利です。しかし、それ以外の場合は、.BATファイルまたはPowershellファイルを書き込むだけです。バックアップログを作成し、そのログでエラーをチェックするプロセスが必要です。その後、エラーが発生したときにメールを送信できます。どこかですでにオンラインで書かれたものがあるはずです。
dbms_schedulerは、この種の問題に取り組むための最良の方法です。