Oracle から SAP SQL Anywhere へのマイグレーション (過去のホワイトペーパーより)
このページは、過去作成されたホワイトペーパーの抄訳です。
Oracle データベースを SQL Anywhere にマイグレーションする場合に必要となる変換項目(データ型、変数と定数、関数、シンタックス、プロシージャとファンクション、制御構造、カーソル、例外処理)については、こちらのPDFの資料のP16以降をご参照ください。
===
このホワイトペーパーは、SQL Anywhere 11 をベースに書かれていますが、ほとんどの部分で過去のバージョンや将来のバージョンでも利用可能です。また、英語のホワイトペーパーをそのまま翻訳しているため、製品画面ショットなどは英語版ソフトウェアのものですが、SQL Anywhereは、日本語にローカライズされています。
はじめに
SQL Anywhere には、Oracle データソースから、SQL Anywhere への容易かつ迅速なマイグレーションが可能なビルトインの機能が実装されています。直観的なウィザードと、リモートデータアクセスの機能を使用することで、OracleデータベースからSQL Anywhere へ、スキーマとデータを移行することが可能です。SQL Anywhere へマイグレーションすることで、SQL Anywhere の自動管理と自動チューニング機能を利用することが可能です。
このホワイトペーパーでは、Oracle データベースに含まれているサンプルスキーマをSQL Anywhereへ移行する方法について解説します。
備考:(ノートPC、スマートフォン、タブレットPCなどの)リモートユーザーが、ローカルのデータベースとOracleを同期できるよう、Oracle データベースをモバイル化する方法について興味がある方は、こちらをご参照ください。(http://ftp2.ianywhere.jp/tech/oracle_ml30.pdf)
システム要件
• SQL Anywhere 11.0.1 またはそれ以降
• Oracle Database 11g R1 サーバー
• Oracle Database 11g R1 クライアント (ODBC)
• Oracle サンプルスキーマ (通常Oracle データベースとともにインストールされます)
データの移行について解説するにあたり、ここではversion 11g R1 を使用していますが、他のバージョンのOracle データベースにも適用することが可能です。
SQL ANYWHERE のデータ移行機能
他のソースからSQL Anywhere へデータを移行する場合、その方法には以下の2つのどちらかの選択肢があります。データベース移行ウィザード または リモートデータアクセス 機能です。
データベース移行ウィザード
データベース移行ウィザードは、Oracle データベースからSQL Anywhereへのマイグレーションを実行する方法として最もシンプルなものです。このウィザードを使用すると、データベースに格納されている主キーと外部キー、全ての行を含めたテーブルを移行することができます。また、このウィザードを使用することで、Oracle のテーブルにユーザー定義のデータタイプ(抽象データタイプ)でない限りは、スキーマとデータが移行されます。Oracle とSQL Anywhere では、ユーザー定義のデータタイプの実装が大きく異なるため、データベース移行ウィザードでは、Oracle の抽象データタイプを、相当するSQL Anywhereのものに適切にマッチさせることはできません。このようなケースに直面した場合は、次のセクションで説明するリモートデータアクセスの機能を使用することで、移行が可能です。
このホワイトペーパーでは、データベース移行ウィザードを使用して、Oracle Human Relations (HR) サンプルスキーマをSQL Anywhere へマイグレーションします。
リモートデータアクセス
リモートデータアクセス (Remote Data Access 、RDA) は、他のリレーショナルデータベースからSQL Anywhere へ、スキーマとデータをインポートするためのベースとなるメカニズムです。実際、RDA は、データベース移行ウィザードにおいても、データ移行プロセスを容易にするために使用されています。RDAを行う場合には、SQL Anywhere データベース内で「リモートサーバー」を定義します。次に、Oracle データベースにマッピングするリモートテーブルを表す 「プロキシーテーブル」を作成します。そして、プロキシーテーブルを使って、Oracle データベースに対してクエリを投げ、SQL Anywhere テーブルに結果セットをインポートします。
ORACLE サンプルスキーマを移行する
ODBC データソースを作成する
データベース移行ウィザードとリモートデータアクセスの機能には、Oracle データベースのODBC データソースが必要です。これには、2種類のODBC ドライバーの選択肢があります: 一つは、Oracle ODBC クライアントで、もう一つはiAnywhere Solutions Oracle ドライバー (現SQL Anywhere Oracle ドライバー、SQL Anywhere とともにインストールされます)です。どちらのケースでも、Oracle Net Manager アプレットを設定することで Oracle サンプルスキーマに確実にアクセスできることを確認してください。このホワイトペーパーでは、iAnywhere Solutions Oracle ドライバーを使用して、Oracle データベースサーバーにアクセスします。
1. ODBC Administrator を起動して、新たなユーザーとSystem DSN を追加してください。「iAnywhere Solutions 11 – Oracle」ドライバーを使用します。
2. 「Oracle11g_Samples」と入力し、Oracle データベースにログインするために必要なクレデンシャルを入力してください。HR、OE、SHのサンプルスキーマにアクセス可能な user IDを入れてください。.
3. OK をクリックし、Finish をクリックしてODBC DSN を保存します。
新しいSQL ANYWHERE データベースを作成する
SQL Anywhere 管理プログラムである「Sybase Central」を使用してこのホワイトペーパーの残りのステップを実行します。
1. Sybase Centralを起動します: 以下の順でクリックします Start → Programs → SQL Anywhere 11 → Sybase Central
2. Tools メニューから、SQL Anywhere | Create Database を選択して、データベース作成ウィザードを起動します。
3. Welcome ページの Next をクリックします。
4. 「Select a database on this computer」を選択して Next をクリックします。
5. SQL Anywhere データベースファイルの名前と場所を指定します。例えば: C:\MigrateToSA\SampleSchemas.db.
6. データベース作成ウィザードでは、新しくSQL Anywhere データベースを作成するにあたり、例えば、暗号化の設定、ページサイズ、データベースの照合順など多数のオプションが用意されています。ここでは、新しいデータベースに対して追加のオプションは必要ないので、シンプルにデフォルトの設定を採用し、Finish をクリックしてウィザードを終了します。
7. Sybase Central で新しいデータベースを作成します。オペレーションが完了したら、Close をクリックします。
これで、新しく作成したSQL Anywhere データベース「SampleSchemas.db」に接続され、移行プロセスを開始することができます。
HR スキーマを移行する
データベース作成ウィザードを使用してHR スキーマを移行するのは、とても簡潔です。
1. Tools メニューから、SQL Anywhere | Migrate Database を選択して、データベース作成ウィザードを起動します。
2. Welcome ページのNext をクリックします。
3. 「SampleSchemas」データベースを選択して、Next をクリックします。
4. Oracle データソースのリモートサーバーを作成する必要があります。Create Remote Server Nowをクリックして、リモート・サーバ作成ウィザードを起動します。
5. リモートサーバーの名前を指定します。例えば「OracleSamples」など。Nextをクリックします。
6. リモートサーバータイプのリストからOracle を選択します。SQL Server、DB2、MySQL などの他のデータベースソースからも移行が可能です。Next をクリックします。
7. 接続タイプとしてSelect ODBC を選択します。接続情報には、先に作成したODBC データソース名c「Oracle11g_Samples」を入力します。Next をクリックします。.
8. ここでは、Oracle データベースをアップデートする必要はないため、「Make this remote server a read-only data source」をクリックして、Next をクリックします。.
9. SQL Anywhere は、Oracle データベース内のサンプルスキーマにアクセスするために、外部ログインが必要です。「Create an external login for the current user」をクリックして、HR、OE SHにアクセスするための適切なクレデンシャルを入力してください。自由に接続をテストしてみてください。Finish をクリックします。.
10. データベース移行ウィザードに戻ります。新しく作成した「OracleSamples」リモートサーバー を選択し、Next をクリックします。Sybase Central がOracle データベースサーバーと通信する間数分かかることがあります。
11. Oracle データベースの全てのテーブルのリストが表示されます。「HR」に属するテーブルだけを選択し、Add All をクリックして、Next をクリックします。
12. 特定のユーザーのテーブルを移行します。この例では、異なるスキーマのSQL Anywhere ユーザーを作成しようとしています。Create User Now をクリックします。ユーザ作成ウィザードが表示されます。
13. しいユーザー名を「HR」とし、Next をクリックします。
14. HR ユーザーにパスワードをアサインします。例えば、「hr」など。ここではデフォルトの設定を使用するので、Finish をクリックしてウィザードを終了します。.
15. データベース移行ウィザードに戻り、新しく作成したユーザー「HR」を選択して、Next をクリックします。
16. 外部キーとデータを移行します。移行後、アクセスしたい場合には生成されたプロキシーテーブルをキープすることもできます。全てのオプションをクリックして、Finish をクリックします。
17. Sybase Central は、Oracle データベーススキーマをチェックし、適切なテーブルと外部キーリレーションを生成します。その後、Sybase Central は、Oracle インスタンスから SQL Anywhere データベースへデータをインポートします。メッセージダイアログは、Sybase Central が実行する異なるSQL 文を表示します。移行が成功したら、Close をクリックします。
18. これで、Sybase Central 内に生成したテーブルを見ることができます。右側の窓で、「Tables」をダブルクリックします。HR Oracleスキーマに属するテーブルが現れます。SQL Anywhere では、これらは HR ユーザーに属します。
19. テーブル「EMPLOYEES」をダブルクリックし、異なるタブをナビゲートして、移行されたスキーマとデータをチェックします。
• Columns タブは、テーブルのカラム定義を表示します (主キー、名前、データタイプ、サイズ、など)。
• Constraints and Referencing Constraints タブは、外部キーと参照テーブルを表示します。
• Indexes タブは、テーブル内の全てのインデックスを表示します。デフォルトでは、インデックスはクラスタされていません。
• Data タブは、Oracleデータベースから移行された全ての行を表示します。
これで、Oracle HR スキーマのSQL Anywhere版ができました。このスキーマのテーブル内のカラムは、データベース移行ウィザードがマイグレーションを簡単に実行できるようにシンプルなデータタイプを使用して定義されています。抽象データタイプで定義されているカラムを取り扱う場合は、データベース移行ウィザードではなく、SQL Anywhere の Remote Data Access 機能を使用してください。
===
SAP SQL Anywhere に関する詳細情報は、SAP SQL Anywhere Communityページ<英語> を参照してください。
上記のコミュニティーに掲載されている技術情報は、順次SQL Anywhere 日本語コミュニティ
に掲載しています。
SQL Anywhere に関してはまずはこちらをご参照ください。無期限でご利用いただける無償の Developers Edition もこちらからダウンロードが可能です。
SQL Anywhere に関して技術的な質問のある方はコミュニティに登録し、
「Ask a Question」機能をご利用ください。
Language には「Japanese」、
Primary Tag には「SAP SQL Anywhere」を選択
User Tagに「sql anywhere」「sql anywhere Japanese question」
を入力してください。
不具合につきましては、サポート契約者様専用の問い合わせ方法にてお問い合わせください。
======================
ご購入に関するお問い合わせ
こちらよりお問い合わせください。