from mssql to mysql

30
Oracle - MySQL Migration

Upload: i-goo-lee

Post on 23-Jan-2018

453 views

Category:

Internet


4 download

TRANSCRIPT

Page 1: From MSSQL to MySQL

Oracle - MySQL

Migration

Page 2: From MSSQL to MySQL

Index

Oracle – MySQL Migration

Migration process

Schema Migration

Data Type

Trigger & SP

Schema & data Migration

기능 비교

Page 3: From MSSQL to MySQL

Migration Process

Analyze

Understand

Match

Src/dest

Re/Design Extract src

Convert

Import Schemas Logic data

Index Partition Test/POC Validate

Som

eth

ing

fails

fails

“Migration을 어떻게 진행해야 할까?”

Page 4: From MSSQL to MySQL

Migration Process (analyze)

“Source Database를 분석할 때 무엇을 해야 할까?”

1. 이해하기 어려운 기능부터 쉬운 기능까지 리스트를 만들자.

Issue Workaround Grade* Notes

Reference to external schemas in the

a different instance (db link) 10

제공하지 않음 또는 다른 솔루션으로 변경

Packages See Writing stored procedures 9 전체 재 코드화 필요

Procedures See Writing stored procedures 9 전체 재 코드화 필요

Unique key longer then 255 charac

ters See Key length limitations 4

Views alias Manually added 4 열 별칭은 수동으로 추가

Sequences See Migration of Sequences 3 가능하면 Auto Increment로 변환

Empty schemas See empty schema definitions 2 사용자 정의로 변환

2. Source Data의 유형을 확인하자. (단순 데이터 이동, 분석 or 집계 데이터, etc)

3. 스키마별 세부 복잡성을 검토하자.

4. Database Object를 수정하기 위한 노력(비용)에 대한 세부 평가

5. Database or Application의 기능을 수정하기 위한 노력(비용)에 대한 세부 평가

Page 5: From MSSQL to MySQL

Migration Process (understand)

“Oracle과 MySQL의 차이점을 이해하자.”

Server

Oracle은 Schema object 정의에서 대소문자 구별

MySQL은 lower_case_table_names 옵션에 따라 대소문자 구별

Oracle은 테이블에 default값으로 not null을 명시할 수 없음

MySQL에서 Millisecond는 5.6부터 지원

Oracle은 Data Type을 자동 변환하지 않음

MySQL에서는 sql_mode로 지원

Oracle의 varchar2는 4,000Byte

MySQL의 varchar는 65,535Byte

Oracle System Privileges – local/external : roles

MySQL Privileges (local : no roles)

MySQL에서는 Oracle의 dummy table(dual)을 제공하지 않음

select 1+1 from dual (oracle)

select 1+1 (MySQL)

Page 6: From MSSQL to MySQL

Migration Process (understand)

“Oracle과 MySQL의 차이점을 이해하자.”

DML & DDL

Key length limitations

Oracle의 index는 블록사이즈의 40%까지 인덱스처리 가능 – MySQL은 문제됨

MySQL의 경우 primary key나 index의 경우 255까지 사용 가능(utf-8 일 경우)

index_large_prefix 옵션으로 row format compressed 가능

Oracle의 Sequence는 Autoincremet로 대체

Autoincrement는 Not null이어야 하며, Primary key로 생성해야 함

Oracle은 sequence 값을 검색할 수 있음

ex) “SELECT MAX(id)+1 FROM tab

MySQL의 경우 LAST_INSERT_ID()라는 함수 사용

Page 7: From MSSQL to MySQL

Schema Migration

Oracle MySQL

Package N/A

Primary key Primary key

Role N/A

Schema Schema

Sequence AUTO_INCREMENT

Snapshot N/A

Synonym N/A

Table Table

Tablespace N/A

Temporary Table Temporary Table

Trigger for each row Trigger for each row

Unique key Unique Key

View View

Schema Object Similarities

Page 8: From MSSQL to MySQL

Data Types

Data Type Mapping

MySQL Oracle

BIGINT NUMBER(19,0)

BIT RAW

BLOB BLOB, RAW

CHAR CHAR

DATE DATE

DATETIME DATE

DECIMAL FLOAT(24)

DOUBLE FLOAT(24)

DOUBLE PRECISION FLOAT(24)

ENUM VARCHAR2

FLOAT FLOAT

INT NUMBER(10,0)

INTEGER NUMBER(10,0)

LONGTEXT BLOB, RAW

Page 9: From MSSQL to MySQL

Data Types

Data Type Mapping

MySQL Oracle

MEDIUMBLOB BLOB, RAW

MEDIUMINT NUMBER(7,0)

MEDIUMTEXT CLOB, RAW

NUMERIC NUMBER

REAL FLOAT(24)

SET VARCHAR2

SMALLINT NUMBER(5,0)

TEXT VARCHAR2, CLOB

TIME DATE

TIMESTAMP DATE

TINYBLOB RAW

TINYINT NUMBER(3,0)

TINYTEXT VARCHAR2

VARCHAR VARCHAR2, CLOB

YEAR NUMBER

Page 10: From MSSQL to MySQL

Data Types

Data Type 비교 – Numeric Types

MySQL Size Oracle

BIGINT 8 Bytes NUMBER(19,0)

BIT 약 (M+7)/8 Bytes RAW

DECIMAL(M,D) D>0면 M+2 bytes D=0이면 M+1 bytes

M<D면 D+2 bytes FLOAT(24), BINARY_FLOAT

DOUBLE 8 Bytes FLOAT(24), BINARY_FLOAT,

BINARY_DOUBLE

DLUBLE PRECION 8 Bytes FLOAT(24), BINARY_DOUBLE

FLOAT(25<=X<53) 8 Bytes FLOAT(24), BINARY_FLOAT

FLOAT(x<=24) 4 Bytes FLOAT, BINARY_FLOAT

INT 4 Bytes NUMBER(10,0)

INTEGER 4 Bytes NUMBER(10,0)

MEDIUMINT 3 Bytes NUMBER(7,0)

NUMERIC D>0면 M+2 bytes D=0이면 M+1 bytes

M<D면 D+2 bytes NUMBER

REAL 8 Bytes FLOAT(24), BINARY_FLOAT

SMALLINT 2 Bytes NUMBER(5,0_

TINYINT 1 Bytes NUMBER(3,0)

Page 11: From MSSQL to MySQL

Data Types

Data Type 비교 – Date and Time Type

MySQL Size Oracle

DATE 3 Bytes DATE

DATETIME 8 Bytes DATE

TIMESTAMP 4 Bytes DATE

TIME 3 Bytes DATE

YEAR 1 Bytes NUMBER

Page 12: From MSSQL to MySQL

Data Types

Data Type 비교 – String Types

MySQL Size Oracle

BLOB L + 2 Bytes ~ L<2^16 RAW, BLOB

CHAR(M) M Bytes 0<=M<=255 CHAR

ENUM(V1, V2, …..) 1 OR 2 Bytes

ENUM 값(최대 65535) VARCHAR2

LOGBLOB L + 4 Bytes ~ L < 2 ^ 32 RAW, BLOB

LONGTEXT L + 4 Bytes ~ L < 2 ^ 32 RAW, CLOB

MEDIUMBLOB L + 3 Bytes ~ L < 2 ^ 24 RAW, BLOB

MEDIUMTEXT L + 3 Bytes ~ L < 2 ^ 24 RAW, CLOB

SET(V1, V2, …..) 1, 2, 3, 4 or 8 Bytes VARCHAR2

TEXT L + 2 Bytes ~ L < 2 ^ 16 VARCHAR, CLOB

TINYBLOB L + 1 Bytes ~ L < 2 ^ 8 RAW, BLOB

TINYTEXT L + 1 Bytes ~ L < 2 ^ 8 VARCHAR2

VARCHAR(M)

L + 1 Bytes ~ L < M MySQL 5.0.3 이전 0<=M<=255

MySQL 5.0.3이후 0<=M<=65,535 효과적인 MAX SIZE = 65,532

VARCHAR2, CLOB

Page 13: From MSSQL to MySQL

Trigger & SP

Trigger

Trigger & SP

MySQL은 한 테이블에 트리거 타이밍이나 트리거 이벤트를 같이 쓸 수 없음

예를 들면 Before insert 또는 After updat를 같이 사용할 수 없음

Oracle의 경우 멀티 트리거를 허용(행 트리거나 구문 트리거 선택 가능)

MySQL은 테이블의 트리거 실행 중 오류 처리 보장

트리거 타이밍이나 트리거 이벤트 중 하나만 실행되거나 둘 다 실행 되지 않았을 경우 롤백

Oracle 트리거의 실행 모델은 트랜잭션이며 모든 작업 수행 결과가 성공해야만 실행 되며 그렇지

않으면 롤백

Oracle과 MySQL의 Procedure 구문의 차이는 다음과 같이 나눌 수 있음

Replace구문

DO 구문 – MySQL의 DO구문은 아무것도 반환하지 않음, Oracle의 경우 select expr1, … into …

from dual 구문으로 변환

복합 De

Page 14: From MSSQL to MySQL

Trigger & SP

Stored Procedure

Stored procedure

Oracle과 MySQL의 Procedure 구문의 차이

Replace구문

DO 구문

– MySQL의 DO구문은 아무것도 반환하지 않음

- Oracle의 경우 select expr1, … into … from dual 구문으로 변환

복합 declare 구문

복합 Set 구문

- MySQL

DECLARE a INT; /* simple */

DECLARE a, b INT DEFAULT 5; /* complex */

- Oracle

a INT; /* simple */

a INT := 5;

b INT := 5; /* complex */

- MySQL

SET x:=1; /* simple */

SET x:=1, y:=0; /* complex */

- Oracle

x :=1; /* simple */

x :=1;

y :=0; /* complex */

Page 15: From MSSQL to MySQL

Trigger & SP

Stored Procedure

Package

- MySQL CREATE PROCEDURE p2() BEGIN SET @a = 5; SET @b = 5; SELECT @a, @b; END;

- Oracle CREATE OR REPLACE PACKAGE root.globalPkg AS a NUMBER; b NUMBER; END globalPkg; CREATE OR REPLACE PROCEDURE root.p2 AS BEGIN globalPkg.a := 5; globalPkg.b := 5; DBMS_OUTPUT.PUT_LINE(globalPkg.a || ‘,’ || globalPkg.b); END p2;

Page 16: From MSSQL to MySQL

Trigger & SP

Stored Procedure 성능

Page 17: From MSSQL to MySQL

Schema & DATA

Migration Toolkit

http://downloads.mysql.com/archives/migration/

Page 18: From MSSQL to MySQL

Schema & DATA

SQLyog or Workbench

http://www.webyog.com

Page 19: From MSSQL to MySQL

Schema & DATA

orakit

Intelligent Converters

Page 20: From MSSQL to MySQL

Ⅰ. MariaDB 기능 비교

운영측면

영역 No 구분 기능 오라클 MySQL 비고

스키마관리 (테이블, 컬럼 변경

명령어등)

1 테이블스페이스

테이블스페이스 CREATE

지원됨 지원예정 현재 버전은 offline 추가만 가능함

2 테이블스페이스

테이블스페이스 RENAME

지원됨 일부지원 테이블 단위 table space 생성시 변경 가능

3 테이블스페이스

테이블스페이스 DROP

지원됨 지원예정

4 테이블 테이블 CREATE 지원됨 지원됨 5 테이블 테이블 RENAME 지원됨 지원됨 6 테이블 테이블 MOVE 지원됨 지원됨 RENAME

7 테이블 테이블 TRUNCATE 지원됨 지원됨 8 테이블 테이블 DROP 지원됨 지원됨

9 테이블 테이블 STRUCTURE

VALIDATE 지원됨 지원됨 CHECK, ANALYZE

10 테이블 테이블 MONITORING 지원됨 N 11 인덱스 인덱스 CREATE 지원됨 지원됨 12 인덱스 인덱스 RENAME 지원됨 지원됨 13 인덱스 인덱스 REBUILD 지원됨 지원됨 14 인덱스 인덱스 DROP 지원됨 지원됨 15 인덱스 인덱스 MONITORING 지원됨 N 16 컬럼 테이블 컬럼 ADD 지원됨 지원됨 17 컬럼 테이블 컬럼 DROP 지원됨 지원됨

18 컬럼 테이블 컬럼 RENAM

E 지원됨 지원됨

19 컬럼 테이블 컬럼 TYPE변경 지원됨 지원됨

20 컬럼 테이블 컬럼 LENGTH변경

지원됨 지원됨

21 컬럼 테이블 컬럼 DEFAULT 변경

지원됨 지원됨

22 기타 휴지통 기능(Recycleb

in) 지원됨 N

23 기타 DB공간 자동 확장 지원됨 지원됨 autoextend , innodb_autoextend_increment

24 기타 온라인 리오그(Table

Shrink) 지원됨 N

25 기타 온라인 리오그(Table

Coalesce) 지원됨 N

26 기타 온라인 인덱스 REBUILD

지원됨 지원됨

DB보안 (컬럼 암호화 등)

1 자체지원 및 제품

AUDIT 지원됨 지원됨 enterprise 버전에서만 plug-in 형식으로 지원

2 자체지원 및 제품

DB보안 TDE(Transparent Databas

e Encryption) N column 단위 encrypt 지원

3 자체지원 및 제품

DB보안 Transparent Tablespace E

ncryption(TTE) N column 단위 encrypt 지원

4 자체지원 및 제품

DB보안 암복호화 DB패키지 제공 N 암,복호화 DB function 지원

5 자체지원 및 제품

DB보안 Data Security(옵션) N

Page 21: From MSSQL to MySQL

Ⅰ. MariaDB 기능 비교

영역 No 구분 기능 오라클 MySQL 비고

지원 Utility (개발, 튜닝, 백업 등)

1 Utility Gui Admin Tool OEM 지원됨 enterprise monitor

2 Utility Interactive SQL수행기 sqlplus 지원됨 mysql

3 Utility DBMS Admin TOOL sqlplus 지원됨 mysql

4 Utility Data Loader /Unloader sql*Loader 지원됨 mysqlimport

5 Utility Data export/import Exp/Imp 지원됨 mysqldump / mysqlimport

6 Utility Connection Dispatcher Listener N

7 Utility DB Creater Dbca 지원됨 DBCA

8 Utility C Precompiler Pro*C 지원됨 MySQL++ / User Define Function (UDF's)

9 Utility Recovery Manager RMAN 지원됨 Zmanda Utility

10 Utility

성능 Monitor

성능모니터링 스냅샷(AWR) :1시간 간격 7일 보관

N

mysqladmin / show 명령어 / 각종 유틸리티 11 Utility

성능모니터링 스냅샷(ASH) : 최근 30분의 세션 정보

N

12 Utility Trace 분석 Utility Trace 분석 Utility(tkprof) N explain / profiling

13 Utility SQL Trace oradebug N profiling / status

14 Utility SQL Plan explain 지원됨 explain

백업 및 복구

1 Backup Online(Hot) Backup 지원됨 지원됨

2 Backup Offline(Cold) Backup 지원됨 지원됨

3 Backup Table Export / Import 지원됨 지원됨

4 Recovery 불완전복구(Time Based) 지원됨 N Table Space에 대한 불완전 복구는 innodb_force_recovery 가 있으며, 시점 복구는 binlog를 활용하여 가능하지만, 정확하게 기능 매칭이 되지 않음

5 Recovery 불완전 복구(Cancel) 지원됨 N

6 Recovery 불완전복구(SCN Based) 지원됨 N

7 Recovery 완전복구 지원됨 지원됨

8 Recovery Tablespace 단위 복구 지원됨 지원됨

9 Recovery Table단위 복구 지원됨(Flashback Database) 지원됨

Page 22: From MSSQL to MySQL

Ⅰ. MariaDB 기능 비교

개발 측면

영역 No 기능 오라클 MySQL 비고

지원 API (JDBC, XA 등)

1 JDBC Driver 제공 제공

2 ODBC Driver 제공 제공

3 PHP Driver 제공 제공

4 Embedded SQL 제공(pro*C) 제공 libmysqld

5 Interface 제공(OCI) N

6 XA API 제공됨 제공 XA Transaction

7 Threaded Application 지원됨 지원됨

성능향상을 위한 옵션 (병렬처리,힌트 등)

1 Hint 기능 지원됨 지원됨

2 Cost Optimizer 지원됨 지원됨

3 Parallel Select 지원됨 N

4 Parallel DML(Insert/update/delete) 지원됨 N

5 parallel DDL(create/alter table/index) 지원됨 N

6 ANALYZE 지원됨 지원됨

7 Estimate(Sampling) 지원됨 N

8 Parallel 통계정보 생성 지원됨 N

9 인덱스 생성 또는 Load중 통계정보 생성 지원됨 N

10 Histogram 지원됨 N

지원 SQL(기본 SQL문 등)

1 SQL 표준 SQL , 변형 SQL(SQL92, SQL99지원) 지원됨

2 Sub-query(In-Line View) 지원됨 지원됨

3 Sub-query(Scalar) 지원됨 지원됨

4 Sub-query(=,IN,EXISTS) 지원됨 지원됨

5 Equi Join 지원됨 지원됨

6 Inner Join 지원됨 지원됨

7 Outer Join 지원됨 지원됨

8 Self Join 지원됨 지원됨

9 계층적 질의 CONNECT BY ~ WITH 지원됨 N

10 Array Processing 지원됨 N

11 SELECT ~ FOR UPDATE 지원됨 지원됨

12 SELECT DISTINCT ~ 지원됨 지원됨

13 UNION 지원됨 지원됨

14 UNION ALL 지원됨 지원됨

15 INTERSECT 지원됨 N

16 MINUS 지원됨 N

17 CERATE TABLE AS SELECT ~ 지원됨 지원됨

18 VIEW를 통한 DML 지원됨 지원됨

19 WHERE REGEXP(정규표현식)_LIKE Condition 지원됨 지원됨 where REGEXP condition / where NOT REGEXP dondition / where rlike condition

20 Literal/Bind SQL 지원됨 지원됨

21 WITH ~ 문 지원됨 N

22 MERGE ~ 문 지원됨 지원됨 insert into ~ ON DUPLICATE KEY UPDATE

23 Multi-Insert ~ 문 지원됨 제약적지원됨 insert into ~ values (),(),()

24 Grouping Set 기능 지원됨 지원됨

25 CLOB SELECT QUERY 지원됨 지원됨

Page 23: From MSSQL to MySQL

Ⅰ. MariaDB 기능 비교

영역 No 기능 오라클 MySQL 비고

스키마 및 오브젝트 (테이블, 인덱스 등)

1 Table 지원됨 지원됨 2 Table Compression 지원됨 지원됨 3 Index-Organized Table 지원됨 N cluster index table

4 Stored Procedure 지원됨 지원됨 5 Stored Function 지원됨 지원됨

6 Trigger

지원됨 - before/after 둘다 지원 - 구문 트리거 (statement trigger)

- 행 트리거 (row trigger)

- Instead of trigger

- system event trigger

- user event trigger

지원됨

7 View 지원됨 지원됨 8 Sequence 지원됨 N auto_increment

9 DB Link 지원됨 N only federated engine

10 Synonym 지원됨 N 11 Queue 지원됨( Advanced Queue) N

12 Monitoring View 지원됨 지원됨 information_schem / performance_schema

13 Grant/ Revoke 지원됨 지원됨 14 기본키(Primary Key) Constraint 지원됨 지원됨 15 외래키(Foreign Key) Constraint 지원됨 지원됨

16 외래키(Foreign Key) Constraint ( Enable Novalidate 옵션) 지원됨 N

17 NOT NULL Constraint 지원됨 지원됨 18 UNIQUE Constraint 지원됨 지원됨 19 CHECK Constraint 지원됨 지원됨 20 기본값(Default설정) 지원됨 지원됨 21 Temporary Table 지원됨 지원됨 22 External Table 지원됨 N 23 Index(Function-Based) 지원됨 N 24 Index(Bitmap) 지원됨 N 25 Index(Reverse Key) 지원됨 N 26 Index Key Compression 지원됨 N 27 Stored Package 지원됨 N 28 Role 지원됨 지원됨 29 Snapshot(MATERIALIZED VIEW) 지원됨 N 30 User Defined Type 지원됨 N enum()

31 Cluster Object 지원됨 N NDB cluster 의 경우에만 지원 32 XML 지원 지원됨 지원됨 ExtractValue() , UpdateXML()

33 주석(Table Comment) 지원됨 지원됨 34 주석(Column Comment) 지원됨 지원됨

파티션

1 파티션 종류(방법) - 범위 파티션(RANGE) 지원됨 지원됨 2 파티션 종류(방법) - 리스트 파티션(LIST) 지원됨 지원됨 3 파티션 종류(방법) - 해쉬 파티션(HASH) 지원됨 지원됨 4 파티션 종류(방법) - 조합 파티션(COMPOSITE) 지원됨 지원됨 5 파티션 관리 명령어 - 파티션 추가(ADD) 지원됨 지원됨 7 파티션 관리 명령어 - 파티션 삭제(DROP) 지원됨 지원됨 8 파티션 관리 명령어 - 파티션 분할(SPLIT) 지원됨 지원됨 9 파티션 관리 명령어 - 파티션 합병(MERGE) 지원됨 지원됨 10 파티션 관리 명령어 - 파티션 TRUNCATE 지원됨 지원됨 11 파티션 관리 명령어 - 파티션 RENAME 지원됨 지원됨

12 파티션 관리 명령어 - 파티션 교환(EXCHANGE) 지원됨 지원됨

13 파티션 관리 명령어 - 파티션 MODIFY 지원됨 지원됨 14 파티션 관리 명령어 - 파티션 MOVE 지원됨 지원됨 15 파티션 관리 - Index Partition Rebuild 지원됨 16 파티션 인덱스 - Global Index 지원됨 N 17 파티션 인덱스 - Local Index 지원됨 지원됨

Page 24: From MSSQL to MySQL

Ⅰ. MariaDB 기능 비교

영역 No 기능 오라클 MySQL 비고

데이터 타입 (문자, 숫자, 날짜 등)

1 CHAR 고정길이 문자형 타입. 최대 2000 byte. 지원됨 1~8000 byte

2 VARCHAR 가변길이 문자형 타입. 최대 4000 byte 지원됨 1~8000 length

3 VARCHAR2 가변길이 문자형 타입. 최대 4000 byte N

4 NCHAR 유니코드 고정길이 문자형 타입. 최대 2000 byte 지원됨 1~4000 byte

5 NVARCHAR2 유니코드 고정길이 문자형 타입. 최대 4000 byte N 1~4000 length

6 CLOB 단일byte 문자형 타입. 최대 (4 GB - 1) * DB_BLOCK_SIZE? N TEXT , MEDIUMTEXT, LONGTEXT

7 NCLOB 유니코드 문자형 타입. 최대 (4 GB - 1) * DB_BLOCK_SIZE? N

8 LONG 문자형 타입. 최대2G N

9 NUMBER (p,s) 숫자형 타입.정밀도 p 1~38, 스케일 s -87~127 N INT, INTEGER, TINYINT, SMALLINT, MEDIUMINT, BIGINT

10 NUMERIC 지원됨 NUMERIC

11 INT 지원됨 INT, INTEGER, TINYINT, SMALLINT, MEDIUMINT, BIGINT

12 DECIMAL 지원됨 DECIMAL

13 DOUBLE PRECESION 지원됨

14 FLOAT 지원됨

15 REAL 지원됨 -3.40E + 38 ~ 3.40E + 38

16 SMALLINT 지원됨

17 DATE 날짜타입. BC 4712년 1월1일 ~ AD 9999년 12월 31일 지원됨

18 TIMESTAMP Microsecond를 포함한 날짜타입 지원됨 시분초 마이크로초까지 지원

19 TIMESTAMP WITH TIME ZONE N

20 TIMESTAMP WITH LOCAL TIMEZONE N

21 BLOB 대용량 이진 객체 타입. 최대 (4 GB - 1) * DB_BLOCK_SIZE? 지원됨 BLOB , MEDIUMBLOB , LONGBLOB

22 BFILE 대용량 이진 파일 타입. 최대 4G N

23 RAW (size) 원시 이진 타입. 최대 2000 byte N BLOB , MEDIUMBLOB , LONGBLOB

24 LONG RAW 가변길이 원시 이진 타입. 최대 2G N BLOB , MEDIUMBLOB , LONGBLOB

25 ROWID N

Page 25: From MSSQL to MySQL

Ⅰ. MariaDB 기능 비교

영역 No 기능 오라클 MariaDB 비고

제공 함수 (합계, 평균, 건수 등)

1 그룹함수 AVG AVG 평균

2 그룹함수 COUNT COUNT 수

3 그룹함수 MAX MAX 최대값

4 그룹함수 MIN MIN 최소값

5 그룹함수 STDDEV STDDEV 표준편차

6 그룹함수 SUM SUM 합계

7 그룹함수 VARIANCE VARIANCE 분산

8 숫자함수 ABS ABS 절대값 |n|

9 숫자함수 ACOS ACOS n의 역코사인(arc cosine)값을 반환한다.

10 숫자함수 ASIN ASIN n의 역사인(arc sine)값을 반환한다.

11 숫자함수 ATAN ATAN n의 역탄젠트(arc tangent)값을 반환한다.

12 숫자함수 ATAN2 ATAN2 ATAN2(n,m)은 atan2(n/m)과 같으며, n/m의 역탄젠트(arc tangent)값을 반환한다.

13 숫자함수 CEIL CEIL n보다 큰 정수값들 중에서 최소값

14 숫자함수 COS COS n(라디안으로 표현되는 각도)의 코사인값을 반환한다.

15 숫자함수 COSH N n(라디안으로 표현되는 각도)의 쌍곡 코사인값(hyperbolic cosine)을 반환한다.

16 숫자함수 EXP EXP 지수값 e를 밑으로 하는 e의 n승 값

17 숫자함수 FLOOR FLOOR n보다 작은 정수값들 중에서 최대값

18 숫자함수 GREATEST GREATEST 하나 이상의 인수중에서 가장 큰 값을 반환.

19 숫자함수 LEAST LEAST 인수 EXPR의 리스트 중에서 가장 작은 값을 반환.

20 숫자함수 LN LN 자연 log값 밑수 e 지수 n

21 숫자함수 LOG LOG LOG(m,n)에서 밑을 m으로 한 n의 로그 값을 반환.

22 숫자함수 MOD MOD m을 n 으로 나눈 나머지

23 숫자함수 POWER POWER m의 n승

24 숫자함수 ROUND ROUND 반올림

25 숫자함수 SIGN SIGN n의 부호를 반환.

26 숫자함수 SIN SIN n의 사인(sine)값을 반환.

27 숫자함수 SINH N n의 쌍곡선 사인(hyperbolic sine)을 반환.

28 숫자함수 SQRT SQRT n의 제곱근을 반환.

29 숫자함수 TAN TAN n의 사인(tangent)값을 반환.

30 숫자함수 TANH TANH n의 쌍곡선 탄젠트(hyperbolic tangent)을 반환.

31 숫자함수 TRUNC N 인수 n1을 소수점 자리 파라미터 n2 이하를 절삭.

32 문자함수 ASCII ASCII 주어진 char의 첫 문자의 아스키 값에 상응하는 10진수값을 반환한다.

Page 26: From MSSQL to MySQL

Ⅰ. MariaDB 기능 비교

영역 No 기능 오라클 MariaDB 비고

제공 함수 (합계, 평균, 건수 등)

32 문자함수 ASCII ASCII 주어진 char의 첫 문자의 아스키 값에 상응하는 10진수값을 반환한다.

33 문자함수 CHR N 10진수 n 에 대응하는 아스키코드를 반환. CHAR( 55 using ASCII)

34 문자함수 CONCAT CONCAT char1과 char2를 연결하여 반환한다. 35 문자함수 GREATEST GREATEST 두 문자 중에서 큰 것

36 문자함수 INITCAP N 입력 문자열 중에서 각 단어의 첫 글자를 대문자로 나머지는 소문자로 변환하여 반환한다.

37 문자함수 INSTR INSTR 문자열중에서 지정한 문자가 처음 나타나는 위치를 숫자로 반환.

38 문자함수 INSTRB N 문자열에서 이 문자를 찾아라. return 값은 찾은 위치(Byte 단위) DELIMITER $$

39 문자함수 LEAST LEAST 두 문자 중에서 작은 것 40 문자함수 LENGTH LENGTH 인수 char의 길이를 반환한다 41 문자함수 LENGTHB N 문자열의 길이(Byte 단위) 42 문자함수 LOWER LOWER 소문자로 변환시켜주는 함수

43 문자함수 LPAD LPAD 지정된 자리수 n으로부터 expr1을 채우고,왼편의 남은 공간에 expr1을 채운다.

44 문자함수 LTRIM LTRIM 문자열 char 좌측으로부터 set으로 지정된 모든 문자를 제거한다.

45 문자함수 NLS_INITCAP N (INITCAP만지원)각 단어의 처음 문자를 대문자로, 나머지 문자를 소문자로 변환하여 char를 반환한다.

46 문자함수 NLS_LOWER N 모든 문자를 소문자로 변환하여 반환한다.

47 문자함수 NLS_UPPER N 입력 문자열을 모두 대문자로 변환한 문자열을 반환한다.

48 문자함수 NLSSORT N 입력 문자열을 소팅하여 스트링을 반환한다.

49 문자함수 REPLACE REPLACE 파라미터로 주어지는 첫번째 문자열에서, 두번째 문자열을 모두 세번째 문자열로 바꾼 후 결과를 반환한다.

50 문자함수 RPAD RPAD 인수 expr1 오른편으로 인수 expr2로 지정한 문자를 길이 필요에 따라 반복하여 n만큼 붙여준다

51 문자함수 RTRIM RTRIM 인수 char의 오른쪽 끝에서 부터 set으로 지정된 모든 문자를 제거한다.

52 문자함수 SOUNDEX SOUNDEX char의 음성 표현을 가지는 문자열을 반환.

53 문자함수 SUBSTR SUBSTR 문자열 Char에서 position 문자 위치로부터 substring_length 문자 길이만큼 문자열을 추출하여 반환

54 문자함수 SUBSTRB N 해당 위치에서 갯수 만큼의 문자열을 추출한다.(Byte 단위)

55 문자함수 TRANSLATE N from_string에서 각 문자를 to_string안의 대응하는 문자로 치환하여 expr을 반환.

56 문자함수 TRIM TRIM 문자열부터 선행 또는 후행(양쪽)문자를 제거. 57 문자함수 UPPER UPPER 모든 문자를 대문자로 변환

58 날짜함수 ADD_MONTH N 일자 date에 특정 개월수 integer를 더한 값을 반환한다

59 날짜함수 EXTRACT EXTRACT 특정 날짜,시간 값이나 날짜 값 표현식으로부터 지정된 날짜 영역의 값을 추출하여 반환한다

60 날짜함수 GREATEST GREATEST 하나 이상의 인수 중에서 가장 큰 값을 반환.

61 날짜함수 LEAST LEAST 인수 EXPR의 리스트 중에서 가장 작은 값을 반환.

62 날짜함수 LAST_DAY LAST_DAY 해당 날짜가 속한 달의 마지막 날짜를 반환한다.

63 날짜함수 MONTH_BETWEEN N 날짜의 개월 수의 차를 구한다.

64 날짜함수 NEXT_DAY N 해당일을 기준으로 명시된 요일의 다음 날짜를 변환.

65 날짜함수 ROUND ROUND 포맷 모델 fmt에 의해 지정한 단위로 반올림된 날짜를 반환한다.

66 날짜함수 SYSDATE SYSDATE 데이터 베이스가 있는 OS의 일자와 시간을 반환한다.

67 날짜함수 +, - 연산 +, - 연산

68 날짜함수 TRUNC N 날짜를 년,월,일을 기준으로 반올림하거나 절삭한다.

Page 27: From MSSQL to MySQL

Ⅰ. MariaDB 기능 비교

영역 No 기능 오라클 MariaDB 비고

제공 함수 (합계, 평균, 건수 등)

69 변환함수 CHARTOROWID N CHAR, VARCHAR2, NCHAR, or NVARCHAR2 데이터형태의 값으로부터 ROWID형으로 변환.

70 변환함수 CONVERT CONVERT 문자세트를 다른 문자세트로 문자열을 변환

71 변환함수 HEXTORAW N 16진수를 raw값으로 변환.

72 변환함수 RAWTOHEX N RAW을 16진수의 문자로 변환.

73 변환함수 ROWIDTOCHAR N rowid 값을 VARCHAR2형식으로 변환.

74 변환함수 TO_CHAR N 날짜 또는 숫자를 문자열로 바꾼다.

75 변환함수 TO_DATE N 문자열을 날짜로 바꾼다 .str_to_date()

76 변환함수 TO_LOB N LONG또는 LONG RAW값을 LOB값으로 변환.

77 변환함수 TO_MULTI_BYTE N multibyte 문자를 상응하는 single-byte 문자로 변환한 문자를 반환.

78 변환함수 TO_NUMBER N 문자를 숫자로 변환

79 변환함수 TO_SINGLE_BYTE N multibyte문자를 그에 상응하는 single-byte문자로 변환하여 char을 반환.

80 변환함수 TRANSLATE N from_string에서 각 문자를 to_string안의 대응하는 문자로 치환하여 expr을 반환

81 기타함수 BFILENAME N 서버 파일 시스템의 물리 LOB 바이너리 파일과 연관된 BFILE locator를 반환.

82 기타함수 CASE CASE 조건(if) 분기문

83 기타함수 DECODE N 조건(if) 분기문

84 기타함수 DUMP N 지정한 데이터의 위치와 길이 등을 지정한 형식으로 반환.

85 기타함수 NVL NVL 쿼리의 결과에서 NULL(공백으로 반환)값을 치환.

86 기타함수 NVL2 COALESCE 지정한 표현이 NULL인지 여부에 근거하여 쿼리의 반환될 값을 판단할 수 있다. expr1이 NULL이 아니라면, NVL2는 expr2를 반환한다. 만약 expr1인 NULL이라면, NVL2는 expr3을 반환.

87 기타함수 ROWNUM N Select되는 ROW의 순서값

88 통계함수(Analytic Function) Ranking N 지정된 Window에서 순위를 계산하는 Function들이다.

89 통계함수(Analytic Function) Windowing 함수 부분지원 Window범위 내에서 각Row에 맞는 합계,평균, 최소/최대값 등을 구하며, Self Join없이 첫번째,마지막 Row을 구할 수 있다.

90 통계함수(Analytic Function) Reporting함수 N Query후 Partition내에서 숫자형태의 데이터에 대해서 합계, 평균, 개수, 편차,표준편차의 값을 구한다.

91 통계함수(Analytic Function) LAG/LEAD 함수 N Self-Join없이 CurrentRow의 이전,이후 특정Row에 대한 Column값을 구할 수가 있다.

92 통계함수(Analytic Function) Statistics 함수 부분지원 Group Function과는 다르게 통계정보에서 유용한 상관관계, 회귀 등을 계산

Page 28: From MSSQL to MySQL

Ⅰ. MariaDB 기능 비교 정리

영역 필수 요구

기능 지원 기능

미지원 기능

지원 API (JDBC, XA 등)

7 6 1

성능향상을 위한 옵션 (병렬처리,힌트 등)

10 3 7

지원 SQL(기본 SQL문 등) 25 20 5

스키마 및 오브젝트 (테이블, 인덱스 등)

34 18 16

파티션 17 16 1

데이터 타입 (문자, 숫자, 날짜 등)

25 13 12

제공 함수 (합계, 평균, 건수 등) 92 55 37

총계

210 131 79

100% 62% 38%

개발측면 운영측면

영역 필수 요구

기능 지원 기능

미지원 기능

스키마관리 (테이블, 컬럼 변경 명령어등)

26 21 5

DB보안 (컬럼 암호화 등)

5 1 4

지원 Utility (개발, 튜닝, 백업 등) 14 9 5

백업 및 복구* 9 6 3

총계

54 37 17

100% 69% 31%

Page 29: From MSSQL to MySQL
Page 30: From MSSQL to MySQL

감사합니다. For the Better Open Source World!!