ねら~ITエンジニア雑記

やきうのお兄ちゃんが綴るOracle Databaseメインのブログ

更新中テーブルの索引を REBUILD すると ORA-54エラーが発生

更新中テーブルの索引を他セッションから REBUILD すると、ORA-54エラー(リソースビジー)が発生する。

--セッションA
SQL> DELETE FROM TEST_TABLE WHERE ROWNUM <= 10;

10 rows deleted.
--セッションB
SQL> ALTER INDEX TEST_TABLE_PK REBUILD;
ALTER INDEX TEST_TABLE_PK REBUILD
            *
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired


WAITオプションを付ければ回避できないかな?と思ったけど、構文図にも無いし駄目みたい。

SQL> ALTER INDEX TEST_TABLE_PK REBUILD WAIT;
ALTER INDEX TEST_TABLE_PK REBUILD WAIT
                                *
ERROR at line 1:
ORA-02243: invalid ALTER INDEX or ALTER MATERIALIZED VIEW option


Oracle Database SQL言語リファレンス
11gリリース2(11.2)

B56299-02
ALTER IDNEX
http://download.oracle.com/docs/cd/E16338_01/server.112/b56299/statements_1010.htm#i2050158