LOAD QUERY コマンド

LOAD QUERY コマンドは、処理中にロード操作の状況を調べ、表の状態を返します。 ロードが行われていない場合は、表の状態だけが戻されます。

このコマンドを正常に呼び出すためには、 同じデータベースへの接続と、別の CLP セッションも必要になります。 このコマンドは、ローカル・ユーザーでもリモート・ユーザーでも使用できます。

許可

なし

必要な接続

データベース

コマンド構文

Read syntax diagramSkip visual syntax diagramLOAD QUERYTABLEtable-nameTOlocal-message-fileNOSUMMARYSUMMARYONLYSHOWDELTA

コマンド・パラメーター

TABLE table-name
データが現在ロード中の表の名前を指定します。 非修飾の表名を指定すると、その表は CURRENT SCHEMA で修飾されます。
注: パーティション・データベース環境では、結果は現行パーティションからのみ戻されます。 対象の表が定義されていないパーティションに関する結果は返されません。
TO local-message-file
ロード操作中に生じ得る警告およびエラー・メッセージの宛先を指定します。 このファイルは、 LOAD コマンドに指定された message-file にすることはできません。 ファイルが既に存在する場合、 ロード・ユーティリティーが生成するメッセージはすべてそのファイルに追加されます。
NOSUMMARY
ロード・サマリー情報 (読み取られた行、スキップされた行、 ロードされた行、リジェクトされた行、削除された行、コミットされた行、 警告の数) のレポートを生成しないよう指定します。
SUMMARYONLY
ロード・サマリー情報のレポートだけを生成するよう指定します。
SHOWDELTA
新しい情報 ( LOAD QUERY コマンドの最後の呼び出し以降に発生したロード・イベントに関する情報) のみを報告することを指定します。

大量のデータを BILLYBOB データベース内の STAFF 表にロードしている場合、 ロード操作の状況をチェックすることが必要になるかもしれません。 ユーザーは次のように指定することができます。
db2 connect to billybob
db2 load query table staff to /u/mydir/staff.tempmsg
出力ファイル/u/mydir/staff.tempmsgは、以下の出力のようになります。
SQL3501W  The table space(s) in which the table resides will not be placed in 
backup pending state since forward recovery is disabled for the database.

SQL3109N  The utility is beginning to load data from file 
"/u/mydir/data/staffbig.del"

SQL3500W  The utility is beginning the "LOAD" phase at time "03-21-2002 
11:31:16.597045".

SQL3519W  Begin Load Consistency Point. Input record count = "0".

SQL3520W  Load Consistency Point was successful.

SQL3519W  Begin Load Consistency Point. Input record count = "104416".

SQL3520W  Load Consistency Point was successful.

SQL3519W  Begin Load Consistency Point. Input record count = "205757".

SQL3520W  Load Consistency Point was successful.

SQL3519W  Begin Load Consistency Point. Input record count = "307098".

SQL3520W  Load Consistency Point was successful.

SQL3519W  Begin Load Consistency Point. Input record count = "408439".

SQL3520W  Load Consistency Point was successful.

SQL3532I  The Load utility is currently in the "LOAD" phase.


Number of rows read         = 453376
Number of rows skipped      = 0
Number of rows loaded       = 453376
Number of rows rejected     = 0
Number of rows deleted      = 0
Number of rows committed    = 408439
Number of warnings          = 0

Tablestate:
  Load in Progress

使用上の注意

ロード・ユーティリティーは、ロックに加えて、表状態を使用して、 表へのアクセスを制御します。 LOAD QUERY コマンドを使用すると、表の状態を判別できます。 LOAD QUERY は、現在ロードされていない表で使用できます。 パーティション表の場合、報告される状態は、対応する可視のデータ・パーティションの状態のうち、最も限定的なものです。 例えば、ある 1 つのデータ・パーティションが Read Access Only 状態にあり、他のすべてのデータ・パーティションは Normal 状態にある場合、ロード照会操作からは Read Access Only 状態が戻されます。 ロード操作によって、データ・パーティションのサブセットが、表の残りとは異なる状態のままになることはありません。 LOAD QUERY で記述される表の状態は次のとおりです。
Normal
表が通常以外の状態 (異常な状態) にない場合はこの状態になります。 通常状態は、表が作成された後に置かれる最初の状態です。
Set Integrity Pending
表には、未確認の制約があります。 表の SET INTEGRITY ペンディング状態を解除するには、SET INTEGRITY ステートメントを使用してください。 ロード・ユーティリティーは、制約のある表でロード操作を開始する際に、表を SET INTEGRITY ペンディング (Set Integrity Pending) 状態にします。
Load in Progress
これは、一時的な状態であり、ロード操作時のみ有効です。 ロード操作が失敗または中断した場合に表をロード中状態から解除する方法については、『関連リンク』のセクションにある、ロード操作後のペンディング状態に関するセクションを参照してください。 表スペースのロード中状態も参照してください。
Load Pending
この表ではロード操作がアクティブでしたが、データがコミットできるようになる前に打ち切られました。 表をこの状態から解除するには、LOAD TERMINATELOAD RESTART、または LOAD REPLACE コマンドを発行してください。
Read Access Only
ALLOW READ ACCESS オプションが指定されている場合、ロード操作中に表はこの状態になります。 「読み取りアクセスのみ」は一時的な状態です。この状態になっていると、他のアプリケーションやユーティリティーは、ロード操作より前に存在していたデータに読み取りアクセスすることができます。
Reorg Pending
REORG コマンドの推奨対象となる ALTER TABLE ステートメントが、表に対して実行されました。 この表をもう一度アクセス可能にするには、まずクラシック REORG を実行する必要があります。
Unavailable
表は使用できません。 表のドロップまたはバックアップからのリストアのどちらかしか行えません。 リカバリー不能のロード操作からロールフォワードを実行すると、表は使用できない状態になります。
Not Load Restartable
表は部分的にロードされた状態になっているので、ロードの再始動操作は行えません。 さらにこの表はロード・ペンディング状態にもなります。 LOAD TERMINATE または LOAD REPLACE コマンドを発行して、表をロード再始動不能状態から解除します。 表がロード再始動不可状態になるのは、正常に再始動も終了もしないで失敗に終わったロード操作の後でロールフォワード操作を実行した場合か、または表がロード進行中状態またはロード・ペンディング状態であった間にとられたオンライン・バックアップからリストア操作が実行された場合です。 どちらの場合も、ロード再始動操作に必要な情報は信頼性に欠けるため、ロード再始動不可状態では、ロードの再始動操作はできません。
Unknown
LOAD QUERY コマンドは、表の状態を判別できません。

現在、 IBM® Db2® データベース製品でサポートされている表または表スペースの状態は 25 以上です。 それらの状態は、特定の環境下でのデータへのアクセスを制御したり、必要に応じて特定のユーザー・アクションを引き出して、データベースの整合性を保護するために使用されます。 そのほとんどは、Db2 データベース・ユーティリティーのいずれか (例えばロード・ユーティリティーやバックアップおよびリストア・ユーティリティー) の操作に関連したイベントの結果として発生します。

ロード操作の前に従属表スペースの静止状態 (静止とは永続的なロックのこと) は解除されますが、表スペースのロード中状態のときは、ロード操作時に従属表のバックアップを行うことができません。 「ロード進行中」表スペースの状態は、「ロード進行中」表の状態とは異なります。すべてのロード操作は「ロード進行中」表の状態を使用しますが、 COPY NO オプションを指定した (リカバリー可能データベースに対する) ロード操作も「ロード進行中」表スペースの状態を使用します。

次の表では、サポートされているそれぞれの表の状態について説明しています。 また、実施例も示し、データベースの管理中に遭遇する可能性のある状態の解釈および対応の仕方を正確に示しています。 これらの例は、 AIX®上で実行されたコマンド・スクリプトから取られたものです。コピー、貼り付け、および実行は、自分で行うことができます。 UNIX 以外のシステムで Db2 データベース製品を実行している場合は、ご使用のシステムにとって正しい形式のパス名があることを確認してください。 例のほとんどは、Db2 データベース製品に付属する SAMPLE データベースの表に基づいています。 SAMPLE データベースの一部ではないシナリオを必要とする例も少数ながら存在しますが、開始点としては SAMPLE データベースへの接続を使用することができます。

表 1. サポートされる表の状態
State
ロード・ペンディング 大量のデータ(たとえば、20000以上のレコード)を含むロード入力ファイルstaffdata.delを指定して、ロード操作のターゲット表であるNEWSTAFFと呼ばれる新しい表のスペースを作成します。
connect to sample; 
create tablespace ts1 managed by database using (file '/home/melnyk/melnyk/NODE0000
/SQL00001/ts1c1' 256); 
create table newstaff like staff in ts1; 
load from staffdata.del of del insert into newstaff; 
load query table newstaff; 
load from staffdata.del of del terminate into newstaff; 
load query table newstaff; 
connect reset; 
LOAD QUERY コマンドによって戻される情報は、NEWSTAFF 表がロード・ペンディング状態にあることを示します。ロード終了操作後、表は通常状態になります。
ロード中 大量のデータ(たとえば、20000以上のレコード)を含むロード入力ファイルstaffdata.delがある場合:
connect to sample; 
create table newstaff like staff; 
load from staffdata.del of del insert into newstaff; 
ロード操作の実行中に、別のセッションから次のスクリプトを実行します。
connect to sample; 
load query table newstaff; 
connect reset; 
LOAD QUERY コマンドによって戻される情報は、NEWSTAFF 表がロード進行中状態であることを示します。
正常
connect to sample; 
create table newstaff like staff; 
load query table newstaff;
LOAD QUERY コマンドによって戻される情報は、NEWSTAFF 表が通常状態であることを示します。
ロード再始動不可 大量のデータ(たとえば、20000以上のレコード)を含むロード入力ファイルstaffdata.delがある場合:
update db cfg for sample using logarchmeth1 logretain; 
backup db sample; 
connect to sample; 
create tablespace ts1 managed by database using (file '/home/melnyk/melnyk/NODE0000
/SQL00001/ts1c1' 256); 
create table newstaff like staff in ts1; 
connect reset; 
backup db sample; 
このバックアップ・イメージのタイム・スタンプは 20040629205935 です。
connect to sample; 
load from staffdata.del of del insert into newstaff copy yes to /home/melnyk/backups; 
connect reset; 
restore db sample taken at 20040629205935; 
rollforward db sample to end of logs and stop; 
connect to sample; 
load query table newstaff; 
connect reset; 
LOAD QUERY コマンドによって戻される情報は、NEWSTAFF 表が「ロード再始動不可」および「ロード・ペンディング」状態であることを示します。
connect to sample; 
load from staffdata.del of del terminate into newstaff copy yes to /home/melnyk/backups; 
load query table newstaff; 
connect reset; 
LOAD QUERY コマンドによって戻される情報は、NEWSTAFF 表が現在「正常」状態にあることを示しています。
読み取りアクセスのみ 大量のデータ(たとえば、20000以上のレコード)を含むロード入力ファイルstaffdata.delがある場合:
connect to sample; 
export to st_data.del of del select * from staff; 
create table newstaff like staff; 
import from st_data.del of del insert into newstaff; 
load from staffdata.del of del insert into newstaff allow read access; 
ロード操作の実行中に、別のセッションから次のスクリプトを実行します。
connect to sample; 
load query table newstaff; 
select * from newstaff; 
connect reset;
LOAD QUERY コマンドによって戻される情報は、NEWSTAFF 表が読み取りアクセス専用状態およびロード進行中状態であることを示します。 照会は、STAFF 表のエクスポートされた内容のみを戻します。 これは、ロード操作の前に NEWSTAFF 表に存在していたデータです。
SET INTEGRITY ペンディング

内容を含む特定のロード入力ファイルstaff_data.del

11,"Melnyk",20,"Sales",10,70000,15000:

connect to sample; 
alter table staff add constraint max_salary check (100000 - salary > 0); 
load from staff_data.del of del insert into staff; 
load query table staff; 
LOAD QUERY コマンドによって戻される情報は、STAFF 表が SET INTEGRITY ペンディング状態であることを示します。
使用不可

内容を含む特定のロード入力ファイルstaff_data.del

11,"Melnyk",20,"Sales",10,70000,15000:

update db cfg for sample using logarchmeth1 logretain; 
backup db sample; 
このバックアップ・イメージのタイム・スタンプは 20040629182012 です。
connect to sample; 
load from staff_data.del of del insert into staff nonrecoverable;
connect reset; 
restore db sample taken at 20040629182012; 
rollforward db sample to end of logs and stop; 
connect to sample; 
load query table staff; 
connect reset; 
LOAD QUERY コマンドによって戻される情報は、STAFF 表が使用不可状態にあることを示します。

表の状態の追加情報については、『関連リンク』のセクションを参照してください。

ロード操作の進行状況は、 LIST UTILITIES コマンドを使用してモニターすることもできます。