DB2 5 min read

Db2「SQL0668N 操作は許可されません」を理由コードで切り分ける ― LOAD後・ALTER後に表が触れないとき

一括ロードや ALTER TABLE のあと、その表に触ろうとすると次のエラーで弾かれることがあります。SELECT すら通らないことがあります。

SQL0668N  Operation not allowed for reason code "3" on table "MYSCHEMA.SALES".  SQLSTATE=57007

SQL0668N は表が壊れたのではなく、一時的に制限状態に入っているだけです。ただし理由コードごとに抜け方がまったく違います。「ログ保留だから REORG」と決め打ちすると、実体が LOAD の失敗だった場合は一生抜けられません。この記事では理由コードから正しい対処へ一直線で進むための逆引きをまとめます。

まず見る(結論)

メッセージの理由コードを読みます。これで表の状態が一意に決まります。裏を取りたいときは SYSCAT.TABLES の3列を見ます。

SELECT VARCHAR(TABNAME,20) AS TAB,
       STATUS,                       -- N=通常 / C=check pending / X=inoperative
       ACCESS_MODE,                  -- F=全アクセス可 / N=不可 / R=読取のみ
       SUBSTR(CONST_CHECKED,1,8) AS CONST_CHECKED
  FROM SYSCAT.TABLES
 WHERE TABSCHEMA = 'MYSCHEMA' AND TYPE = 'T';

制限のない表は STATUS='N' / ACCESS_MODE='F' / CONST_CHECKED が全て Y です。LOAD 絡みが疑わしいときは LOAD QUERY が確実です。

db2 "LOAD QUERY TABLE MYSCHEMA.SALES"

Load pending / Load in progress / Normal のどれかが返ります。

症状 → 原因 → 対処(逆引き)

理由コード 状態 / 起きるとき 抜け方
3 Load Pending。LOAD が途中で失敗して中断した LOAD ... RESTART で続きから、または TERMINATE で破棄
1 Set Integrity Pending。読み書きとも不可 SET INTEGRITY FOR ... IMMEDIATE CHECKED
4 Set Integrity Pending だが読取のみ可 同上
7 Reorg Pending。REORG推奨の ALTER を重ねた オフラインの REORG TABLEINPLACE では抜けない)
8 Alter Pending。同一UOW内の ALTER 直後にアクセスした COMMIT するだけ

理由コード3は REORG でも SET INTEGRITY でも抜けられません。LOAD の後始末が必要です。逆に理由コード1・4に REORG を打っても解決しません。

いちばん多いパターン:LOAD失敗の放置

夜間のロードが失敗して中断し、リトライされずに放置される。翌朝、その表を参照する後続バッチが軒並み SQL0668N で止まる、という流れです。LOAD は失敗しても表を掴んだままになります。ロードジョブには「失敗時に LOAD QUERY で状態を確認し、RESTARTTERMINATE で後始末する」手順をセットで組み込んでください。

SET INTEGRITY を流すときは順序にも注意します。親表を通しても、依存するMQTや従属表が保留のまま残ることがあります。保留中の表は SYSCAT.TABLESSTATUS='C' で一覧できるので、親から子の順に流します。

それでも切り分からないとき(実機ログつきの詳解)

理由コード別の抜け方、例外表を使った SET INTEGRITY の通し方、実機での状態確認ログまで含めた詳しい解説は、Zennのフル記事にまとめています。

▶ Zennで続きを読む(無料)

Db2の「SQL0668N 操作は許可されません」を理由コードで即断する ― LOAD後・ALTER後に表が読めない/書けないとき


実機ログつきの詳解を読む →

関連: Db2 IMPORT vs INGESTTRUNCATE 時の参照制約に注意

LOAD失敗の後始末や制限状態からの復帰のような、マニュアルを引いても手順の順序までは分からない場面を、本書 第12章「現場の難題・解決集」に実例で集めました。

現場で引ける Db2 の教科書

現場で引ける!Db2実践エンジニア・バイブル

Db2はRDBMS市場でシェア数%。情報が少なく、頼れるのは膨大な公式マニュアルだけ―― そんな現状を変えたくて、「なぜこの値にするのか」「この障害のとき次に何を見るのか」という、マニュアルに載っていない現場の文脈を1冊にまとめました。書いてあることはすべて実際の現場で経験したことです。

アーキテクチャ/構成パラメーター選定/セキュリティ/バックアップ・リカバリ/HADR/pureScale/日常点検の自動化/メモリ・ロック競合/SQLチューニング/RUNSTATS・REORG/MON_GET監視/現場の難題集 ―― 全12章+運用シェルスクリプト集

Zennで読む(¥2,000)→