本連載では、商用DBMSからOSSデータベースへの移行を検討する企業に向け、「MySQL」への移行プロジェクトで必要となる具体的なノウハウをお届けします。今回は、移行設計を実施するに当たり把握しておきたい、Oracle DatabaseとMySQLの機能の違いについて説明します。
商用DBMSからOSSデータベースへの移行を検討する企業に向け、「MySQL」への移行プロジェクトで必要となる具体的なノウハウをお届けする本連載「実践 OSSデータベース移行プロジェクト」。前回までは、株式会社豊洲部品(仮名)社内システムの移行事例を用いてさまざまな観点より移行コストの評価を実施しました。
本稿では、個々の移行事例から離れて、移行設計を実施するに当たり把握しておきたい、Oracle Database(以下、DB)とMySQLの機能の違いについて説明します。
なお移行元は、Oracle Database 10g/11g(ライセンスはSE1、SE)、移行先は、MySQL Server 5.7(InnoDBを主に利用)を想定しています。
下記にOracle DBの機能に対応するMySQLの機能について、前回までの記事で説明済みのオブジェクト関連(トリガなど)の機能、および開発プラットフォーム系(ODBCドライバなど)機能を除き概要をまとめました。
表を活用して移行元Oracle DBで使用している機能についてヒアリングを実施してください。
なお、使用している機能に対応するMySQLに類似機能がない場合は、「代替え策の検討などに時間が費やされるため、移行コストが高くなる」ことにご注意ください。
移行元Oracle DB機能 | 説明 | 移行先MySQL機能 |
---|---|---|
行レベルロック | 不整合を起こさない読み取り一貫性の保証 ページ単位や表単位にエスカレートしない完全な行レベルロック |
行レベルロック対応あり ※トランザクション分離レベルをread-committedにした場合はネクストキーロックは発生しない |
トランザクション分離レベル | read-committedのみサポート | read-committed対応可 defaultはrepeatable-read |
コストベースオプティマイザの高度な最適化 | コストベースに加えてヒストグラムを用いた最適化を行う機能 | コストベースのオプディマイザで対応可能であるが、Oracle DBほど高度な最適化はできない |
ラージオブジェクト(LOB)サポート | 4000Bを超える文字列型、バイナリ型を格納する | text型、BLOB型で対応可能だが、最大値に注意 |
テラバイトLOBサポート | 4000Bを超える文字列型、バイナリ型を格納する | text型、BLOB型で対応可能だが、最大値に注意 ※MySQLとして最大に制約はないが、実現可能かについては検証が必要 |
LogMiner | REDOログ情報をSQLで表示するツール | バイナリログをテキスト化することで、更新履歴を確認できる |
マルチブロックサイズのサポート | 1つのDBで複数のブロックサイズをサポートする | defaultは16KB サイズを変えられるが、1つのDBで複数は持てない |
ロール | 権限を束ねて管理する | プロキシユーザーを利用することで、同様の役割を持たせることが可能 |
移行元Oracle DB機能 | 説明 | 移行先MySQL機能 |
---|---|---|
基本レプリケーション。準同期も選択可能 | マスターのデータをスレーブへデータをレプリケーション SQLベースの完全同期型(非同期も可能) SE2/SE1/SE:読み取り専用、更新可能なマテリアライズドビュー 同期のタイミングは、commitごと、時間ごとなど選択可能 |
MySQLの場合非同期 スレーブは基本参照 |
Database Gateways | 他DBMS連携用 | 類似機能なし |
Oracle Streams | メッセージキューイング(AQ)、レプリケーション、イベント、データウェアハウスのロード、通知および公開/サブスクライブを統合する枠組み SE1/SE:REDOログからのキャプチャーなし |
MySQLの場合非同期 スレーブは基本参照 |
アドバンストキューイング | JavaのJMS機能をDBで実現している機能 | 類似機能 一部の機能についてはなし |
分散問い合わせ | DBリンクの機能を用いて、他DBのデータを取得できる | 一部の機能についてはFederated storage engineで可能 |
分散トランザクション | DBリンクの機能を用いて、他DBのデータを取得した際に、2フェーズコミットおよびXAサポートしているかどうか | 類似機能なし |
Oracle Generic Connectivity | 分散問い合わせ、分散トランザクションを実現するために実装された機能。データベースリンクに似てはいるが、設定が複雑なため、あまり利用されない | 一部の機能についてはFederated storage engineで可能 |
移行元Oracle DB機能 | 説明 | 移行先MySQL機能 |
---|---|---|
基本スタンバイデータベース | 基本的なスタンバイデータベース。ログ転送や適用は手動 | MySQLレプリケーション、Oracle Clusterware、サードパーティーツールなどで可能 |
Oracle Fail Safe | Oracle Fail Safeを使うと、Microsoftクラスタ上で稼働してMicrosoft Failover Cluster(MSFC)で構成されているOracle DBやその他のアプリケーションの停止時間を、最小限に抑えることが可能。Windowsのみ | 類似機能なし(Oracle Fail Safeと同等のものはないが、MSFCを使った高可用性構成が取れる) |
移行元Oracle DB機能 | 説明 | 移行先MySQL機能 |
---|---|---|
Recovery Manager(RMAN) | 物理バックアップ/リカバリー処理全体の設定管理 | Percona XtraBackupで可能。EEは、MySQL Enterprise Backupでも可能 |
オリジナルEXP/IMPおよびData Pump Export/Import | 論理バックアップ/リカバリー処理およびデータ移動処理全体の設定管理 | mysqldumpおよびmysqlpumpで可能 |
移行元Oracle DB機能 | 説明 | 移行先MySQL機能 |
---|---|---|
MySQL Clusterで一部同等機能を提供 | 一貫性を保ちながら1つのDBを複数のコンピュータで並列に操作できるようになり、負荷分散を図ることができる。また、処理要求が増大したときにコンピュータを追加することで柔軟に性能を拡張できる他、1台に障害が発生した際に他のコンピュータに処理を引き継ぐ機能(フェイルオーバー)などもある | 類似機能なし |
自動ワークロード管理 | 下記コンポーネントを使用してワークロードの分散を管理し、ユーザーおよびアプリケーションに対してパフォーマンスを最適化する ・サービス ・コネクションロードバランシング ・高可用性フレームワーク ・高速アプリケーション通知(FAN) ・ロードバランシングアドバイザー ・自動ワークロードリポジトリ |
類似機能なし |
移行元Oracle DB機能 | 説明 | 移行先MySQL機能 |
---|---|---|
暗号化スクリプト(DBMS_CRYPTパッケージ) | Oracle 9iまで使用:DBMS_OBFUSCATION_TOOLKITパッケージ、Oracle 10gからのDBMS_CRYPTOパッケージには従来のDES、3DESに加えAdvanced Encryption Standard(AES)、MD5、MD4、SHA-1と追加オプションが用意されている。入力データ型としてBLOB、CLOBもサポートされる | MySQL EEでは、MySQL Enterprise Encryptionで暗号化関数を提供 |
ローカルDB監査ログの取得 | AUDITコマンドで実現 | MySQL EEでは、MySQL Enterprise Auditで監査ログ取得可能 |
External User | Linux/UNIX OSユーザーによるアクセス | MySQL EEでは、MySQL Enterprise Authenticationで可能 |
Kerberos、PKI、RADIUSなどのサポート | ユーザー認証の厳密化 | 類似機能なし |
EUS - Enterprise User | LDAPユーザーを使った個人認証 | MySQL EEでは、MySQL Enterprise Authenticationで可能 |
EUS - Enterprise Role | LDAPグループを使ったDBロール割当て | 類似機能なし |
移行元Oracle DB機能 | 説明 | 移行先MySQL機能 |
---|---|---|
DBクライアント間のネットワーク暗号化 | 暗号化機能の方式として、Oracleが提供する対称(秘密キー)暗号化方式(標準)とPKI/SSLをベースとした非対称(公開キー)暗号化方式の2つがある。通常はEE版アドバンストセキュリティオプションを使用して実現しているが、SE版でも構成可能である | MySQLでもクライアント〜サーバ間はSSL通信可能 |
移行元Oracle DB機能 | 説明 | 移行先MySQL機能 |
---|---|---|
Oracle XML DB | XMLの構造をデータベースに格納 | 類似機能なし |
移行元Oracle DB機能 | 説明 | 移行先MySQL機能 |
---|---|---|
Oracle Ultra Search | Web検索エンジン | 類似機能なし |
Oracle Inter Media | マルチメディアコンテンツを管理格納 | 類似機能なし |
DICOMサポート | 医療画像や通信の標準規格であるDICOMをサポート | 類似機能なし |
Oracle Text | 全文検索機能 | N-gramおよびMeCab使用で可能 |
移行元Oracle DB機能 | 説明 | 移行先MySQL機能 |
---|---|---|
Automatic Storage Management(ASM) | ストレージ領域を仮想化するストレージ管理機能であり、ボリューム管理に相当する機能とファイルシステムに相当する機能を提供 | 類似機能なし |
STATS PACK | Oracleの性能分析をするためのレポートを作成するOracleデータベース標準ツール データベースの監視情報を自動的に収集 |
CactiとPercona MySQL Monitoring Template for Cactiで可能。EEではMySQL Enterprise Monitor |
自動SGAメモリ管理 | SGAのサイズ動的変更と自動管理 | 類似機能なし |
PGAの自動チューニング | PGAの自動チューニング | 類似機能なし |
自動Undo管理 | UNDOセグメントの自動管理 | innodb_undo_directoryおよびinnodb_undo_tablespacesで可能 |
Oracle Managed Files | データベースオブジェクトレベルでデータベースがファイルを自動的に作成、命名および管理するファイルシステムディレクトリを指定しデータベースの管理を簡素化する | 類似機能なし |
Copyright © ITmedia, Inc. All Rights Reserved.