はじめに
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