連載
» 2017年01月10日 05時00分 UPDATE

実践 OSSデータベース移行プロジェクト(3):OracleからMySQLへの「オブジェクト移行」に向けた3つのステップ (1/2)

本連載では、商用DBMSからOSSデータベースへの移行を検討する企業に向け、「MySQL」への移行プロジェクトで必要となる具体的なノウハウをお届けします。今回は、Oracle DatabaseからMySQLへのオブジェクト移行に向けた3つのステップを解説します。

[廣濱顕司, 荻野邦裕, 潮雅人,SCSK株式会社]

連載バックナンバー

 前回は、「Oracle DatabaseとMySQLのアーキテクチャの違い」を理解し、正しい設定/移行計画に向けたポイントを紹介しました。今回は、Oracle DatabaseとMySQLの「オブジェクトの違い」を理解し、移行に向けた3つのステップを解説します。

 Oracle Databaseのオブジェクト(データベース・オブジェクト)には、スキーマ(データの論理構造の集まり)に依存するテーブルなどの「スキーマ・オブジェクト」と、スキーマに依存しない表領域などの「非スキーマ・オブジェクト」があります。ユーザーや権限などの非スキーマ・オブジェクトについては、前回解説しました。今回は前者のスキーマ・オブジェクトが対象となります。

 オブジェクトの移行に向けた確認は以下のステップで実施するとよいでしょう。

  • ステップ1:移行元オブジェクトごとの移行難易度の概要を把握する
  • ステップ2:移行元オブジェクトのオブジェクト名称をチェックする
  • ステップ3:ステップ1の詳細をチェックする

 以下より順に解説します。

ステップ1:移行元オブジェクトごとの移行難易度の概要を把握する

 まず、Oracleオブジェクトごとにおおよその移行難易度を把握しましょう。

 具体的には、以下の項目があります。

OracleからMySQLへのオブジェクト移行対応表(概要)
Oracleオブジェクト名 MySQLオブジェクト名 移行
難易度
備考
テーブル テーブル ディメンションが移行元に存在すると難易度が高くなる
インデックス インデックス ビットマップ・インデックス、索引構成表、索引クラスタが移行元に存在すると難易度が高くなる
ビュー ビュー
シーケンス シーケンス カラムとの対応がN対1のシーケンスが移行元に存在すると難易度が高くなる
ストアドファンクション、ストアドプロシージャ ストアドファンクション、ストアドプロシージャ
トリガ トリガ INSTEAD OF トリガ、DDLトリガ、イベント・トリガが移行元に存在すると難易度が高くなる
シノニム MySQLにはオーナーの概念がないため、考察は不要
制約 制約 移行先の制約指定方法に一部差異があるため難易度はやや高くなる
演算子 演算子
パッケージ、パッケージボディ 移行先に対応するオブジェクトがないため、難易度が高くなる
Javaクラス、Javaリソース、Javaソース 同上
マテリアライズド・ビュー、マテリアライズド・ビュー・ログ 代用する仕組みの検討を要する
データベースリンク 移行先に対応するオブジェクトがないため、難易度が高くなる
マイニング・モデル 同上
外部プロシージャ・ライブラリ 同上
オブジェクトテーブル、オブジェクト型、オブジェクト・ビュー 同上
ディレクトリ 代用する仕組みの検討を要する

ステップ2:移行元オブジェクトのオブジェクト名称と条件をチェックする

 続いて、オブジェクト名称の「長さ」「大文字、小文字の区別」「文字種」「予約語」について、全てのオブジェクト名称をチェックします。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)」を参照
       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。