:回避ORA-00054列を変更するときにNOT NULL、私は重い使用されるテーブルの上に既存の列に「NULLでない」を変更する場合は、次のまたはその他のエラーメッセージを回避したいと思い
SQL Error: ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
00054. 00000 - "resource busy and acquire with NOWAIT specified or timeout expired"
*Cause: Interested resource is busy.
*Action: Retry if necessary or increase timeout.
のMy Oracleをバージョンは次のとおりです。Oracle Database 12c Enterprise Editionリリース12.1.0.2.0 - 64bit Production。次のように排他ロックで試しましたが、まだエラーが出ます。私は他のセッションでいくつかのDMLを行うことによって、重いテーブルをシミュレートしました。
セッション1
create table iei1731 (
col1 varchar2(1 char),
col2 number(1,0)
);
insert into iei1731 (col1, col2) values ('1', 0);
commit;
update iei1731 set col1 = col1 where col1 = '1';
セッション2
lock table iei1731 in exclusive mode;
セッション1
rollback; -- now session 2 gets the exclusive lock on the table
update iei1731 set col1 = col1 where col1 = '1';
セッション2
alter table iei1731 modify col2 not null; -- here I get the ORA-00054
セッション1(クリーンアップ)
rollback;
drop table iei1731;
すべてのエラーメッセージなしでnullではないにこの重い使用されるテーブルに列を設定するための任意の可能性が存在するのであれば、私の質問は?
を多分これはhttp://dba.stackexchange.comに、より良いフィット感ですか! –