読者です 読者をやめる 読者になる 読者になる

小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


ORA-12838: オブジェクトは、パラレルで変更された後は読取り/変更できません。

はじめに

SQLでテストデータを挿入したテーブルをSQL*Developperで参照しようとしたら、以下のエラーになってしまいました。

ORA-12838: オブジェクトは、パラレルで変更された後は読取り/変更できません。

原因
insert /*+ APPEND */ INTO table01 NOLOGGING (select * from hoge);

上記のような感じで、別のテーブルのデータをダイレクトパスインサートしたあとに、コミット処理が抜けていただけでした。

ダイレクトロードインサート処理の実行直後は、必ずトランザクションを完了させる(COMMITもしくはROLLBACK)必要があります。もし、続けて同じ表にSELECTを実行すると、「ORA-12838:オブジェクトは、パラレルで変更された後は読込み/変更できません。」というエラーが発生してしまいます
Oracle SQLチューニング講座(12):更新/挿入/削除のSQLを高速化する3つの技とは? (2/3) - @IT はてなブックマーク - Oracle SQLチューニング講座(12):更新/挿入/削除のSQLを高速化する3つの技とは? (2/3) - @IT