Postgres Plus 移行ガイド Postgres Plus Advanced Server 9.2 Postgres ソリューションパック 2012 年 11 月 13 日 Postgres Plus 移行ガイド、Version 2.0 by EnterpriseDB Corporation Copyright © 2012 EnterpriseDB Corporation. All rights reserved. EnterpriseDB Corporation, 34 Crosby Drive, Suite 100, Bedford, MA 01730, USA T +1 781 357 3390 F +1 978 467 1307 E info@enterprised b.com www.enterprisedb.com Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 2 Postgres Plus Migration Guide 目次 1 はじめに ................................................................................................................. 5 1.1 2 本ガイドで使用する表記上の規則 ............................................................... 6 移行手順 ............................................................................................................... 7 2.1 移行プロセス .................................................................................................. 7 2.2 Postgres へのアプリケーションの接続 ............................................................... 9 3 機能概説 .............................................................................................................. 11 4 Migration Toolkit のインストール ......................................................................... 13 5 4.1 Advanced Server 付属の Migration Toolkit のインストール........................... 13 4.2 Stack Builder を利用した Migration Toolkit のインストール ........................... 14 4.3 ソースに対応したドライバのインストール ..................................................... 28 toolkit.properties ファイルの構築.............................................................................. 29 5.1 Advanced Server URL の定義 ....................................................................... 31 5.2 PostgreSQL URL の定義............................................................................... 33 5.3 Oracle URL の定義 ....................................................................................... 35 5.4 MySQL URL の定義 .................................................................................... 37 5.5 Sybase URL の定義 ...................................................................................... 38 5.6 SQL サーバ URL の定義 ............................................................................. 39 6 Migration Toolkit の実行 ................................................................................... 41 6.1 Oracle からのスキーマの移行 .................................................................. 42 6.2 Oracle 以外のソースデータベースからの移行 ....................................... 43 7 Migration Toolkit コマンドオプション .............................................................. 45 7.1 7.1.1 オフライン移行 .............................................................................................. 46 オフライン移行スクリプトの実行 ............................................................. 47 7.2 インポートオプション ..................................................................................... 47 7.3 スキーマ作成オプション ............................................................................... 48 7.4 スキーマオブジェクト選択オプション ............................................................ 49 7.5 移行オプション ............................................................................................ 51 7.6 Oracle 固有オプション ................................................................................... 55 7.7 その他のオプション .................................................................................... 57 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 3 Postgres Plus Migration Guide 8 移行に関する問題 .............................................................................................. 58 8.1 8.1.1 無効なユーザ名 / パスワード ................................................................... 58 8.1.2 接続リジェクト: FATAL :パスワード ............................................................ 59 8.1.3 例外: ORA-28000: アカウントのロック .................................................... 59 8.1.4 例外: 8.1.5 I/O 例外:ネットワークアダプタが接続を確立できない .............................. 59 8.1.6 例外: 接続失敗 ........................................................................................ 60 8.2 Migration Toolkit 接続エラー .................................................................. 58 oracle.jdbs.driver.Oracle ドライバ ............................................... 59 Migration Toolkit の移行エラー ............................................................. 61 8.2.1 エラー: カラムの最後に余分なデータがある................................................ 61 8.2.2 テーブルへのデータ読み込みエラー: TABLE_NAME が null ......................... 61 8.2.3 CONS_NAME_FK 制約作成エラー............................................................ 61 8.2.4 テーブルへのデータ読み込みエラー........................................................... 62 8.2.5 エラー: タイプに対して値が長すぎる ........................................................... 62 8.2.6 エラー: Toolkit スレッドの例外 : OutOfMemoryError ....................................... 63 8.3 サポートされていない Oracle の機能............................................................ 64 8.4 よくある質問と回答....................................................................................... 65 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 4 Postgres Plus Migration Guide 1 はじめに Migration Toolkit は、移行プロセスのきめ細かい制御を提供する強力なコマンドラインツ ールです。Migration Toolkit は、以下のデータベースから、Advanced Server または PostgreSQL データベースへのデータベースオブジェクトの移行を円滑に行います。 ❷ ❷ ❷ ❷ Oracle MySQL Sybase SQL Server Migration Toolkit によって Advanced Server とPostgreSQL 間の移行も可能です。 Migration Toolkit は、Postgres Plus Advanced Server インストーラー、または Stack Builder を利用してインストールすることができます。Stack Builder は、Advanced Server、 および下記の EnterpriseDB ウェブサイトで入手可能な PostgreSQL オンラインクリ ックインストーラーと共に配布されています。 http://www.enterpris edb.com/downloads /pos tgres -pos tgres ql-downloads 本ガイドは、Migration Toolkit について、移行プロセスに関する手順の高度な説明、 および設定と使用方法の説明を提供します。また、移行に関するよくある問題の解 決法、サポートされていない事項の詳細と可能な対応策についても解説します。 注記: 本ガイドで使用されている用語 Postgres は、Postgres Plus Advanced Server または PostgreSQL のいずれかのインストールを指します。 本ガイドで使用されている用語 Stack Builder は、StackBuilder Plus(Postgres Plus Advanced Server と共に配布)または Stack Builder(EnterpriseDB の PostgreSQL オン ラインクリックインストーラーと共に配布)のいずれかを指します。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 5 Postgres Plus Migration Guide 1.1 本ガイドで使用する表記上の規則 本マニュアルでは、コマンド、命令文、プログラム、例などの意味や使用法を明確に するために特定の表記上の規則を使用しています。本章ではこれらの規則の概要 を説明します。 下記の記述中の語は、言語キーワード、ユーザー指定値、文字などの任意の言葉 や言葉の組み合わせを指します。 ❷ ❷ ❷ ❷ ❷ ❷ ❷ イタリック(斜体)フォントは、新しく出てきた語、特に文中に初出で定義す るものを示します。 固定幅フォント(等幅フォント)は、例中で使われている SQL コマンド、特定 の表やカラム名、プログラミング言語のキーワードなどのように既定の表記 通りに使用しなければならない語を示します。 例: SELECT * FROM emp; イタリック体の固定幅フォントは、実際の使用時にはユーザが値を置き換えな くてはならない語を示します。 例: DELETE FROM table_name; 縦線 (|) は、線の両側の語から選択することを意味します。縦線は、角括 弧(任意で選択)または中括弧(1 つを必須選択)内の 2 つ以上の選択肢を 分けるのに使われます。 角括弧 ([]) は、その中に含まれる語の 1 つを使用するか、または 1 つも使用 しないことを示します。例えば、[ a | b ] は "a" または "b" のうちの 1 つを 選択するか、またはどちらも選択しないことを意味します。 中括弧 ({}) は、その中に含まれる選択肢から必ず 1 つを指定しなければな らないことを示します。例えば、{ a | b } は必ず "a" または "b" のうちどち らか 1 つを指定することを意味します。 点 (...) は、使用する語を繰り返す可能性があることを示します。例えば、 [ a | b ] ... は、 " b a a b a " という連続となる場合があることを意味 します。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 6 Postgres Plus Migration Guide 2 移行手順 あるデータベースから他のデータベースへ移行を検討する理由は数多くあります。移 行によって、新しい技術またはより優れた技術のメリットを受けることができます。も し現在のデータベースがシステムを規模拡大するにあたり適切な能力を有していな いのであれば、必要な機能を備えたデータベースに移行することは、あなたの組織 にとって最適な戦略と言えるでしょう。 移行はまた、費用効果も非常に高いものになり得ます。メンテナンスコストが高いシ ステムを移行することによって、システムの維持管理に掛かる費用を節約できます。 複数のデータベースを一元管理することで、社内の管理コストの削減も可能です。 利用するデータベースのプラットホームの数を少なくすることで(または場合によって はデータベースの互換性を活用して)、現在の IT 予算でこれまで以上のことができ るようになります。 複数のデータベースプラットホームを使えることで、ベンダーの価格設定が上がった り、あるいは企業方針が変わったとしても、快適に移行を行うことができます。 EnterpriseDB は、既存のデータベースから Postgres への移行について長期にわた って企業を支援してきました。 2.1 章 移行プロセス に記載されている手順に沿って実施されることをお勧めします。 2.1 移行プロセス Postgres への移行方法には大きく次のような手順があります。 1. はじめに移行するデータベースオブジェクトとデータを決定します。移行元シ ステムのアーキテクチャと実装について詳しい人物を含めた移行チームを作 ります。 2. 移行の潜在的な問題を特定します。Oracle から Advanced Server への移行で あれば、Postgres Plus Advanced Server Oracle Compatibility Developer's Guide を参照し、Advanced Server がサポートする互換性の特徴について詳細を把握 します。この調査の支援に、EnterpriseDB の移行評価サービスの利用もご検討く ださい。 3. 移行環境を用意します。必要なソフトウェアを用意してインストールし、サーバ 間の接続を構築します。 4. 大規模データを含む移行には、データを移す前にスキーマ定義の移行を 検討します。DDL 移行の結果を確認し、移行サマリーで報告された Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 7 Postgres Plus Migration Guide 問題を解決します。本文書の 8 章 に、移行問題の解決に関する情 報があります。 5. データを移行します。データセットが小さい場合は Migration Toolkit を使用し ます。Oracle(から Advanced Server へ)の移行の場合で、データセットが大き いか、またはデータ転送が遅い場合は、利用可能な他のデータ移動方法を 利用します。 ❷ Advanced Server Oracle 互換データベースリンク機能を使用します。 ❷ データに BLOB または CLOB データがある場合は、Oracle 形式のデ ータベースリンクの代わりに dblink_ora 形式のデータベースリンク を使用します。 これらのいずれの方法も、Oracle への接続に Oracle Call Interface (OCI)を 使用します。接続後、SQLstatement を使用して、‘リンク済みの’ Oracle デ ータベースからデータを選択し、Postgres Plus Advanced Server データベース へデータを挿入します。 6. データ移行の結果を確認し、移行サマリに報告された問題を解決します。 7. 新規に移行した Postgres データベースと共に機能するようにアプリケーショ ンを変換します。JDBC または ODBC などのオープンスタンダードな接続方 法を使用する場合は、通常必要なのはデータベース接続文字列への変更 と EnterpriseDB ドライバーの選択だけです。詳細については、2.2 章 Postgres へのアプリケーションの接続 をご参照ください。 8. システムのパフォーマンスを試験し、新しいサーバを調整します。Advanced Server データベースへの移行の場合は、Advanced Server のパフォーマンスチ ューニングユーティリティをご利用ください: ❷ Dynatune を使用してデータベースのコンフィグリソースを動的に調整 する。 ❷ Optimizer Hint を使用してクエリーパスを指定する。 ❷ ANALYZE コマンドを使用してデータベースの統計値を調べる。 Postgres Plus Advanced Server Performance Features Guide および Postgres Plus Oracle Developer's Guide(いずれも EnterpriseDB ウェブサイトより入手可能)に、 Advanced Server と共に入手可能なパフォーマンスチューニングツールの情報 があります。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 8 Postgres Plus Migration Guide 2.2 Postgres へのアプリケーションの接続 Postgres データベースを使うためにクライアントアプリケーションを変換するには、新 しいターゲットデータベースを指定するように接続プロパティを変更する必要があり ます。Java アプリケーションの場合は、JDBC ドライバ名(Class.forName )および JDBC URL を変更します。 Oracle 上で実行する Java アプリケーションには、下記の接続プロパティがある場合が あります。 Class.forName("oracle.jdbc.driver.OracleDriver"); Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "user", "password") 接続文字列を Postgres への接続に変更します。 Class.forName("com.edb.Driver") Connection con = DriverManager.getConnection("jdbc:edb://localhost:5444/edb", "user", "password"); ODBC アプリケーションを Postgres のインスタンスへの接続に変換するには 2 ステ ップのプロセスがあります。ODBC アプリケーションの接続するには: 1. ODBC データソースアドミニストレーターを使用し、新しいターゲットデータ ベースの接続プロパティを定義するデータソースを作成します。 ほとんどの Linux および Windows システムには、ODBC データソースを作成、編集 するためのグラフィカルツールが含まれています。ODBC をインストールした後、ODBC Data Source Administrator へリンクするために Administrative Tools メニュ ーを確認してください。Add ボタンをクリックして Create New Data Source ウィザ ードを開始します。ダイアログを完了して新しいターゲットデータソースを定義します。 2. 新しいデータソースを使用するようにアプリケーションを変更します。 アプリケーションに含まれる SQLConnect(場合により SQLDriverConnect)の呼び 出しを、データベースソース名に変えるように編集します。下記の例では、データソー スは"OracleDSN" という名前です: result = SQLConnect(conHandle, "OracleDSN", SQL_NTS, username, SQL_NTS, password, SQL_NTS); // // // // Connection handle (returned) Data s ource name User name Password "PostgresDSN" というデータソース名で定義された Postgres のインスタンスへ接続す るようデータソース名を変更します: Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 9 Postgres Plus Migration Guide result = SQLConnect(conHandle, "PostgresDSN", SQL_NTS, SQL_NTS, password, SQL_NTS); // Connection handle (returned) // Data source nameusername, // User name // Password アプリケーションとサーバ間の接続確立後、アプリケーションと移行したスキーマ間 の互換性の問題を見つけるためアプリケーションを試験します。ほとんどの場合、 アプリケーションに起こる不適合は簡単な変更によって解決可能です。サポートさ れていない機能の場合は、回避方法やサードパーティのツールを使用してアプリケ ーションが必要とする機能を提供します。よくある問題や回避方法に関する情報は 8 章 移行問題 をご参照ください。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 10 Postgres Plus Migration Guide 3 機能概説 Migration Toolkit は、移行プロセスのきめ細かい制御を提供する強力なコマンドラインツ ールです。Migration Toolkit には多数のオプションが含まれており、移行プロセスのきめ 細かい制御を可能にします。 ❷ -safeMode オプションは、移行された各行をそのままコミットするために使用 します。 ❷ ❷ ❷ ❷ オプションは、移行を最適化するため、WAL ログを回避する ために使用します。 -batchSize オプションは、バルクインサートのバッチサイズを管理するため に使用します。 -fastCopy -cpBatchSize オプションは、COPY コマンドで使うバッチサイズを指定するために使 用します。 -filterProp オプションは、ユーザ定義条件に適合する行のみを移行する ために使用します ❷ ❷ ❷ ❷ -customColTypeMapping オプションは、選択したカラムのデータタイプを 変更するために使用します -dropSchema オプションは、移行の前に既存のスキーマを削除し新し いスキーマ作成するために使用します。 Advanced Server では、-allDBLinks オプションは全ての Oracle データベー スリンクを移行するために使用します。 Advanced Server では、-copyViaDBLinkOra オプションは dblink_ora モジ ュールを有効化するために使用します。 Migration Toolkit は、以下の 2 ステップで使用します。 1. toolkit .properties ファイルを編集してソースデータベースとターゲットデ ータベースを指定する。 2. コマンドラインで Migration Toolkit を起動し、移行オプションを指定する。 Migration Toolkit は、Advanced Server または PostgreSQL データベースか ら下記へのデータベースオブジェクトおよびデータの移行を支援します。 ❷ ❷ ❷ ❷ Oracle MySQL Sybase SQL Server Migration Toolkit を利用して Advanced Server と PostgreSQL 間の移行も可能です。 toolkit .properties エントリーの定義に関する詳細情報は、5 章 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 11 Postgres Plus Migration Guide toolkit.properties ファイルの構築 をご参照ください。 オブジェクト移行サポート Migration Toolkit は、オブジェクト定義(DDL)、テーブルデータ、またはその両方を 移行します。下表に Migration Toolkit で移行可能なデータベースオブジェクトタイプ のプラットホーム別一覧を示します。 オブジェクト スキーマ テーブル パーティションリストテーブル パーティションレンジテーブル 制約 インデックス トリガ テーブルデータ ビュー パッケージ プロシージャ ファンクション シーケンス ユーザ/ロール オブジェクトタイプ データベースリンク Oracle X X X X X X X X X X X X X X X X Sybase X X X X X SQ L Server X X X X X X MySQ L X X X X X インポートしたオブジェクトを細かく管理するためのコマンドに関する詳細情報につ いては、7.4章 スキーマオブジェクト選択オプション をご参照ください。 オンライン移行とオフライン移行 Migration Toolkit は、Postgres データベースへの迅速で直接的な移行(オンライン 移行)が可能なだけでなく、スクリプトを生成して Postgres データベース中のオブジ ェクト定義を後で再作成することも選択できます(オフライン移行)。 デフォルトでは、Migration Toolkit はオブジェクトを Postgres データベースに直接作 成します。一方で、-offlineMigration オプションを使用して SQL スクリプトを生 成し、後で移行したオブジェクトやデータを新しいデータベース中で再作成す ることもできます。Migration Toolkit によって生成された移行スクリプトをカスタマ イズして、実行する前に移行したオブジェクトを変更することも可能です。offlineMigration オプションを使えば、システム実行に最適な時間に実際の移 行を予約することが可能です。 -offlineMigration オプションに関する詳細情報については、7.1 章 オフライン移行 をご参照ください。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 12 Postgres Plus Migration Guide 4 Migration Toolkit のインストール Migration Toolkit は、Postgres Plus Advanced Server インストーラと共に配布されてい ます。Stack Builder を使用して Advanced Server または PostgreSQL のインストー ルに Migration Toolkit を追加することもできます。(Stack Builder は、EnterpriseDB から入手可能な Advanced Server および PostgreSQL ワンクリックインストーラと共 に配布されています。) Stack Builder を使用したインストールの実行についての情報は、4.2 章 Stack Builder を利用した Migration Toolkit のインストール をご参照ください。 4.1 Advanced Server 付属の Migration Toolkit のインストール Postgres Plus Advanced Server インストールウィザードによる Migration Toolkit の イ ン ス ト ー ル を 確 実 に 行 う た め に 、 Select Components ダ イ ア ロ グ で Migration Toolkit オプションがチェックされていることを確認してください(下 図 4.1)。 図 4.1 - Advanced Server インストールウィザードの Select Components ダイアログ Advanced Server 付属の Migration Toolkit をインストール後、移行を実行する前にソ ースに対応したドライバのインストールが必要です。詳細は 4.3 章 をご参照ください。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 13 Postgres Plus Migration Guide 4.2 Stack Builder を利用した Migration Toolkit のインストール ご注意ください: 本ガイドで使用する Stack Builder という語は、StackBuilder Plus (Postgres Plus Advanced Server と共に配布) または Stack Builder (EnterpriseDB か ら PostgreSQL ワンクリックインストーラと共に配布)のいずれかを指します。 Stack Builder インストールウィザードを使用して、PostgreSQL または Advanced Server のどちらにも Migration Toolkit をインストールすることが可能です。 Advanced Server 付属の StackBuilder Plus から開始する インストール完了時、Advanced Server インストールウィザードが StackBuilder Plus を開くことを提案します。インストール済みの Advanced Server から StackBuilder Plus を開始するには、Start (または Applications )メニューから Postgres Plus Advanced Server メニューを探し、StackBuilder Plus メニューオプションを選択し てください。 PostgreSQL 付属の Stack Builder から開始する EnterpriseDB ワンクリックインストーラを使用して PostgreSQL をインストールする 場合は、インストール完了時にインストーラが Stack Builder を開くことを提案し ます。Stack Builder が Migration Toolkit のインストールを実行する前に、Java JVM が必要であることにご注意ください。(Postgres Plus Advanced Server インストーラは 本条件を満たします。) 下記 URL で Java インストーラとインストール説明書の無償ダウンロードが可能です。 http://www.java.com/en/download/index.js p Java 実行ファイルが検索パスに無ければなりません( Windows では %PATH% 、 Linux/Unix では $PATH )。下記のコマンドを使用して検索パスを設定してください (javadir となっている Java 実行ファイルのディレクトリ名は置き換えてください)。 Windows で使用するコマンド SET PATH=javadir;%PATH% Linux で使用するコマンド PATH=javadir:$PATH Stack Builder を 開 く に は 、 Start ( ま た は Applications ) メ ニ ュ ー か ら PostgreSQL 設定メニューを探して、Application Stack Builder メニューオプ ションを選択してください。下図 4.2 のように Stack Builder が開きます。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 14 Postgres Plus Migration Guide 図 4.2 - Stack Builder ウェルカムウインドウ ドロップダウンリストボックスを使用して、使用可能なサーバのリストからターゲットサーバを選択 してください。インターネットへのアクセスにプロキシサーバを使う必要があるネットワークでは、 Proxy servers ボタンをクリックして Proxy servers ダイアログを開き、プロキシサーバを 指定してください。プロキシサーバを追加する必要がない場合は、Next をクリックしてアプリケー ション選択ウインドウを開いてください。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 15 Postgres Plus Migration Guide 図 4.3 - Stack Builder アプリケーション選択ウインドウ Stack Builder を使用して PostgreSQL のインストールに Migration Toolkit を追加す る場合は、ツリーコントロールの EnterpriseDB ノード(Registration- required and trial products の下にあります)を開いて、Migration Toolkit v1.0-4 の 横にあるボックスにチェックを入れてください(図 4.3)。Next をクリックして進みます。 StackBuilder Plus を使用して Advanced Server のインストールに Migration Toolkit を 追加する場合は、ツリーコントロールの Add-ons, tools and utilities ノードを 開いて EnterpriseDB Migration Toolkit の横にあるボックスにチェックを入れ てください。Next をクリックして進みます。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 16 Postgres Plus Migration Guide 図 4.4 - Stack Builder 選択確認ウインドウ リストに Migration Toolkit が含まれていることと、Migration Toolkit フィールドにダウンロード可能な場所が指定されていることを確認してくださ い(図 4.4)。Next をクリックして Migration Toolkit のダウンロードを開始します。 Selected Packages Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 17 Postgres Plus Migration Guide 図 4.5 - Stack Builder ファイルダウンロードの結果確認 ダウンロードが完了すると、Stack Builder はインストールファイルのダウンロードが 成功したことを表示します(図 4.5)。Next を選択して Migration Toolkit インストールウ ィザードを開いてください。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 18 Postgres Plus Migration Guide 図 4.6 - Migration Toolk it インストールウィザード Migration Toolkit インストールウィザードが開きます。Next をクリックして進みます。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 19 Postgres Plus Migration Guide 図 4.7 - The EnterpriseDB ライセンス契約. ラジオボタンを選択する前にライセンス契約をよくお読みください(図 4.7)。Next をクリッ クしてユーザ登録ウインドウ(図 4.8)に進みます。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 20 Postgres Plus Migration Guide Figure 4.8 - インストール前に登録が必要 Migration Toolkit のインストールを行うには、EnterpriseDB ユーザアカウントに使わ れているメールアドレスおよびパスワードが必要です。登録は無料で、登録後は Migration Toolkit インストーラを含む各種の EnterpriseDB リソースへのアクセスが 可能になります。 ❷ EnterpriseDB にユーザ登録済みの場合は、I already have an enterprisedb.com user account の横にあるラジオボタンをクリックして、 EnterpriseDB User Account Information ウインドウ(図 4.10)に進んでください。 ❷ EnterpriseDB ユーザアカウントをお持ちでない場合は、I do not have an enterprisedb.com user account の横にあるラジオボタンをクリックして、 ブラウザ(図 4.9)を開き、登録情報を入力してください。 ラジオボタンを選択したら、 Next をクリックして進みます。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 21 Postgres Plus Migration Guide Figure 4.9 - ユーザログイン /登録ページ . EnterpriseDB ユーザに未登録の場合は、この Login/Registration ウインドウに て必要事項を記入し、REGISTER をクリックして進んでください。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 22 Postgres Plus Migration Guide 図 4.10 - The EnterpriseDB ユーザアカウント情報ウインドウ. EnterpriseDB ユーザアカウントで使用しているメールアドレスとパスワードを入力し、 Next をクリックして進みます。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 23 Postgres Plus Migration Guide 図 4.11 - Migration Toolk it をインストールするディレクトリの指定 デフォルトでは、Migration Toolkit は PostgresPlus ディレクトリの下にインストールさ れます(図 4.11)。このままインストールするか、ディレクトリを変更し、Next をクリックし て進みます。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 24 Postgres Plus Migration Guide 図 4.12 - Migration Toolk it インストール準備完了 プログラムが Migration Toolkit のインストール準備を完了したことを、インス トーがルウィザードが確認します。Next をクリックしてインストールを開始してくださ い。 Setup Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 25 Postgres Plus Migration Guide 図 4.13 - Stack Builder がインストール完了を確認 Migration Toolkit のインストールが完了したことを確認するダイアログが表示されま す(図 4.13)。Finish をクリックしてインストーラを修了してください。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 26 Postgres Plus Migration Guide 図 4.14 - Stack Builder がインストール完了を確認 最後に選択したコンポーネントのインストール終了時に、Stack Builder は Installation Completed ウインドウを表示します(図 4.14)。Finish をクリックして Stack Builder を閉じてください。 Stack Builder の Migration Toolkit インストール後、移行を実行する前にソースに 対応したドライバのインストールが必要です。詳細は 4.3 章をご参照ください。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 27 Postgres Plus Migration Guide 4.3 ソースに対応したドライバのインストール Migration Toolkit を起動する前に、ソースに対応したドライバのインストールが必要 です。ソース対応ドライバは無償で入手可能です。ドライバをダウンロードまたはベン ダのダウンロードサイトへリンクするには、EnterpriseDB ウェブサイトの Third Party JDBC Drivers ページをご利用ください。 http://www.enterprisedb.com/downloads/third-party-jdbc-drivers ソース対応ドライバのダウンロード後、Advanced Server へ移行する場合は、ドライバ ファイルを Postgres ホームディレクトリの下の jre/lib/ext ディレクトリに移動して 下さい。PostgreSQL へ移行する場合は、ドライバファイルを JVM がインストールされ ているディレクトリの下の jre/lib/ext ディレクトリに移動して下さい。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 28 Postgres Plus Migration Guide 5 toolkit.properties ファイルの構築 Migration Toolkit は、移行プロセス時にソースおよびターゲットデータベースを特定 し接続するために、toolkit.properties ファイルに保存されている設定情報およ び接続情報を使用します。ファイル格納場所はデフォルトでは下記の通りです。 Advanced Server の toolkit.properties ファイル (Linux の場合) : /opt/PostgresPlus/9.2AS/etc 同 Windows の場合: C:\Program Files\PostgresPlus\9.2AS\etc PostgreSQL の toolkit.properties ファイル (Linux の場合): /opt/PostgresPlus/EnterpriseDB-MigrationToolkit 同 Windows の場合: C:\Program Files\PostgresPlus\EnterpriseDB-MigrationToolkit toolkit.properties ファイルのサンプルを図 5.1 に示します。 図 5.1 - 典型的な toolkit.properties ファイル Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 29 Postgres Plus Migration Guide Migration Toolkit のコマンドを実行する前に、toolkit.properties ファイルをお 好みのエディタを使用して編集してください。下記の情報を含めてファイルを更新し てください。 は、Migration Toolkit がソースデータベースにどのように接続 するかを指定します。URL の作成に関する詳細についてはご使用のソース データベースに対応する章をご参照ください。 ❷ SRC_DB_URL ❷ SRC_DB_USER ❷ SRC_DB_PASSWORD ❷ TARGET_DB_URL ❷ TARGET_DB_USER ❷ TARGET_DB_PASSWORD 定します。 は、ソースデータベースのユーザ名(必要な特権を有する もの)を指定します。 は、ソースデータベースのユーザのパスワードを指定します。 は、ターゲットデータベースの JDBC URL を指定します。 は、ターゲットデータベースの特権ユーザ名を指定します。 は、ターゲットデータベースのユーザのパスワードを指 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 30 Postgres Plus Migration Guide 5.1 Advanced Server URL の定義 Migration Toolkit は、以下のプラットホームから Advanced Server への移行を支援し ます。 ❷ ❷ ❷ ❷ ❷ Oracle MySQL Sybase SQL Server PostgreSQL 各データベースタイプから移行するオブジェクトについての詳細一覧は、3 章機能概 説 をご参照ください。 Migration Toolkit は、toolkit.properties ファイルからソースおよびターゲットデ ータベースに関する接続仕様を読み込みます。各接続情報には、下記が含まれて いる必要があります。 ❷ ❷ ❷ データベースの URL 特権ユーザ名 指定したユーザのパスワード URL は、JDBC 標準に準拠した、下記の形式でなければなりません。 {TARGET_DB_URL|SOURCE_DB_URL}=jdbc:edb://host:port/database_id Advanced Server のURL には、下記の情報を含みます。 jdbc プロトコルは、常に jdbc です。 edb Advanced Server を使用している場合は、サブプロトコル値に edb を指定しま す。 host Postgres インスタンスを実行するホスト名、またはホストの IP アドレスです。 port Advanced Server データベースのリスナーが監視しているポート番号です。デ フォルトのポート番号は 5444 です。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 31 Postgres Plus Migration Guide database_id ソースおよびターゲットデータベースの名前です。 {TARGET_DB_USER|SOURCE_DB_USER}には、移行された各種オブジェクトを CREATE するために特権ユーザを指定する必要があります。テーブルにデータを 移行すると、指定のユーザは各ターゲットテーブルの INSERT 、TRUNCATE、および REFERENCES 特権も必要になる場合があります。 {TARGET_DB_PASSWORD|SOURCE_DB_PASSWORD}には、Advanced Server ユーザのパスワードを設定します。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. の特権 32 Postgres Plus Migration Guide 5.2 PostgreSQL URL の定義 Migration Toolkit は、以下のプラットホームから PostgreSQL への移行を支援します。 ❷ ❷ ❷ ❷ ❷ Oracle MySQL Sybase SQL Server Postgres Plus Advanced Server 各データベースタイプから移行するオブジェクトについての詳細一覧は、3 章機能概 説 をご参照ください。 Migration Toolkit は、toolkit.properties ファイルからソースおよびターゲットデ ータベースに関する接続仕様を読み込みます。各接続情報には、下記が含まれて いる必要があります。 ❷ ❷ ❷ データベースの URL 特権ユーザ名 指定したユーザのパスワード PostgreSQLURL は、JDBC 標準に準拠した、下記の形式でなければなりません。 {SOURC E_DB _URL |TAR GET_ DB_U RL}= jdbc :pos tgre sql: //ho st:p ort/ data base _id URL には、下記の情報を含みます。 jdbc プロトコルは、常に jdbc です。 postgresql PostgreSQL を使用している場合は、サブプロトコル値に postgresql を指定 します。 host Postgres インスタンスを実行するホスト名、またはホストの IP アドレスです。 port Postgres データベースのリスナーが監視しているポート番号です。デフォルト のポート番号は 5432 です。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 33 Postgres Plus Migration Guide database_id ソースおよびターゲットデータベースの名前です。 {TARGET_DB_USER|SOURCE_DB_USER}には、移行された各種オブジェクトを CREATE するために特権ユーザを指定する必要があります。テーブルにデータを 移行すると、指定のユーザは各ターゲットテーブルの INSERT 、TRUNCATE、および REFERENCES 特権も必要になる場合があります。 {TARGET_DB_PASSWORD|SOURCE_DB_PASSWORD}には、PostgreSQL ザのパスワードを設定します。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. の特権ユー 34 Postgres Plus Migration Guide 5.3 Oracle URL の定義 Migration Toolkit は、Oracle データベースから PostgreSQL または Advanced Server データベースへの移行を支援します。Oracle から移行する場合は、 toolkit.properties ファイルに Oracle ソースデータベースへの接続仕様を指定 する必要があります。接続情報には、以下を含めなければなりません。 ❷ ❷ ❷ Oracle データベースの URL 特権ユーザ名 指定したユーザのパスワード Oracle データベースから移行する場合、SRC_DB_URL の中で 2 つの形式のうちの いずれかに JDBC URL を指定しなければなりません。1 番目の形式: jdbc:o racl e:th in:@ host _nam e:po rt:d atab ase_ id 2 番目の形式: jdbc:o racl e:th in:@ //ho st_n ame: port /{da taba se_i d|se rvic e_na me} Oracle URL には、下記の情報を含みます。 jdbc プロトコルは、常に jdbc です。 oracle サブプロトコルは、常に oracle です。 thin ド ラ イ バ の タ イ プ で す 。 ド ラ イ バ タ イ プ に は thin を 指 定 し ま す 。 host_name Oracle サーバを実行するホスト名、またはホストの IP アドレスです。 port Oracle データベースのリスナーが監視しているポート番号です。 database_id Oracle データベースのデータベース SID です。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 35 Postgres Plus Migration Guide service_name Oracle サービス名です。 SRC_DB_USER には必ず Oracle の特権ユーザを指定します。 SRC_DB_PASSWORD には特権ユーザのパスワードを入れなければなりません。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 36 Postgres Plus Migration Guide 5.4 MySQL URL の定義 Migration Toolkit は、MySQL データベースから PostgreSQL または Advanced Server データベースへの移行を支援します。MySQL から移行する場合は、 toolkit.properties ファイルに MySQL ソースデータベースへの接続仕様を指定 する必要があります。接続情報には、以下を含めなければなりません。 ❷ ❷ ❷ ソースデータベースの URL 特権ユーザ名 指定したユーザのパスワード MySQL から移行する場合、SRC_DB_URL は JDBC URL 形式でなければなりませ ん。 例: jdbc:mysql://host_name[:port]/database_id MySQLURL には、下記の情報を含みます。 jdbc プロトコルは、常に jdbc です。 mysql サブプロトコルは、常に mysql です。 //host_name ソースサーバを実行するホスト名、またはホストの IP アドレスです。 [port] MySQL データベースのリスナーが監視しているポート番号です。 /database_id ソースデータベースの名前です。 SRC_DB_USER には必ず MySQL の特権ユーザを指定します。 SRC_DB_PASSWORD には特権ユーザのパスワードを入れなければなりません。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 37 Postgres Plus Migration Guide 5.5 Sybase URL の定義 Migration Toolkit は、Sybase データベースから PostgreSQL または Advanced Server データベースへの移行を支援します。Sybase から移行する場合は、 toolkit.properties ファイルに Sybase ソースデータベースへの接続仕様を指定 する必要があります。接続情報には、以下を含めなければなりません。 ❷ ❷ ❷ ソースデータベースの URL 特権ユーザ名 指定したユーザのパスワード Sybase から移行する場合、SRC_DB_URL は JTDS URL 形式でなければなりません。 例: jdbc:jtds:sybase://host_name[:port]/database_id Sybase URL には、下記の情報を含みます。 jdbc プロトコルは、常に jdbc です。 jtds ドライバ名は、常に jtds . sybase です。 sybase サーバタイプは常に sybase です。 host_name ソースサーバを実行するホスト名、またはホストの IP アドレスです。 port Sybase データベースのリスナーが監視しているポート番号です。 database_id ソースデータベースの名前です。 SRC_DB_USER には必ず Sybase の特権ユーザを指定します。 SRC_DB_PASSWORD には特権ユーザのパスワードを入れなければなりません。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 38 Postgres Plus Migration Guide 5.6 SQL サーバ URL の定義 Migration Toolkit は、SQL Server データベースから PostgreSQL または Advanced Server データベースへの移行を支援します。Migration Toolkit は、以下のオブジェク ト定義の移行をサポートします。 ❷ ❷ ❷ ❷ ❷ スキーマ テーブル テーブルデータ 制約 インデックス Migration Toolkit は、toolkit.properties ファイルからソースデータベースへの接 続仕様を読み込みます。接続情報には、以下を含めなければなりません。 ❷ ❷ ❷ SQL Server データベースに接続する場合、SRC_DB_URL は JTDS URL 形式でなけ ればなりません。 例: jdbc:jtds:sqlserver://server[:port]/database_id ソースデータベースの URL 特権ユーザ名 指定したユーザのパスワード SQL Server URL には、下記の情報を含みます。 jdbc プロトコルは、常に jdbc です。 jtds ドライバ名は、常に jtds です。 sqlserver サーバタイプは、常に sqlserver です。 server_name ソースサーバを実行するホスト名、またはホストの IP アドレスです。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 39 Postgres Plus Migration Guide port ソースデータベースのリスナーが監視しているポート番号です。 database_id ソースデータベースの名前です。 SRC_DB_USER には必ず SQLServer の特権ユーザを指定します。 SRC_DB_PASSWORD には特権ユーザのパスワードを入れなければなりません。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 40 Postgres Plus Migration Guide 6 Migration Toolkit の実行 Migration Toolkit をインストールした後、toolkit.properties ファイルにソースお よびターゲットデータベースの接続プロパティを指定すれば、Migration Toolkit によ る移行の実行準備は整いました。 Migration Toolkit の実行ファイルの名前は、Linux/Unix システムでは runMTK.sh、 Windows システムでは runMTK.bat です。実行ファイル格納場所は下記の通りです。 Advanced Server で Linux の場合: /opt/PostgresPlus/9.2AS/bin 同 Windows の場合: C:\Program Files\PostgresPlus\9.2AS\bin PostgreSQL で Linux の場合: /opt/PostgresPlus/EnterpriseDB-MigrationToolkit 同 Windows の場合: C:\Program Files\PostgresPlus\EnterpriseDBMigrationToolkit NULL デ ー タ 値 の イ ン ポ ー ト Migration Toolkit は、JDBC 接続プロトコルを使用した NULL データ値のインポート をサポートしていません。NULL 文字を含むデータをインポートするには、replaceNullChar オプションを使用して、NULL 値をシングル非 NULL 文字で置き 換えてください。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 41 Postgres Plus Migration Guide 6.1 Oracle からのスキーマの移行 Migration Toolkit は、コマンドラインで指定しない限り、データベースは Oracle、ター ゲットデータベースは Advanced Server であるとみなします。Linux 上で全てのスキ ーマを移行するには、実行ファイルで下記のコマンドを呼び出してください。 $ ./runMTK.sh schema_name Windows 上で全てのスキーマを移行するには、実行ファイルで下記のコマンドを呼 び出してください。 > .\runMTK.bat schema_name ここで、 schema_name schema_name は、移行したいソースデータベース内のスキーマの名前 (toolkit.properties ファイルで指定したもの) です。少なくとも1つの schema_name を含める必要があります。 下記のコマンド名を使用して、スキーマ名をコンマで区切って指定することで、複数 のスキーマを移行することができます。 Linux の場合は、下記コマンドを実行します。 $ ./runMTK.sh schema_name1,schema_name2,schema_name3 Windows の場合は、下記コマンドを実行します。 > .\runMTK.bat schema_name1,schema_name2,schema_name3 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 42 Postgres Plus Migration Guide 6.2 Oracle 以外のソースデータベースからの移行 ソースデータベースタイプおよびターゲットデータベースタイプを指定しない場合、 Postgres は、ソースデータベースを Oracle、ターゲットデータベースを Postgres Plus Advanced Server であるとみなします。 Migration Toolkit を起動するには、コマンドウインドウを開いて、Advanced Server が インストールされているディレクトリの下にある migrationstudio ディレクトリに移 動してください。そして下記のコマンドで Migration Toolkit を起動します。 $ ./runMTK.sh –sourcedbtype db_type –targetdbtype target_type [options, …] schema_name; ここで、 -sourcedbtype source_type はソースデータベースのサーバタイプを指定します。 は大文字と小文字を区別しません。デフォルトでは、 は oracle です。source_type は下記の値のいずれかになる 場合があります。 source_type source_type source_type 移行元 Oracle MySQL SQL Server Sybase PostgreSQL Advanced Server 指定値 oracle (デフォルト値) mysql sqlserver sybase postgres ま た は postgresql enterprisedb -targetdbtype target_type はターゲットデータベースのサーバタイプを指定します。 は大文字と小文字を区別しません。デフォルトでは、 は enterprisedb です。target_type は下記の値のいず れかになる場合があります。 target_type target_type target_type 移行先 Advanced Server PostgreSQL 指定値 enterprisedb postgres ま た は postgresql schema_name schema_name は、ソースデータベース内のスキーマ名 (toolkit.properties ファイルで指定したもの)です。少なくとも schema_name を含めなくてはなりません。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 1 つの 43 Postgres Plus Migration Guide 下記は、HR という名前のスキーマを、Linux システム上の MySQL データベース から Advanced Server ホストへ移行する例です。コマンドに-sourcedbtype と targetdbtype オプションが含まれることにご注意ください。 $ ./runMTK.sh -sourcedbtype mysql -targetdbtype enterprisedb HR Windows の場合は下記のコマンドを使用します。 > .\runMTK.bat -sourcedbtype mysql -targetdbtype enterprisedb HR Migration Toolkit コマンドの最後にスキーマ名をコンマで区切って指定することで、ソ ースデータベースから複数のスキーマを移行することができます。下記は、HR と ACCTG という名前の 2 つのスキーマを、MySQL データベースから PostgreSQL デー タベースへ移行する例です。 Linux の場合は、MySQL データベースから複数のスキーマを移行するのに下記の コマンドを使用します。 $ ./runMTK.sh -sourcedbtype mysql -targetdbtype postgres HR,ACCTG Windows の場合は、下記のコマンドを使用します。 > .\runMTK.bat -sourcedbtype mysql -targetdbtype postgres HR,ACCTG Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 44 Postgres Plus Migration Guide 7 Migration Toolkit コマンドオ プション Migration Toolkit の実行時、都合に合わせて移行の詳細を制御するには、移行オ プションを追加してください。例えば、データベース内のすべてのスキーマを移行 するには、コマンドに-allSchemas オプションを追加します。 $ ./runMTK.sh -allSchemas 本文書の 7.1 章から 7.7 章に、Migration Toolkit で使用する各コマンドオプシ ョンの参考資料があります。これらのオプションは、その動作によってグルー プ分けされています。下表に、各機能のグループが記載されている本文書内 の章番号を示します。 機 能 オフライン移行 7.1 インポートオプション 7.2 スキーマ作成オ プション 7.4 スキーマオブジェクト選 択オプション 移行オプション -offlineMigration -sourcedbtype, -targetdbtype, -schemaOnly, dataOnly -dropSchema, -targetSchema 7.3 関 連 す る オ プ シ ョ ン 章 7.5 Oracle 固有のオプション 7.6 その他のオプション 7.7 -allTables, -tables, -importPartitionAsTable, -constraints, -ignoreCheckConstFilter, -skipCKConst, -skipFKConst, -skipColDefaultClause, -indexes, -triggers, -allViews, -views, -allSequences, -sequences, -allProcs, -procs, -allFuncs, -funcs, -checkFunctionBodies, -allPackages, -packages, -allRules, -truncLoad, -enableConstBeforeDataLoad, -retryCount, -safeMode, -fastCopy, -analyze, vacuumAnalyze, -replaceNullChar, -copyDelimiter, -batchSize, -cpBatchSize, -fetchSize, -filterProp -customColTypeMapping, -customColTypeMappingFile -replaceNullChar -allUsers, -users, -objectTypes, -copyViaDBLinkOra, -allDBLinks -allSynonyms, -allPublicSynonyms, -allPrivateSynonyms -help, -version, -verbose, -logDir Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 45 Postgres Plus Migration Guide 7.1 オ フ ラ イ ン 移 行 コマンドラインで-offlineMigration オプションを指定すると、Migration Toolkit は オフライン移行を実行します。オフライン移行実行時、Migration Toolkit は選択した 各オブジェクトの定義を読み込んで、後で実行時に Postgres に各オブジェクトを複製 する SQL スクリプトを作成します。 注記:下記は、Linux で Migration Toolkit を起動する場合の例です。Windows で Migration Toolkit を起動する場合は、runMTK.sh コマンドを runMTK.bat コマンド に置き換えてください。 スキーマおよびデータの両方のオフライン移行を実行するには、offlineMigration キーワードを指定し、その後ろにスキーマ名を続けます。 $ ./runMTK.sh -offlineMigration schema_name 各データベースオブジェクト定義は、ユーザのホームフォルダ内に、スキーマ名およ びオブジェクトタイプから名前を付けられた別のファイルが保存されます。ファイルの 保存に他の場所を指定するには、-offlineMigration オプションの後ろにディレク トリ名を指定します。 $ ./runMTK.sh -offlineMigration file_dest schema_name スキーマオブジェクトだけのオフライン移行を実行する(空のテーブルを作成する)に は、Migration Toolkit 実行時に-offlineMigration キーワードに加えてschemaOnly キーワードを指定します。 $ ./runMTK.sh -offlineMigration -schemaOnly schema_name データだけのオフライン移行を実行する(スキーマオブジェクト定義を除外する)には、 Migration Toolkit 実行時に-dataOnly キーワードと-offlineMigration キーワード を指定します。 $ ./runMTK.sh -offlineMigration -dataOnly schema_name デフォルトでは、データは COPY フォーマットで書かれています。プレーン SQL フォ ーマットでデータを書くには、-safeMode キーワードを指定します。 $ ./runMTK.sh -offlineMigration -dataOnly -safeMode schema_name デフォルトでは、テーブルデータを含むオフライン移行の実行時、各テーブルごとに 別ファイルが作成されます。複数テーブルを含む単一のファイルを作成するには、singleDataFile キーワードを指定します。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 46 Postgres Plus Migration Guide ./runMTK.sh -offlineMigration -dataOnly -singleDataFile safeMode schema_name -‐s ingleDataFile オプションは、。プレーン SQL フォーマットのデータの移行時にの み利用可能であることにご注意ください。-singleDataFile オプションを使う場合は、 -‐s afeMode キーワードを入れなければなりません。 7.1.1 オフライン移行スクリプトの実行 コマンドライン(Advanced Server の場合)または psql コマンドライン (PostgreSQL の場合)を使うと、オフライン移行中に生成されたスクリプトを実行するこ とができます。下記は、hr という名前のスキーマを、Advanced Server に格納された acctg という名前の新しいデータベースに復元する例です。 edb-psql 1. createdb ユーティリティを使用して、移行したデータベースオブジェク トを復元する acctg データベースを作成します。 createdb -U enterprisedb acctg 2. edb-psql で新しいデータベースに接続します。 edb-psql -U enterprisedb acctg 3. \i メタコマンドを使用して、オブジェクト定義を作成する移行スクリプトを起 動します。 acctg=# \i ./mtk_hr_ddl.sql 4. -offlineMigration コマンドに-singleDataFile キーワードが含まれる 場合、mtk_hr_data.sql スクリプトには新しいターゲットデータベース内 に全オブジェクトを再作成するのに必要なコマンドが含まれます。このコマ ンドでデータベースに追加します。 acctg=# \i ./mtk_hr_data.sql 7.2 インポートオプション Migration Toolkit は、デフォルトではソースデータベースを Oracle、ターゲットデータ ベースを Advanced Server であるとみなします。デフォルト以外のソースおよびターゲ ットデータベースを指定するには、-sourcedbtype および-targetdbtype キーワー ドを含めます。 Migration Toolkit は、デフォルトではスキーマの移行時にデータおよびオブジェクト 定義の両方をインポートします。データまたはオブジェクト定義のいずれか選択して をインポートすることもできます。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 47 Postgres Plus Migration Guide -sourcedbtype source_type オプションは、ソースデータベースタイプを指定します。 source_type は、mysql 、oracle 、sqlserver 、 sybase、postgresql また は enterprisedb のうちのいずれか 1 つの値である場合があります。 source_type は、大文字と小文字を区別しません。デフォルトでは、 source_type は oracle です。 -sourcedbtype -targetdbtype target_type オプションは、ターゲットデータベースタイプを指定します。 target_type は、enterprisedb 、postgres または postgresql のうち のいずれか 1 つの値である場合があります。target_type は、大文字と小 文字を区別しません。デフォルトでは、target_type は enterprisedb で す。 -targetdbtype -schemaOnly このオプションは、スキーマ定義をインポートし、ターゲットデータベースに選 択した全てのスキーマオブジェクトを作成します。このオプションは、dataOnly オプションと同時に使用することはできません。 -dataOnly このオプションは、テーブルデータだけをコピーします。-tables オプション と一緒に使用する場合、Migration Toolkit は選択したテーブルだけのデータ をインポートします(詳細は後述をご参照ください)。このオプションは、schemaOnly オプションと同時に使用することはできません。 7.3 スキーマ作成オプション Migration Toolkit は、デフォルトではソーススキーマオブジェクトやデータを同じ名前 のスキーマにインポートします。ターゲットスキーマが存在しない場合、Migration Toolkit は新しいスキーマを作成します。-targetSchema オプションを使用して、スキ ーマ名を指定することもできます。下記のオプションを使用すれば、既存スキーマを 削除して新しいスキーマを作成することができます。 -dropSchema [true|false] を設定した場合、Migration Toolkit は既存スキーマ(およびスキーマ内 のオブジェクト)を削除し、新しいスキーマを作成します(デフォルトでは、dropSchema は false に設定されています。) true -targetSchema schema_name Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 48 Postgres Plus Migration Guide オプションを使用して、移行されたスキーマの名前を指定し ます。複数のスキーマを移行する場合は、各スキーマの名前をコンマで区切 って指定します。コマンドラインに-targetSchema オプションを含まない場合 は、新しいスキーマはソーススキーマと同じ名前になります。 -targetSchema ターゲットスキーマ名として、information -schema 、dbo 、sys または pg _ catalog を指定することはできません。これらのスキーマ名は、Advanced Server 内のメタデー タストレージとして予約されています。 7.4 スキーマオブジェクト選択オプション 下記のオプションを使用して、移行する特定のスキーマオブジェクトを選択します。 -allTables ソーススキーマから全てのテーブルをインポートします。 -tables table_list ソーススキーマから選択したテーブルをインポートします。table_list には、 テーブル名をコンマで区切って指定します。(例 : -tables emp, dept, acctg ) -importPartitionAsTable table_list パーティションテーブルの内容を単一の非パーティションテーブルにインポート するには、パラメータを追加します。table_list には、テーブル名をコンマで 区切って指定します。(例 : -importPartitionAsTable emp, dept, acctg g) -constraints テーブル制約をインポートします。このオプションは、スキーマ全体をインポー トする場合、もしくは-allTables オプションまたは-tables table_list オ プションを指定する場合にのみ有効です。 -ignoreCheckConstFilter Migration Toolkit は、デフォルトでは、Sybase データベースからのチェック制 約およびデフォルト句の移行を実装していません。Sybase データベースから チェック制約およびデフォルト句を移行するには、ignoreCheckConstFilter パラメータを追加して、-constraints パラメー タを指定します。 -skipCKConst Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 49 Postgres Plus Migration Guide チェック制約の移行を除外します。このオプションは、ターゲットデータベー スでサポートされていない(ソースデータベース中の)ビルトイン機能に基づ いたチェック制約を移行する際に便利です。 このオプションは、スキーマ全体をインポートする場合、もしくは-allTables オプ ションまたは-tables table_list オプションを指定する場合にのみ有効です。 -skipFKConst 外部キー制約を除外します。このオプションは、スキーマ全体をインポートす る場合、もしくは-allTables オプションまたは-tables table_list オプシ ョンを指定する場合にのみ有効です。 -skipColDefaultClause カラム DEFAULT 句の移行を除外します。 -indexes テーブルインデックスをインポートします。このオプションは、スキーマ全体を インポートする場合、もしくは-allTables オプションまたは-tables table_list オプションを指定する場合に有効です。 -triggers テーブルトリガをインポートします。このオプションは、スキーマ全体をインポ ートする場合、もしくは-allTables オプションまたは-tables table_list オプションを指定する場合に有効です。 -allViews ソーススキーマからビューをインポートします。 -views view_list ソーススキーマから選択したビューをインポートします。view_list には、ビ ュー名をコンマで区切って指定します。(例 : -views all_emp,mgmt_list,acct_list ) -allSequences ソーススキーマから全てのシーケンスをインポートします。 -sequences sequence_list ソーススキーマから選択したシーケンスをインポートします。sequence_list には、シーケンス名をコンマで区切って指定します。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 50 Postgres Plus Migration Guide -allProcs ソーススキーマから全てのストアドプロシージャをインポートします。 -procs procedures_list ソーススキーマから選択したストアドプロシージャをインポートします。 procedures_list には、プロシージャ名をコンマで区切って指定します。 -allFuncs ソーススキーマから全てのファンクションをインポートします。 -funcs function_list ソーススキーマから選択したファンクションをインポートします。 function_list には、ファンクション名をコンマで区切って指定します。 -checkFunctionBodies [true/false] の場合、ファンクション作成時に関数本体の妥当性確認を無効にし ます(これは関数が前方参照を含む場合のエラーを避けるためです)。デフォ ルト値は true です。 false -allPackages ソーススキーマから全てのパッケージをインポートします。 -packages package_list ソーススキーマから選択したパッケージをインポートします。package_list には、パッケージ名をコンマで区切って指定します。 -allRules ソースデータベースから全てのルールをインポートします。このオプションは、 ソースおよびターゲットの両方が Postgres ホストに格納されている場合にのみ 有効です。 7.5 移行オプション 移行プロセスの細かな制御を行うには、下に挙げた移行オプションを使用します。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 51 -loaderCount [value] Postgres Plus Migration Guide データをインポートするときに Migration Toolkit が使用するパラレルスレッド の数を指定するには、-loaderCount オプションを使用します。このオプショ ンは、特にソースデータベースが大容量のデータを含み、かつ、(Migration Toolkit を実行する)Postgres ホストがハイエンドな CPU および RAM を備え ている場合に有用です。value がゼロ以外の整数の時、value は CPU コア の数を超えないことが推奨されます。デュアルコア CPU では最適な value は 2 です。 value に指定する値が大きすぎると、Migration Toolkit heap space'エラーを生成しますのでご注意ください。 は終了し、'Out of -truncLoad 新しいデータをインポートする前にテーブルからデータを削除します。このオ プションは-dataOnly オプションと併用の場合のみ使用できます。 -enableConstBeforeDataLoad -‐e nableConstBeforeDataLoad オプションは、非パーティションテーブルのソ ースからパーティションテーブルにマップする場合に追加します。このオプショ ンは、データ移行の前に、ターゲットテーブルの全てのトリガ(データを個別パ ーティションへリダイレクトするトリガを含む)を有効にします。-‐ enableConstBeforeDataLoad は、-truncLoad パラメータも指定されている 場合のみ有効です。 -retryCount [value] 複数スキーマの移行を実行する場合、スキーマが相互依存関係にあるため に 1 回目の移行試行時に失敗したオブジェクトが、次回には成功する場合が あります。-retryCount オプションは、Migration Toolkit が 1 回目の移行試 行時に失敗したオブジェクトの移行を試行する回数を指定します。value に は 0 以上の値を指定してください。デフォルト値は 2 です。 -safeMode オプションを追加した場合、Migration Toolkit は移行された各 行をコミットします。全レコードを転送することに失敗した場合は、失敗の 発生時点より前に挿入された行はターゲットデータベースに残ります。 -safeMode -fastCopy オプションは、Migration Toolkit が COPY を最適な方法で実施す るために、WAL ログの作成を回避することを指定します。デフォルトでは無 -fastCopy Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 52 Postgres Plus Migration Guide 効です。-fastCopy オプションを使用する場合、移行時に中断が起きると 移行されたデータは(ターゲットデータベース内で)回復しない場合がありま す。 -replaceNullChar [value] -replaceNullChar オプションを追加すると、Migration Toolkit は NULL 文 字を指定した value で置き換えます。デフォルトでは、Migration Toolkit は NULL 文字を置き換えません。 -analyze -analyze オプションを追加すると、Postgres がターゲットデータベースに対し て ANALYZE を実行します。オプティマイザは ANALYZE によって集められた統 計値を参照し、その情報を利用して効率的なクエリプランを構成します。 -vacuumAnalyze -vacuumAnalyze オプションを追加すると、ターゲットデータベースに対して VACUUM および ANALYZE の両方を実行します。オプティマイザは ANALYZE に よって集められた統計値を参照し、その情報を利用して効率的なクエリプラン を構成します。VACUUM はターゲットデータベース内のデッドタプル(不要な行) が占めるストレージスペースを再生します。 -copyDelimiter テーブルデータ読み込み時に、コピーコマンド中でシングル文字を区切り 文字として使用することを指定します。デフォルト値は'\t ' (tab )です。 -batchSize バルクインサートのバッチサイズを指定します。有効な値は 1-1000 です。デフ ォルトバッチサイズは 1000 です。Out of Memory の例外が発生した場合は、batchSize の値を削減します。 -cpBatchSize コマンドで使用するためのバッチサイズを MB で指定します。0 より大 きい任意の値が有効です。デフォルトバッチサイズは 8MB です。 COPY -fetchSize オプションは、リザルトセット内のフェッチする行数を指定するた めに使用します。指定した-fetchSize が大きすぎると、Out of Memory の例 外が起きる場合があります。大容量のテーブルを移行する場合には、この危 険を避けるために-fetchSize オプションを追加してください。デフォルトフェ ッチサイズは JDBC ドライバの実装に固有であり、データベースによって異な -fetchSize Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 53 Postgres Plus Migration Guide ります。 MySQL ユーザの注意点:デフォルトでは、MySQLJDBC ドライバは、1 回の ネットワークラウンドトリップでクライアントアプリケーション(Migration Toolkit) へテーブル内に存在するすべての行をフェッチします。この動作は、大容量 のテーブルでは利用可能メモリーの上限を超えてしまいがちです。'out of heap space'エラーが発生した場合、コマンドラインの引数として-fetchSize 1 を指定して、Migration Toolkit が 1 回に読み込むテーブルデータを 1 行とす るようにしてください。 -filterProp file_name は、key=value ペアの制約を含むファイル名を指 定します。データベースから読み込まれた各レコードは、制約に合わせて評 価され、この制約を満たしたものが移行されます。ペアリストの左側はテーブ ル名です。テーブル名はスキーマ条件付きであってはならないことにご注意く ださい。右側には移行される各行について真でなければならない条件を指定 します。例えば、プロパティファイルには下記の制約を含みます。 -filterProp file_name countries=country_id<>'AR' country_id 値が AR に等しいものだけを移行します。この制約は countries テーブルに適用されます。 -customColTypeMapping column_list 移行したカラムのデータタイプを変更するには、カスタムタイプマッピングを使 用します。各ペアの左側に正規表現のカラム、右側にカラムがとるべきデータ タイプを指定します。column_list をセミコロンで区切って複数ペアを入れる ことができます。例えば、で ID 終わる名前のカラムを INTEGER タイプにマッ プするには、下記のカスタムマッピングエントリーを使用します。 .*ID=INTEGER カスタムマッピングは、テーブル条件付きカラムを除き、基準に適合するすべ てのテーブルカラムに適用されます。 文字 '\\ ' は、エスケープ文字として機能します。'. ' は正規表現で予約されて いる文字であるため、'. ' を '\\. ' で表します。例えば、EMP テーブルの EMP_ID カラムから行を選択するには、カスタムマッピングを使用して、下記の カスタムマッピングエントリーを指定します。 EMP\\.EMP_ID=INTEGER -customColTypeMappingFile property_file に複数のカスタムマッピングを含めることができます。ファイ ル内の各エントリを別のラインに key=value ペアで指定します。各ペアの左 property_file Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 54 Postgres Plus Migration Guide 側に正規表現のカラム、右側にカラムがとるべきデータタイプを指定します。 -replaceNullChar replacement_char Migration Toolkit は JDBC 接続プロトコルを使用する NULL データ値のインポ ートをサポートしません。 オプションを使用して NULL データ値を非 NULL 文字列 に置き換えてください。replacement_char には 1 つの置き換え文字を指定 します。 –replaceNullChar 7.6 Oracle 固有オプション 下記のオプションは、ソースデータベースが Oracle の場合にのみ適用されます。 -objecttypes schema_name 指定したスキーマからユーザ定義オブジェクトタイプをインポートします。 -allUsers ソースデータベースからユーザおよびロールをインポートします。 -users user_list Oracle ソースデータベースから選択したユーザまたはロールをインポートしま す。user_list はユーザまたはロール名をコンマで区切って指定します。(例 : -users MTK,SAMPLE,acctg ) -copyViaDBLinkOra モジュールは、Advanced Server と Oracle 間の SQL レベルで の接続性を提供します。dblink_ora は Advanced Server データベースのイ ンストールの一部として提供され、インストールされます。dblink_ora は COPY API メソッドを利用してデータベース間のデータ転送を行います。この メソッドは、JDBC COPY メソッドよりも大幅に高速です。 dblink_ora 下記は dblink_ora COPY API を使用して HR スキーマから全てのテーブル を移行する例です。 $./runMTK.sh -copyViaDBLinkOra -allTables HR ターゲットの Advanced Server データベースには dblink_ora をインストール Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 55 Postgres Plus Migration Guide し設定を行っていなければなりません。この詳細は、Advanced Server のイン ストールされたホームディレクトリの下の /dbserver/lib/postgresql/contrib サブフォルダにある dblink_ora セ ットアップガイド (README-DBLINK_ORA_SETUP.txt ) をご参照ください。 -allDBLinks [link_Name_1=password_1,link_Name_2=password_2,...] Oracle データベースリンクを移行するには、このオプションを選択します。ソ ースデータベース内の各リンク接続のパスワード情報は暗号化されるので、 指定しない限り、ダミーパスワード(edb )が代用されます。 全てのデータベースリンクを移行するには、接続ユーザのダミーパスワードと して edb を使用してください。 $./runMTK.sh -allDBLinks HR ペアをコンマで区切れば、各データベースリンクのパスワードを 指定することもできます。ペアの左側にリンク名、右側にパスワード値を指定し てください。 name=value 実際のパスワードで全てのデータベースリンクを移行するにはコマンドライ ンで指定します。 $./runMTK.sh -allDBLinks LINK_NAME1=abc,LINK_NAME2=xyz HR Migration Toolkit は現在 EnterpriseDB がサポートするデータベースリンク タイプのみを移行します。これにはパブリックおよびプライベートの固定ユ ーザリンクが含まれます。 -allSynonyms Oracle データベースから Advanced Server データベースへパブリックおよびプ ライベートシノニムを移行するには、-allSynonyms オプションを追加します。 同じ名前のシノニムがターゲットデータベースに既に存在する場合は、既存 のシノニムは移行したバージョンで置き換えられます。 -allPublicSynonyms 全てのパブリックシノニムを Oracle データベースから Advanced Server データ ベースへ移行するには、-allPublicSynonyms オプションを追加します。同じ 名前のシノニムがターゲットデータベースに既に存在する場合は、既存のシノ ニムは移行したバージョンで置き換えられます。 -allPrivateSynonyms Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 56 Postgres Plus Migration Guide 全てのプライベートシノニムを Oracle データベースから Advanced Server デー タベースへ移行するには、-allPrivateSynonyms オプションを追加します。 同じ名前のシノニムがターゲットデータベースに既に存在する場合は、既存の シノニムは移行したバージョンで置き換えられます。 7.7 その他のオプション Migration Toolkit ヘルプやバージョン情報を見るには、下に挙げた移行オプション を使用します。本章にあるオプションを使用して Migration Toolkit のフィードバック やログオプションを管理することもできます。 -help アプリケーションコマンドラインの使用法情報を表示します。 -version Migration Toolkit のバージョンを表示します。 -verbose [on|off] アプリケーションログメッセージを標準出力に表示します。(デフォルトは on で す。) -logDir log_path ログファイルを書きだす場所を指定するには、このオプションを追加します。 log_path はアプリケーションログファイルを保存するパスを表します。デフォル トでは、ログファイルは下記の場所に保存されます。 Linux の場合: $HOME/.enterprisedb/migration-toolkit/logs Windows の場合: %HOMEDRIVE%%HOMEPATH%\.enterprisedb\migrationtoolkit\logs Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 57 Postgres Plus Migration Guide 8 移行に関する問題 移行プロセス中に、移行サマリが移行の進捗を表示します。エラーが発生すると、サ マリはそのエラーに関する情報を表示します。移行サマリはログファイルにも書き込 まれます。デフォルトでは、ログファイルは下記の場所にあります。 Linux の場合: $HOME/.enterprisedb/migration-toolkit/logs Windows の場合: %HOMEDRIVE%%HOMEPATH%\.enterprisedb\migrationtoolkit\logs Migration Toolkit の-logdir log_path オプションを使用して、ログファイルのディ レクトリを指定することも可能です。 8.1 Migration Toolkit 接続エラー Migration Toolkit は、ソースおよびターゲットデータベースに接続するためにファイル からの情報を使用します。接続エラーのほとんどは、Migration Toolkit が toolkit.properties ファイルに指定した情報に関わるときに発生します。よくある 接続エラーを特定し解決するために、以降の章をご参照ください。 ファイルの編集に関する情報は、5 章 toolkit.properties ファイルの構築 をご参照くだ さい。 8.1.1 無効なユーザ名 / パスワード Migration Toolkit を使用して Oracle データベースからの移行を実行しようとしたら、 下記のエラーが発生した。 Error: java.lang.Exception: ORA-01017: invalid username/password; logon denied. ファイルに指定したユーザ名またはパスワードが、Oracle ソ ースデータベースへの接続には無効です。 toolkit.properties このエラーを解決するには、toolkit.properties ファイルを編集し、 SRC_DB_USER および SRC_DB_PASSWORD プロパティに移行実行が可能な特権を持つ 有効なユーザの名前とパスワードを指定してください。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 58 Postgres Plus Migration Guide 8.1.2 接続リジェクト: FATAL :パスワード Migration Toolkit を使用して移行を実行しようとしたら、下記のエラーが発生した。 Error: java.lang.Exception: Connection rejected: FATAL: password authentication failed for user " name". ファイルに指定したユーザ名またはパスワードが、Postgres データベースへの接続には無効です。 toolkit.properties このエラーを解決するには、toolkit.properties ファイルを編集し、 TARGET_DB_USER および TARGET_DB_PASSWORD プロパティに移行実行が可能な特 権を持つ有効なユーザの名前とパスワードを指定してください。 8.1.3 例外: ORA-28000: ア カ ウ ン ト の ロ ッ ク Migration Toolkit を使用して Oracle データベースから移行を実行しようとしたら、下 記のエラーメッセージが表示された。 Error: java.lang.Exception: ORA -28000: the account is locked. ファイルに指定したユーザ名に関連付けられた Oracle アカ ウントがロックされました。 toolkit.properties このエラーを解決するには、Oracle サーバのユーザアカウントのロックを解除する か、または toolkit.properties ファイルを編集して SRC_DB_USER および SRC_DB_PASSWORD パラメータに移行実行が可能な特権を持つ有効なユーザの名 前とパスワードを指定してください。 8.1.4 例外: oracle.jdbs.driver.Oracle ドライバ Migration Toolkit を使用して移行を実行しようとしたら、移行が失敗して下記のエラ ーメッセージが表示された。 Error: java.lang.Exception: oracle.jdbs.driver.OracleDriver Migration Toolkit を使用する前に、移行元のデータベースに合ったドライバをダウン ロードしてインストールしなければなりません。この説明については、4.3 章ソースに 対応したドライバのインストール をご参照ください。 8.1.5 I/O 例 外 :ネットワークアダプタが接続を確立できない Migration Toolkit を使用して移行を実行しようとしたら、下記のエラーが発生した。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 59 Postgres Plus Migration Guide Error: java.lang.Exception: I/O exception: The Network Adapter could not establish the connection ファイルに指定したソースデータベースの JDBC URL に無効な接続プロパティが含まれています。 toolkit.properties このエラーを解決するには、toolkit.properties ファイルを編集して SRC_DB_USER プロパティに、有効なソースデータベースの接続情報を指定してくだ さい。特定のデータベースの JDBC URL 作成に関する情報は、本文書の 5.1 章か ら 5.6 章をご参照ください。 8.1.6 例外: 接続失敗 Migration Toolkit を使用して移行を実行しようとしたら、下記のエラーが発生した。 Error: java.lang.Exception: The connection attempt failed. ファイルに指定したターゲットデータベース(Advanced Server) の JDBC URL に無効な接続プロパティが含まれています。 toolkit.properties このエラーを解決するには、toolkit.properties ファイルを編集して、 TARGET_DB_URL プロパティに、有効なターゲットデータベースの接続情報を指定し てください。Advanced Server の JDBC URL の作成に関する情報は、本文書の 5.1 章をご参照ください。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 60 Postgres Plus Migration Guide 8.2 Migration Toolkit の移 行 エ ラ ー Migration Toolkit がターゲットおよびソースデータベースサーバへの接続に成功した 後に、下記のエラーが発生する場合があります。 8.2.1 エラー: カラムの最後に余分なデータがある テーブルをオンラインで移行したら、下記のエラーメッセージが表示された。 Error Loading Data into Table: column_name: ERROR: extra data after last expected column このエラーは、column_name カラム内のデータが、区切り文字を含む場合に発生し ます。このエラーを修正するには、区切り文字をテーブルコンテンツ中にない文字 に変えてください。 8.2.2 テーブルへのデータ読み込みエラー: TABLE_NAME が null データだけの移行を実行したら、下記のエラーが発生した。 Trying to reload table: TABLE_NAME through bulk inserts with a batch size of 1000 Error Loading Data into Table: TABLE_NAME: null Data Load Summary: Total Time (sec): 0.0 Total Rows: 0 Total Size(MB): 0.0 Schema HR imported with errors. データ移行を行う前に、ターゲットデータベースにデータを受け取るテーブルを作成 しなければなりません。ターゲットデータベースにテーブル(TABLE_NAME の名前)が 存在することを確認、または必要に応じてテーブルを作成し、データ移行をリトライし てください。 8.2.3 CONS_NAME_FK 制約作成エラー インデックスと制約を含むテーブルの移行を実行したら、ログファイルに下記のエラ ーメッセージが表示された。 Error Creating Constraint EMP_DEPT_FK: ERROR: relation "hr.departments" does not exist Schema HR imported with errors. One or more schema objects could not be imported during the migration process. Please review the migration output for more details. Migration logs have been saved to C: \Docume~1\susan\.enterprisedb\migrationtoolkit\logs ******************** Migration Summary ******************** Tables: 1 out of 1 Constraints: 5 out of 6 Total objects: 11 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 61 Postgres Plus Migration Guide Successful count: 10 Failure count: 1 List of failed objects ====================== Constraints -------------------1. HR.EMPLOYEES.EMP_DEPT_FK 移行するテーブルにターゲットデータベースに存在しないテーブルの外部キー制約 が含まれています。Migration Toolkit はテーブルを作成し、外部キー制約を除外し ます。 このエラーメッセージが生成されないようにするには、Migration Toolkit コマンドにskipFKConst オプションを追加してください。 8.2.4 テーブルへのデータ読み込みエラー テーブル定義は移行済みで、データをテーブルに移行しようとしたら下記のエラー が発生した。 Error Loading Data into Table: DEPARTMENTS: ERROR: extra data after last expected column Where: COPY departments, line 1: "10 Administration 200 1700" Trying to reload table: DEPARTMENTS through bulk inserts with a batch size of 1000 Batch entry 0 INSERT INTO hr.DEPARTMENTS VALUES ('10', 'Administration', '200', '1700'); was aborted. Call getNextException to see the cause., Skipping Batch Stack Trace: java.sql.BatchUpdateException: Batch entry 0 INSERT INTO hr.DEPARTMENTS VALUES ('10', 'Administration', '200', '1700'); was aborted. Table Data Load Summary: Total Time(s): 0.235 Tota l Rows: 0 Data Load Summary: Total Time (sec): 0.235 Total Rows: 0 Total Size(MB): 0.0 Schema HR imported with errors. ターゲットデータベース内のテーブル定義が移行データに適合しません。ターゲット またはソーステーブルを変更した場合は、テーブル定義とデータが合っているか確 認してください。 8.2.5 エラー: タイプに対して値が長すぎる テーブル定義は移行済みで、データをテーブルに移行しようとしたら下記のエラー が発生した。 Error Loading Data into Table: DEPARTMENTS: ERROR: v alue too long for type character(1) Where: COPY departments, line 1, column location_id: "1700" Trying to reload table: DEPARTMENTS through bulk inserts with a batch size of 1000 Batch entry 0 INSERT INTO hr.DEPARTMENTS VALUES ('10', 'Administration', '200', '1700'); was aborted. Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 62 Postgres Plus Migration Guide ターゲットデータベース内のカラムは、移行データを受け取るのに十分な大きさではあ りません。この問題は、テーブル定義が移行後に変更された場合に発生します。この カラム名(例中では、location_id )は、'Where :' で始まる行に特定されています。 Where: COPY departments, line 1, column location_id: "1700" この問題を修正するには、カラムサイズを調整して移行をリトライしてください。 8.2.6 エラー: Toolkit スレッドの例外 : OutOfMemoryError MySQL データベースからの移行時、下記のエラーが発生した。 Loading Table: doc_views… Exception on Toolkit thread: java.lang.OutOfMemoryError: Java heap space java.lang.OurOfMemoryError: Java heap space at java.lang.AbstracStringBuilder.expandCapacity(AbstractStringBuilder?.java:99) デフォルトでは、MySQLJDBC ドライバは、1 回のネットワークラウンドトリップでテ ーブル内の全ての行をクライアントアプリケーションにフェッチします。大容量のテ ーブルでは、この動作で利用可能メモリを超えてしまいがちです。 この問題を修正するには、移行をリトライする時にコマンドライン引数として fetchSize 1 を指定してください。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 63 Postgres Plus Migration Guide 8.3 サポートされていない Oracle の機能 Advanced Server は、Oracle の一部の機能については完全サポート、その他につい ては部分的なサポートを提供します。Migration Toolkit では、サポートされていない 機能を使用するオブジェクトは移行できません。 Migration Toolkit は、一部のケースでは、部分的互換性を提供する機能を使用する オブジェクトの移行することができます。それ以外のケースでは、Advanced Server は適切な代替方法をサポートします。 フルテキスト検索は Oracle との完全互換性がない機能の一例です。Advanced Server データベースは、長い間フルテキスト検索のサポートをしてきましたが、 Oracle の実装とは大幅に異なるため、Migration Toolkit ではこの機能を利用するオ ブジェクトの移行はできません。 Advanced Server がまだサポートしていない機能もあります。これらの機能のカテゴ リには、Automated Storage Management、Advanced Queuing、テーブル圧縮、外部テ ーブルが含まれます。これらは代替方法でうまく調整できる場合が多くあります。 ❷ Automated Storage Management は(システム固有の)ボリュームマネジメント ソフトウェアで置き換えることができます。 ❷ Advanced Queuing は、ActiveMQ、TIBCO 、MQ シリーズなどの外部 メッセージングシステムで置き換えることができます。 ❷ テーブル圧縮は、圧縮ファイルシステム内のテーブル空間にデータを格納す ることで実現可能です。 ❷ 外部テーブルは Advanced Server には存在しませんが、フラットテキストファ イルをデータベース内のステージングテーブルに読み込むことが可能です。 データを Advanced Server データベースに高速に読み込むためには、 EDB*Loader ユーティリティの使用をお勧めします。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 64 Postgres Plus Migration Guide 8.4 よくある質問と回答 Migration Toolkit はパッケージの移行をサポートしますか ? Migration Toolkit は、Oracle データベースから Advanced Server へのパッケー ジの移行をサポートします。Advanced Server が提供する移行サポートに関し ては、3 章機能概説 をご参照ください。 ソースデータベースからデータだけを転送する方法はありますか ? あります。データ転送はオンラインまたはオフライン移行の一部とし てサポートしています。 Migration Toolkit は、 CLOB データタイプのデータを含むテーブルの移行をサ ポートしますか ? Migration Toolkit は、CLOB タイプのデータを含むテーブルの移行をサポートし ます。 Advanced Server は、 enum データタイプをサポートしますか ? Advanced Server は、現在のところ enum データタイプをサポートしていませんが、今 後のリリースではサポートする予定です。それまでは、チェック制約を使用して Advanced Server データベースに追加されるデータの制限を行うことができます。チ ェック制約は、カラムがとり得る有効値のリストを定義します。 下記のコードサンプルは、カラムの値を sales 、admin、または technical の 3 つ の dept タイプのうち 1 つに制限するチェック制約のシンプルな例です。 CREATE TABLE emp ( emp_id INT NOT NULL PRIMARY KEY, dept VARCHAR(255) NOT NULL, CHECK (dept IN ('sales', 'admin', 'technical')) ); 有効な dept タイプを入力してチェック制約をテストする場合、INSERT ステートメント はエラーを出さずに動作します。 test=# INSERT INTO emp VALUES (7324, 'sales'); INSERT 0 1 制約に含まれない値( support )を挿入すると、Advanced Server はエラーを返します。 test=# INSERT INTO emp VALUES (7325, 'support'); ERROR: new row for relation "emp " violates check con straint "emp_dept_check" Advanced Server はマテリアライズドビューをサポートしますか ? Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 65 Postgres Plus Migration Guide Postgres は、Oracle 準拠のマテリアライズドビューをサポートしません。マテ リアライズドビュー/サマリテーブルを Postgres にセットアップするには、サ マリテーブルを維持するトリガを手動で作成しなければなりません。自動ク エリリライトは現在のところサポートされていませんので、アプリケーショ ンはサマリテーブルの存在を認識できるように作成しなければなりません。 TIME データタイプを含む MySQL データベースから移行しようとしたら、次 のエラーが発生した : Error Loading Data into Table: Bad format for Time. Postgres は MySQL TIME データタイプをサポートしますか ? Postgres では、時間コンポーネントの値が 24 より大きくない限りは、TIME データタ イプの格納については問題ありません。 Postgres とは異なり、MySQL TIME データタイプでは、TIME または INTERVAL 値の いずれかを表す値の格納が可能です。MySQL TIME カラムに格納された値が INTERVAL 値を表していると、有効な Postgres TIMESTAMP 値の受け入れ可能範囲 を超えてしまう可能性があります。移行プロセス中に、Postgres が TIME データカラ ムに格納された値が範囲外であると判断すると、エラーを返します。 Copy right © 2012 EnterpriseDB Corporation. All rights reserv ed. 66
© Copyright 2024 Paperzz