Postgres Plus 移行ガイド

 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