Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
データベースマイグレーション
について
藤井 元雄
はじめに
この資料は個人の見解に基づくものであり、
所属する組織の公式の見解ではありませんので
ご了承ください。
1
自己紹介
名前 :藤井 元雄
現在 :株式会社 シー・エス・イー
客先常駐でサーバーの構築をしています
過去 :金融機関で富士通、IBMの運用・保守・開発
オープン系のシステム開発
パッケージソフトのプリセールス・ヘルプデスク
客先常駐でインフ...
アジェンダ
 データベースマイグレーションツール
 SQLの動作の違い
3
データベースマイグレーションツール
4
データベース・マイグレーションとは
 データベースの定義やデータをDBの新バージョンや別のDB
製品に移行する
 移行先データベースに適合するようにミドルウェアやアプリ
ケーションの変更等を行う
5
データベース・マイグレーションツー
ルとは
 データベースのオブジェクト(テーブル、ファンクション等)、および
データを移行先DBMSに合わせて変換して移行するためのツールです。
 SQL Server、Oracleについては以下のツールが...
SQL Server Migration Assistant
 SSMAはマイクロソフトが無償で提供している、他のDBからSQL Serverへのマイグレー
ションツールです。
 以下のステップに分けてマイグレーションできます
 移行性評...
SSMAの対応DB
 移行元
 Oracle 9i-12c
 MS-Access
 MySQL
 DB2
 Sybase ASE
 移行先
 SQL Server 2008 – 2016 / 2017 Preview ( Win...
SSMA for Oracle の構成例 9
Oracle DataBase SSMA for Oracle
Oracle Net Client
SQL Server
SSMA ExtentionPack for Oracle
Oracle D...
SSMA for Oracle の動作環境 10
 SSMA 7.6 (2017/10/19 最新)の動作環境は以下の通り
対象 OS ソフトウェア 備考
①SSMA 64 Bit Windows SSMA for Oracle .Net F...
SSMA for Oracleのマイグレーション
対象
 表
 索引
 ビュー
 マテリアライズド・ビュー
 データタイプ
 プロシージャ
 ファンクション
 トリガー
 データ
 ユーザー、ロール、データベース、データベー...
SSMAの入手
 マイクロソフトのダウンロードセンターから入手できます。
ユーザー登録は不要です。
 SSMA for OracleとSSMA for Oracle Extention Pack の2つを同時にダ
ウンロードできます。
12...
インストール手順①
 ①SSMA
 SSMA for Oracle.7.6.0.msi を実行してインストールします
→インストーラーの設定に従います
インストール完了後、デスクトップに右のアイコンが作成されます
 Oracle Net ...
インストール手順②-1
 ②移行先DB
 SQL Serverをインストールします(インスタンス作成)。
 SSMA for Oracle Extension Pack.7.6.0.msi を実行します。
 途中、以下のOracle D...
インストール手順②-2
 SSMA用データベース作成のため、移行先インスタンスの接続情報を入力しま
す。
 接続ユーザーには、sysadmin権限が必要です。
15
接続先インスタンス選択 接続パラメータ入力
パスワード(Windows認証...
インストール手順②-3
 データベース作成の確認をされますので、Nextクリックで確定します。
 インストールが完了すると、上記で接続したインスタンスに、2つのデータ
ベースが作成されます:
ssmatesterdb → マイグレーションテ...
インストール手順②-3
 sqmcmd、SSMSで以下のSQLを実行し、インスタンスでCLRを使用可能にし
ます(SSMAのアセンブリを動作可能にします)。
 Oracle Data Provider をインストールします。
→インストーラ...
SQL Server(マイグレーション先)
の準備
 SQL Serverでマイグレーション先のデータベースを作成します。
→移行元のデータベース名と違っても問題ありません。
 TCP/IPで接続できるよう設定してください。
18
SSMAの起動
 デスクトップのSSMAのアイコンから起動するか、
スタートメニューからSSMAを起動します。
19
SSMAの画面 20
メニュー
Oracle
オブジェクト
のエリア
(移行元)
SQL Server
オブジェクト
のエリア
(移行先)
メッセージ
エリア
(起動時は未表示)
マイグレーションの手順
①プロジェクトの作成(開く)
②Oracle接続
③マイグレーションレポート作成
④SQL Server接続
⑤スキーママイグレーション
⑥データマイグレーション
21
① ② ③④ ⑤
大きな流れとしては、画面上部のメ...
プロジェクト作成①
 マイグレーションを行うためには、まずプロジェクトを作成します。
 プロジェクト名
 プロジェクトファイル保存先
 マイグレーションターゲットのSQL Serverバージョンを選択します。
22
プロジェクトの作成②
 プロジェクト作成後のオプションを設定します。(いつでも可能です)
 「Tools」-「ProjectSettings」でオプション画面を表示します。
 設定可能なもの
 プロジェクトの情報
 一般設定
 コン...
プロジェクトの作成③
 コンバート方法で設定できるもの例
 SSMAの独自関数を使用するか
trunc(日付型)、trim( 文字列, 除去する文字)など、SQL Serverが
持っていない関数を、SSMAの拡張関数に置き換える
 Or...
Oracle接続
 Oracleを接続します。下記のいずれかのモードを選択します。
 Provider : Oracle Client / OLEDB / ODBC
 Mode : Standard mode /TNSNAMES Conn...
レポート作成①
 スキーママイグレーションのレポートを作成します。
 マイグレーションのツールでの変換結果を評価します。
 レポートを作成するには、レポート作成対象オブジェクトをチェックした
後、「Schemas」 または 「Syanon...
レポート作成②
 レポートが完成すると、Webブラウザでレポートが表示されます。
 レポートはプロジェクトファイルのフォルダに「report¥report(作成日時)」フォルダが作成されます。
 レポートはフォルダ全体をコピーして他のPC...
レポート作成③
 レポートで確認できるもの
 マイグレーション対象数
 エラー、警告の数
 エラー、警告の割合
 マイグレーションしたプロシージャ、パッケージ、ファンクション
(変換前、後の比較)
28
SQL Server接続
 SQL Serverに接続します。
 SQL Serverに接続する前に、SQL Server Agentサービスを起動する必要
があります。
29
スキーママイグレーション①
 マイグレーションするOracleのスキーマを選択し、「Convert
Schema」をクリックます。
※この時点では、まだSQL Serverへマイグレーションされていません。
30
スキーママイグレーション③
 SQL Serverのマイグレーション先のスキーマを選択し、
右クリックメニュー「Synchronize with Database」をクリックします。
31
スキーママイグレーション④
 マイグレーションさせるオブジェクト画面が表示されるので、対象を選択
し、「OK」をクリックします。
32
マイグレーション先 SSMAのデータ
双方向同期
同期しない
マイグレーション先に同期
SSMAに同期
A...
スキーママイグレーション⑤
 SSMA独自の拡張データタイプ、ファンクションなどはここで同期するこ
とで、初めてマイグレーション先のSQL Serverに保存されます。
33
データマイグレーション①
 Oracleのマイグレーション対象テーブルを選択し、「Migrate Data」を
クリックします。
 Oracle、SQL Serverへの接続要求がされるので接続します。
 文字コードの変換は、マイグレーシ...
データマイグレーション②
 マイグレーションが完了すると、結果が表示されれるので「Close」で終
了します。
 「Save Report」クリックで結果をCSVファイルに保存できます。
35
マイグレーション結果
 マイグレーションしたテーブルのほかに、SSMA用のテーブル、ビューが
作成されます。
36
マイグレーションツールの使い方(例)
 事前調査として、マイグレーションの変換率、手動変換箇所、難易度等を
レポートで確認する
 自動変換可能なオブジェクト、データだけマイグレーションし、マイグ
レーション全体の負荷を軽減する
 ファンク...
(参考)モジュール入手元 38
 SSMA for Oracle / SSMA Extention Pack for Oracle
https://docs.microsoft.com/ja-jp/sql/ssma/sql-server-mi...
SQL Developer
 SQL Developerは、Oracle が提供する無償のGUIのデータベース管理
ツールです。
 Oracle Databaseに同梱されていますが、別途入手可能です。
 以下のステップに分けてマイグレー...
SQL Developerの構成例 40
SQL Server SQL Developer
JKD8
jtds
Oracle Database
同居可能
移行元DB 移行先DB①SQL Developer
SQL Developer の動作環境 41
 SQL Developer 17.2 Linux版(2017/10/19 最新)の動作環境は以下の通
り
 RPMでのインストールになります。
対象 OS ソフトウェア 備考
①SSMA Li...
SQL Developerの対応DB
 移行元
 SQL Server 7.0, 2000, 2005
 MS-Access
 Teradata
 MySQL
 DB2
 Sybase ASE
 Infomix
 移行先
 ...
SQL Developerの入手
 Oracleのサイトから入手できます。
 ユーザー登録は不要です。
 ライセンスに同意後、
任意のソフトをダウンロードします。
43
インストール手順①
 ① SQL Developer
 JDK8をインストールします。
 SQL Developer をインストールします。
→ /opt/sqldeveloper にインストールされます。
 SQL Developer...
Oracle Database
(マイグレーション先) の準備
 Oracle Databaseでマイグレーション先のデータベースを作成します。
→移行元のデータベース名と違っても問題ありません。
 jtdsのJDBCドライバファイル(jt...
SQL Developerの起動
 GUIが使用できる環境で、以下のシェルを実行します。
46
$ /opt/sqldeveloper/sqldeveloper.sh
SQL Developerの画面 47
マイグレーションの手順
 SQL Server接続
 移行オプション設定
 ウィザードでのマイグレーション
48
 メニューの「ツール」ー「プリファレンス」で画面を表示します。
 画面左のツリーメニューの「データベース」ー「サードパーティJDBCドライバ」
を選択します。
 「エントリの追加」をクリックし、jtdsのドライバファイル(jtds-1.3...
SQL Server接続②
 「新規追加」をクリックします。
50
SQL Server接続③
 SQL Serverのタブを選択します。
 接続名、接続に必要な情報を入力して「接続」をクリックします。
※データベースの設定が必須です。
 接続に成功すると、SQL DeveloperにSQL Server...
移行オプションの設定①
 「ツール」-「プリファレンス」-ツリーアイテム「移行」で選択します。
移行対象オブジェクトのほか、12cへの対応を行うか選択します。
 Teradata → エクスポートの最小、最大数
 データ移行オプション →...
ウィザードでのマイグレーション①
 SQL Serverのマイグレーション対象を右クリックし、「Oracleへ移行」
をクリックします。
53
ウィザードでのマイグレーション②
 移行ウィザード画面が起動します。「次」をクリックします。
54
ウィザードでのマイグレーション③
 移行の情報を保存するリポジトリDBを選択し、「次」をクリックします。
 接続情報が未作成の場合は、「新しい接続」をクリックして追加します。
55
「新しい接続」で、接続情報を入力する
ウィザードでのマイグレーション④
 プロジェクト移行エンティティ名、保存ディレクトリを選択し、「次」を
クリックします。
56
ウィザードでのマイグレーション⑤
 移行元のDBを選択して「次」をクリックします。
57
ウィザードでのマイグレーション⑥
 移行対象のデータベースを選択し、「次」をクリックします。
58
ウィザードでのマイグレーション⑦
 データ形式の変換オプションを登録し、「次」へを選択します。
59
ウィザードでのマイグレーション⑧
 移行対象のオブジェクトを選択し、「次」をクリックします。
60
ウィザードでのマイグレーション⑨
 移行先のDB接続先を選択し、「次」を選択します。
接続ユーザーは、SYSTEMまたはDBA権限があるユーザーにしまs。
61
ウィザードでのマイグレーション⑩
 データの移動に使用する接続情報を選択し、「次」をクリックします。
62
ウィザードでのマイグレーション⑪
 変換内容を確認し、問題なければ「終了」をクリックします。
63
ウィザードでのマイグレーション⑫
 完了後、移行のツリーが表示されます。実行日付をクリックすると結果の
確認ができます。
64
オブジェクトのコピー①
 SQL Serverから表を単体でコピーできます。
 対象の表を右クリック、「Oracleへのコピー」をクリックします。
65
オブジェクトのコピー②
 コピーするOracle接続先を選択し、コピーのオプションを設定後に
「OK」をクリックします。
 事前にマイグレーション先のデータベースに接続する必要があります。
66
オブジェクトのコピー③
 コピー結果のログが表示されるので確認します。
67
(参考)モジュール入手元
 SQL Developer
http://www.oracle.com/technetwork/jp/developer-tools/sql-
developer/downloads/index.html
 JD...
SQLの動作の違いについて
69
演算の動作の違い①
 SQL Serverでは整数同士の結果は小数点以下を切り捨てた整数を返します。
Oracleは結果によって整数または少数を返します。
SQL Server
Oracle
70
1> select 1/2, 2/2, -1...
演算の動作の違い②
 演算の動作による影響
 整数同士の割り算している箇所
 日時計算
→ SQL Serverでは日の計算のみ反映されます。
例) 2017/01/01 00:00:00 に + 1 + 2/24 + 3/(24 *60...
演算の動作の違い③
 対応例
 Oracle → SQL Server
演算するどちらか一方の辺を少数付きの数字型することで小数点以下の計算が
出来でます。
ただし、答えが整数の場合でも答えが少数付きの数字になります。
固定値の場合: 1/...
NULLの扱い①
 SQL Server では、空文字’’ と NULLは明確に区別されますが、
Oracleでは区別されないため、出力結果が異なります。
例)SELECT * FROM tbl1 WHERE col1 is null
→ O...
NULLの扱い②
 NULL行を含む列でソートを行うと、SQL ServerとOracleでは出力順序が
異なります。
SQL Server → 最初に出力(最小値)
Oracle → 最後に出力(最大値)
 SQLの操作でNULLの出力順...
検索結果の出力行数制限
 行の検索結果を制限を行う場合、以下の違いがあります。
 Oracle 11g
select rownum, * from tbl1 where rownum <= 10 order by 列
 SQL Serve...
照合順序の違い
 SQL Serverはインスタンス作成時に言語の照合順序を設定します。
 Oracleは基本的にはバイナリ順になります。
照合順序を設定する際に、言語ソート機能により、照合順序を決めます。
例)
SQLで設定
SELECT...
Upcoming SlideShare
Loading in …5
×

[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏

577 views

Published on

SQL Server、Oracle間のデータベース・マイグレーションを行うための無償ツールである SQL Server Migration Assistant、および SQL Developer のインストールと使い方の紹介。および、2つのDBのSQLの動作やSQL関数の違いをいくつか紹介させていただきます。

Published in: Technology
  • Be the first to comment

[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏

  1. 1. データベースマイグレーション について 藤井 元雄
  2. 2. はじめに この資料は個人の見解に基づくものであり、 所属する組織の公式の見解ではありませんので ご了承ください。 1
  3. 3. 自己紹介 名前 :藤井 元雄 現在 :株式会社 シー・エス・イー 客先常駐でサーバーの構築をしています 過去 :金融機関で富士通、IBMの運用・保守・開発 オープン系のシステム開発 パッケージソフトのプリセールス・ヘルプデスク 客先常駐でインフラエンジニアとして構築・保守・ 開発標準策定、製品検証その他・・・・ 2
  4. 4. アジェンダ  データベースマイグレーションツール  SQLの動作の違い 3
  5. 5. データベースマイグレーションツール 4
  6. 6. データベース・マイグレーションとは  データベースの定義やデータをDBの新バージョンや別のDB 製品に移行する  移行先データベースに適合するようにミドルウェアやアプリ ケーションの変更等を行う 5
  7. 7. データベース・マイグレーションツー ルとは  データベースのオブジェクト(テーブル、ファンクション等)、および データを移行先DBMSに合わせて変換して移行するためのツールです。  SQL Server、Oracleについては以下のツールが無償提供されています。 6 対象 ツール名 開発元 SQLServerへ移行 SQL Server Migration Assistant(SSMA) Microsoft Oracleへ移行 SQL Developer Oracle
  8. 8. SQL Server Migration Assistant  SSMAはマイクロソフトが無償で提供している、他のDBからSQL Serverへのマイグレー ションツールです。  以下のステップに分けてマイグレーションできます  移行性評価(レポートの作成)  スキーママイグレーション  データマイグレーション  SQL Serverにないファンクションは、SSMA独自のファンクションで代替することができま す。  移行元のデータベース毎に、インストールするモジュールが異なります。 7
  9. 9. SSMAの対応DB  移行元  Oracle 9i-12c  MS-Access  MySQL  DB2  Sybase ASE  移行先  SQL Server 2008 – 2016 / 2017 Preview ( Windows / Linux)  Azure SQL Database  Azure SQL Data Warehouse ※Oracleのみ 8
  10. 10. SSMA for Oracle の構成例 9 Oracle DataBase SSMA for Oracle Oracle Net Client SQL Server SSMA ExtentionPack for Oracle Oracle Data Provider 同居可能 移行元DB ②移行先DB①SSMA
  11. 11. SSMA for Oracle の動作環境 10  SSMA 7.6 (2017/10/19 最新)の動作環境は以下の通り 対象 OS ソフトウェア 備考 ①SSMA 64 Bit Windows SSMA for Oracle .Net Framework 4.5.2 以上が必要 Oracle Net Client 移行元Oracleのバージョン用以降のもの ②移行先 Windows SSMA for Oracle Extention Pack .Net Framework 4.5.2 以上が必要 SQL Server 任意のバージョン Oracle Data Provider 移行元Oracleのバージョン用以降のもの .NET / oledb 用どちらでも可
  12. 12. SSMA for Oracleのマイグレーション 対象  表  索引  ビュー  マテリアライズド・ビュー  データタイプ  プロシージャ  ファンクション  トリガー  データ  ユーザー、ロール、データベース、データベースファイル等は対象外 11
  13. 13. SSMAの入手  マイクロソフトのダウンロードセンターから入手できます。 ユーザー登録は不要です。  SSMA for OracleとSSMA for Oracle Extention Pack の2つを同時にダ ウンロードできます。 12 Downloadをクリックするとファイル選択画面が 表示されるので、すべてチェックします。
  14. 14. インストール手順①  ①SSMA  SSMA for Oracle.7.6.0.msi を実行してインストールします →インストーラーの設定に従います インストール完了後、デスクトップに右のアイコンが作成されます  Oracle Net Clientをインストールする →インストーラー版とXCOPY版がありますので、付属のドキュメントを 参考にインストールします 13 XCOPY版は以下をコマンドプロンプトで実行します。 > cd /d (インストールファイル展開フォルダ) > install_odpm.bat [ x86 | x64 | both ] (インストール先フォルダ)
  15. 15. インストール手順②-1  ②移行先DB  SQL Serverをインストールします(インスタンス作成)。  SSMA for Oracle Extension Pack.7.6.0.msi を実行します。  途中、以下のOracle Data Providerのダウンロード画面に誘導するボタンが 表示されます。別途入手できますので、無視しても構いません。 14
  16. 16. インストール手順②-2  SSMA用データベース作成のため、移行先インスタンスの接続情報を入力しま す。  接続ユーザーには、sysadmin権限が必要です。 15 接続先インスタンス選択 接続パラメータ入力 パスワード(Windows認証のみ)
  17. 17. インストール手順②-3  データベース作成の確認をされますので、Nextクリックで確定します。  インストールが完了すると、上記で接続したインスタンスに、2つのデータ ベースが作成されます: ssmatesterdb → マイグレーションテスト用DB sysdb → SSMAの追加ファンクション等のスキーマ 16
  18. 18. インストール手順②-3  sqmcmd、SSMSで以下のSQLを実行し、インスタンスでCLRを使用可能にし ます(SSMAのアセンブリを動作可能にします)。  Oracle Data Provider をインストールします。 →インストーラーの指示に従ってインストールします。 17 sp_configure ‘clr enabled’, 1 GO RECONFIGURE GO
  19. 19. SQL Server(マイグレーション先) の準備  SQL Serverでマイグレーション先のデータベースを作成します。 →移行元のデータベース名と違っても問題ありません。  TCP/IPで接続できるよう設定してください。 18
  20. 20. SSMAの起動  デスクトップのSSMAのアイコンから起動するか、 スタートメニューからSSMAを起動します。 19
  21. 21. SSMAの画面 20 メニュー Oracle オブジェクト のエリア (移行元) SQL Server オブジェクト のエリア (移行先) メッセージ エリア (起動時は未表示)
  22. 22. マイグレーションの手順 ①プロジェクトの作成(開く) ②Oracle接続 ③マイグレーションレポート作成 ④SQL Server接続 ⑤スキーママイグレーション ⑥データマイグレーション 21 ① ② ③④ ⑤ 大きな流れとしては、画面上部のメニューを左から順番にたどっていきます。(例外あり) ⑥
  23. 23. プロジェクト作成①  マイグレーションを行うためには、まずプロジェクトを作成します。  プロジェクト名  プロジェクトファイル保存先  マイグレーションターゲットのSQL Serverバージョンを選択します。 22
  24. 24. プロジェクトの作成②  プロジェクト作成後のオプションを設定します。(いつでも可能です)  「Tools」-「ProjectSettings」でオプション画面を表示します。  設定可能なもの  プロジェクトの情報  一般設定  コンバート方法  マイグレーション時の動作  Oracleシステムオブジェクトのマイグレーション対象  データの同期  GUIの設定  データタイプの変換マッピング 23
  25. 25. プロジェクトの作成③  コンバート方法で設定できるもの例  SSMAの独自関数を使用するか trunc(日付型)、trim( 文字列, 除去する文字)など、SQL Serverが 持っていない関数を、SSMAの拡張関数に置き換える  Order BYのNULLの扱いのエミュレーション  ROWID列のエミュレート(すべてのテーブルにROWID列を追加) 等 24
  26. 26. Oracle接続  Oracleを接続します。下記のいずれかのモードを選択します。  Provider : Oracle Client / OLEDB / ODBC  Mode : Standard mode /TNSNAMES Connect / Connect String  接続に必要な情報を入力し、「Connect」をクリックします。  Oracle接続に成功すると、SSMAにOracleのスキーマ情報が保存されます。 25
  27. 27. レポート作成①  スキーママイグレーションのレポートを作成します。  マイグレーションのツールでの変換結果を評価します。  レポートを作成するには、レポート作成対象オブジェクトをチェックした 後、「Schemas」 または 「Syanonyms」を選択後、 「Create Report」をクリックします。 26
  28. 28. レポート作成②  レポートが完成すると、Webブラウザでレポートが表示されます。  レポートはプロジェクトファイルのフォルダに「report¥report(作成日時)」フォルダが作成されます。  レポートはフォルダ全体をコピーして他のPCで確認できます。 トップページ : report¥report(作成日時)¥mainindex.html 27
  29. 29. レポート作成③  レポートで確認できるもの  マイグレーション対象数  エラー、警告の数  エラー、警告の割合  マイグレーションしたプロシージャ、パッケージ、ファンクション (変換前、後の比較) 28
  30. 30. SQL Server接続  SQL Serverに接続します。  SQL Serverに接続する前に、SQL Server Agentサービスを起動する必要 があります。 29
  31. 31. スキーママイグレーション①  マイグレーションするOracleのスキーマを選択し、「Convert Schema」をクリックます。 ※この時点では、まだSQL Serverへマイグレーションされていません。 30
  32. 32. スキーママイグレーション③  SQL Serverのマイグレーション先のスキーマを選択し、 右クリックメニュー「Synchronize with Database」をクリックします。 31
  33. 33. スキーママイグレーション④  マイグレーションさせるオブジェクト画面が表示されるので、対象を選択 し、「OK」をクリックします。 32 マイグレーション先 SSMAのデータ 双方向同期 同期しない マイグレーション先に同期 SSMAに同期 Action
  34. 34. スキーママイグレーション⑤  SSMA独自の拡張データタイプ、ファンクションなどはここで同期するこ とで、初めてマイグレーション先のSQL Serverに保存されます。 33
  35. 35. データマイグレーション①  Oracleのマイグレーション対象テーブルを選択し、「Migrate Data」を クリックします。  Oracle、SQL Serverへの接続要求がされるので接続します。  文字コードの変換は、マイグレーション先のSQL Serverにインストールさ れたOracle Data Providerに任されます。 34
  36. 36. データマイグレーション②  マイグレーションが完了すると、結果が表示されれるので「Close」で終 了します。  「Save Report」クリックで結果をCSVファイルに保存できます。 35
  37. 37. マイグレーション結果  マイグレーションしたテーブルのほかに、SSMA用のテーブル、ビューが 作成されます。 36
  38. 38. マイグレーションツールの使い方(例)  事前調査として、マイグレーションの変換率、手動変換箇所、難易度等を レポートで確認する  自動変換可能なオブジェクト、データだけマイグレーションし、マイグ レーション全体の負荷を軽減する  ファンクション、プロシージャのマイグレーション機能を利用し、SQLを 他のDB用に変換した記述を確認する。 (ファンクション1つだけでレポート作成可能なため) 37
  39. 39. (参考)モジュール入手元 38  SSMA for Oracle / SSMA Extention Pack for Oracle https://docs.microsoft.com/ja-jp/sql/ssma/sql-server-migration-assistant ※上記はマニュアル。ダウンロードURLはここのリンクから辿ります。  Oracle Net Client http://www.oracle.com/technetwork/database/enterprise- edition/downloads/oracle12c-windows-3633015.html?ssSourceSiteId=otnjp  Oracle Data Provider(ODAC) http://www.oracle.com/technetwork/jp/database/windows/downloads/inde x-214820-ja.html
  40. 40. SQL Developer  SQL Developerは、Oracle が提供する無償のGUIのデータベース管理 ツールです。  Oracle Databaseに同梱されていますが、別途入手可能です。  以下のステップに分けてマイグレーションできます  移行性評価(レポートの作成)  スキーママイグレーション  データマイグレーション 39
  41. 41. SQL Developerの構成例 40 SQL Server SQL Developer JKD8 jtds Oracle Database 同居可能 移行元DB 移行先DB①SQL Developer
  42. 42. SQL Developer の動作環境 41  SQL Developer 17.2 Linux版(2017/10/19 最新)の動作環境は以下の通 り  RPMでのインストールになります。 対象 OS ソフトウェア 備考 ①SSMA Linux SSMA for Oracle GUI環境が必要です。 JDK8 Jtds オープンソースのjdbc ※MicrosoftのJDBCは使用できません (参考)検証環境 Oracle Linux 7.3(64bit) ベース構成 : サーバー 追加アドオン: 開発ツール、互換性ライブラリ
  43. 43. SQL Developerの対応DB  移行元  SQL Server 7.0, 2000, 2005  MS-Access  Teradata  MySQL  DB2  Sybase ASE  Infomix  移行先  Oracle Database ~ 12c 42
  44. 44. SQL Developerの入手  Oracleのサイトから入手できます。  ユーザー登録は不要です。  ライセンスに同意後、 任意のソフトをダウンロードします。 43
  45. 45. インストール手順①  ① SQL Developer  JDK8をインストールします。  SQL Developer をインストールします。 → /opt/sqldeveloper にインストールされます。  SQL Developerの設定ファイルを編集します。 44 # rpm – ivh jdk-8u144-linux-x64.rpm # rpm -ivh 17.2.0.188.1159-1.noarch.rpm 設定ファイル名: ~/.sqldeveloper/4.2.0/product.conf (以下の行を追加) SetJavaHome /usr/java/jdk1.8.0_144
  46. 46. Oracle Database (マイグレーション先) の準備  Oracle Databaseでマイグレーション先のデータベースを作成します。 →移行元のデータベース名と違っても問題ありません。  jtdsのJDBCドライバファイル(jtds1.3.1.jar)を任意のディレクトリにコ ピーします。  マイグレーション情報を保存するリポジトリにするスキーマを作成し ます(任意)。 →権限として:resource, create session, create view が必要 45
  47. 47. SQL Developerの起動  GUIが使用できる環境で、以下のシェルを実行します。 46 $ /opt/sqldeveloper/sqldeveloper.sh
  48. 48. SQL Developerの画面 47
  49. 49. マイグレーションの手順  SQL Server接続  移行オプション設定  ウィザードでのマイグレーション 48
  50. 50.  メニューの「ツール」ー「プリファレンス」で画面を表示します。  画面左のツリーメニューの「データベース」ー「サードパーティJDBCドライバ」 を選択します。  「エントリの追加」をクリックし、jtdsのドライバファイル(jtds-1.3.1.jar)を選択 します。  「OK」で画面を閉じます。 SQL Server接続① 49
  51. 51. SQL Server接続②  「新規追加」をクリックします。 50
  52. 52. SQL Server接続③  SQL Serverのタブを選択します。  接続名、接続に必要な情報を入力して「接続」をクリックします。 ※データベースの設定が必須です。  接続に成功すると、SQL DeveloperにSQL Serverのオブジェクトツリーが表示されま す。 51
  53. 53. 移行オプションの設定①  「ツール」-「プリファレンス」-ツリーアイテム「移行」で選択します。 移行対象オブジェクトのほか、12cへの対応を行うか選択します。  Teradata → エクスポートの最小、最大数  データ移行オプション → NULLデータの扱い、データ形式等  トランスレータ → 移行元のデータ形式、変数などの形式等  識別子オプション → 移行元の識別子の付加  生成オプション  移行スクリプト作成の作成単位  移行時の付加情報  移行対象オブジェクト 52
  54. 54. ウィザードでのマイグレーション①  SQL Serverのマイグレーション対象を右クリックし、「Oracleへ移行」 をクリックします。 53
  55. 55. ウィザードでのマイグレーション②  移行ウィザード画面が起動します。「次」をクリックします。 54
  56. 56. ウィザードでのマイグレーション③  移行の情報を保存するリポジトリDBを選択し、「次」をクリックします。  接続情報が未作成の場合は、「新しい接続」をクリックして追加します。 55 「新しい接続」で、接続情報を入力する
  57. 57. ウィザードでのマイグレーション④  プロジェクト移行エンティティ名、保存ディレクトリを選択し、「次」を クリックします。 56
  58. 58. ウィザードでのマイグレーション⑤  移行元のDBを選択して「次」をクリックします。 57
  59. 59. ウィザードでのマイグレーション⑥  移行対象のデータベースを選択し、「次」をクリックします。 58
  60. 60. ウィザードでのマイグレーション⑦  データ形式の変換オプションを登録し、「次」へを選択します。 59
  61. 61. ウィザードでのマイグレーション⑧  移行対象のオブジェクトを選択し、「次」をクリックします。 60
  62. 62. ウィザードでのマイグレーション⑨  移行先のDB接続先を選択し、「次」を選択します。 接続ユーザーは、SYSTEMまたはDBA権限があるユーザーにしまs。 61
  63. 63. ウィザードでのマイグレーション⑩  データの移動に使用する接続情報を選択し、「次」をクリックします。 62
  64. 64. ウィザードでのマイグレーション⑪  変換内容を確認し、問題なければ「終了」をクリックします。 63
  65. 65. ウィザードでのマイグレーション⑫  完了後、移行のツリーが表示されます。実行日付をクリックすると結果の 確認ができます。 64
  66. 66. オブジェクトのコピー①  SQL Serverから表を単体でコピーできます。  対象の表を右クリック、「Oracleへのコピー」をクリックします。 65
  67. 67. オブジェクトのコピー②  コピーするOracle接続先を選択し、コピーのオプションを設定後に 「OK」をクリックします。  事前にマイグレーション先のデータベースに接続する必要があります。 66
  68. 68. オブジェクトのコピー③  コピー結果のログが表示されるので確認します。 67
  69. 69. (参考)モジュール入手元  SQL Developer http://www.oracle.com/technetwork/jp/developer-tools/sql- developer/downloads/index.html  JDK8 http://www.oracle.com/technetwork/java/javase/downloads/jdk8- downloads-2133151.html  jTDS https://sourceforge.net/projects/jtds/ 68
  70. 70. SQLの動作の違いについて 69
  71. 71. 演算の動作の違い①  SQL Serverでは整数同士の結果は小数点以下を切り捨てた整数を返します。 Oracleは結果によって整数または少数を返します。 SQL Server Oracle 70 1> select 1/2, 2/2, -1/2 2> go ----------- ----------- ----------- 0 1 0 SQL> select 1/2, 2/2, -1/2 from dual; 1/2 2/2 -1/2 ---------- ---------- ---------- .5 1 -.5
  72. 72. 演算の動作の違い②  演算の動作による影響  整数同士の割り算している箇所  日時計算 → SQL Serverでは日の計算のみ反映されます。 例) 2017/01/01 00:00:00 に + 1 + 2/24 + 3/(24 *60) + 4/(24*60*60) SQL Server → 2017/01/02 00:00:00 Oracle → 1027/01/02 02:03:04 71
  73. 73. 演算の動作の違い③  対応例  Oracle → SQL Server 演算するどちらか一方の辺を少数付きの数字型することで小数点以下の計算が 出来でます。 ただし、答えが整数の場合でも答えが少数付きの数字になります。 固定値の場合: 1/2 → 1/2.0 列の場合 : A/B → A/ cast (B as numeric)  SQL Server → Oracle 計算結果をtruncで小数点以下を切り捨てます。 固定値、列共通: 1/2 , A/B → trunc(1/2) , trunc(1/2) 72
  74. 74. NULLの扱い①  SQL Server では、空文字’’ と NULLは明確に区別されますが、 Oracleでは区別されないため、出力結果が異なります。 例)SELECT * FROM tbl1 WHERE col1 is null → Oracle NULL と空文字を出力 SQL Server NULLのみを出力 73
  75. 75. NULLの扱い②  NULL行を含む列でソートを行うと、SQL ServerとOracleでは出力順序が 異なります。 SQL Server → 最初に出力(最小値) Oracle → 最後に出力(最大値)  SQLの操作でNULLの出力順序を操作することもできます。 SQL Sever : NULLを最後に出力 SELECT ~ FROM 表 ORDER BY CASE WHEN 列 IS NULL THEN 1 ELSE 0 END, 列 Oracle : NULLを最初に出力 SELECT ~ FROM 表 ORDER BY 列 NULLS FIRST (NULLS LAST) 74
  76. 76. 検索結果の出力行数制限  行の検索結果を制限を行う場合、以下の違いがあります。  Oracle 11g select rownum, * from tbl1 where rownum <= 10 order by 列  SQL Server SELECT TOP 10 * from tbl1 order by 列  Oracle12c SELECT * from tbl1 FETCH FIRST 10 order by 列 75
  77. 77. 照合順序の違い  SQL Serverはインスタンス作成時に言語の照合順序を設定します。  Oracleは基本的にはバイナリ順になります。 照合順序を設定する際に、言語ソート機能により、照合順序を決めます。 例) SQLで設定 SELECT ~ ORDER BY NLSSORT(列, ’NLS_SORT=japanese’); セッション全体で設定 ALTER SESSION SET NLS_SORT=japanese; SELECT ~ ORDER BY 列 76

×