本連載では、商用DBMSからOSSデータベースへの移行を検討する企業に向け、「MySQL」への移行プロジェクトで必要となる具体的なノウハウをお届けします。今回は、Oracle DatabaseからMySQLへのオブジェクト移行に向けた3つのステップを解説します。
前回は、「Oracle DatabaseとMySQLのアーキテクチャの違い」を理解し、正しい設定/移行計画に向けたポイントを紹介しました。今回は、Oracle DatabaseとMySQLの「オブジェクトの違い」を理解し、移行に向けた3つのステップを解説します。
Oracle Databaseのオブジェクト(データベース・オブジェクト)には、スキーマ(データの論理構造の集まり)に依存するテーブルなどの「スキーマ・オブジェクト」と、スキーマに依存しない表領域などの「非スキーマ・オブジェクト」があります。ユーザーや権限などの非スキーマ・オブジェクトについては、前回解説しました。今回は前者のスキーマ・オブジェクトが対象となります。
オブジェクトの移行に向けた確認は以下のステップで実施するとよいでしょう。
以下より順に解説します。
まず、Oracleオブジェクトごとにおおよその移行難易度を把握しましょう。
具体的には、以下の項目があります。
Oracleオブジェクト名 | MySQLオブジェクト名 | 移行 難易度 |
備考 |
---|---|---|---|
テーブル | テーブル | 普 | ディメンションが移行元に存在すると難易度が高くなる |
インデックス | インデックス | 普 | ビットマップ・インデックス、索引構成表、索引クラスタが移行元に存在すると難易度が高くなる |
ビュー | ビュー | 易 | ─ |
シーケンス | シーケンス | 普 | カラムとの対応がN対1のシーケンスが移行元に存在すると難易度が高くなる |
ストアドファンクション、ストアドプロシージャ | ストアドファンクション、ストアドプロシージャ | 易 | ─ |
トリガ | トリガ | 普 | INSTEAD OF トリガ、DDLトリガ、イベント・トリガが移行元に存在すると難易度が高くなる |
シノニム | ─ | 易 | MySQLにはオーナーの概念がないため、考察は不要 |
制約 | 制約 | 普 | 移行先の制約指定方法に一部差異があるため難易度はやや高くなる |
演算子 | 演算子 | 易 | ─ |
パッケージ、パッケージボディ | ─ | 難 | 移行先に対応するオブジェクトがないため、難易度が高くなる |
Javaクラス、Javaリソース、Javaソース | ─ | 難 | 同上 |
マテリアライズド・ビュー、マテリアライズド・ビュー・ログ | ─ | 普 | 代用する仕組みの検討を要する |
データベースリンク | ─ | 難 | 移行先に対応するオブジェクトがないため、難易度が高くなる |
マイニング・モデル | ─ | 難 | 同上 |
外部プロシージャ・ライブラリ | ─ | 難 | 同上 |
オブジェクトテーブル、オブジェクト型、オブジェクト・ビュー | ─ | 難 | 同上 |
ディレクトリ | ─ | 普 | 代用する仕組みの検討を要する |
続いて、オブジェクト名称の「長さ」「大文字、小文字の区別」「文字種」「予約語」について、全てのオブジェクト名称をチェックします。OracleとMySQLにおける条件の違いと移行時における注意事項は以下の通りです。
項目 | Oracle | MySQL |
---|---|---|
長さ | 30バイト以内 | 64文字以内 |
大文字、小文字の区別 | 引用符で囲まれている場合は、大文字、小文字を区別する | 大文字、小文字を区別する |
文字種 | (1)引用符で囲まれていない場合は、データベース・キャラクタ・セットの英数字、アンダースコア(_)、ドル記号($)およびシャープ記号(#)のみを含められる (2)引用符で囲まれている場合は、全ての文字、句読点、空白を使用できる。ただし、引用識別子と非引用識別子のいずれにも、二重引用符またはNULL文字(例えば、\0)は使用できない |
(1)引用符で囲まれていない識別子で許可される文字は、以下の2通り ・ASCII: [0-9,a-z,A-Z$_](基本的なラテン文字、0-9の数字、ドル、アンダースコア) ・拡張: U+0080 ..U+FFFF (2)引用符で囲まれている識別子で許可される文字 ・ASCII: U+0001 ..U+007F ・拡張: U+0080 ..U+FFFF |
予約語 | Oracleの予約語については、「Oracle SQLの予約後(Oracle Database SQL言語リファレンス)」を参照 | MySQL独自の予約語は、「Keywords and Reserved Words(MySQL 5.7 Reference Manual)」を参照 |
Copyright © ITmedia, Inc. All Rights Reserved.