Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle...

43
Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자! SQL Server For Oracle DBA & Developer ㈜온디멘드 책임 윤선식

Transcript of Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle...

Page 1: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유

롭게 사용하자!

SQL Server For Oracle DBA & Developer

㈜온디멘드 책임 윤선식

Page 2: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

Speaker

• Company – 현 온디멘드 DB사업부 책임컨설턴트 – 전 프리먼트(이랜드계열) DBA – 전 YES24.COM 웹개발 파트장

… (무역회사 전산팀장, SI/SM PM/PL)

• Consulting / Speaker – Oracle To SQL Server Migration Consulting – SQL Server 2012 Upgrade POC – SQL Server 보안진단 Consulting – SQL Server 보안 On-Site Seminar Speaker – 개인정보보호법과 SQL Server 보안 Seminar Speaker – …

• Community – SQLER.COM SQL Frontier Member – SQLTAG.org Member – SQLIAN Partner Member – …

http://www.ondmd.com/

Page 3: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

무엇을 말하고자 하는가?

Page 4: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

무엇을 말하고자 하는가?

Page 5: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

현 상황?

Page 8: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

SQL Server를 도입한다면?

Page 9: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

관리자가 고민하는 것?

• SQL Server 꼭 관리해야 하나?

Page 10: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

개발자가 고민하는 것?

• Unix / Linux To SQL Server

Page 11: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

개발자가 고민하는 것?

• Oracle 기반 개발자가 고민하는 것

Page 12: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

개발자가 고민하는 것?

• Oracle 기반 개발자가 고민하는 것

decode lpad

rownum sequence

start with ~ connect by

Page 13: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

SQL Server 잘 쓰려면?

SQL Server를 사용한다면!

Page 14: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

설치할 때 서비스는?

• 전부 체크 설치?

Page 15: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

설치 및 데이터 경로

• C:\Program Files ???

Page 16: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

Core

• 병렬처리

Page 17: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

IO 분산

• File Group / TempDB

http://msdn.microsoft.com/ko-kr/library/ms175527.aspx

Page 18: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

Port / sa

• SQL Service Port / sa

Page 19: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

실행 계획 보기

• 실행계획, 인덱스, Stored Procedure

Page 20: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

Oracle to SQL Server Migration

Page 21: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

Migration을 진행한다면?

• 왜 Migration을 진행해야 하는가 보다는 어떻게 성공적으로 진행해야 하는가에 초점을 맞추면, 길이 보인다.

Page 22: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

Migration 절차

• Oracle To SQL Server Migration 진행 절차

1. System Analysis

2. Diagnostics

3. Migration Plan/Schedule

4. DB Object Migration / Application Source Migration

5. Oracle To SQL Server Data Transform

6. Test / Debugging

7. Open / Monitoring

Page 23: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

SQL Server Migration Assistant

• SSMA for Oracle 5.2

Page 24: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

SSMA 활용

• SSMA for Oracle 5.2

Page 25: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

SSMA 활용

• SSMA for Oracle 5.2

– Oracle : 7.3 or later

– SQL Server : 2005, 2008, 2008R2, 2012

– Support conversion of Oracle %ROWTYPE parameters with NULL default

http://www.microsoft.com/Download/en/details.aspx?id=28766

Page 26: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

SSMA 활용

• SSMA for Oracle 5.2

Page 27: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

개발자 쿼리 변환

• NULL

– Oracle과 SQL Server는 NULL 처리가 다름

– SQL Server에서는 empty string과 NULL을 엄격히 구분

구문 또는 조건 ORACLE (단 컬럼 속성이 nullable)

SQL SERVER

null 일 때 where A IS NULL where A = null 또는 where A IS NULL

null 이 아닐 때 where A IS NOT NULL where A != null 또는 where A IS NOT NULL

NULL 또는 ‘’ 모두 같은 값으로 처리하고 이 경우에 해당될 때

where A IS NULL 또는 where A = ‘’

where ISNULL(A,’’) = ‘’

NULL 또는 ‘’ 모두 같은 값으로 처리하되 이 경우에 해당되지 않을 때

where A IS NOT NULL 또는 where A != ‘’

where ISNULL(A,’’) != ‘’ 또는 where ISNULL(A,’’) <> ‘’

NULL 허용 컬럼에 NULL을 INSERT 하고 싶을 경우

VALUES (‘’) 또는 VALUES (null)

VALUES (NULL) 만 하용

정렬기준 NULL 은 최하위 NULL이 최상위

SQL 전문가 가이드 : The Guide for SQL Professional [2010]

Page 28: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

개발자 쿼리 변환

• DataType 에 의한 변환처리 어려움

• Oracle에만 존재하는 구문

– DECODE

– LPAD

– MERGE

– LEAD / LAG

– Start With ~ Connect By

Page 29: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

개발자 쿼리 변환

• Start With ~ Connect By ~ 변환 SAMPLE

ORACLE

SELECT DEPT_ID, SYS_CONNECT_BY_PATH(DEPT_NAME, ‘>’, ‘ > ‘) || ‘ > ‘ AS DEPT_NAME FROM HR.TB_DEPARTMENT START WITH DEPT_ID = 2 CONNECT BY PRIOR DEPT_ID = PARENT_DEPT_ID SQL Server

WITH CTE_TABLE AS ( SELECT 1 AS LVL, A.DEPT_ID, PARENT_DEPT_ID, DEPT_NAME, CONVERT(VARCHAR(100), CAST(A.DEPTNAME as VARCHAR(100)) + ' > ') AS DEPT_NAME FROM dbo.TB_DEPARTMENT A WHERE A.DEPT_ID = 2 UNION ALL SELECT LVL + 1, M.DEPT_ID, M.PARENT_DEPT_ID, M.DEPT_NAME, CONVERT(VARCHAR(100), N.DEPT_NAME + ' > ' + CAST(M.DEPT_NAME AS VARCHAR(100)) + ' > ' ) AS DEPT_NAME FROM dbo.TB_DEPARTMENT M JOIN CTE_TABLE N ON M.PARENT_DEPT_ID = N.DEPT_ID ) SELECT * FROM CTE_TABLE;

Page 30: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

개발자 쿼리 변환

• Oracle Function vs SQL Server Function

– http://www.sqler.com/269782

– http://www.sqler.com/270809

– http://www.sqler.com/316811

Page 31: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

SQL Server 2012 New Feature

• SQL Server 2012의 새로 나온 T-SQL

– SEQUENCE : Oracle과 유사

– LEAD / LAG : Oracle과 유사

– IIF : Oracle IIF와 유사

– CHOOSE : INDEX 에 따라 실행, CHOOSE / CASE 와 유사

– EOMONTH : 월의 마지막 날짜를 구함

– TRY_CONVERT : 변환 시 오류가 발생하면 NULL RETURN

– OFFSET / FETCH : 페이징 처리

– …

Page 32: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

OFFSET / FETCH

• ORDER BY Clause – MSDN

http://www.sqlserver-training.com/how-to-use-offset-fetch-option-in-sql-server-order-by-clause/-

Page 33: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

Application 설정

• WAS

• JDBC Driver

• UNICODE

Page 34: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

Linked Server 설정

• SQL Server to Oracle Linked Server

– Oracle Client 설치!

Page 35: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

이관 - 1

• SQL Server 가져오기 / 내보내기 이용 데이터 이관

Page 36: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

이관 - 2

• SQL Server Data Tools 이용 데이터 이관

Page 38: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

Migration Case Study

Page 39: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

I사

• 시스템 개요 – 대부분의 시스템이 SQL Server – 하나의 시스템 하나만 Oracle

• 쿼리 변환 – 대부분의 쿼리 변환에는 큰 문제가 없음 – Sequence USP_Get_Sequence SP 생성 – LPAD, INSTR, TO_DATE Function 구현

• 이슈 처리

– Linked Server 연결 시 XA-Transaction 미 지원으로 별도 모듈 개발

– SQL Server Collation에 따른 Key 중복 제거 – 정렬순서 조정 – Data Cleansing 수행

Page 40: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

S사

• 시스템 개요 – 대부분의 System이 Oracle – 개발자 및 관리자 SQL Server 경험 전무

• 쿼리 변환 – 대부분의 쿼리가 XML 내에 존재 – Sequence USP_Get_Sequence SP 생성 – LPAD, INSTR, TO_DATE Function 구현

• 이슈 처리

– WebLogic 설정 작업(Driver, Transaction Timeout) – 동적 구문이 많아서 검증에 많은 시간 소요

exp) NULL XML Mapping : #data:VARCHAR# – System Collation 사용으로 정렬순서 맞춤 – 숫자표현 부분 상이한 부분에 대해 FLOAT 등으로 변경 처리

Page 41: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

결국 우리의 목적은?

Page 42: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!

References

• 3rd Party Tools – SSMS Tools Pack

http://www.ssmstoolspack.com/ – SQL Pretty Printer

http://www.dpriver.com/dlaction.php – Instant SQL Formatter

http://www.dpriver.com/pp/sqlformat.htm

• 기타 참고 사이트 – Microsoft SQL Server JDBC Driver 4.0

http://www.microsoft.com/downloads/ko-kr/details.aspx?FamilyID=49c554ca-41a0-472c-b728-75df5789369c

– Type 4 JDBC Drivers(Oracle Site) http://docs.oracle.com/cd/E12840_01/wls/docs103/jdbc_drivers/mssqlserver.html

– iBatis SQL Maps http://openframework.or.kr/Wiki.jsp?page=Hibernate/iBATIS-SqlMaps-2_ko.pdf

– Using Advanced Data Types http://msdn.microsoft.com/en-us/library/ms378813.aspx

Page 43: Oracle DBA, 개발자 분들이여download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0...Oracle DBA, 개발자 분들이여, Microsoft SQL Server 2012를 자유 롭게 사용하자!