10. 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のみ
9
11. SSMA for Oracle の構成例 10
Oracle DataBase SSMA for Oracle
Oracle Net Client
SQL Server
SSMA ExtentionPack for Oracle
Oracle Data Provider
同居可能
移行元DB ②移行先DB①SSMA
12. SSMA for Oracle の動作環境 11
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 用どちらでも可
52. Oracle Database
(マイグレーション先) の準備②
マイグレーション情報を保存するリポジトリにするユーザーを作成します。
このユーザーには以下のロール、権限を付与します。
ロール
CONNECT WITH ADMIN OPTION, RESOURCE WITH ADMIN OPTION
権限
ALTER ANY ROLE, ALTER ANY SEQUENCE, ALTER ANY TABLE,
ALTER TABLESPACE, ALTER ANY TRIGGER, COMMENT ANY TABLE,
CREATE ANY SEQUENCE, CREATE ANY TABLE, CREATE ANY TRIGGER,
CREATE VIEW WITH ADMIN OPTION,
CREATE MATERIALIZED VIEW WITH ADMIN OPTION,
CREATE PUBLIC SYNONYM WITH ADMIN OPTION,
CREATE ROLE, CREATE USER, DROP ANY SEQUENCE, DROP ANY TABLE,
DROP ANY TRIGGER, DROP USER, DROP ANY ROLE, GRANT ANY ROLE,
INSERT ANY TABLE, SELECT ANY TABLE, UPDATE ANY TABLE
51
84. 検索結果の出力行数制限
行の検索結果を制限を行う場合、以下の違いがあります。
SQL Server
SELECT TOP 10 [PERCENT] [WITH TIES] * from tbl1 order by 列
Oracle 11g 以前
※ROWNUMを駆使して対応する必要があり
select rownum, * from tbl1 where rownum <= 10 order by 列
Oracle12c
※SQLで実装
SELECT * from tbl1 FETCH FIRST 10 [PERCENT] ROWS [ONLY | WITH TIES]
order by 列
83
85. 照合順序の違い①
SQL ServerとOracleでは文字の照合順序が異なるため、文字列のソート結果や、検索
の結果が変わります。
SQL Server での対応
データベース作成時、照合順序を Japanese_bin2 にする
表作成時に、列の照合順序を設定する
ソートのみなら以下のように対応可能
SELECT * FROM 表 ORDER BY 列 COLLATE JAPANESE_BIN2
84
DB 照合順序 概要
SQL Server Japanese_CI_AS 日本語、大文字小文字区別なし、アクセント区別
Oracle NLS_LANGUAGE=JAPANESE
NLS_SORT =BINARY
日本語、バイナリ(文字コードの句点識別あり)
CREATE TABLE TBL1 (
COL1 varchar(100) COLLATE JAPANESE_BIN2 , …
86. 照合順序の違い②
Oracleでの対応
(並び替えの場合)
SQL個別でORDER BYでソートを設定する。また、索引を作成する。
SELECT ~ ORDER BY NLSSORT(列, ’NLS_SORT=JAPANESE_M_CI’);
CREATE INDEX IDX on 表 ( NLSSORT(列, ’NLS_SORT=JAPANESE_M_CI’));
セッションで設定
ALTER SESSION SET NLS_SORT=‘JAPANESE_M_CI’;
SELECT ~ ORDER BY 列
12cR2以降のバージョンのみ
表の列に指定 ※
85
CREATE TABLE TBL1 (
COL1 varchar2(100) COLLATE JAPANESE_M_CI , …
※この方法を行った際、初期パラメータmax_string_size=extended に変更しなければエラーになりました。
STARTUP UPGRADE
ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED SCOPE=BOTH;
@?/rdbms/admin/utl32k.sql
(インスタンス再起動)