Oracle® SQL Developer

IBM DB2からの移行のための追加情報

リリース3.0

B66846-01(原本部品番号:E18460-02)

2011年2月

このドキュメントでは、IBM DB2からOracleへの移行について説明しています。『Oracle SQL Developerユーザーズ・ガイド』の移行についての説明を補足しています。

Oracle SQL Developer IBM DB2からの移行のための追加情報, リリース3.0

B66846-01

Copyright © 1998, 2011, Oracle and/or its affiliates.All rights reserved.

原本著者: Chuck Murray

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントが、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供される場合は、次のNoticeが適用されます。

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007).Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、このソフトウェアまたはハードウェアを安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle およびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXはX/Open Company, Ltd.によってライセンス提供された登録商標です。

このソフトウェアまたはハードウェアおよびドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

目次

表一覧

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

1 概要

2 OracleとDB2の比較

- 2.1 データ記憶域の概要

- 2.1.1 データ記憶域の概要

- 2.2 データベース・スキーマの移行

- 2.2.1 スキーマ・オブジェクトの類似点

- 2.2.2 データベース・スキーマのオブジェクト名

- 2.2.3 設計上の考慮事項

- 2.2.3.1 データベースのマッピング

- 2.2.3.2 参照整合性制約

- 2.2.3.3 表領域のマッピング

- 2.2.3.4 別名のマッピング

- 2.2.3.5 ID列のマッピング

- 2.3 データ型

- 2.3.1 OracleおよびIBM DB2におけるデータ型

- 2.3.2 文字データ型

- 2.3.2.1 固定長文字列

- 2.3.2.2 可変長文字列

- 2.3.2.3 ラージ・オブジェクト・データ型

- 2.3.3 図形データ型

- 2.3.3.1 DBCSデータ

- 2.3.3.2 UCS-2データ

- 2.3.4 数値データ型

- 2.3.5 日付データ型

- 2.3.6 日時値の文字列表現

- 2.3.7 IBM DB2のデータ・リンク

- 2.3.8 ユーザー定義の固有データ型

- 2.3.9 IBM DB2の構造化データ型

3 データベース・セキュリティ

- 3.1 IBM DB2 UDBグループとユーザーのマッピング

- 3.2 IBM DB2 UDBの認可レベルのOracleへのマッピング

- 3.2.1 インスタンス・レベルの認可

- 3.2.2 データベース・レベルの認可

- 3.3 IBM DB2 UDB権限のOracleへのマッピング

- 3.3.1 表権限および列権限

- 3.3.1.1 CONTROL権限

- 3.3.1.2 ALTER権限

- 3.3.1.3 DELETE権限

- 3.3.1.4 INDEX権限

- 3.3.1.5 INSERT権限

- 3.3.1.6 REFERENCE権限

- 3.3.1.7 SELECT権限

- 3.3.1.8 UPDATE権限

- 3.3.2 索引権限

- 3.3.3 順序権限

- 3.3.4 スキーマ権限

- 3.3.4.1 CREATIN権限

- 3.3.4.2 ALTERIN権限

- 3.3.4.3 DROPIN権限

- 3.3.5 パッケージ権限

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

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

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

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

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

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

- 4.3.1.1 SQL*Loader制御ファイル

索引

表一覧

- 2-1 OracleとIBM DB2のスキーマ・オブジェクト

- 2-2 削除整合性制約のマッピング

- 2-3 OracleおよびIBM DB2におけるデータ型

- 2-4 文字列のカテゴリ

- 2-5 文字列の定義

- 2-6 図形文字列の定義

- 2-7 OracleとIBM DB2の数値型

- 2-8 OracleとIBM DB2の日付データ型

- 2-9 IBM DB2のDATE値の有効な文字列表現

- 2-10 IBM DB2のTIME値の有効な文字列表現

はじめに

『Oracle SQL Developer IBM DB2からの移行のための追加情報』では、IBM DB2とOracle間のいくつかの相違点について説明しています。移行プロセス中に、それらの相違点がSQL Developerによってどのように処理されるかについての概要も示しています。

対象読者

このマニュアルは、SQL Developerを使用してIBM DB2データベースをOracleに変換するユーザーを対象としています。

リレーショナル・データベースの概念と、OracleおよびIBM DB2を実行するオペレーティング・システム環境について理解している必要があります。

ドキュメントのアクセシビリティについて

オラクル社のアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/us/corporate/accessibility/index.htmlを参照してください。

Oracleサポートへのアクセス

Oracleカスタマは、My Oracle Supportから電子サポートにアクセスできます。詳細は、http://www.oracle.com/support/contact.htmlまたはhttp://www.oracle.com/accessibility/support.html(聴覚障害者向け)を参照してください。

関連ドキュメント

Oracle SQL Developerの使用方法については、『Oracle SQL Developerユーザーズ・ガイド』およびSQL Developerのオンライン・ヘルプを参照してください。

Oracle SQL Developerのインストール方法については、『Oracle SQL Developerインストレーション・ガイド』を参照してください。

Oracleエラー・メッセージのドキュメントは、HTML版のみご利用いただけます。Oracle Database JP Documentation Libraryを使用する場合は、エラー・メッセージを範囲ごとに参照できます。特定の範囲のページを表示したら、ブラウザの「このページの検索」機能を使用して特定のメッセージを検索できます。インターネットに接続できる場合、Oracleオンライン・ドキュメントのエラー・メッセージ検索機能を使用して特定のエラー・メッセージを検索できます。

リリース・ノート、インストール・マニュアル、ホワイト・ペーパーまたはその他の関連ドキュメントは、OTN(Oracle Technology Network)から、無償でダウンロードできます。OTNを使用するには、オンラインでの登録が必要です。登録は、次のWebサイトから無償で行えます。

http://www.oracle.com/technology/global/jp/membership/index.html

すでにOTNのユーザー名およびパスワードを取得している場合は、次のURLでOTN Webサイトのドキュメントのセクションに直接接続できます。

http://www.oracle.com/technology/documentation/

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

1 概要

このマニュアルでは、Oracle SQL Developerツールを使用してIBM DB2 UDBデータベースをOracleに移行する方法について、その追加情報を示します。移行の計画に役立つ情報と、移行中や移行後に発生する可能性のある問題を解決するための情報を示します。

このドキュメントは、SQL Developerのオンライン・ヘルプと『Oracle SQL Developerユーザーズ・ガイド』に記載されているDB2の移行情報を補足しています。たとえば、これらのソースには次の情報が含まれています。

- DB2接続を確立できるようにするためのプリファレンスとしてダウンロードおよび設定する必要があるサード・パーティのドライバ・ファイル(db2jcc.jarおよびdb2jcc_license_cu.jar)に関する情報

- IBM DB2のオフライン・キャプチャに関する注意(スキーマ情報および表データをエクスポートするために入力する必要があるスクリプト・ファイルの名前およびコマンドを含む)

移行機能など、SQL Developerツールの使用方法を理解している必要があります。SQL Developerについては、『Oracle SQL Developerユーザーズ・ガイド』およびオンライン・ヘルプを参照してください。

追加情報は次のとおりです。

- 第2章「OracleとDB2の比較」

- 第3章「データベース・セキュリティ」

- 第4章「オフライン・データ・ロード」

2 OracleとDB2の比較

この章では、MySQLデータベースとOracle Databaseを比較します。主な内容は次のとおりです。

- 2.1 「データ記憶域の概要」

- 2.2 「データベース・スキーマの移行」

- 2.3 「データ型」

2.1 データ記憶域の概要

この項では、IBM DB2で使用されるデータ記憶域および方法の概要や、これらの方法および概念とOracleで使用される方法および概念との類似点または相違点について説明します。

2.1.1 Oracleのデータ記憶域の概要

Oracle Databaseは、1つ以上の表領域で構成されています。表領域では論理記憶域が提供され、データを保持する物理ディスクとデータベースがリンク付けされます。表領域は、1つ以上のデータファイルから作成されます。データファイルは、ファイル・システム内のファイルまたはデバイスで指定されるディスク領域の領域です。データファイルを追加することで表領域を大きくすることができます。

基本的なOracle Databaseは、Oracleデータ・ディクショナリ表が格納されているSYSTEM表領域で構成されています。また、ユーザー定義の表領域によっても構成されています。表領域は、データベース・オブジェクトの論理的な格納場所です。たとえば、表領域のどこに特定の表または索引を作成するかを指定できます。表領域のサイズは、表領域に割り当てられたディスク領域の量によって決定されます。各表領域は、1つ以上のデータファイルからなります。

2.2 データベース・スキーマの移行

データベース・スキーマには、表、索引およびその他のデータベース固有のオブジェクトの定義が含まれています。

この項では、次の項目に関する情報を提供します。

- スキーマ・オブジェクトの類似点

- データベース・スキーマのオブジェクト名

- データベースのマッピング

- 設計上の考慮事項

2.2.1 スキーマ・オブジェクトの類似点

OracleとIBM DB2のスキーマ・オブジェクトには多くの類似点があります。ただし、これらのデータベース間で異なるスキーマ・オブジェクトもあります。Oracleのスキーマ・オブジェクトの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。Oracleへの直接マッピングが存在しないIBM DB2のスキーマ型の詳細は、「設計上の考慮事項」を参照してください。

表 2-1に、2つのデータベースのスキーマ・オブジェクトの類似点および相違点をリストし、SQL Developerがこれらのスキーマ・オブジェクトの移行をサポートするかどうかを示します。

表2-1 OracleとIBM DB2のスキーマ・オブジェクト

IBM DB2

Oracle

ステータス

チェック制約

チェック制約

移行される脚注1

列のデフォルト

列のデフォルト

移行される脚注2

データベース

データベース

移行される

データ・リンク

バイナリ・ファイル

移行されない

外部キー

外部キー

移行される

関数

ファンクション

移行されない

グループ

ロール

移行される

ID列

自動増加列

移行される

索引

索引

移行される

主キー

主キー

移行される

スキーマ

ユーザー

移行される脚注3

シーケンス

順序

移行されない

ストアド・プロシージャ

ストアド・プロシージャ

移行されない

構造化データ型

抽象データ型

移行されない

同義語表

別名

移行される

表

表

移行される

表の別名

パブリック・シノニム

移行される

表スペース

表領域

移行される

構造化データ型を含む表

抽象データ型を含む表

移行されない

一時表

一時表

移行されない

型付き表

オブジェクト表

移行されない

型付きビュー

オブジェクト・ビュー

移行されない

UDBパッケージ

PL/SQLパッケージ

移行されない

UDB SQL関数

PL/SQLファンクション

移行されない

UDB SQLプロシージャー

PL/SQLプロシージャ

移行されない

UDBトリガー

PL/SQLトリガー

移行されない

ユニーク・キー

一意キー

移行される

ユーザー

ユーザー

移行される脚注4

ビュー

ビュー

移行されない

構造化データ型を含むビュー

抽象データ型を含むビュー

移行されない

脚注1  このスキーマ・オブジェクトは移行されますが、SQL Developerによって解析はされません

脚注2  このスキーマ・オブジェクトは移行されますが、SQL Developerによって解析はされません

脚注3  IBM DB2のスキーマ・マッピングの詳細は、第4章「オフライン・データ・ロード」を参照してください

脚注4  SQL Developerは、USR_GUESTのように接頭辞USR_を付けてユーザーをマップします

2.2.2 データベース・スキーマのオブジェクト名

予約語はOracleとIBM DB2とでは異なります。Oracleの予約語の一部は、IBM DB2では有効なオブジェクト名または列名です。スキーマ・オブジェクト名に予約語を使用すると、同じ名前を複数のデータベースにわたって使用できなくなります。SQL Developerは、Oracleの予約語であるIBM DB2オブジェクトの名前の末尾にアンダースコアおよび数字(_n)を追加します。

オブジェクト名は、OracleでもIBM DB2でも大/小文字が区別されません。Oracleの予約語のリストは、『Oracle Database SQL言語リファレンス』を参照してください。

2.2.3 設計上の考慮事項

この項では、IBM DB2データベースをOracleに変換する際に考慮する必要がある表設計の問題について説明します。次のトピックに関する情報が含まれます。

- データベースのマッピング

- 参照整合性制約

- 表領域のマッピング

- 別名のマッピング

2.2.3.1 データベースのマッピング

複数のデータベースを作成して、OracleとIBM DB2の関連データのセグメントをグループ化できます。SQL Developerを使用して一度に多くのIBM DB2データベースを移行する場合、すべてのIBM DB2データベースは指定された1つのOracle Databaseに移行されます。

2.2.3.2 参照整合性制約

参照整合性制約は、複数の表の列間の関係を制御する規則です。整合性制約は、Oracle DatabaseとIBM DB2データベースとで非常に似ています。この項では相違点について説明します。

IBM DB2の参照整合性制約では、ON DELETE句およびON UPDATE句がサポートされます。Oracleの参照整合性制約では、ON DELETE句のみがサポートされます。

表2-2は、OracleとIBM DB2間の削除整合性制約のマッピングの概要、およびSQL Developerがこれらの句の移行をサポートするかどうかを示します。

表2-2 削除整合性制約のマッピング

IBM DB2

Oracle

ステータス

ON DELETE RESTRICT

ON DELETE NO ACTION

移行される

ON DELETE NO ACTION

ON DELETE NO ACTION

移行される

ON DELETE CASCADE

ON DELETE CASCADE

移行される

ON DELETE SET NULL

ON DELETE SET NULL

移行されない

2.2.3.3 表領域のマッピング

IBM DB2では、各表はその表のプライマリ・データを含む表領域に割り当てられます。ただし、オプションで、表の索引が2番目の表領域に、表のラージ・オブジェクトが3番目の表領域に格納される場合があります。同じ表領域に1つ以上の表を割り当てることができます。各表領域はコンテナのコレクションで構成されており、各コンテナはファイル・システム、物理ファイルまたはハード・ディスクなどのデバイスのいずれかに存在するディレクトリです。

IBM DB2はsystem managed space(SMS)およびdatabase managed space(DMS)を提供します。SMS表領域は、オペレーティング・システムによって提供される機能を使用して物理領域を管理します。IBM DB2はDMS表領域の物理領域を直接管理します。

Oracleはディクショナリ管理表領域の方法およびローカル管理表領域の方法を使用して空き領域と使用済領域を追跡します。ディクショナリ管理表領域はデータ・ディクショナリによって管理されるエクステントであり、一方、ローカル管理表領域は表領域によって管理されるエクステントです。次の理由から、ローカル管理表領域をお薦めします。

- エクステントの論理管理では、再帰的な領域管理操作を回避できます。これは、ディクショナリ管理表領域では、エクステント領域の消費または解放によって、ロールバック・セグメントまたはデータ・ディクショナリ表の領域を消費または解放する別の操作が発生する場合に発生する可能性があります。

- エクステントのローカル管理によって隣接した空き領域が自動的に追跡されるため、空きエクステントを結合する必要がなくなります。

- SQL DeveloperはDMS表領域およびSMS表領域をOracleのローカル管理表領域に自動的にマップします。SQL Developerを使用して、表領域ごとにこれをディクショナリ管理表領域にリセットできます。

2.2.3.4 別名のマッピング

IBM DB2の別名は表の別名またはビューの代替名です。表の別名は作成または削除できます。別名の使用には認可は不要です。ただし、別名によって参照される表およびビューへのアクセスには、適切な認可が必要です。別名の長さは30文字までです。

SQL Developerは表の別名をパブリック・シノニムに移行します。SQL DeveloperによってOracleに作成されるすべてのユーザー・アカウントには、CREATE PUBLIC SYNONYMおよびDROP PUBLIC SYNONYMシステム・レベル権限が付与されます。これらの権限の詳細は、第4章「オフライン・データ・ロード」を参照してください。

2.2.3.5 ID列のマッピング

IBM DB2のID列は、連続した、リカバリ可能な一意の値を表の各行に自動的に生成する方法を提供します。ID列は、各表に1つのみ割り当て可能です。ID列として定義される列は、SMALLINT、INTEGER、BIGINTまたはDECIMALのような正確な算術データ型である必要があります(スケールとして0を使用できます)。ID列には次の特性があります。

- 表の作成時に表の一部として定義されます。表を作成した後は、表を変更してID列を追加することはできません。

- 自動的に1つの表に対する値を生成します。

- GENERATED ALWAYSコマンドを使用して定義した場合、使用する値が常にデータベース・マネージャーによって生成されます。

Oracleは常にID列をAUTO INCREMENT列にマップします。Oracleは、順序およびトリガーを使用してID列をエミュレートします。これを詳細に説明するために、OracleのMyTableという表にAuto_Valという名前のAUTO INCREMENT列を作成するとします。まず、次の例のように順序を作成する必要があります。

CREATE SEQUENCE MySequence START WITH 1 INCREMENT BY 1 NO MAX VALUE;

この例では、START WITH値は1で、この値は表に対するINSERT操作のたびに1ずつ増加します。NO MAX VALUEは、この値が増加し、特定の時点でリセットされることがないことを指定します。次に、この順序によって作成される値をAuto_Val列に挿入するトリガーが必要になります。これは次のように作成します。

CREATE TRIGGER MyTrigger
BEFORE INSERT ON MyTable
FOR EACH ROW Begin
SELECT MySequence.NEXTVAL INTO :MyTable.Auto_Val FROM DUAL;
END;

SQL Developerは、ID列に対してこのソリューションを自動的に生成します。ID列のGENERATED_ALWAYS属性は、常に、AUTO_INCREMENT移行ソリューションに従います。したがって、すべてのID列は、GENERATED_ALWAYS属性が設定されていたものとして生成されます。SQL Developerは、GENERATED_ALWAYS属性を指定しないID列が、この属性付きで移行されることを警告します。

2.3 データ型

この項では、IBM DB2データベースおよびOracle Databaseで使用されるデータ型の相違点について説明します。この項には次の情報が含まれています。

- OracleおよびIBM DB2におけるデータ型

- 文字データ型

- 図形データ型

- 数値データ型

- 日時データ型

- 日時値の文字列表現

- IBM DB2のデータ・リンク

- ユーザー定義の固有データ型

- IBM DB2の構造化データ型

2.3.1 OracleおよびIBM DB2におけるデータ型

表2-3に、IBM DB2で利用できるデータ型およびそれに対応するOracleのデータ型を示します。

すべてのIBM DB2データ型は、NULL値をサポートします。NULL値は、存在しない値、不明な値または適用できない値として定義されます。すべてのデータ型にNULL値が含まれますが、NOT NULLと定義された列にNULL値を含めることはできません。

表2-3 OracleおよびIBM DB2におけるデータ型

IBM DB2のデータ型

説明

Oracleデータ型

BLOB

最大2GB(2,147,483,647)長の可変長バイナリ・ラージ・オブジェクト文字列。主に、音声、混合メディアなど、従来とは異なるデータの保持に使用します。BLOB文字列は、FOR BIT DATA文字列と同様に、キャラクタ・セットとは関連付けられていません。

BLOB

CHAR FOR BIT DATA(length)

1から124までの長さの固定長文字列。lengthが省略された場合のデフォルトは1です。

バイナリ・データとして処理されます。

CHAR

CHAR VARYING FOR BIT DATA(length)

最大32,672バイト長の可変長文字列。

バイナリ・データとして処理されます。

VARCHAR2

CHAR VARYING(length)

最大32,672バイト長の可変長文字列。

VARCHAR2

CHAR(length)

1から124までの長さの固定長文字列。lengthが省略された場合のデフォルトは1です。

CHAR

CHARACTER FOR BIT DATA(length)

1から124までの長さの固定長文字列。lengthが省略された場合のデフォルトは1です。

バイナリ・データとして処理されます。

CHAR

CHARACTER VARYING FOR BIT DATA(length)

最大32,672バイト長の可変長文字列。

バイナリ・データとして処理されます。

VARCHAR2

CHARACTER VARYING(length)

最大32,672バイト長の可変長文字列。

VARCHAR2

CHARACTER(length)

1から124までの長さの固定長文字列。lengthが省略された場合のデフォルトは1です。

CHAR

CLOB

最大2GB(2,147,483,647)長の可変長キャラクタ・ラージ・オブジェクト文字列です。CLOBには、シングルバイト文字列またはマルチバイトの文字ベースのデータを格納できます。CLOBは文字列とみなされます。

CLOB

DBCLOB

最大1,073,741,823のダブルバイト文字を格納できる可変長文字列。DBCS CCSIDが関連付けられています。DBCLOBは図形文字列とみなされます。

CLOB

GRAPHIC(length)

1から127までの長さの固定長文字列。lengthが省略された場合のデフォルトは1です。

VARCHAR2

LONG VARCHAR(length)

最大32,700バイト長の可変長文字列

VARCHAR2

LONG VARGRAPHIC(length)

最大16,350文字のダブルバイト文字の可変長図形文字列。

CLOB

VARCHAR FOR BIT DATA(length)

最大32,672バイト長の可変長文字列。

バイナリ・データとして処理されます。

VARCHAR2

VARCHAR(length)

最大32,672バイト長の可変長文字列。

VARCHAR2

VARGRAPHIC(length)

最大16,336文字のダブルバイト文字の可変長図形文字列

VARCHAR2

2.3.2 文字データ型

文字データ型にはいくつか種類があります。IBM DB2の各文字データ型は、さらに表2-4に示すいずれかの型に分類できます。混合文字データ型の長さは、ダブルバイト文字1つにつき2バイト、シングルバイト文字1つにつき1バイトとカウントしたバイトの合計数です。

文字列はバイト列です。文字列の長さは、列におけるバイトの数です。文字列の長さが0の場合は、これは空の文字列と呼ばれます。これは、NULL値とは異なります。

表2-4 文字列のカテゴリ

説明

型

ビットデータ

コード化されたキャラクタ・セットとは関連付けられていないデータで、変換は行われません。

シングルバイト・キャラクタ・セット(SBCS)データ

すべての文字が単一のキャラクタ・セットによって表されるデータ。各SBCSデータ文字列には、コード化文字セットID(CCSID)が関連付けられています。

ダブルバイト・キャラクタ・セット(DBCS)

すべての文字が2バイトで表されるデータ。GRAPHICおよびVARGRAPHICデータはこの形式で格納されます。

混合データ

SBCSおよびダブルバイト・キャラクタ・セット(DBCS)の文字の組み合わせを含むデータ。

2.3.2.1 固定長文字列

固定長文字列の列のすべての値は同じ長さです。列のlength属性によってこれが決定されます。length属性は1から32,766の範囲である必要があります。

2.3.2.2 可変長文字列

可変長文字列の列のすべての値は同じ最大長です。列のlength属性によってこれが決定されます。length属性は1から32,740の範囲である必要があります。表2-5に各文字列の定義を示します。

表2-5 文字列の定義

文字列

定義

CHARまたはCHARACTER

単一文字。

CHAR FOR BIT DATAまたはCHARACTER FOR BIT DATA

単一文字。バイナリ・データとして処理されます。

CHAR(length)またはCHARACTER(length)

長さが1から254の範囲の固定長文字列。

CHAR(length) FOR BIT DATAまたはCHARACTER(length) FOR BIT DATA

これは固定長の文字列です。長さが1から254の範囲のバイナリ・データとして処理されます。

VARCHAR(length)またはCHARACTER VARYING(length)またはCHAR VARYING(length)

これは、長さが1から32,672の範囲の可変長文字列です。

VARCHAR(length) FOR BIT DATAまたはCHARACTER VARYING(length) FOR BIT DATAまたはCHAR VARYING(length) FOR BIT DATA

これは可変長の文字列です。長さが1から32,672の範囲のバイナリ・データとして処理されます。

2.3.2.3 ラージ・オブジェクト・データ型

ラージ・オブジェクト・データ型には、サイズが0バイトから2GBの範囲のデータが格納されます。3つのラージ・オブジェクト・データ型があります。

- キャラクタ・ラージ・オブジェクト(CLOB)

- ダブルバイト・キャラクタ・ラージ・オブジェクト(DBCLOB)

- バイナリ・ラージ・オブジェクト(BLOB)

2.3.2.3.1 キャラクタ・ラージ・オブジェクト(CLOB)

コード・ページが関連付けられている、シングルバイト文字で構成された文字列。このデータ型にはテキスト中心の情報が含まれ、情報量が通常のVARCHARデータ型の制限より大きくなることがあります。SQL Developerでは、情報のコード・ページ変換およびその他の文字種との互換性がサポートされます。

2.3.2.3.2 ダブルバイト・キャラクタ・ラージ・オブジェクト(DBCLOB)

コード・ページが関連付けられている、ダブルバイト文字で構成された文字列。このデータ型には、ダブルバイト・キャラクタ・セットが使用されたテキスト中心の情報が含まれます。このデータ型の最大長は1,073,741,823です。

2.3.2.3.3 バイナリ・ラージ・オブジェクト(BLOB)

コード・ページが関連付けられていない、バイトで構成されたバイナリ文字列。

2.3.3 図形データ型

図形文字列はダブルバイト文字の文字列です。文字列長は列内の文字数です。単一文字の文字列と同様に、図形文字列は空にできます。固定長図形文字列の列のすべての値は同じ長さで、この長さは列のlength属性によって決定されます。

列のlength属性によって、値の最大長が決定されます。前述の表2-6には、各図形データ型についての説明があります。各図形データ型は、さらにDBCSデータまたはUCS-2データに分類できます。

2.3.3.1 DBCSデータ

このデータ型では、2バイトですべての文字が表されます。すべてのDBCS図形には、コード化されたダブルバイト・キャラクタ・セットを識別するコード化文字セットID(CCSID)が関連付けられています。

2.3.3.2 UCS-2データ

ユニバーサル・コード化キャラクタ・セット(UCS-2)の文字は、このデータ型のすべての文字を表します。

表2-6 図形文字列の定義

文字列

定義

GRAPHIC

これは単一の図形文字です。

GRAPHIC(length)

これは、最大127文字の固定長図形文字列です。

VARGRAPHIC(length)

これは、最大16,336文字の可変長図形文字列です。

LONG VARGRAPHIC

これは、最大16,350文字の可変長図形文字列です。

2.3.4 数値データ型

すべての数値には符号および精度があります。精度とは、符号を除いた2進数または10進数の合計数です。値が0以上の場合は、符号は正です。表2-7では、IBM DB2で利用可能な数値型およびそれに対応するOracleの数値型について説明します。

表2-7 OracleおよびIBM DB2における数値型

DB2 UDBデータ型

説明

Oracleデータ型

BIGINT

19桁の精度を持つ8バイトの大きな2進整数。このデータ型の範囲は-9,223,372,036,854,775,808から+9,223,372,036,854,775,807です。

NUMBER(19, 0)

DECIMAL(precision, scale)

パック10進数。precisionは桁数であり、1から31の範囲です。scaleは小数点の右側の桁数であり、0からprecisionに指定された値までの範囲です。

DECIMAL(precision, 0)としてDECIMAL(precision)を使用できます。また、DECIMAL(5, 0)としてDECIMALを単独で使用できます。小数点の位置はその数値の精度およびスケール(その数値の小数部の桁数)によって決定されます。DECIMAL列のすべての値は、同じ精度およびスケールを持ちます。

10進数の変数またはDECIMAL列の数値の範囲は-nから+nであり、nの絶対値は、適用される精度およびスケールで表される最大の数字です。最大範囲は、-10^31 + 1から1031 - 1です。

FLOAT(24)

DOUBLE

FLOATと同義です。

FLOAT(53)

FLOAT(precision)

浮動小数点数。precisionは桁数で、1から53の範囲です。

precision値が1から24までの場合、単精度浮動小数点数を示します。

precision値が25から53までの場合、倍精度浮動小数点数を示します。

precision値を指定しない場合は、倍精度浮動小数点数になります。

単精度浮動小数点数は、1.17549436 x 10-38から3.40282356 x 10+38の範囲の実数の32ビットの近似値です。

倍精度浮動小数点数は、2.2250738585072014 x 10-308から1.7976931348623158 x 10^308の範囲の実数の64ビットの近似値です。

FLOAT

INTEGER

4バイトの2進整数。10桁の精度を持ちます。このデータ型の範囲は–2,147,483,648から+2,147,483,647です。

NUMBER(11, 0)

NUMERIC(precision, scale)

ゾーン10進数。precisionは桁数であり、1から31の範囲です。scaleは小数点の右側の桁数であり、0からprecisionに指定された値までの範囲です。

DECIMAL(precision, 0)としてDECIMAL(precision)を使用できます。また、DECIMAL(5, 0)としてDECIMALを単独で使用できます。

NUMBER

REAL

単精度浮動小数点。数値は0にできるほか、範囲は-3.402E+38から-1.175E-37または1.175E-37から3.402E+38です。

FLOAT(24)

SMALLINT

5桁の精度を持つ2バイトの2進整数。このデータ型の範囲は-32,768から+32,767です。

NUMBER(6, 0)

2.3.5 日時データ型

表2-8に、利用可能なIBM DB2のベース日時型およびそれらのOracleへのマップ方法を示します。

表2-8 OracleおよびIBM DB2における日時データ型

IBM DB2のデータ型

説明

Oracleデータ型

DATE

この型は、年、月および日で構成されています。これはカレンダの日付を表します。年の範囲は0001から9999、月の範囲は1から12、日の範囲は1からnです(nは月および年の値に応じて28、29、30または31になります)。

DATE列の長さは10バイトで、これはこの値の文字列表現に適した長さです。

DATE

TIME

この型は、時、分および秒で構成されています。これは24時間表記の時刻値を表します。

時の範囲は0から24、分の範囲は0から59、秒の範囲は0から59です。

時が24に設定された場合は、分および秒は0に設定する必要があります。時刻の内部表現は3バイトの文字列です。

各バイトは、2つのパック10進数です。1つ目のバイトは時を、2つ目のバイトは分を、最後のバイトは秒を表します。

TIME列の長さは8バイトで、これはこの値の文字表現に適した長さです。

DATE

TIMESTAMP

この型は、年、月、日、時、分、秒およびマイクロ秒で構成されています。これはカレンダの日付および24時間表記の時刻値を表します。

年、月および日の範囲は、DATEデータ型と同じです。時、分および秒の範囲は、TIMEデータ型と同じです。ミリ秒の範囲は0から999です。

TIMESTAMPの内部表現は10バイトの文字列であり、各バイトは2つのパック10進数からなります。先頭の4バイトは日付を表し、次の3バイトは時間を表し、末尾の3バイトはマイクロ秒を表します。

TIMESTAMP列の長さは26バイトで、これはこの値の文字列表現に適した長さです。

TIMESTAMP

2.3.6 日時値の文字列表現

DATE型、TIME型およびTIMESTAMP型の値は内部形式で表されます。ただし、これらのデータ型は文字列によっても表されます。日時データ型には定数も変数もありません。日時値を取得するには、文字列変数に日時値を割り当てる必要があります。長さにかかわらず、LOB文字列もLONG VARCHAR文字列も、日時値を表す文字列としては使用できません。

表2-9に、IBM DB2のDATE値の有効な文字列表現を示します。

表2-9 IBM DB2のDATE値の有効な文字列表現

形式名

形式

例

国際標準化機構(ISO)

yyyy-mm-dd

2002-05-30

IBM USA標準(USA)

mm/dd/yyyy

05/30/2002

IBM欧州標準(EUR)

dd.mm.yyyy

30.05.2002

日本工業規格の西暦(JIS)

yyyy-mm-dd

2002-05-30

定義されたサイト(LOC)

データベースの国コードに依存

適用なし

DATEの文字列表現は数字で始まり、8文字以上の長さです。末尾に空白が含まれる場合があるほか、月および日のセクションからは先頭の0を省略できます。

表2-10に、IBM DB2のTIME値の有効な文字列表現を示します。

表2-10 IBM DB2のTIME値の有効な文字列表現

形式名

形式

例

国際標準化機構(ISO)

hh.mm.ss

17.30.01

IBM USA標準(USA)

hh:mm AMまたはPM

5:30 PM

IBM欧州標準(EUR)

hh.mm.ss

17.30.01

日本工業規格の西暦(JIS)

hh:mm:ss

17:30:01

定義されたサイト(LOC)

データベースの国コードに依存

TIMEの文字列表現は数字で始まり、4文字以上の長さです。末尾に空白を含めることができるほか、先頭の0は省略されることがあります。秒を省略すると、暗黙的に0秒を指定したとみなされます。

TIMESTAMPの文字列表現は数字で始まり、16文字以上の長さです。また、形式はyyyy-mm-dd-hh.mm.ss.nnnnnnです。末尾に空白を含めることができるほか、月から先頭の0を省略できます。日、時およびマイクロ秒は、切り捨てられるか、すべて省略されることがあります。マイクロ秒の末尾の0を省略すると、不足している桁には暗黙的に0が指定されたとみなされます。

USA標準時刻文字列形式の分の指定は省略できます。分が省略されると、暗黙的に00分が指定されたとみなされるため、5p.mは5:00 PMとなります。さらに、時は1から12(00:00 AMの場合として12を含む)の範囲である必要があります。AMまたはPMの前には空白が1つあります。

注意:
ISOは、JIS標準と同一になるように時刻形式を変更しました。アプリケーションに最新のISO形式が必要な場合は、JIS標準を使用する必要があります。
ISO、EURおよびJIS標準の.ssまたは:ss部分はオプションです。

IBM DB2では、DATE、TIMEおよびTIMESTAMP文字列に含めるのは、シングルバイト文字および数値のみにする必要があります。

2.3.7 IBM DB2のデータ・リンク

SQL DeveloperはIBM DB2のデータ・リンクの移行はサポートしません。IBM DB2のデータ・リンクを移行する必要がある場合は、Oracleのバイナリ・ファイル(BFILE)を作成することをお薦めします。Oracleのバイナリ・ファイルの詳細は、『Oracle9i SQLリファレンス』を参照してください。

2.3.8 ユーザー定義の固有データ型

IBM DB2は、組込みデータ型に基づいて新しいデータ型を定義する機能を提供します。これらのデータ型はユーザー定義の固有データ型と呼ばれます。

SQL Developerでは、ユーザー定義の固有データ型の移行はサポートされません。表内のユーザー定義の固有型(IBM DB2で定義される)を使用する列は、Oracleモデルのベース型を使用して定義されます。

2.3.9 IBM DB2の構造化データ型

構造化データ型とは、ユーザー定義のデータ型で、その構造がデータベースで定義されています。このデータ型は指定された一連の属性からなり、各属性はデータ型を持ちます。構造化データ型は、スーパータイプと呼ばれる別の構造型のサブタイプとして定義される場合もあります。サブタイプにはスーパータイプのすべての属性が継承されるほか、追加の属性を定義できます。

構造型は、表またはビューのデータ型として使用できます。構造型の名前およびデータ型は、表(型付き表)の列の名前およびデータ型になります。型付き表の行は、構造型のインスタンスを表します。

構造化データ型のインスタンスは、列の値としてデータベースに格納することもできます。表の列にオブジェクトを格納するには、構造化データ型を使用して列を定義します。

IBM DB2の構造化データ型のOracleへの論理マッピングは、抽象データ型です。SQL Developerは、構造化データ型の移行をサポートしません。

3 データベース・セキュリティ

この章では、IBM DB2データベースのセキュリティ機能およびSQL Developerによるそれらの制御方法について説明します。

3.1 IBM DB2 UDBグループおよびユーザーのマッピング

IBM DB2 UDBのセキュリティは認可レベルおよび権限を含むシステムによって管理されます。ユーザーは必要な権限や認可レベルを持つオブジェクトにのみアクセスできます。

SQL DeveloperによってIBM DB2ユーザーがOracleユーザーにマップされます。ユーザーはUSR_GUESTのように接頭辞USR_を付けてOracleにマップされます。IBM DB2グループはロールとしてOracleにマップされます。一部のシステム・レベルの権限および表、列レベルの権限はIBM DB2からOracleのユーザーに移行されます。

IBM DB2グループの移行時に、SQL DeveloperによってIBM DB2グループと同じ名前のOracleロールが作成されます。Oracleにおけるロールは、ユーザーまたは他のロールに付与可能な一連の権限です。IBM DB2グループに属するユーザーはシステムのカタログ表からは判断できないため、SQL Developerは移行されたロールをユーザーに付与しません。移行されたユーザーにロールを付与するのはOracle Database管理者の責任です。ロールの付与、削除、変更については、『Oracle Database SQL言語リファレンス』を参照してください。

3.2 IBM DB2 UDBの認可レベルのOracleへのマッピング

IBM DB2の認可は、インスタンス・レベルの認可およびデータベース・レベルの認可の2種類に分類できます。

3.2.1 インスタンス・レベルの認可

IBM DB2 UDBで利用可能なインスタンス・レベルの認可は3つあります。

- 管理者認可レベル(SYSADM)

- システム制御認可レベル(SYSCTRL)

- システム保守認可レベル(SYSMAINT)

これら3つのインスタンス・レベルの認可は、いずれもインストール先プラットフォームのセキュリティ・システムによって制御されます。セキュリティ・モデルにはクロス・プラットフォームの違いがあるため、SQL Developerはインスタンス・レベルの認可を移行しません。Oracleのシステム・レベルの認可の詳細は、『Oracle Database管理者ガイド』を参照してください。

3.2.2 データベース・レベルの認可

IBM DB2で利用可能なデータベース・レベルの認可は6つあります。これらの認可は、単一のIBM DB2インスタンスではなく、特定のデータベースで利用できます。IBM DB2のデータベース・レベル権限のOracleへの直接マッピングはありません。

次の表は、ユーザーおよびSQL DeveloperによってユーザーとしてOracleに移行されるスキーマに割り当てられる権限について説明しています。

Oracle権限

説明

CONNECT

この権限は、Oracleを使用する権限をユーザーに付与します。CONNECTロールを持つユーザーは、表、ビュー、順序、クラスタ、シノニム、セッションおよび他のデータベースへのリンクも作成できます。

RESOURCE

この権限は、ユーザーに、各自の表、順序、プロシージャ、トリガー、索引およびクラスタを作成する権限を付与します。

CREATE PUBLIC SYNONYM

この権限は、パブリック・シノニムをOracle Databaseに作成する権限をユーザーに付与します。これによって、ユーザーが別名を作成するIBM DB2 UDBの機能がエミュレートされます。

DROP PUBLIC SYNONYM

この権限は、Oracle Databaseのパブリック・シノニムを削除する権限をユーザーに付与します。

Oracleには、個別のシステム権限だけでも100を超える権限があります。Oracleでの認可の設定方法の詳細は、『Oracle Database管理者ガイド』を参照してください。

3.3 IBM DB2 UDBの権限のOracleへのマッピング

データベース権限は、特定のオブジェクトで特定の処理または操作を実行する権限を付与します。IBM DB2権限は、次の種類に分類されます。

- 表権限および列権限

- 索引権限

- 順序権限

- スキーマ権限

- パッケージ権限

3.3.1 表権限および列権限

次の権限を表および列に付与できます。

3.3.1.1 CONTROL権限

ALTER、INDEX、REFERENCES、INSERT、DELETEおよびUPDATE権限を表に付与します。また、この権限は、表に適切な権限を付与する権限を他のユーザーおよびグループに付与します。また、表を削除する権限や表に対する統計を更新する権限も付与します。

3.3.1.2 ALTER権限

表に列を追加するなど、表定義を変更する権限を付与します。また、COMMENT文を使用して表にコメントを追加する権限や、CREATE TRIGGER文を使用して表にトリガーを作成する権限も付与します。

3.3.1.3 DELETE権限

表から行を削除する権限を付与します。

3.3.1.4 INDEX権限

表に索引を作成する権限を付与します。

3.3.1.5 INSERT権限

表に行を挿入する権限を付与します。

3.3.1.6 REFERENCE権限

現在の表の親キーを参照する、他の表の外部キー制約を作成または削除する権限を付与します。REFERENCE権限は表全体または列に付与されることがあります。

3.3.1.7 SELECT権限

SELECT文を使用して表からデータを選択する権限を付与するほか、副問合せで表を使用する権限も付与します。

3.3.1.8 UPDATE権限

表の行を更新する権限を付与します。UPDATE権限は表全体または列に付与されることがあります。

次の表に、表および列それぞれについて、IBM DB2 UDBからOracleへの権限のマッピングを示します。

IBM DB2 UDBの表権限

Oracleの表権限

CONTROL

ALTER、DELETE、INDEX、INSERT、REFERENCES、SELECT、UPDATE

ALTER

ALTER

DELETE

DELETE

INDEX

INDEX

INSERT

INSERT

REFERENCES

REFERENCES

SELECT

SELECT

UPDATE

UPDATE

IBM DB2 UDBの列権限

Oracleの列権限

CONTROL

INSERT、REFERENCES、UPDATE

INSERT

INSERT

REFERENCES

REFERENCES

UPDATE

UPDATE

3.3.2 索引権限

CONTROL権限は索引に利用できる唯一の権限です。この権限は1人のユーザーまたはユーザーのグループに付与され、索引に対する削除権限をユーザーに付与します。この権限を付与するには、ユーザーはSYSADM認可またはDBADM認可を持っている必要がありますが、この権限は索引作成者に自動的に付与されます。

Oracleで索引を削除するには、ユーザー・アカウントに索引が含まれているか、ユーザーがDROP ANY INDEXシステム権限を持っている必要があります。制約に定義された索引を削除するには、索引を削除する前に、索引自体を無効にするか、削除する必要があります。

ただし、OracleのDROP ANY INDEXシステム権限は、データベースの任意のユーザー・アカウントの索引を削除する権限を付与します。すべての索引ではなく、指定された索引のみを削除する権限が付与されるため、これはIBM DB2 UDBの索引のCONTROL権限にはマップされません。SQL Developerは索引の作成者を判断し、このユーザーにOracle Databaseの索引を削除する権限が付与されます。

Oracleは、索引を変更する機能も提供します。索引の再構築や結合、実際の記憶特性およびデフォルトの記憶特性の変更を行うことができますが、列構造は変更できません。索引を変更するには、ユーザー・アカウントに索引が含まれているか、ユーザーがALTER ANY INDEXシステム権限を持っている必要があります。この場合も、SQL Developerは、IBM DB2からOracleに索引をマップするときに索引の作成者を判断し、このユーザーに索引に対する権限を変更する権限が付与されます。

3.3.3 順序権限

順序オブジェクトはSQL Developerによっては移行されません。したがって、それらに適用される権限の移行はこのドキュメントの範囲外です。

3.3.4 スキーマ権限

IBM DB2スキーマは名前付きオブジェクトのコレクションです。スキーマはIBM DB2データベースのオブジェクトを論理的に分類し、表、索引、ビューおよびトリガーを含むことがあります。スキーマ自体がデータベースのオブジェクトであり、CREATE SCHEMA文を使用して作成されます。スキーマ名は、tab_schema.mytableのように2つの部分からなるオブジェクト名の上位部分として使用されます。オブジェクトの作成時にスキーマ名が指定されると、そのオブジェクトはそのスキーマに割り当てられます。指定されない場合は、IMPLICIT_SCHEMAの値が使用されます。これはデフォルトのスキーマ名です。

次の権限をスキーマに付与できます。

3.3.4.1 CREATIN権限

これは、スキーマにオブジェクトを作成する権限を付与します。

3.3.4.2 ALTERIN権限

これは、スキーマの表定義を変更し、スキーマのオブジェクトにコメントを追加する権限を付与します。

3.3.4.3 DROPIN権限

これは、スキーマのオブジェクトを削除する権限を付与します。

IBM DB2のスキーマ・オブジェクトには、Oracleへの直接マッピングは存在しません。Oracle Databaseには複数のユーザーがおり、各ユーザーはユーザー・アカウントを持ちます。各ユーザー・アカウントは、表や索引などのデータベース・オブジェクトの論理コレクションです。したがって、IBM DB2のスキーマはOracleのユーザーにマップされます。移行中にIBM DB2のスキーマがあると、SQL DeveloperはIBM DB2のスキーマの名前を使用してターゲットのOracle Databaseにユーザー・アカウントを作成します。

次に、SCHという名前のIBM DB2スキーマの、USRというユーザーが所有するTABという名前の表を使用して、SQL DeveloperがどのようにIBM DB2スキーマをOracleでエミュレートするかを示します。

1. SQL Developerは、SCHという名前のユーザー・アカウントをOracle Databaseに作成します。

2. SQL Developerは、SCHユーザー・アカウントにTABという名前の表を作成します。SCHユーザー・アカウントが自動的にその表の所有者になります。

3. SQL Developerは、USRという名前の別のユーザー・アカウントをOracle Databaseに作成します。USRは、OracleのUSRというユーザーにマップされます。

4. SQL Developerは、USRユーザー・アカウントにTABという名前のプライベート・シノニムを作成します。このシノニムによって、USRとして接続するユーザーは表名にSCHという接頭辞を明示的に付けなくても、TAB表を操作できます。

SCHスキーマに存在したすべてのオブジェクトは、OracleのSCHユーザー・アカウントに作成されます。SCHスキーマに存在するオブジェクトについて、IBM DB2のUSRユーザーに付与されるすべての表および列レベルの権限がOracleに移行されます。OracleのUSRユーザー・アカウントは、SCHユーザー・アカウントに存在するオブジェクトに対する適切な権限を付与されます。

3.3.5 パッケージ権限

SQL Developerでは、パッケージ・オブジェクトのIBM DB2からの移行は行われません。

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

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

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

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

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

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

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のデータのエクスポートの場合:

db2 export to <file name> of DEL modified by lobsinsepfiles coldel"#" timestampformat=\"YYYY/MM/DD HH.mm.ss\" datesiso nochardel <select query>

- DB2バージョン8のデータのエクスポートの場合:

db2 export to <file name> of DEL modified by coldel"#" timestampformat=\"YYYY/MM/DD HH.mm.ss\" datesiso nochardel <select query>

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_DELとROW_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ユーティリティ』を参照してください。

索引
B  C  D  F  G  I  L  N  O  R  S  T  V

B

BIGINT数値型, 2.3.4

BLOBデータ型, 2.3.1

C

CHARデータ型, 2.3.1

CHAR FOR BIT DATAデータ型, 2.3.1

CHAR VARYINGデータ型, 2.3.1

CHAR VARYING FOR BIT DATAデータ型, 2.3.1

CHARACTERデータ型, 2.3.1

CHARACTER FOR BIT DATAデータ型, 2.3.1

CHARACTER VARYINGデータ型, 2.3.1

CHARACTER VARYING FOR BIT DATAデータ型, 2.3.1

CLOBデータ型, 2.3.1

コレクション・マッピング

表設計の考慮事項, 2.2.3.3

D

データ記憶域の概念

概要, 2.1

db2jcc_license_cu.jarファイル, 1 db2jcc.jarファイル, 1 DECIMAL数値型, 2.3.4 DOUBLE数値型, 2.3.4

F

FLOAT数値型, 2.3.4

G

GRAPHICデータ型, 2.3.1

I

INTEGER数値型, 2.3.4

L

LONG VARCHARデータ型, 2.3.1

LONG VARGRAPHICデータ型, 2.3.1

N

NUMERIC数値型, 2.3.4

O

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

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

R

REAL数値型, 2.3.4

参照整合性制約

表設計の考慮事項, 2.2.3.2, 2.2.3.2, 3.2.1, 3.2.2, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5

S

スキーマの移行, 2.2

スキーマ・オブジェクト名

概要, 2.2.2

文字列

文字列, 2.3.2

固定長文字列, 2.3.2.1

図形文字列, 2.3.3

混合文字列, 2.3.2

シングル・バイトのキャラクタ・セット・データ, 2.3.2

可変長文字列, 2.3.2.1

SYSTEM表領域, 2.1.1

T

表設計の考慮事項

コレクション・マッピング, 2.2.3.3

参照整合性制約, 2.2.3.2, 2.2.3.2, 3.2.1, 3.2.2, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5

表領域

概要, 2.1.1

トラブルシューティング，接続の問題, 4

V

VARCHARデータ型, 2.3.1

VARCHAR FOR BIT DATAデータ型, 2.3.1

VARGRAPHICデータ型, 2.3.1

オラクル社の法律上の注意点について

コピーライトについて

Copyright © 1994-2014, Oracle and/or its affiliates.All rights reserved.

商標と登録商標について

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

制限付権利

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション（人的傷害を発生させる可能性があるアプリケーションを含む）への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性（redundancy）、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

ドラフトのアルファ版およびベータ版ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。オラクル社およびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。