バックアップからデータベースを復元するためのスクリプトがあります。私のスクリプトはまず、すべてのアプリケーションサーバーインスタンスを停止し、すべてのデータベースを停止してから、バックアップからリストアします。下記の擬似コードです:マルチユーザーモードのエラーでバックアップの復元に失敗する
foreach appserver:
asbman -name (appserver) -stop
foreach database:
dbman -name (database) -stop
proutil database.db -C enablelargefiles
echo y | prorest database.db backup.bak -verbose
私のスクリプトがprorestコマンドに達すると、それは次のエラー出力:〜60秒間待ってから
** The database D:\Directory\Wrk\db\database is in use in multi-user mode. (276)
を、再びprorestコマンドを実行すると、期待通りに実行されますデータベースが正しく復元されます。私の推測では、データベースが停止した後もまだ実行中のプロセスがデータベースに関連付けられているということです。私はこの問題に対する解決策を見つけるために、スリープ再試行などの方法を使用して、データベースがいつ復元可能であるかを判断する必要がないようにしたいと考えています。この問題に対する解決策はありますか、またはこの方法でデータベースを復元するためのより良い方法がありますか?
あなたはappserversと、データベースを停止した後で、すべて一時停止されていますか?彼らは瞬時にシャットダウンしません。 sleep-retryメソッドを実行する必要があります。 – TheDrooper
@TheDrooper私は現在、appservers /データベースを停止した後で一時停止していません。瞬時にシャットダウンしない理由を知っていますか?または、少なくともdbmanが停止した理由は? – PrestonM
* manコマンドは、アクションが実行される要求をキューに入れ、管理サーバーが要求を受け取ったことを報告します。あなたが望んでいないと言っていることを知っていますが、処理を続行しても問題ないことを確認するには、ループとステータスチェックを追加する必要があります。 –