- PR -

ORA-00054(リソースビジー)が出力された場合の処理

1
投稿者投稿内容
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-11-26 13:03
脳味噌筋肉です。

FAQかもしれませんがご教示ください。

SELECT文(NOWAIT付)を発行し、ORA-00054がcatchできた場合、みなさんはどのような
処理をされているのでしょう?

とりあえず「リソースビジー、少々おまちください」の旨のメッセージを出しているの
ですが、強制的に解除できたりとかできないものでしょうか?

よろしくお願いいたします。
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2004-11-26 13:38
実行した処理が戻って来ないので...その間に軽く投稿。。

引用:

脳味噌筋肉さんの書き込み (2004-11-26 13:03) より:
SELECT文(NOWAIT付)を発行し、ORA-00054がcatchできた場合、みなさんはどのような
処理をされているのでしょう?


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/08/31
投稿数: 103
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)