0

isqlを使用してSybaseデータベースサーバーでいくつかのsqlステートメントを実行するシェルスクリプトはほとんどありません。ログにいくつかのLogSuspendメッセージが表示されますが、問題はシェルスクリプトが正常に終了することです。

データベースMAIN_DBのトランザクションログがほぼいっぱいです。ログに空きができるまで、トランザクションは一時停止されています。

これらのログ一時停止メッセージを傍受し、正しいエラーを報告する必要があります。どうすればよいですか?ここでの進め方がわかりません。それが発生した場合、それをクリアする方法はなく、データベース管理者はしばらくしてからspidを強制終了する必要がありますが、スクリプトはすでに正常に終了しています。そのため、データ転送は実際には行われず、中止されました。これは私が処理する必要があるシナリオです。

Log Suspendをインターセプトし、少なくとも特定の時間待機する方法を教えてください。

4

2 に答える 2

2

2つの問題があります。1つは、スクリプトがエラーを正しく検出しないことです。次に、トランザクションログが頻繁にいっぱいになります。

まず、スクリプトに標準出力が必要であり、エラー出力はログファイルに送られます。使用する>場合はファイル記述子1を使用します。エラー出力をキャプチャする場合2>はファイル記述子2に使用する必要があります。したがって、コマンドは次のようになります。

isql > error.log 2> error.log

まだこれを使用する方が良い

isql 2>&1 > error.log

前は、ファイル記述子2をファイル記述子1に移動させると言っています。

エラーを検出するには、すべてのエラーの前にある「メッセージ」を探します。

次に、トランザクションログスペースを解決するには、独自のデバイスにあるはずのログサイズを増やす必要があります。次に、完了したトランザクションをディスクファイルに自動的にダンプするためのしきい値を設定する必要があります。次のコマンドを調べる必要があります。

sp_helpthreshold
sp_addthreshold
sp_thresholdaction

おやすみなさい、おやすみなさい。

于 2013-01-30T03:21:21.343 に答える
0

データベース内のプロセスを確認し、 「LOGSUSPEND」のプロセスステータスを探すことができます。ユーザー名の指定はオプションです。

sp_who {USERNAME}

于 2013-01-29T14:22:39.443 に答える