ヘッダーをスキップ
Oracle® SQL Developer IBM DB2からの移行のための追加情報
リリース3.0
B66846-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

4 オフライン・データ・ロード

SQL Developerでは、オフライン・データ・ロード機能を提供するためにIBM DB2エクスポート・ユーティリティとOracle SQL*Loaderユーティリティが使用されます。これは、大量の表データを移行する場合に役立ちます。IBM DB2エクスポート・ユーティリティを使用してIBM DB2データベースからデータを抽出し、サポートされているいずれかのファイル形式でファイルに保存します。抽出するデータは、SQL問合せを使用して指定します。SQL Developerは、オフラインでのデータ・ダンプおよび生成されたデータのロードを有効にするために必要なスクリプトを自動的に生成します。生成されたスクリプトは、LOBデータを含むすべての種類のデータのオフライン・データ・ロードをサポートします。

この章の内容は次のとおりです。

4.1 スクリプトのディレクトリ構造

すべてのオフライン・データ・エクスポート・スクリプトは、選択したターゲット・フォルダに格納されます。スクリプトを生成するには、「ツール」「移行」「スクリプト生成」「データ移動スクリプトの生成」の順にクリックします。

SQL Developerは、オフライン・データ・ロード・スクリプトを生成した日時を表すタイムスタンプをサブディレクトリ内に使用してディレクトリを作成します。たとえば、21-08-07_17-56-16というサブディレクトリは2007年9月21日午後5時56分にスクリプトを生成したことを示します。SQL Developerはバッチ・コマンド・ファイルunload_script.batまたはunload_script.shをこのサブディレクトリに作成します。このファイルには、IBM DB2ソース・ディレクトリからデータを抽出してデリミタ付きのASCIIファイルに格納するためのコマンドが含まれています。

timestampディレクトリにも、SQL*Loader制御ファイルと、Oracle Databaseにデータをロードするために使用するSQL*Loaderスクリプト(oracle_ctl.batまたはoracle_ctl.sh)が含まれています。制御ファイルはOracleフォルダに含まれています。

ディレクトリ構造およびその内容の概要を次の表に示します。

ディレクトリ 説明
DB2\ timestamp TIMESTAMPディレクトリには、ORACLEというサブディレクトリが含まれています。また、unload_script.batまたはunload_script.shというファイルも含まれています。このファイルには、IBM DB2データベースからデリミタ付きASCIIファイルにデータをエクスポートするために使用するコマンドが含まれています。エクスポートされたデータは、TIMESTAMPサブディレクトリに自動的に生成されます。

また、このディレクトリには、oracle_ctl.batまたはoracle_ctl.shというファイルも含まれています。このファイルには、unload_script.batまたはunload_script.shによって指定したOracle Databaseに生成されるデータファイルのロードに使用するSQL*Loaderコマンドが含まれています。

DB2\ timestamp\Oracle このディレクトリには、移動元の各表用のSQL*Loader制御ファイル(.ctl)が含まれています。データの移動時に発生したエラーはここにログ・ファイルとして保存されます。

4.2 IBM DB2データベースからのデータのアンロード

オフライン・データ・ロード・スクリプトを生成した後、それらを使用してIBM DB2データベースからデータをアンロードできます。IBM DB2データベースからデータをアンロードするには、EXPORT.BATファイルを実行する必要があります。データのアンロードの詳細は、4.2.1項「IBM DB2データベースからデータをアンロードする手順」を参照してください。

unload_script.batまたはunload_script.bat.shファイルのexportコマンドの形式は次のとおりです。

DB2バージョン9は、別々のファイルのLOBデータをサポートするため、大きいサイズのデータの移行により適しています。バージョン8で大きいLOBデータをサポートするには、unload_script.batまたはunload_script.shのoracle ctlファイル・コマンドとdb2コマンドを変更する必要があります。

次の表に、unload_script.batまたはunload_script.shファイルで使用されるコマンドの説明を示します。

パラメータ 説明
Db2 
このパラメータは、IBM DB2コマンドライン環境を起動します。
export to
このパラメータは、IBM DB2エクスポート・ユーティリティと呼ばれます。
DB2\TABLE_NAME.DAT
このパラメータは、IBM DB2表から抽出されたデータを格納するファイルの名前で、TABLE_NAMEは表の名前です。すべてのデータファイルがDB2ディレクトリに生成されます。これによって、必要なデータファイルをこのファイルで検索できます。
of del
このパラメータは、データをデリミタ付きASCII形式に挿入するようにIBM DB2エクスポート・ユーティリティに指示します。この形式では、列デリミタによって列データ、行デリミタによって行が区切られます。これがOracle SQL*Loaderユーティリティでサポートされているファイル形式です。
lobsinsepfiles
このパラメータは、表の行にLOBオブジェクトごとの個別のファイルを作成するか、すべての表データに単一のデリミタ付きファイルを使用するかを指定します。
nochardel
このパラメータは、文字ベースのデータを一重引用符で囲まないようにIBM DB2エクスポート・ユーティリティに指示します。
coldel#
このパラメータは、「#」(ハッシュまたはシャープ記号)文字を列デリミタとして使用するようにIBM DB2エクスポート・ユーティリティに指示します。
<select query>
このパラメータは、指定したスキーマに存在する指定した表からすべての列データをロードするようにIBM DB2エクスポート・ユーティリティに指示するSQLコマンドです。

表データは、<catalog>.<schema>.<table>.datという形式の名前のファイルにエクスポートされます。ファイルの形式は、data1#<COL_DEL> #data2#<COL_DEL>…<ROW_DEL>(COL_DELROW_DELは移行オフライン・プリファレンスの設定からのもの)です。

DB2データ・ダンプ・スクリプトを実行する前に、次の形式でコマンドを入力してログインする必要があります。

db2 connect to <catalog> user <user name> using <password>

その後、ログインした接続セッションを使用してスクリプトを実行できます。

4.2.1 IBM DB2データベースからデータをアンロードする手順

unload_script.batまたはunload_script.shファイルを使用してIBM DB2データベースからデータをアンロードするには、次の手順を実行する必要があります。

  1. Microsoft DOSウィンドウのコマンド・プロンプトで次のコマンドを使用して、IBM DB2のCommand Line Processor(CLP)ウィンドウをアクティブにします。

    db2cmd
    
  2. CLPウィンドウで次のコマンドを使用して必要なデータベースをアクティブにします。

    db2 acitvate database database_name
    
  3. CLPウィンドウで次のコマンドを使用してデータベースに接続します。

    db2 connect to database_name user user_name using password
    
  4. CLPウィンドウでコマンドを入力してunload_script.batまたはunload_script.shファイルを実行します。次に例を示します。

    unload_script.bat
    

    前述の例は、unload_script.batファイルに指定されている表のデータをアンロードします。

    IBM DB2エクスポート・ユーティリティは、oracle_ctl.batまたはoracle_ctl.shファイルによる後続の処理でのすべてのデータファイルをDB2ディレクトリに生成します。


    注意:

    IBM DB2エクスポート・ユーティリティを正常に実行するには、エクスポートする各表に対してSYSADMまたはDBADM認可レベル、あるいはCONTROLまたはSELECT権限が必要です。

4.3 Oracle Databaseへのデータのロード

データファイルの生成後、これらのファイルのデータをOracle Databaseにロードする必要があります。データをOracle Databaseにロードするには、oracle_ctl.batまたはoracle_ctl.shファイルを実行する必要があります。

表に対するoracle_ctl.batまたはoracle_ctl.shファイルのSQL*Loaderコマンドの形式は次のとおりです。

sqlldr %1/%2 control=Oracle\TABLE_NAME.ctl log=_TABLE_NAME.log

%1/%2は、コマンドライン引数として指定されたユーザー名/パスワードを表します。

次の表に、oracle_ctl.batまたはoracle_ctl.shファイルのSQL*Loaderユーティリティの実行時に使用される各コマンドとパラメータの説明を示します。

パラメータ 説明
sqlldr
コマンドのこのパラメータは、Oracle SQL*Loaderユーティリティを起動します。
%1/%2
このパラメータは、Oracle Databaseに接続するユーザーのユーザー名とパスワードです。

これらは、コマンド・ウィンドウからコマンドライン引数として渡されます。たとえば、oracle_ctl.bat “user” “password”などです。

control=DB2\TABLE_NAME.ctl
このパラメータは、データの移動時に使用するSQL*loader制御ファイルを指定します。制御ファイルの名前は表名と同じです。

制御ファイルには、ロードするデータに関するすべての詳細(日付、時刻またはタイムスタンプの形式、使用されている列デリミタ、LOB列の識別情報など)が含まれています。

log=TABLE_NAME.log
このパラメータは、SQL*loaderユーティリティによって生成されるログ・ファイルの名前を指定します。ログ・ファイルの名前は表名と同じです。

4.3.1 IBM DB2データベースからデータをアンロードする手順

データファイルのデータをOracle Databaseにロードするには、次のコマンドを入力して、データをロードするSQL_LOAD_SCRIPT.BATファイルを実行する必要があります。

  • Windows: oracle_ctl.bat

  • Linux: oracle_ctl.sh


注意:

oracle_ctl.batまたはoracle_ctl.shファイルはCLPウィンドウ内から実行する必要はありません。コマンド・プロンプトからファイルを実行できます。

4.3.1.1 SQL*Loader制御ファイル

表のSQL*Loader制御ファイルの形式は次のとおりです。

load data
infile 'SAMPLE.EMP_PHOTO.dat'
 "str '<EORD>\r\n'"
into table SAMPLE.EMP_PHOTO
fields terminated by '#<EOFD>#'
trailing nullcols
(
EMPNO CHAR(255),
PHOTO_FORMAT ,
PICTURE_ref  FILLER,
PICTURE LOBFILE(PICTURE_ref) TERMINATED BY EOF
)

Linuxシステムでは、前述の例の"str '<EORD>\r\n'"(行データ・セパレータ)を"str '<EORD>\r\n'"に置き換えます。

次の表に、SQL*Loader制御ファイルで使用される各コマンドとパラメータを示します。

パラメータ 説明
Load data 
このパラメータは、ここから新しいデータ・ロードを開始するようにSQL*Loaderに指示します。
infile 'TABLE_NAME.dat
このパラメータは、ロードするデータを含むデータファイルの名前を指定します。
into table TABLE_NAME
このパラメータは、データがロードされる表の名前を指定します。
fields terminated by '#<EOFD>#'
このパラメータは、各フィールドが'#<EOFD>#'文字で終了するように指定します。
FIELD_NAME _ref FILLER
このパラメータは、LOBデータを含むLOBデータファイルの別名を指定します。SQL*Loaderユーティリティは、データ・ロード操作時に主となるデータファイルからLOBデータの名前を取得します。

このパラメータは、LOBデータ列にのみ適用されます。

FIELD_NAME LOBFILE (lobFilename) TERMINATED BY EOF)
このパラメータは、指定したフィールドのLOBデータファイルがEOF(ファイルの終わり)マーカーで終了するように指定します。

このパラメータは、LOB列にのみ適用されます。


SQL*Loaderユーティリティの詳細は、『Oracle Databaseユーティリティ』を参照してください。