Linkexpress 導入ガイド |
目次
索引
![]() ![]() |
第8章 データベースの環境設定(Linkexpressサーバ) | > 8.6 留意事項 |
DB連携機能を利用してOracleへ格納を行う場合は、以下の運用方法に関する留意点があります。また、環境設定時の注意事項(「8.4 Oracleの環境設定」)も参照してください。
文字型データ中にナル値が含まれている場合は、ナル値直前までのデータが格納されます。
ローダを使用した格納を行う場合、以下の点に注意してください。
従来型パス・ロードによる格納では、列として1000バイト以上の文字データが2つ以上存在する場合、以下のメッセージが出力されます。
ORA-01026 バインド・リストにサイズが2000を超える複数バッファが存在しています. |
以下に示す現象を回避するには、格納方法として動的SQLを採用するか、ローダに与える入力データを可変形式データとしてください。
PCサーバでデータ格納時に動作が停止し無応答になることがあります。この現象は、Oracleプロセス内のスレッドのWindowsスケジューリング優先順位が低い場合に発生することがあります。上記の現象を回避するには、この優先順位を高くしてください。レジストリの"\HKEY_LOCAL_MACHINE\SOFTWARE\Oracle"にある"ORACLE_PRIORITY"を以下のように設定します。
ORACLE_PRIORITY:REG_EXPAND_SZ:CLASS:normal;DEF:highest |
レジストリの設定については、Windowsのマニュアルを参照してください。
UNIXサーバでローダを使用して格納する場合、DBサービスグループ名およびOUTTABLE識別名にシェルスクリプトの特殊文字を使用しないでください。使用した場合、ローダが異常終了することがあります。
シェルの特殊文字を使用した場合、以下の現象が確認されています。
SQL*LOADER-503: ファイル: に対して拡張子を追加できません。ADDITIONAL INFORMATION: 7202 |
SQL*LOADER-502: 書き込み用にログ・ファイル:(ファイル名) をオープンできません。 |
パーティションを指定した格納では、以下の留意点があります。
パーティションの指定については、「運用ガイド」の「3.9.11.8 DSIオペランド(OUTTABLE定義文)」を参照してください。
DB連携機能ではローダ指定の初期創成、初期創成置換、または追加創成の場合、OracleのSQL*Loaderを使用します。
パーティション分割された表に対してのデータ格納でSQL*Loaderを使用し、DB動作環境定義のOUT_OF_RESOURCE_ERRORキーワードに"WARNING"または"NOP"を指定した場合、破棄されたレコードは作業ディレクトリ"$TEMP/$SVCNAME"配下にエラーレコードとしてデータ格納コマンドの終了まで蓄積されます。
そのため、エラーレコードが大量に存在する場合は、作業ディレクトリの物理的不足からSQL*Loaderが異常終了し、データ格納に失敗する事があります。
$TEMP : 作業ディレクトリ(/tmpまたはOUTTABLE定義文のTMPDIRオペランドの指定値)
$SVCNAME : DBサービスグループ名
格納先表にグローバルキーがある場合は、特定パーティションに対してダイレクト・パス方式を使用したSQL*Loaderでの格納を行う事はできません。DB動作環境定義のORACLE_LOAD_PATHキーワードには、必ず"CONVENTIONAL"を指定してください。
パーティションを指定した格納では、以下の留意点があります。
パーティションの指定については、「運用ガイド」の「3.9.11.8 DSIオペランド(OUTTABLE定義文)」を参照してください。
パーティションを指定してデータ格納を行う場合、DB連携機能では指定されたパーティション数分のSQL文を準備します。そのため、パーティション数が多い場合にはDB14012と共にOracleのメッセージORA-01000を出力して異常終了する事があります。
このエラーが発生する場合はOracleの初期化パラメタ"OPEN_CURSORS"に(格納するパーティション数+1)×4 以上の値を指定してください。指定方法についてはOracleのマニュアルを参照してください。
DB14012については、「メッセージ集」の「3.4 メッセージ詳細(DB連携機能)」−「3.4.4 DB14xxx〜」−「DB14012」を参照してください。
パーティションキーとプライマリキー等の一意性制約キーが異なる列に設定してある場合、DB連携機能ではパーティションキーを通常の列と同様に更新します。その結果、データによっては対象レコードが更新前後で格納されるパーティションが変更される事があり、更新処理が出来なくなるため、DB連携機能は表内の更新対象レコード一度削除し、格納できるパーティションへ再挿入を行います。
上記の処理が発生する可能性がある場合、データベースとNLS_LANG環境変数のキャラクタ・セットを統一してください。キャラクタ・セットが統一されていないと、表内のデータに欠損が発生するおそれがあります。
Solarisで動作するLinkexpressは、32ビットアプリケーションであるため、32ビットアプリケーションのライブラリを参照してください。
LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$LD_LIBRARY_PATH |
出力データのコード系と格納先データベースのキャラクタ・セットを対応づけた運用設計を行ってください。以下の運用をお勧めします。
Linkexpressが出力データのコード系とデータベースのキャラクタ・セットの対応が取れていない場合、以下の弊害が発生します。
なお、この場合の文字あふれによる異常終了は、Oracle内部のコード変換処理で発生するため、DB動作環境定義のキーワードCHARACTER_OVERFLOWでは回避できません。
データベースのキャラクタ・セットの指定にはCREATE DATABASEコマンドのCHARACTERSETパラメタを使用します。指定方法については、Oracleのマニュアルを参照してください。
Linkexpressが必要とする環境変数のサンプルを以下に示します。
--- < SAMPLE START> -------------------------------------------------- #!/bin/sh ORACLE_BASE=/ora920/app/oracle ; export ORACLE_BASE *1 ORACLE_HOME=$ORACLE_BASE/product/9.2.0 ; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH ; export LD_LIBRARY_PATH PATH=$PATH:$ORACLE_HOME/bin:/opt/FSUNlnkexp/bin ; export PATH ORACLE_SID=o920 ; export ORACLE_SID *2 ORACLE_TERM=vt100 ; export ORACLE_TERM ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data ; export ORA_NLS33 NLS_LANG=Japanese_Japan.JA16EUC ; export NLS_LANG *3 --- < SAMPLE END> -------------------------------------------------- |
[解説]
*1 インストールディレクトリ名:/ora920
*2 ORACLE_SID:o920
*3 データベースのキャラクタ・セット種:日本語EUC
OracleのNCHAR項目に格納を行う場合は、データベースを最初に作成するときに「各国語キャラクタ・セット」パラメータとして「UTF8」を指定してください。
目次
索引
![]() ![]() |