Info2softは、ウェブサイトでより快適で適切な閲覧体験を提供するためにCookieを使用しています。 プライバシーポリシー
Loading...
OracleとSQL Serverはいずれも代表的なデータベース管理システムです。企業は様々な目的により、OracleからSQL Serverへの移行を検討します。
主な理由は以下の通りです。
どのような理由でOracleからSQL Serverへの移行を検討する場合でも、本記事を参考に移行に関する情報と詳細な手順を確認できます。
OracleとSQL Serverデータベースの技術的な相違点を確認しましょう。
| 項目 | Oracle | SQL Server |
|---|---|---|
| 手続き型言語 | PL/SQL | T-SQL |
| データ型 | NUMBER、VARCHAR2、CLOBなど | INT、NVARCHAR、TEXTなど |
| スキーマ・ユーザーモデル | 各ユーザーにスキーマが紐付く | データベース内にスキーマが存在する |
| トランザクション制御 | DDL実行時に暗黙的コミット | 明示的なコミットが必要 |
| シーケンス | 独立したオブジェクト | IDENTITY列として実装 |
続いて、OracleのデータをSQL Serverへ転送する3つの有効な手法を解説します。
SQL Server Migration Assistant(SSMA)はMicrosoftが提供する無料ツールで、他データベースプラットフォームからSQL Serverへの移行を自動化します。データ転送だけでなく、テーブル、ビュー、プロシージャなどのOracleスキーマをSQL Server向けに変換可能です。
1.Microsoft公式サイトよりSSMA for Oracleをダウンロードしインストールします。
2.msiファイルを実行します。セキュリティ警告が表示された場合は「実行」をクリックします。
3.SQL Server側のサーバーにSSMAクライアントとSSMA拡張パックをインストールします。インストーラーの指示に従いセットアップを完了させます。
1.SSMA for Oracleを起動し、「ファイル」>「新規プロジェクト」をクリックします。
2.以下の項目を入力します。
1.Oracleメタデータエクスプローラー上部メニューより「Oracleに接続」をクリックします。
2.以下の情報を入力し「接続」をクリックします。
3.SSMAがOracleに接続し、利用可能なすべてのスキーマが一覧表示されます。移行対象のスキーマを選択し「OK」をクリックします。
SSMAがOracleのスキーマとオブジェクトを読み込みます。次の手順で移行先SQL Serverへ接続します。
1.SQL Serverメタデータエクスプローラー画面上部メニューより「SQL Serverに接続」をクリックします。
2.ポップアップウィンドウに以下を入力します。
3.「接続」ボタンをクリックします。
1.Oracleメタデータエクスプローラーより「レポート作成」>「評価レポート」を選択します。
2.変換成功率、非互換オブジェクト一覧、想定される手作業工数が表示されます。
3.レポートの内容を確認し、指摘された問題があれば手動で修正を実施します。
1.Oracleメタデータエクスプローラーにて対象のスキーマを右クリックし、「スキーマ変換」を選択します。
2.SSMAがOracleのデータ型をSQL Serverに対応する型へ変換、PL/SQLコードをT-SQLへ翻訳します。出力ウィンドウに変換時の課題が表示されます。
3.SQL Serverメタデータエクスプローラー画面にて変換後のスキーマを確認します。
1.SQL Serverメタデータエクスプローラーにて移行先SQL Serverデータベースを右クリック>「データベースと同期」を選択します。
2.SSMAがCREATE TABLE、CREATE VIEWなどのDDLスクリプトを実行し、SQL Server上にスキーマを作成します。
3.SQL Server Management Studio(SSMS)上に新規テーブルやオブジェクトが作成されていることを確認します。
1.Oracleメタデータエクスプローラーにて「テーブル」または「スキーマ全体」を右クリックし「データ移行」を選択します。
2.SSMAがOracleからデータを抽出し、効率的な一括ロードによりSQL Serverへ登録します。処理完了まで待機します。
データ移行完了後:
1.OracleとSQL Serverのレコード件数を比較します。
— SQL Server
SELECT COUNT(*) FROM dbo.Customers;
— Oracle
SELECT COUNT(*) FROM Customers;
2.SQL Server Management Studioにて検証を実施:
主キー・外部キー
NULL制約、既定値
インデックス、制約条件
サンプルデータと帳票
3.クエリやアプリケーションのスクリプトを実行し、業務ロジックに問題がないか確認します。
小規模データベースの場合、開発者はT-SQLスクリプトやSQL Server Integration Services(SSIS)を活用し、手動でOracleからSQL Serverへの変換を実施可能です。ただし本手法には高度な知識と厳格なテストが必要となります。
変換スクリプトを作成する前に、Oracleデータベースの構造を分析します。
1.テーブル、インデックス、ビュー、ストアドプロシージャ、トリガー、シーケンスといったすべてのデータベースオブジェクトを洗出します。
2.Oracle SQL Developerまたはexpdp(データポンプ出力機能)を利用しスキーマを出力します。
3.OracleよりDDL(データ定義言語)スクリプトを生成します。
4.出力したDDLスクリプトを保存し、SQL Server側でオブジェクトを再作成する際の参考とします。
OracleとSQL Serverではデータ型が異なるため、手動変換時に明示的なマッピングを定義し、データの正確性を担保する必要があります。
|
Oracle データ型 |
対応するSQL Server型 |
|
VARCHAR2(n) |
VARCHAR(n) |
|
NVARCHAR2(n) |
NVARCHAR(n) |
|
NUMBER |
INT、BIGINT または DECIMAL |
|
DATE |
DATETIME または DATE |
|
CLOB |
TEXT または VARCHAR(MAX) |
|
BLOB |
VARBINARY(MAX) |
カスタムスクリプト作成時には各列を明示的に定義し、SQL Serverの構文に適合させてください。
データ型マッピングの作成完了後、SQL Server上に新規データベースとスキーマを作成します。
CREATE DATABASE CompanyDB;
GO
USE CompanyDB;
GO
CREATE SCHEMA hr;
GO
変換済みスクリプトを利用しテーブル、インデックス、制約を再作成します。これによりOracleからSQLへの移行時、構造とインデックス戦略を自在に制御可能です。
OracleのテーブルデータをCSVまたはTSVなどのフラットファイルに出力し、取り込みを容易にします。
SQL*PlusまたはSQL Developerを使用する例:
SPOOL employees.csv
SELECT * FROM employees;
SPOOL OFF;
またexpdpを利用しデータのみ出力することも可能です。NULL値、日付フォーマット、特殊文字の処理に留意し、インポート時の不具合を防止してください。
SQL Server Management Studio(SSMS)またはbcp(一括コピーツール)を利用し、SQL Serverのテーブルへデータを登録します。
bcpを利用した実行例:
またSQL Server Integration Services(SSIS)を活用し、複数テーブルの一括インポートを自動化することもできます。
Oracleの手続き型コード(PL/SQL)はSQL ServerのT-SQLと構文が異なるため、トリガー、ストアドプロシージャ、関数を手動で書き換える必要があります。
データインポートとコード変換完了後:
1.OracleとSQL Serverのレコード件数を確認
2.整合性制約とテーブル間リレーションを確認
3.アプリケーション側のテストを実施し機能に問題がないか検証
4.SQL ServerのQuery StoreまたはProfilerを活用しパフォーマンス上の課題を抽出
データとスキーマの検証完了後:
一度限りの移行ではなくリアルタイムなデータ同期を必要とする企業には、Info2softのi2Streamが強力で柔軟なソリューションとなります。従来型の一度きりのOracleからSQLへの移行と異なり、i2Streamは継続的なレプリケーションを実現し、低遅延でOracleとSQL Serverのデータベースを常に同期させます。
Oracle→SQL Serverレプリケーションにおけるi2Streamの主な特長
OracleからSQL Serverへの移行は、企業のコスト削減、基盤システムの最新化、Microsoft製品群とのシームレスな連携を実現する戦略的な施策です。一方でデータ型、スキーマ構造、手続き型コードの相違に対応するため、綿密な計画と適切なツールが必要となります。
本記事ではOracleからSQL Serverへの移行における主な課題を整理し、円滑な移行を実現する複数の実績ある手法を紹介しました。