DB2/400での一般的エラー

エラー・メッセージの解釈

Oracle Data Integratorでのエラーは、通常、次のように表示されます。

ODBCドライバのエラー・メッセージ

java.sql.SQLException: [IBM][Client Access ODBC Driver][32 bits][DB2/400 SQL]Communication link failure.Comm RC=0xb
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
...

IBM JT/400ドライバのエラー・メッセージ

java.sql.SQLException: The application server rejected the connection.(Signon was canceled.)
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:336)
at com.ibm.as400.access.AS400JDBCConnection.setProperties(AS400JDBCConnection.java:1984)
...

HiT JDBC/400ドライバのエラー・メッセージ

java.sql.SQLException: Cannot open a socket on host: ha, port: 8471 (Exception: java.net.UnknownHostException: ha).
at hit.as400sql.d.<init>([DashoPro-V1.3-013000])
at hit.as400.As400Driver.newConnection([DashoPro-V1.3-013000])
...

java.sql.SQLExceptionというコードは、単にJDBCドライバ(またはJDBC/ODBCブリッジ)を通じて問合せがデータベースに発行され、エラーが戻されたことを示します。このエラーは、データベースまたはドライバのエラーであることが多く、その方向で解釈する必要があります。

太字で示されたテキストの部分のみを最初に検討する必要があります。このテキストをドライバまたはデータベースのドキュメントで検索してください。DB2/400に固有のエラー・コードが含まれる場合は、エラーをすぐに識別できます。

このようなエラーが実行ログで検出された場合、データベースに送信されたSQLコードを分析してエラーの原因を特定する必要があります。このコードは、エラーの発生したタスク「説明」タブに表示されます。

次に、DB2/400サーバーでよくあるエラーを、その主な原因とともに示します。

一般的なエラー

接続エラー

UnknownDriverException

JDBCドライバが不適切です。ドライバの名前をチェックしてください。

The application requester cannot establish the connection.(<name or IP address>)
Cannot open a socket on host: <name or IP address>, port: 8471 (Exception: java.net.UnknownHostException:<name or IP address>)

Oracle Data Integratorでデータベースに接続できません。マシン名またはIPアドレスが無効であるか、DB2/400サービスまたはAS/400のTCP/IPインタフェースが起動していません。
同じマシン名またはIPアドレスを使用してAS/400マシンにpingを試行し、システム管理者に依頼して適切なサービスが起動していることを確認してください。

Datasource not found or driver name not specified

JDBC URLに指定されたODBCデータソースが不適切です。

The application server rejected the connection.(Signon was canceled.)
Database login failed, please verify userid and password.
Communication Link Failure.Comm RC=8001 - CWBSY0001 - ...

使用しているユーザー・プロファイルが無効です。このエラーは、無効なユーザー名または不適切なパスワードを入力したときに発生します。

Communication Link Failure.

ODBC接続でエラーが発生しました。詳細は、クライアント・アクセスに関するドキュメントを参照してください。

インタフェースのエラー

SQL7008 &1 in &2 not valid for operation.The reason code is 3.

iSeries 400システムでは、ジャーナル化によるコミット制御を実装しています。コミット制御を利用するアプリケーションでは、使用するファイルをジャーナル化する必要があります。ほとんどのナレッジ・モジュールでは、ステージング領域で、およびターゲット・データストアへの書込み時に、コミット制御を使用します。AS/400のステージング領域としてコレクションを使用し、ターゲット表をジャーナル化することを強くお薦めします。ナレッジ・モジュールを変更することで、ナレッジ・モジュールでのコミット制御の使用を停止できます。

SQL5001 - Column qualifier or table &2 undefined.
SQL5016 - Object name &1 not valid for naming convention

JDBC接続またはODBCデータソースの構成で不適切なネーミング規則を使用しています。ODBC管理者に依頼して正しいネーミング規則(*SQLまたは*SYS)を使用するようデータソースを変更するか、JDBC URLの適切なオプションを使用して正しいネーミング規則を強制します(jdbc:as400://195.10.10.13;naming=systemなど)。物理スキーマローカル・オブジェクト・マスクでシステム・ネーミング規則を使用する場合、%SCHEMA.%OBJECTのかわりに%SCHEMA/%OBJECTを入力する必要があります。

現在のアプリケーションが*SYSを使用するよう特に構成されていないかぎり、常に*SQLを使用する必要があります。Oracle Data Integratorでは、デフォルトで*SQLネーミング規則が使用されます。

SQL0204 &1 in &2 type *&3 not found.

アクセスしようとしている表は存在しません。これは、コンテキスト選択または操作順序におけるエラーに関連する可能性があります(この表が、別のインタフェースによって作成される必要のある一時表の場合など)。

Hexadecimal characters appear in the target tables.Accentuated characters are incorrectly transferred.

iSeriesコンピュータでは、言語IDまたはCCSIDをファイル、表およびフィールド(列)に関連付けます。CCSID 65535は、ファイルまたはフィールドが言語非依存であることを示す汎用コードです(16進データなど)。したがって、ドライバによる変換は実行されません。ファイルのCCSIDを更新しない場合、ccsid=<ccsid code>およびconvert _ccsid_65535=yes|noというフラグに基づいて、JDBC URLで変換が強制される可能性があります。詳細は、ドライバのドキュメントを参照してください。

SQL0901 SQL system error

このエラーは、DB2/400システムの内部エラーです。

SQL0206 Column &1 not in specified tables.

マッピング、結合またはフィルタの指定エラーです。列名ではない文字列が列名として解釈されたか、列名のスペルが間違っています。

このエラーは、最近変更された構造を含むデータストアに関連するエラー表にアクセスする場合にも発生する可能性があります。エラー表に変更内容を反映させるか、エラー表を削除して次回実行時にOracle Data Integratorでエラー表を再作成する必要があります。