問題ID:19934について

  • フォーラムは新サイトへ移行しました。
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2020-7-10 14:35
Kazumi94  半人前   投稿数: 6
SELECT文にFOR UPDATE句をつけた場合、SELECT文を実行した場合にも排他ロックのため「ORA-0054
: リソース・ビジー。NOWAITが指定されているか、タイムアウトしました」のエラーメッセージが表示され他のユーザーは該当の行を検索できないが正しいと動作となると思うのですが、問題の理解が違いますでしょうか。
実際にOracleで実行した際にエラーとなっております。
ご確認をお願いいたします。
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2020-7-10 19:08
quensan  長老   投稿数: 119
SELECT〜FOR UPDATEかけた行を別ユーザからSELECTすることはできました。

pingtユーザ:
SQL> select * from tab1 where a=1 for update;

A
----------
1

別セッション:
SQL> select * from pingt.tab1 where a=1;

A
----------
1

ORA-0054は別セッションでSELECT〜FOR UPDATE NOWAITを実行するか、DDL_LOCK_TIMEOUTパラメータ(デフォルトは0)の待機時間が切れた時と思うのですが、エラーとなったのはどのように実行されたのでしょうか。
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2020-7-13 14:12
Kazumi94  半人前   投稿数: 6
ご返信ありがとうございます。
実行した手順を再度見直したところFOR UPDATE NOWAITで実施しておりました。
お騒がせして申しわけございません。
ご教授ありがとうございました。

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.