- - PR -
ORA-00054(リソースビジー)が出力された場合の処理
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-11-26 13:03
脳味噌筋肉です。
FAQかもしれませんがご教示ください。 SELECT文(NOWAIT付)を発行し、ORA-00054がcatchできた場合、みなさんはどのような 処理をされているのでしょう? とりあえず「リソースビジー、少々おまちください」の旨のメッセージを出しているの ですが、強制的に解除できたりとかできないものでしょうか? よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2004-11-26 13:38
実行した処理が戻って来ないので...その間に軽く投稿。。
NOWAIT指定をしているのだからこちらの要求処理は破棄。 待つかどうかは、オペレータに任せる。 バッチ処理ならばNOWAIT指定は変。 ただし、リトライ回数や指定待ち時間経過を超える事による 例外処理を設けるのであればNOWAIT指定は必要。
1.ロック対象テーブルのオブジェクトIDを取得。 2.オブジェクトIDをキーとしてロック情報からセッションIDを取得。 3.セッションIDをキーとしてセッション情報からSID,SERIAL#を取得。 3.『変われシステム!殺せセッション!』命令で指定セッションを切断。 4.しばし、正座してまつ (最近Verは知らないがVer7や8の時代はそれから数十分待つ事もあった。) 5.別の所で悲鳴があがったら、悲鳴先にいってあやまる。 6.無事ロック解除 (で、いける筈.... ![]() 参考コマンド: ・USER_OBJECTS ・V$LOCKED_OBJECT or V$LOCK ・V$SESSION ・alter system kill session "xxx,xxxx";
って感じで如何です? [追記] その前に自分に仕様の決定権があるのか考えてから対応して下さい。 [ メッセージ編集済み 編集者: はにまる 編集日時 2004-11-26 13:57 ] | ||||||||||||
|
投稿日時: 2004-11-26 13:59
はにまるさん、ありがとうございます。
ありがたく参考にさせて頂きます。m()m [quote] 1.ロック対象テーブルのオブジェクトIDを取得。 2.オブジェクトIDをキーとしてロック情報からセッションIDを取得。 3.セッションIDをキーとしてセッション情報からSID,SERIAL#を取得。 3.『変われシステム!殺せセッション!』命令で指定セッションを切断。 4.しばし、正座してまつ (最近Verは知らないがVer7や8の時代はそれから数十分待つ事もあった。) 5.別の所で悲鳴があがったら、悲鳴先にいってあやまる。 6.無事ロック解除 (で、いける筈.... ![]() [/code] 結構手順を踏むものなのですね ![]() |
1