Altibase Tools & Utilities Migration Center User's Manual Release 7.2 (April 11, 2017)
----------------------------------------------------------- Altibase Tools & Utilities Migration Center User's Manual Release 7.2 Copyright c 2001~2017 Altibase Corp. All Rights Reserved. 본문서의저작권은 알티베이스에있습니다. 이문서에대하여당사의동의없이무단으로복제또는전용할수없습니다. 알티베이스 152-790 서울시구로구구로동 182-13 대륭포스트타워 Ⅱ 10 층전화 : 02-2082-1114 팩스 : 02-2082-1099 고객서비스포털 : http://support.altibase.com homepage: http://www.altibase.com -----------------------------------------------------------
목차 서문... 5 이매뉴얼에대하여... 6 1. Migration Center 소개... 13 개요... 14 시스템요구사항... 16 설치및제거... 20 2. Migration Center 시작하기... 21 Migration Center 이해하기... 22 그래픽유저인터페이스 (GUI) 모드... 26 커맨드라인인터페이스 (CLI) 모드... 28 도구... 30 3. GUI 모드퀵가이드... 31 단계별지침... 32 4. Migration Center 내부... 39 구축단계... 40 조정단계... 42 실행단계... 47 검증단계... 49 A. 부록 : 마이그레이션옵션... 51 DB to DB 마이그레이션옵션... 52 DB to File 마이그레이션옵션... 54 목차 3
B. 부록 : 마이그레이션가능한데이터베이스객체... 55 타데이터베이스 to Altibase... 56 Altibase to Oracle... 58 C. 부록 : 데이터타입맵핑... 59 데이터타입맵핑조작... 60 기본데이터타입맵핑테이블... 61 D. 부록 : 기본값맵핑... 73 기본값맵핑테이블... 74 E. 부록 : PSM 변환기규칙목록... 83 뷰변환규칙... 84 트리거변환규칙... 87 함수변환규칙... 94 프로시저변환규칙... 101 Materialized View 변환규칙... 106 패키지변환규칙... 107 라이브러리변환규칙... 108 DML문변환규칙... 109 PSM 변환규칙... 129 표현변환규칙... 155 찾아보기... 163 4 Migration Center User's Manual
서문 서문 5
이매뉴얼에대하여 이매뉴얼은 Altibase 로데이터베이스마이그레이션을수행하기 위해 Migration Center 를사용하는방법을기술한다. 대상사용자 이매뉴얼은다음과같은 Altibase 사용자를대상으로작성되었다. 데이터베이스관리자 성능관리자 데이터베이스사용자 응용프로그램개발자 기술지원부다음과같은배경지식을가지고이매뉴얼을읽는것이좋다. 컴퓨터, 운영체제및운영체제유틸리티운용에필요한기본지식 관계형데이터베이스사용경험또는데이터베이스개념에대한이해 컴퓨터프로그래밍경험 데이터베이스서버관리, 운영체제관리또는네트워크관리경험 이매뉴얼의구성 이매뉴얼은다음과같이구성되어있다. 제 1 장 Migration Center 소개이장은 Migration Center 를사용하고자하는사용자들을위해그기능과설치방법을소개한다. 제 2 장 Migration Center 시작하기이장은 Migration Center 를효율적으로원활하게실행하는데도움이되는기본개념을소개하고, Migration Center GUI 모드와커맨드라인인터페이스 (CLI) 모드사용법을 6 Migration Center User's Manual
자세히설명한다. 제 3 장 GUI 모드퀵가이드이장은 Migration Center 를처음접하는사용자들이 GUI 모드 Migration Center 를각단계별로사용할수있도록간략한지침을제공한다. 제 4 장 Migration Center 내부이장은 Migration Center 의주요세단계인구축, 조정, 실행단계에대해상세히설명한다. A. 부록 : 마이그레이션옵션이부록은 Migration Center 옵션을설명한다. B. 부록 : 마이그레이션가능한데이터베이스객체이부록은 Migration Center 를사용해서마이그레이션할수있는데이터베이스객체를표로제공한다. C. 부록 : 데이터타입맵핑이부록은기존프로젝트를위한기본데이터타입맵핑을확인하고커스터마이징하는방법에대해설명하며, 기본데이터타입맵핑목록을제공한다. D. 부록 : 기본값맵핑 Migration Center 가원본데이터베이스를 Altibase 에맞춰변환할때상이한테이블칼럼의기본값을변환하기위한기본값맵핑테이블을제공한다. E. 부록 : PSM 변환기규칙목록 Oracle 에서 Altibase 로마이그레이션을할때, PSM 변환기가 DDL SQL 문장으로변환하는규칙을설명한다. 문서화규칙 이절에서는이매뉴얼에서사용하는규칙에대해설명한다. 이규칙을이해하면이매뉴얼과설명서세트의다른매뉴얼에서정보를쉽게찾을수있다. 여기서설명하는규칙은다음과같다. 구문다이어그램 샘플코드규칙 서문 7
구문다이어그램 이매뉴얼에서는다음구성요소로구축된다이어그램을 사용하여, 명령문의구문을설명한다. 구성요소 예약어 의미 명령문이시작한다. 완전한명령문이아닌구문 요소는화살표로시작한다. 명령문이다음라인에계속된다. 완전한명령문이아닌구문요소는이기호로종료한다. 명령문이이전라인으로부터계속된다. 완전한명령문이아닌구문요소는이기호로시작한다. ; 명령문이종료한다. SELECT 필수항목 선택적항목 NOT ADD DROP ASC 선택사항이있는필수항목. 한항목만제공해야 한다. 선택사항이있는선택적항목 DESC ASC 선택적항목. 여러항목이허용된다. 각반복 앞부분에콤마가와야한다. DESC, 샘플코드규칙 코드예제는 SQL, Stored Procedure, isql 또는다른명령라인 구문들을예를들어설명한다. 아래테이블은코드예제에서사용된인쇄규칙에대해설명한다. 8 Migration Center User's Manual
규칙의미예제 [ ] 선택항목을표시 VARCHAR [(size)] [[FIXED ] VARIABLE] { } 필수항목표시. 반드시하나이상을선택해야되는표시 선택또는필수항목표시의인자구분표시 { ENABLE DISABLE COMPILE } { ENABLE DISABLE COMPILE } [ ENABLE DISABLE COMPILE ]... 그밖에기호기울임꼴소문자대문자 그이전인자의반복표시예제코드들의생략되는것을표시위에서보여진기호이외에기호들구문요소에서사용자가지정해야하는변수, 특수한값을제공해야만하는위치지정자사용자가제공하는프로그램의요소들, 예를들어테이블이름, 칼럼이름, 파일이름등시스템에서제공하는요소들또는구문에나타나는키워드 SQL> SELECT ename FROM employee; ENAME ----------------------- SWNO HJNO HSCHOI... 20 rows selected. EXEC :p1 := 1; acc NUMBER(11,2); SELECT * FROM table_name; CONNECT userid/password; SELECT ename FROM employee; DESC SYSTEM_.SYS_INDICES_; 서문 9
관련자료 자세한정보를위하여 Altibase 의다음문서목록을참조한다. Installation Guide Getting Started Guide Administrator s Manual Replication Manual Precompiler User s Manual API User s Manual Altibase C Interface Manual isql User s Manual Utilities Manual General Reference Error Message Reference 온라인매뉴얼 Altibase 고객서비스포털 (http://support.altibase.com) 에서국문및 영문매뉴얼 (PDF, HTML) 을받을수있다. Altibase 는여러분의의견을환영합니다. 이매뉴얼에대한여러분의의견을보내주시기바랍니다. 사용자의의견은다음버전의매뉴얼을작성하는데많은도움이됩니다. 보내실때에는아래내용과함께고객서비스포털 (http://support.altibase.com/kr/) 로보내주시기바랍니다. 사용중인매뉴얼의이름과버전 매뉴얼에대한의견 사용자의성함, 주소, 전화번호이외에도 Altibase 기술지원설명서의오류와누락된부분및기타기술적인문제들에대해서이주소로보내주시면정성껏 10 Migration Center User's Manual
처리하겠습니다. 또한, 기술적인부분과관련하여즉각적인도움이필요한경우에도고객서비스포털을통해서비스를요청하시기바랍니다. 여러분의의견에항상감사드립니다. 서문 11
1. Migration Center 소개 이장은 Migration Center 의특징을이해하고자하는사용자에게이도구를소개하고설치하는방법을설명한다. 이장은다음의절로구성된다. 개요 시스템요구사항 설치및제거 Migration Center 소개 13
개요 Migration Center 는데이터베이스사이에일반적으로호환되는데이터베이스객체와데이터를직접또는간접적으로복사하는데이터베이스마이그레이션 (migration) 도구이다. 대부분의데이터베이스는국제표준을준수하지만, 어떤데이터베이스라도수동식의데이터베이스마이그레이션이불가피한경우가있다. 일반적으로데이터베이스마이그레이션작업을수동으로직접하는것은복잡하고시간이많이소모되며, 사람이하는일이기에실수가잦을수있다. Migration Center 는사용자가그래픽유저인터페이스 (GUI) 모드에서몇번의마우스클릭만으로도데이터베이스마이그레이션작업을수행할수있게도와준다. 또한, 커맨드라인인터페이스 (CLI) 모드도지원한다. 이도구사용시얻을수있는주요이점은다음과같다 : 1. 원본데이터베이스의데이터베이스객체들을대상데이터베이스 (Altibase 또는 Oracle) 로쉽게마이그레이션할수있다. 2. 최근의가장대중적인 DBMS 인터페이스인 JDBC 를사용해서원본데이터베이스의데이터를 Altibase 로바로복사할수있다. 3. 데이터를외부파일로내보내어 (export), 나중에 iloader 로 Altibase 에가져올 (import) 때사용할수있다. 4. 마이그레이션과정을단축시킬수있는병렬수행옵션을제공한다. 기본으로, 이도구는자동으로여러쓰레드간의데이터마이그레이션부하에대한균형을조정한다. 이도구는또한쓰레드들이처리할데이터를수동으로분할할수있는방법도제공한다. 5. 서로다른종류의데이터베이스간에다른데이터타입들의데이터타입맵핑을제공한다. 유연성 (flexibility) 을위해사용자정의데이터타입맵핑뿐만아니라편의를위해기본타입맵핑도지원한다. 6. 더나은사용성을위한 GUI 모드뿐만아니라, 만약의경우를대비해커맨드라인인터페이스 (CLI) 모드도 14 Migration Center User's Manual
제공한다. 7. 스키마마이그레이션에대해, 데이터베이스객체마이그레이션을위한 DDL SQL 문을사용자가수정할수있는기능을제공한다. Migration Center 소개 15
시스템요구사항 이절은 Migration Center 를설치하고실행하기위해필요한시스템사양에대해설명하고, Migration Center 와호환되는데이터베이스관리시스템을열거한다. 하드웨어요구사항 소프트웨어요구사항 호환되는데이터베이스시스템 하드웨어요구사항 GUI 모드 CPU: 800MHz 펜티엄 III 이상 메인메모리 : 512MB 이상 디스크 : 150MB 이상의여유공간 화면해상도 : 1024 x 768 화소이상 CLI( 커맨드라인인터페이스 ) 모드 CPU: 800MHz 펜티엄 III 이상 메인메모리 : 512MB 이상 디스크 : 150MB 이상의여유공간 소프트웨어요구사항 Oracle 또는 IBM Java 5 이상의 JRE Migration Center 는 GUI 모드의경우스윙 (Swing) 을사용하는순수자바애플리케이션이다. 이는사용자의하드웨어및운영체제에상관없이대부분독립적으로실행되지만, 오라클자바런타임환경 (JRE) 에의존적이다. 오라클또는 IBM Java 5 이상의 JRE 를설치할것을권장한다. GUI 모드로 Migration Center 를실행하려면, 사용자의환경이자바스윙을지원해야한다. 16 Migration Center User's Manual
Migration Center 는 32 비트마이크로소프트윈도우시스템의 JRE5 와함께번들되었다. 그러므로 32 비트버전의윈도우사용자는 JRE 에대해신경쓸필요가없다. 그러나, 다른운영체제사용자는 JRE 및관련환경변수를알맞게설정해야한다. 호환가능한데이터베이스시스템 마이그레이션이가능한데이터베이스시스템은대상데이터베이스에따라 Altibase 와 Oracle 로나눌수있다. Altibase 가대상데이터베이스인경우 Altibase 가대상데이터베이스일경우마이그레이션이가능한 원본데이터베이스는아래와같다. 대상데이터베이스 Altibase 5.5.1 이상버전 원본데이터베이스 Altibase: 4.3.9 이상버전 Oracle Database: 9i - 11g Microsoft SQL Server: 2005-2012 Oracle MySQL: 5.0-5.5 Informix: 11.50 Oracle TimesTen: 7.0, 11.2 CUBRID: 8.4.1~9.3.5(ISO-8859-1, UTF-8 charset) Oracle 이대상데이터베이스인경우 Oracle 이대상데이터베이스일경우마이그레이션이가능한원본 데이터베이스는아래와같다. 대상데이터베이스 Oracle Database 10g - 11g Migration Center 소개 17
원본데이터베이스 Altibase: 4.3.9 이상버전 JDBC 드라이버 Migration Center 는 Altibase 및다른데이터베이스의다양한버전들과함께사용할수있다. 이도구는데이터베이스접속을위해 JDBC 드라이버를사용하므로, 원본데이터베이스와대상데이터베이스에알맞은 JDBC 드라이버를준비하는것이중요하다. 사용자편의를위해지원되는데이터베이스에적합한몇가지 JDBC 드라이버를 Migration Center 와함께제공한다. 법적인문제때문에, 마이크로소프트 SQL Server 의 JDBC 드라이버파일과 Mysql Connector/J 파일, Informix JDBC 드라이버파일, TimesTen 의 JDBC 드라이버파일은패키지에포함하지않았다. 또한 TimesTen 은타입 2 드라이버만지원하기때문에반드시 TimesTen Client Package 가설치된장비에서이관을수행하여야한다. 아래의사이트에서적절한 JDBC 드라이버파일을다운로드할수있다 : 1. SQL Server 2008, 2005, 또는 2000 을위한 SQL Server JDBC 드라이버 2.0 (Type 4 JDBC 드라이버 ) http://www.microsoft.com/enus/download/details.aspx?id=2505 2. SQL Server 2012, 2008 R2, 2008, 2005 또는 Microsoft SQL Azure 를위한 Microsoft JDBC 드라이버 4.0 (Type 4 JDBC 드라이버 ) http://www.microsoft.com/enus/download/details.aspx?id=11774 3. Oracle MySQL Connector/J http://dev.mysql.com/downloads/connector/j/ 4. Informix JDBC Driver http://www14.software.ibm.com/webapp/download/search.jsp?g o=y&rs=ifxjdbc 5. Oracle TimesTen 18 Migration Center User's Manual
http://www.oracle.com/technetwork/database/databasetechnologies/timesten/downloads/index.html 6. CUBRID http://www.cubrid.org/?mid=downloads&item=jdbc_driver Migration Center 소개 19
설치및제거 Migration Center 는공식 Altibase 고객서비스포털 http://support.altibase.com 에서내려받을수있다. Migration Center 는 zip 또는 tar.gz 파일형식으로제공된다. 이파일은실행파일과몇가지 JDBC 드라이버를포함하고있다. Migration Center 설치는압축을풀기만하면된다. 결과로생긴디렉토리안에는 migcenter.bat 와 migcenter.sh 를포함해서 projects, lib, conf 및 images 하위디렉토리, 및파일들이존재한다. 이폴더를원하는위치로옮긴다. 이제 Migration Center 를사용할준비가되었다. Migration Center 를제거하려면, Migration Center 가설치되어있는디렉토리를삭제하기만하면된다. 20 Migration Center User's Manual
2. Migration Center 시작하기 이장은먼저사용자들이 Migration Center 를좀더능률적이고효율적으로실행하는데도움이되는기본개념을소개한다. 그런후에, Migration Center 를 GUI 모드와 CLI 모드로사용하는방법에대해자세히설명하고사용자편의를위해제공되는도구를설명한다. 이장은다음의절로구성된다. Migration Center 이해하기 그래픽유저인터페이스 (GUI) 모드 커맨드라인인터페이스 (CLI) 모드 도구 Migration Center 시작하기 21
Migration Center 이해하기 이절은용어를소개하고 Migration Center 로작업하는전반적인과정을설명한다. 용어 기본개념 용어 프로젝트 Migration Center 프로젝트는마이그레이션의모든면을기술하는기본작업단위이다. 이것은무엇을마이그레이션할지, 어디에서어디로마이그레이션할지 ( 즉, 어떤종류의데이터베이스또는데이터파일 ), 그리고데이터베이스객체와테이블데이터를어떻게마이그레이션할지를포함한다. 마이그레이션옵션에관한상세한내용은이매뉴얼의 "A. 부록 : 마이그레이션옵션 " 에서제공한다. 프로젝트는언제든지오직한개만열수있다. 기본개념 Migration Center 를사용하여마이그레이션을수행하는전반적인과정은 " 준비 (Prepare)", " 구축 (Build)", " 조정 (Reconcile)", " 실행 (Run)" 및 " 검증 (Data Validation)" 의다섯단계로구성된다. 22 Migration Center User's Manual
준비 (Prepare) 단계 " 준비 " 단계는실제마이그레이션프로젝트에대한암묵적인단계이다. " 준비 " 단계의최종상태는모든데이터베이스연결이설정된프로젝트가열려있는것이다. 최종 " 준비 " 단계상태로가려면, 사용자는운영중인데이터베이스연결정보를추가하거나, 기존의마이그레이션프로젝트를열거나, 사전에구성된데이터베이스연결을사용해서새로운마이그레이션프로젝트를생성하거나, 또는데이터베이스와의연결을설정해야한다. 구축 (Build) 단계 " 구축 " 단계는원본및대상데이터베이스의현재상태에대한초기조사를수행한다. 데이터베이스와의연결을통해원본및대상데이터베이스의데이터베이스객체에관한정보를가져오고, 이정보를프로젝트디렉터리에저장한다. 이렇게수집된정보가다른단계에서사용되기때문에, 여기에는가장최신의상태가반영되어야한다. " 실행 " 단계전에원본데이터베이스에서어떤메타정보가변경된다면, 변경사항들까지통합하기위해 Migration Center 시작하기 23
" 구축 " 에서 " 실행 " 단계까지모두재수행되어야한다. 조정 (Reconcile) 단계 " 조정 " 단계는현재상태에대해완벽한마이그레이션계획을구성한다. 이단계에서는원본및대상데이터베이스시스템간의데이터타입및테이블스페이스등의차이를조정하는것이대부분이다. 이단계에서사용자는원본데이터베이스로부터데이터추출시에사용할 SELECT 문과대상데이터베이스에실행할 DDL 문을편집할수있다. 예를들어, 사용자는원본데이터베이스의어떤테이블이대상데이터베이스의어떤테이블스페이스로복사될지를명시할수있다. 마이그레이션옵션에변경이가해지면이단계가재수행되는점을염두에두기바란다. 실행 (Run) 단계 " 실행 " 단계는 " 조정 " 단계에서도출된계획을실행한다. 이단계에서직접또는간접적으로스키마와데이터가마이그레이션된다. 마이그레이션옵션에서 Migration Type 를 "DB" to "DB" 로설정했다면, Migration Center 는대상데이터베이스에데이터베이스객체를생성한다 ( 스키마마이그레이션 ). 그다음에원본데이터베이스에서대상데이터베이스로데이터를복사한다 ( 데이터마이그레이션 ). 마이그레이션옵션에서 Migration Type 를 "DB" to "File" 로설정했다면, 마이그레이션하는동안 SQL 스크립트파일이생성된다. 그러나기본마이그레이션과정은동일하다. 검증 (Validation) 단계 " 검증 " 단계는 " 실행 " 단계에서이관된데이터를원본데이터베이스와데이터가일치하는지검사를수행한다. "User Mode" 로마이그레이션을했다면 Primary Key 가있는모든테이블을대상으로데이터가일치하는여부를검사한다. "Table Mode" 로마이그레이션을했다면마이그레이션한테이블중 24 Migration Center User's Manual
Primary Key 가있는테이블을대상으로데이터의일치여부를검사한다. 검증과정에서원본과다른데이터는 CSV 형식으로저장된다. 차이가나는데이터는 "FILESYNC" 메뉴또는명령으로대상데이터베이스에반영할수있다. 또한 " 검증 " 단계에서소요되는시간을줄이기위해, 기본적으로데이터샘플링기능이사용된다. 만약샘플링데이터대신에전체데이터를검증하고싶으면 "Migration Options" 의 "Data Validation Options" 항목들중 "Data Sampling" 을 "No" 로변경하면된다. Migration Center 시작하기 25
그래픽유저인터페이스 (GUI) 모드 이절은 Migration Center 를 GUI 모드로사용하는방법을자세히설명한다. 먼저사용자인터페이스에대해서설명하고, 마이그레이션을수행하는방법에대해빠른단계별지침을제공한다. 그리고, 마지막으로 GUI 모드의 Migration Center 를제어하는방법에대해좀더상세한설명을제공한다. 사용자인터페이스이해하기 Migration Center GUI 는아래그림과같이네개의창으로이루어져있다. 왼쪽상단부터시작하여시계방향으로각각 " 프로젝트 (Project)", " 정보 (Information)", " 로그 (Log)", "DB 속성 (DB Properties)" 창이다. 프로젝트창 프로젝트창은프로젝트중심의뷰를제공한다. 프로젝트창은 26 Migration Center User's Manual
열려있는프로젝트와원본및대상데이터베이스연결을 보여준다. 한번에오직하나의프로젝트만프로젝트창에열수 있다. 정보창 이창은프로젝트에대한간단한뷰를제공한다. 현재의진행 상황및남아있는단계를보여준다. 로그창 이창에는 Migration Center 에서수행된작업의결과가발생한순서대로출력된다. 이는 Migration Center 가설치된디렉토리아래의 "log" 라는하위디렉토리에저장되는로그로부터사용자가관심있을만한정보를선별한다. DB 속성창 이창은프로젝트에설정된원본데이터베이스와대상 데이터베이스에대한정보를보여준다. Migration Center 시작하기 27
커맨드라인인터페이스 (CLI) 모드 이절은 Migration Center 를커맨드라인인터페이스 (CLI) 모드로실행하는것이왜바람직할수있는가에대한설명과함께, 실행방법에대해서도설명한다. CLI 모드에대한이해 CLI 모드로실행단계수행 CLI 모드에대한이해 GUI 모드는사용자친화적인환경을제공하지만, Migration Center 를항상 GUI 모드로실행하는것은불가능하다. CLI 모드는 GUI 모드실행이불가능할때편리하지만, 이또한제한사항이있다. 터미널에서 " 조정 " 단계를행하는것은매우비효율적이기때문에, CLI 모드에서는사용자가마이그레이션절차중오직 " 실행 " 및 " 검증 " 단계만수행하는것이허용된다. Migration Center 를 CLI 모드로사용하는주된이유는고성능실현을위해서다. CLI 모드및 GUI 모드에서 " 실행 " 과 " 검증 " 단계수행은동일한환경에서는동일한성능을제공하지만, CLI 모드는좀더열악한환경에서도실행이가능하다. 상용데이터베이스환경에서마이그레이션다섯단계중가장많은시간이소요되는단계는 " 실행 " 단계이다. " 실행 " 단계에서필수작업은원본데이터베이스에서데이터를가져와서이것을대상데이터베이스에보내는것이다. GUI 를항상사용할수없는서버들중하나에데이터베이스가있다면, CLI 모드를사용하여데이터전송속도를높일수있다. 이것은통신비용을크게감소시켜전체마이그레이션에소요되는시간을줄인다. CLI 모드로실행, 검증단계수행 CLI 모드로 Migration Center 의실행이나검증단계를수행하려면, 커맨드실행시 command 와 project_path 의두개인자가 28 Migration Center User's Manual
필요하다. %./migcenter.sh command project_path 첫번째인자로다음세가지의 command 가가능하다. run: 실행단계수행 diff: 검증단계에서데이터비교작업수행 filesync: 검증단계에서데이터일치작업수행두번째인자는구축또는실행하려는프로젝트의경로로, 상대또는절대경로모두가능하다. 인자가생략되면, Migration Center 는 GUI 모드로실행될것이다. Migration Center 시작하기 29
도구 이절은 Migration Center 에포함되어있는두가지유틸리티에 대해그사용법을소개한다. PSM Converter for File PSM Converter for File 은오라클의 PL/SQL 을 Altibase PSM 으로변환한다. 이도구는오라클 PL/SQL 구문이들어있는 SQL 파일을읽어서 Altibase PSM 으로전환한다음, 결과를미리정의한 SQL 파일에기록한다. 이파일은 HTML 형식의보고서파일과함께제공된다. 이도구의기능은내부적으로마이그레이션조정단계에서의 "PSM Converter" 와동일하다. 이도구의변환규칙에대한상세한내용은 "D. 부록 : PSM 변환기규칙목록 " 을참고하기바란다. PSM Converter for File 는메인메뉴의 Tools -> PSM Converter for File 로실행할수있다. Generate Migration Error Report Generate Migration Error Report 는 Migration Center 에서발생하는문제를보고하는유틸리티이다. 프로젝트를연후에, 이도구를실행하면로그파일, 리비전번호같은문제추적정보를수집하여 zip 파일을생성한다. 사용자는이 zip 파일을첨부하여 Altibase 고객서비스포털에고객등록정보와함께보내기만하면된다. 이툴은메인메뉴의 Tools -> Generate Migration Error Report 로실행할수있다. 30 Migration Center User's Manual
3. GUI 모드퀵가이드 이장은 Migration Center 를처음접하는사용자들이 GUI 모드 Migration Center 를각단계별로사용할수있도록간략한지침을 제공한다. Migration Center 내부 31
단계별지침 사용자들은이절에명시된지침을따라 GUI 모드로쉽게 마이그레이션을수행할수있다. 전반적인과정은아래와같다. 1. Migration Center 시작 2. 프로젝트준비 A. 원본데이터베이스와대상데이터베이스연결등록 B. 프로젝트생성 C. 프로젝트열기 D. 원본및대상데이터베이스에연결 E. 마이그레이션옵션설정 3. 프로젝트구축 4. 프로젝트조정 5. 프로젝트실행 6. 프로젝트검증 Migration Center 시작 마이크로소프트윈도우환경에서는 "migcenter.bat" 아이콘을더블클릭해서 Migration Center 를 GUI 모드로실행할수있다. 유닉스계열의운영체제에서는 "migcenter.sh" 를실행한다. 32 비트윈도우환경이아닌다른환경에서이도구를사용한다면, 자바런타임환경 (JRE) 이설치되어있는지, 또터미널에서자바런타임환경 (JRE) 에접근가능하도록적절한 PATH 환경변수가정의되어있는지확인한다. 데이터베이스연결등록 1. "Database" 메뉴아래의 "Add Database Connection" 메뉴항목을선택하거나, 도구모음에서 "Add Database Connection" 아이콘을클릭한다. 2. "Add Database Connection" 대화상자에서다음의입력 32 Migration Center User's Manual
필드를채운다. A. DB Product: 데이터베이스시스템의이름. B. Connection Name: Migration Center 프로젝트에서 사용될고유한데이터베이스연결이름 C. IP: 데이터베이스서버의 IP 주소. D. Port: 데이터베이스서버의포트번호또는 Altibase 서버의 SSL 포트번호 E. User: 데이터베이스에서유효한사용자 ID F. Password: 사용자 ID 의비밀번호 G. JDBC Driver: 데이터베이스에연결하기위해사용될 JDBC 드라이버파일의경로 H. Encoding: 클라이언트가사용하는기본문자 집합 (character set) I. IP Version: 이연결에사용될 IP 프로토콜의버전 J. Property: 이연결에사용될 JDBC 드라이버프로퍼티 만약 SSL 로접속할때에는아래처럼 ssl_enable=true 로지정하고 path_to_keystore, path_to_truststore, password 는각각의인증환경에 맞게설정한다. ssl_enable=true&keystore_url=path_to_keystore&keystore_passw ord=password&truststore_url=path_to_truststore&tru ststore_password=password 3. 이연결을연결목록에추가하기전에, 입력한사항을 확인하기위해대화상자하단의 "Test" 버튼을클릭한다. 4. 연결테스트에통과하면, 대화상자하단의 "OK" 버튼을 눌러서이연결을연결목록에추가하고 "Add Database Connection" 대화상자를닫는다. 프로젝트생성 1. "Project" 메뉴아래의 "Create Project" 메뉴항목을선택하거나, 도구모음에서 "Create Project" 아이콘을클릭한다. 2. "New Project" 대화상자에서입력필드를채운다 : A. Project Name: Migration Center 에서고유하고 Migration Center 내부 33
사용자에게의미있는마이그레이션프로젝트이름 B. Project Path: 마이그레이션프로젝트파일을저장할폴더경로이다. 그러나, 이값은사용자가편집할수없다. C. Source Database: 이프로젝트에서마이그레이션될데이터베이스객체를가지고있는데이터베이스로의연결 D. Destination Database: 원본데이터베이스의데이터베이스객체를복사하여저장할 Altibase 데이터베이스로의연결. 프로젝트가 "DB to File" 마이그레이션으로구성되었더라도, 이입력필드는필수이다. 3. 프로젝트를생성하려면 "New Project" 대화상자하단의 "OK" 버튼을클릭한다. 프로젝트열기 프로젝트를열려면, "Project" 메뉴아래의 "Open Project" 메뉴항목을선택한다. 그러면, 파일열기대화상자가나타날것이다. 사용자는프로젝트폴더를선택해서 "Open" 버튼을누르기만하면된다. 프로젝트구성 사용자들은세부사항을설정하기전에프로젝트의기본전략을 구성할수있다. 전체설명은 " 부록 A. 마이그레이션옵션 " 을 참고한다. 원본및대상데이터베이스로연결 원본및대상데이터베이스로의연결은 " 구축 " 단계로진행하기위해필수적이다. 프로젝트에서데이터베이스로연결하려면, "Project" 메뉴아래의 "Connect" 메뉴항목을선택하거나, 열려진 34 Migration Center User's Manual
프로젝트에오른쪽마우스버튼을클릭해서 "Connect" 를 선택한다. 프로젝트구축 " 구축 " 단계는마이그레이션과정에서필수이지만, 그실행은간단하다. 1. "Project" 메뉴아래의 "Build" 메뉴아이템을선택하거나, 도구모음에서 "Build" 아이콘을클릭한다. 2. 원본데이터베이스의각테이블의레코드개수를어떤방식으로가져올지선택하는대화상자가나타난다. 원하는방법을선택하고 "OK" 버튼을클릭한다. 선택가능한옵션과각옵션에대한설명은 4 장의구축단계에서 " 내부동작 " 을참고한다. 3. "Build" 대화상자가나타나고진행상태가보일것이다. 끝나면, "Report" 버튼이하단에나타날것이다. 4. "Report" 버튼을누르면, HTML 보고서파일이프로젝트디렉터리에생성되고 "Build Report" 라는새로운대화상자가나타난다. 이대화상자는 HTML 보고서파일로의링크를제공한다. 한번 "Report" 버튼을눌러서 HTML 보고서파일이생성되면 "Report" 메뉴아래의 "Build Report" 메뉴항목이활성화되므로, 이메뉴항목을이용해서언제든지 "Build Report" 대화상자를열수있다. 프로젝트조정 " 조정 " 단계는 "Run" 이수행될방법을결정하기때문에, 마이그레이션과정에서아주중요하며, 양쪽데이터베이스에대한몇가지지식을필요로한다. 이절차에대한상세한내용은 "4 장 Migration Center 내부 " 를참고하도록한다. 다음은간단한지침이다 : 1. "Project" 메뉴아래의 "Reconcile" 메뉴항목을선택하거나, 도구모음에서 "Reconcile" 아이콘을클릭한다. Migration Center 내부 35
2. 팝업상자에서 "User Mode" 또는 "Table Mode" 를선택한다. 3. 앞단계에서 "Table Mode" 를선택했다면, 원본데이터베이스에서마이그레이션할테이블을선택한다. 4. 목적에맞게기본데이터타입맵핑을수정하거나그대로승인한다. 5. 원본데이터베이스에서기본대상인 Altibase 의테이블스페이스를지정한다. 6. 원본데이터베이스의파티션드테이블이 Altibase 로마이그레이션될방법을수정하거나지정한다. 7. 원본데이터베이스의각테이블또는인덱스에대해대상테이블스페이스를지정한다. 8. 원본데이터베이스의각테이블에서데이터추출시에사용할 SELECT 문을확인하고, 원한다면수정한다. 9. 스키마마이그레이션과정에서사용될 DDL SQL 문장들이올바른지확인하고, 그렇지않다면수정하라. 10. 이단계에대해보고서를생성하려면 "Report" 버튼을누른다. 프로젝트실행 " 실행 " 단계를실행하는것은프로젝트를구축하는것만큼이나간단하지만, 실행하면되돌릴수없다. 따라서, 더진행하기전에모든설정을확인하도록한다. 1. "Project 메뉴아래의 "Run" 메뉴항목을선택하거나, 도구모음에서 "Run" 아이콘을클릭한다. 2. 경고대화상자에서 "Ok" 를눌러서모든설정이제대로되었음을확인한다. 3. 진행상황및최종보고서를자세히살펴보도록한다. 프로젝트검증 " 실행 " 단계에서이관된데이터가올바르게수행되었는지 검사한다. 36 Migration Center User's Manual
1. "Project 메뉴아래의 "Data Validation" 메뉴항목을선택한다. 2. 경고대화상자에서 "Ok" 를눌러서, 모든설정이제대로되었는지확인한다. Data Validation 대화상자가나타나고 " 검증 " 단계가수행된다. 3. 데이터검증이완료되면 Data Validation 대화상자하단의 "Report" 버튼이활성화된다. 4. "Report" 버튼을누르면 HTML 보고서파일이프로젝트디렉터리에생성되고, "Data Validation Report" 대화상자가나타난다. 이대화상자는 HTML 보고서파일로의링크를제공한다. 한번 HTML 보고서파일이생성되면, "Report" 메뉴아래의 "Data Validation Report" 메뉴항목이활성화되므로, 이항목을이용해서언제든지 "Data Validation Report" 대화상자를열수있다. 5. 보고서에서원본과대상데이터베이스의데이터가불일치하면, "filesync" 기능을사용해서데이터를일치시킬수있다. 다음은 "filesync" 기능을사용하는절차이다. 1. "Migration" 메뉴아래의 "Migration Options" 메뉴항목을선택한다. 2. 경고대화상자에서 "Ok" 를누른다. 3. "Data Validation Options" 항목의 "Operation" 콤보박스에서 "FILESYNC" 를선택한다음, "Ok" 를누른다. 4. "Project" 메뉴아래의 "Reconcile" 메뉴항목을선택하거나, 도구모음에서 "Reconcile" 아이콘을클릭한다. 5. 팝업상자에서 "Table Mode" 를선택한다. 6. 데이터를일치시킬테이블을선택한다. 7. 계속 "Next" 를눌러조정 (Reconcile) 단계를완료한다. 8. "Project" 메뉴아래의 "Data Validation" 메뉴항목을선택한다. 9. Data Validation 대화상자가나타나고 "filesync" 기능이수행된다. 수행완료후 "Report" 버튼이창하단에활성화된다. 10. 보고서를확인해서데이터의불일치가해소되었는지확인한다. Migration Center 내부 37
4. Migration Center 내부 이장은 Migration Center 의주요단계인구축, 조정, 실행및검증단계에대해상세히설명한다. 이장은아래의절을포함한다 : 구축단계 조정단계 실행단계 검증단계 Migration Center 내부 39
구축단계 목적 구축단계는원본및대상데이터베이스로부터데이터베이스객체에대한정보를수집할뿐만아니라, 사용자에게구축보고서를제공하여마이그레이션을좀더적절히수행할수있도록한다. 보고서는원본및대상데이터베이스의마이그레이션가능한객체를바이트크기정보와함께나열한다. 이정보는사용자에게마이그레이션분량에관한몇가지아이디어를제공하여, 마이그레이션에소요될저장공간및시간을추정하는데도움을줄것이다. 이단계에서모은정보는전체마이그레이션에걸쳐사용될것이다. 또한이는원본및대상데이터베이스의현재상태를반영하고있어야한다. 구축단계이후원본데이터베이스의데이터베이스객체에변경이발생했다면, 모든단계가재실행되어야한다. 출력 구축보고서 : 프로젝트폴더에 HTML 형식으로원본및대상 데이터베이스의현재상태에기반한다수의저장공간분석 보고서가출력된다. 내부동작 이단계는양쪽데이터베이스로부터데이터베이스객체에대한정보를수집하고그정보에기반하여구축보고서를생성하는두가지내부동작으로구분된다. 이단계에서는먼저데이터베이스객체에대한정보중에서테이블들의레코드개수를수집하는 "How to count records in 40 Migration Center User's Manual
tables?" 대화상자가나타난다. 사용자는다음중한가지방법을선택할수있다. Approximate Counting Method: 원본데이터베이스의통계값을참조하여테이블의레코드개수를가져온다. 통계값의정확도에따라레코드개수의정확도가달라진다. Exact Counting Method: 원본데이터베이스의모든테이블을대상으로 count 함수를수행하여정확한테이블의레코드개수를가져온다. 두가지방법중에 "Approximate Counting Method" 이 "Exact Counting Method" 보다빠르지만, 보다정확한테이블레코드개수를수집하려면후자를선택하는것이좋다. 하지만사용자가이대화상자에서어떤방법을선택하더라도데이터베이스스키마와데이터마이그레이션에는전혀영향을미치지않는다. 다만 Migration Center GUI 모드의실행단계에서제공되는데이터마이그레이션진행률의정확도에만영향을미친다. 이는데이터마이그레이션진행률이경과된시간과함께 ( 이전된레코드개수 / 수집된전체레코드개수 ) 의백분율로표시되기때문이다. 사용자는이데이터를기반으로마이그레이션에소요될전체시간을추정해볼수있다. 구축단계를수행하는방법은 3 장에서 " 프로젝트구축 " 절을참고하도록한다. Migration Center 내부 41
조정단계 목적 조정단계는마이그레이션계획을구성하는단계를의미한다. Migration Center 사용자는각데이터베이스의객체를어떻게마이그레이션을할것인지계획을가지고있어야한다. Migration Center 는모든데이터베이스객체를 Altibase 로마이그레이션할수없지만, 마이그레이션에대한모든제어를허용하여마이그레이션을쉽게할수있도록해준다. Altibase 는인-메모리데이터베이스로서의고성능과디스크기반데이터베이스로서의대용량의이점을가지고있다. 따라서 Altibase 의일반적인사용전략은빈번히사용되며낮은대기시간이요구되는데이터를메모리테이블스페이스에저장하고, 나머지데이터를디스크테이블스페이스에저장하는것이다. Altibase 의테이블스페이스에대한자세한내용은각각의 Administrator's Manual 을참고한다. 출력 조정보고서 : 프로젝트폴더에마이그레이션할데이터베이스객체및마이그레이션하는방법을명시하는다수의보고서가출력된다. SQL 데이터정의어 (DDL) 스크립트 : 사용자편의를위해, 프로젝트폴더에대상데이터베이스에데이터베이스객체를생성하고삭제하는샘플 SQL 스크립트파일이출력된다. 그러나이파일들은 Migration Center 의어느단계에서도사용되지않는다. DbObj_Create.sql: 마이그레이션될데이터베이스객체를생성하는 SQL 스크립트파일 DbObj_Drop.sql: 마이그레이션될데이터베이스객체를 42 Migration Center User's Manual
삭제하는 SQL 스크립트파일 DbObj_Unsupported.sql: 지원되지않는데이터베이스객체를생성하는 SQL 스크립트파일 PL/SQL 변환보고서 : PL/SQL 변환기에서출력하는다수의보고서이다. sqlconv.html: 원본과변환된 PL/SQL 의차이를비교하는 HTML 형식의보고서 sqlconv_src.sql: 입력된 PL/SQL 문을텍스트형식으로출력하는보고서 sqlconv_dest.sql: 변환된 PL/SQL 문과적용된규칙이코멘트로덧붙여져있는텍스트형식의보고서 내부동작 조정단계는매우중요하고복잡해질수있음에도불구하고, 그위저드는 UI 처럼따라가기에쉽다. 조정단계를시작하는방법은 3 장에서 " 프로젝트조정 " 절을참고하기바란다. "User/Table Mode" 대화상자 "User/Table Mode" 대화상자는이단계의첫번째대화상자로, 마이그레이션의범위를결정한다. User 모드는원본데이터베이스에서모든지원되는데이터베이스객체를마이그레이션대상으로포함한다. 반면, Table 모드는테이블과테이블에관련된객체만을마이그레이션대상으로고른다. 더자세한내용은 "B. 부록 : 마이그레이션가능한데이터베이스객체 " 를참고하도록한다. 사용자가 User 모드를선택하면, 다음위저드대화상자에는 "Set Target Tables" 메뉴항목이상단에나타나지않을것이다. 하지만, 나머지메뉴항목은 Table 모드를선택한것과동일하게사용할수있을것이다. 조정위저드대화상자 조정위저드대화상자는 "User/Tables Mode" 대화상자다음에 나타날것이다. 이위저드는기본설정을보여주고, 사용자가그 설정을수정할수있도록해준다. 이것은사용자에게각메뉴 Migration Center 내부 43
"Set Table Name" 대화상자 항목을순차적으로안내하지만, 사용자가왼쪽창에서선택하여 특정메뉴아이템으로이동할수도있다. "Set Target Tables" 메뉴아이템은이전단계에서 Table 모드가선택된경우에만사용할수있다. 마이그레이션대상테이블은 "Add/Remove" 버튼과바로뒤의대화상자에서선택할수있다. Add 버튼을누르면 "Set Table Name" 대화상자가나타난다. 사용자는 Candidate 목록에서이관하길원하는테이블들을선택하고화살표버튼을눌러 Selected 목록으로옮길수있다. 다수의테이블을처리하는경우사용자편의성을고려하여파일을이용한테이블지정기능도지원한다. Candidate 목록하단부의 'Export' 버튼을클릭하여 Candidate 목록에들어있는모든테이블의이름을파일로저장할수있다. 사용자는테이블목록이저장된파일에서이관하길원하는테이블이름만남도록편집한후, Selected 목록하단부의 'Import' 버튼을클릭하여해당파일을선택하면된다. 테이블목록이저장된파일을편집할때테이블의이름은 Candidate 목록에있는이름을그대로사용해야하며, 테이블이름은개행문자로구분되어야한다. 즉, 한라인에하나의테이블이름을써야한다. 또한파일의인코딩은 'UTF-8' 로설정되어야한다. "Data Type Mapping" 단계 "Data Type Mapping" 단계에서는이기종데이터베이스간의데이터타입을맵핑할수있다. 데이터타입의작은차이는데이터를마이그레이션하는동안예기치못한데이터손실및데이터절단을일으킬수있다. 따라서, 사용자는이를주의해야한다. 더자세한내용은 "C. 부록 : 데이터타입맵핑 " 을참고한다. "PSM Data Type Mapping" 단계 "PSM Data Type Mapping" 단계에서는서로다른데이터베이스 간의 PSM 데이터타입을맵핑할수있다. 이단계는 "Oracle to 44 Migration Center User's Manual
Altibase PSM Migration" 또는 "TimesTen to Altibase PSM Migration" 수행시에만활성화된다. 이단계에서정의된내용은나중에 PSM 마이그레이션의 "SQL Editing" 단계에서대상 DDL 에반영될것이다. "Tablespace to Tablespace Mapping" 단계 "Tablespace to Tablespace Mapping" 단계에서는원본및대상데이터베이스간의테이블스페이스를맵핑할수있다. 테이블스페이스맵핑이설정되면, 테이블스페이스의내용물또한선택된테이블스페이스로모두함께맵핑된다. 이단계는기본테이블스페이스맵핑을생성하는데, 이맵핑은 "Object to Tablespace Mapping" 메뉴항목을사용해서변경할수있다. "Object to Tablespace Mapping" 단계 "Object to Tablespace Mapping" 단계에서는각각의테이블및인덱스를드래그앤드롭하여대상데이터베이스상의테이블스페이스로맵핑할수있다. 맵핑이변경될때마다대상데이터베이스상의관련테이블스페이스에대해필요한전체저장공간크기가다시계산된다. 내부적으로, 데이터베이스객체의크기는바이트단위로정확하게유지되지만, 대화상자에는그값을반올림하여 MB 단위로보여준다. 따라서, 테이블스페이스의전체크기는그내용물의합계와동일하지않을수도있다. "Select Editing" 단계 "Select Editing" 단계에서는원본데이터베이스의테이블로부터데이터추출시에사용할 SELECT 문을수정할수있다. 사용자는 SELECT 문에힌트나 WHERE 절을추가하는등의편집이가능하며, 편집한 SELECT 문을바로확인할수있다. 수정한것을취소하고싶다면 Restore 버튼을누르면된다. "SQL Editing" 단계 "SQL Editing" 단계는사용자에게스키마마이그레이션에사용될 DDL 문장을확인하고수정하는기능을제공한다. 사용자는원본 Migration Center 내부 45
DDL 문장을참조하여 Migration Center 가대상데이터베이스에사용할 DDL 문장을직접편집하면된다. 프로시저, 함수, 트리거및뷰객체를생성하는 SQL 문장은모두 PSM 타입으로표시된다. 사용자는 PSM 카테고리내에있는체크박스를조작하여편집하고자하는객체타입을선택할수있다. 체크박스를조작해서선택한객체들은 Done 또는 To-Do 리스트창에표시된다. 사용자의확인이필요한객체는 To-Do 리스트에표시되고, 그렇지않은객체는 Done 리스트에표시된다. 각리스트에서객체이름을클릭하면해당객체의원본및대상 DDL 문장이출력된다. To-Do 리스트에속한객체 DDL 문장을편집한후, Save 버튼을누르면해당객체가 Done 리스트로이동할것이다. 예상치못하게 Done 리스트에속한객체의마이그레이션이실행단계에서실패할수도있다. 이경우, 사용자가 Run Report 의 Missing Cause 를확인하여오류의원인을파악한다음, 수동으로해당객체를마이그레이션해야한다. 텍스트편집기를선호하는사용자를위해, 선택된 PSM 객체 DDL 문장을파일로출력하는기능이제공된다. 이기능은 PSM 객체타입의 Off-line 창에서제공되며, 사용법은 Off-line 창에기술되어있다. Oracle 또는 TimesTen 을 Altibase 로마이그레이션하는경우, Migration Center 에내장되어있는 PL/SQL 변환기가 PSM 타입객체 DDL 문장을 Altibase 에호환되는형태로변환한다. 단, 대부분의문법에대해서는변환이수행되지만, 의미적인로직 (semantic logic) 이포함된문장에대해서는변환이이루어지지않으므로사용자의확인이필요하다. * 주의 : Migration Center 는구축단계에서원본데이터베이스객체간의의존성그래프를만든다. 사용자가대상 DDL 문장을편집하는중에이의존성을변경한다면, 해당객체및그에관련된객체에대해서마이그레이션이보장되지않는다. 46 Migration Center User's Manual
실행단계 목적 실행단계는원본데이터베이스의데이터베이스객체를마이그레이션옵션에따라대상데이터베이스또는외부파일로복사한다. 사용자에게는이단계의결과가가장중요할수있다. 실행단계완료후에생성되는실행보고서에그결과가담겨있다. RunReport4Summary.html 보고서파일은원본및대상데이터베이스간의데이터베이스객체의개수및테이블레코드의개수를비교하여전반적인결과를제공한다. RunReport4Missing.html 보고서파일에는실패한마이그레이션에대해상세히기술된다. 마이그레이션에실패한데이터는프로젝트폴더의 "db2db" 또는 "db2file" 폴더에수집된다. 이두폴더에는 iloader(altibase 의커맨드라인데이터 import/export 도구 ) 에서사용가능한데이터파일및폼파일이저장된다. 각폴더에는생성된데이터파일을 iloader 를사용해서편리하게데이터베이스로가져올수있는스크립트가추가로저장된다. "iloaderln.sh" 는다른스크립트파일및각테이블에대해 iloader 를실행하는 "iloaderln.number.sh" 스크립트를실행하는주스크립트이다. 출력 RunReport4Summary.html: 마이그레이션수행에대한전반적인결과를제공하는요약보고서파일. RunReport4Missing.html: 실패한마이그레이션데이터에대한정보및실패원인을제공하는보고서파일. DbObj_Failed.sql: 실패한 SQL 문의목록과실패원인을제공하는파일. Migration Center 내부 47
db2db 폴더 : 프로젝트디렉터리의하위폴더로서, 실패한마이그레이션데이터가저장된다. 이폴더는 "Migration Type" 으로 "DB to DB" 옵션이선택되고 "Batch Execution" 에 "No" 가선택된경우에만유효하다. db2file 폴더 : "Migration Type" 으로 "DB to File" 옵션이선택된경우에모든출력이저장되는프로젝트디렉터리의하위폴더. 내부동작 실행단계는 GUI 모드에서한번의마우스클릭또는 CLI 모드에서하나의커맨드만으로도실행될수있다. 실행단계수행방법은 " 프로젝트실행 " 또는 "CLI 모드로실행, 검증단계수행 " 절을참고한다. 내부적으로, 이과정은데이터베이스객체종속성을피하기위해 PreSchema 단계, 테이블및데이터단계, PostSchema 단계의세단계로구성된다. 예를들어, 인덱스객체는테이블및데이터단계가완료된후 PostSchema 단계에서마이그레이션된다. 왜냐하면, 보통인덱스가없는상태에서데이터를삽입하는것이인덱스가있는경우보다더빠르기때문이다. 각단계별상세동작은다음과같다 : 1. PreSchema: sequence 객체마이그레이션 2. Table & Data: 테이블객체및데이터마이그레이션 3. PostSchema: A. Queue: 큐객체마이그레이션 B. Constraints: 유니크, 프라이머리키, 외래키, 및 check 제약조건등의제약조건마이그레이션 C. Index: 인덱스객체마이그레이션 D. Synonym: PRIVATE 시노님객체마이그레이션 E. Procedures, Functions, Materialized Views, Views, Typesets 및 Triggers: DBMS 및버전에따라상이함 48 Migration Center User's Manual
검증단계 목적 검증단계에서는실행단계에서수행한데이터이관이정확하게수행되었는지검사한다. 검증이완료된후, 사용자에게검증보고서를제공하여사후처리를적절히수행할수있도록한다. 보고서는원본및대상데이터베이스의정보와함께검증을완료한테이블리스트및데이터일치, 불일치건수정보를나열한다. 사용자는이정보를확인하여실행단계를다시수행할것인지, FILESYNC 기능을사용할것인지여부를결정할수있다. 데이터의불일치건수가적을때는 FILESYNC 기능을사용하고, 데이터불일치건수가많을때에는실행단계를재수행할것을권장한다. 제약조건 Primary Key 제약조건이존재하는테이블에한해서만검증 단계를수행할수있다. LOB 칼럼은데이터비교대상에서제외된다. 출력 검증보고서 : 검증이완료된테이블리스트및데이터일치, 불일치건수정보같은 summary 정보가기록된보고서가프로젝트디렉터리에출력된다. validation 디렉터리 : 프로젝트디렉터리의하위디렉터리로써, 불일치데이터가저장된다. 이디렉터리는 "Data Validation Options" 항목에서 "Write to CSV" 로 "Yes" 옵션이선택된경우에만사용된다. Migration Center 내부 49
내부동작 검증단계는 GUI 모드에서한번의마우스클릭또는 CLI 모드에서하나의커맨드만으로도실행될수있다. 검증단계수행방법은 " 프로젝트검증 " 또는 "CLI 모드로실행, 검증단계수행 " 절을참고한다. 내부적으로검증단계는다음과같이수행된다. 원본과대상데이터베이스에서검증할데이터를가져와서비교한다. 불일치하는데이터가발견되고, "Data Validation Options" 항목의 "Write to CSV" 가 "Yes" 로설정된경우, 불일치하는데이터에해당하는원본데이터를 validation 폴더에 CSV 형식으로저장한다. 이때옵션에상관없이 Summary 정보는검증보고서에항상기록된다. 50 Migration Center User's Manual
A. 부록 : 마이그레이션옵션 마이그레이션옵션은마이그레이션프로젝트에영향을미치며, GUI 모드에서 "Migration Option" 메뉴아이템을선택해서편집가능하다. 마이그레이션옵션은대부분프로젝트가생성된직후에편집할수있다. 기본옵션은 "DB to DB" 또는 "DB to File" Migration Type 이다 : DB to DB 마이그레이션옵션 DB to File 마이그레이션옵션 A. 부록 : Migration Center 옵션 51
DB to DB 마이그레이션옵션 마이그레이션대상이되는원본데이터베이스의객체와테이블의데이터가저장하려는데이터베이스 (Altibase) 로직접마이그레이션된다. 이름 설명 Migration Target 마이그레이션될대상 : * Object & Data: 데이터베이스객체및테이블데이터 * Object: 데이터베이스객체만 Execution Thread Object Options: Foreign Key Migration Object Options: PSM Migration Object Options: Drop Existing Objects Object Options: Keep Partition Table Object Options: Use Double-quoted Identifier Object Options: Postfix for reserved word Data Options: Batch Execution Data Options: Batch Size Data Options: Log Insert-failed Data Data Files: File Encoding 데이터를마이그레이션하기위해동시에사용할쓰레드의최대개수외래키제약조건을마이그레이션할지여부프로시저, 함수, materialized view, 뷰, typeset, 및트리거를마이그레이션할지여부데이터를복사하기전에모든대상데이터베이스객체를대상데이터베이스에서삭제하고생성할지여부를지정파티션드테이블을논파티션드테이블로변경할지여부를지정스키마와객체이름에큰따옴표를사용할지여부를지정 Altibase의예약어와충돌할경우, 원본데이터베이스의데이터베이스객체이름뒤에자동으로붙을사용자정의단어를지정고성능을위해 JDBC 배치입력을사용할지여부를지정 JDBC 배치입력사용시배치크기를지정 DB2DB 마이그레이션중에삽입실패한데이터를기록할지여부를지정. 이옵션은배치수행옵션이비활성화되어있는경우에만사용할수있다. 스크립트파일과데이터파일출력에사용될인코딩문자집합을지정 52 Migration Center User's Manual
Data Validation Options : Operation Data Validation Options : Write to CSV Data Validation Options : Include LOB Data Validation Options : Data Sampling Data Validation Options : Percent Sampling (exact counting) Data Validation Options : Record Count Sampling (approximate counting) 검증단계에서수행할연산 * DIFF : 원본및대상데이터베이스간데이터불일치검사 * FILESYNC: DIFF의결과로생성된 CSV 파일을대상데이터베이스에반영불일치데이터를 CSV 파일로내려쓸지여부불일치데이터를 CSV 파일로내려쓸때 LOB 데이터를포함할지여부샘플링데이터에한해서데이터검증할지여부테이블에서샘플링할데이터의비율을퍼센트단위로지정. 구축단계에서 Exact Counting Method를선택한경우에이옵션이사용된다. 테이블에서샘플링할레코드의개수를지정. 구축단계에서 Approximate Counting Method를선택한경우에이옵션이사용된다. A. 부록 : Migration Center 옵션 53
DB to File 마이그레이션옵션 마이그레이션대상이되는원본데이터베이스의객체와테이블의데이터가 SQL 스크립트파일, form 파일, CSV 형태의데이터파일로각각저장된다. 저장된파일들은 isql, iloader 를이용하여저장하려는데이터베이스 (Altibase) 로마이그레이션할수있다. 이름 Execution Thread 설명 데이터를마이그레이션하기위해동시에사용할 쓰레드의최대개수 Migration Target 마이그레이션될대상 : * Object & Data: 데이터베이스객체및테이블데이터 * Object: 데이터베이스객체만 Object Options: Foreign Key Migration Object Options: PSM Migration Object Options: Keep Partition Table Object Options: Use Doublequoted Identifier Data Files: File Encoding 외래키제약조건을마이그레이션할지여부프로시저, 함수, 뷰, 트리거를마이그레이션할지여부파티션드테이블을논파티션드테이블로변경할지여부를지정스키마와객체이름에큰따옴표를사용할지여부를지정스크립트와데이터파일출력에사용될인코딩문자집합을지정 54 Migration Center User's Manual
B. 부록 : 마이그레이션 가능한데이터베이스 객체 마이그레이션모드에따라데이터베이스객체의이관여부및 유의사항을설명한다. B. 부록 : 마이그레이션가능한데이터베이스객체 55
타데이터베이스 to Altibase Table 데이터베이스 객체유형 User 모드에서 마이그레이션 가능여부? 모드에서마이그레이션가능 비고 여부? Table O O Oracle 또는 TimesTen( 원본데이터베이스 ) 의임시테이블을 Altibase( 대상데이터베이스 ) 로마이그레이션하기위해서는휘발성테이블스페이스가 Altibase에있어야한다. Altibase의임시테이블은휘발성테이블스페이스에만생성할수있기때문이다. 테이블과칼럼에명시된주석 (comment) 도함께마이그레이션된다. Primary Key 제약 O O Unique 제약 O O Check 제약 O O Foreign Key 제약 O O Index O O TimesTen( 원본데이터베이스 ) 의인덱스는정렬순서 (ASC/DESC) 나크기에대한정보를제공하지않는다. 따라서인덱스순서는기본값 (ASC) 으로이관하며, 크기는표시하지않는다. TimesTen에서제공되는세가지 (hash, range, bitmap) 인덱스중에서 hash range 인덱스는 Altibase의 B-tree index로변환되어생성되며, bitmap 인덱스는마이그레이션을지원하지않는다. 또한인덱스컬럼에 primary key나 unique 제약이있을경우, 해당 56 Migration Center User's Manual
인덱스는 Altibase 에서생성할수없기 때문에마이그레이션이실패한다. CUBRID의 Reverse index와 Prefix length index는 Altibase에서지원하지않는다. Reverse index는인덱스생성시키값을역으로넣는방식으로, Altibase 마이그레이션에서지원하지않는다. Prefix length index는키값의일정부분만을인덱싱하는기법으로, 마이그레이션시 Altibase의일반인덱스로대체된다. Sequence O O Queue 부분지원 X 원본데이터베이스로 Altibase만지원 Private Synonym 부분지원 X Procedure 부분지원 X 원본데이터베이스로 Oracle과 TimesTen 11.2, Altibase만지원 Function 부분지원 X 원본데이터베이스로 Oracle과 TimesTen 11.2, Altibase만지원 Package 부분지원 X 원본데이터베이스로 Oracle과 TimesTen 11.2, Altibase만지원 View 부분지원 X 원본데이터베이스로 Oracle과 TimesTen, Altibase만지원 Materialized View 부분지원 X 원본데이터베이스로 Oracle과 TimesTen, Altibase만지원 Trigger 부분지원 X 원본데이터베이스로 Oracle과 TimesTen 11.2, Altibase만지원 B. 부록 : 마이그레이션가능한데이터베이스객체 57
Altibase to Oracle Table 데이터베이스 객체유형 User 모드에서 마이그레이션 가능여부? 모드에서마이그레이션가능 비고 여부? Table O O Primary Key 제약 O O Unique 제약 O O Check 제약 O O Foreign Key 제약 O O Index O O Sequence O O Queue X X 변환가능한객체가없는관계로, build 단계에서자동으로제외된다. Private Synonym 부분지원 X Procedure 부분지원 X 별도의변환작업없이원본 DDL 그대로수행된다. Function 부분지원 X 별도의변환작업없이원본 DDL 그대로수행된다. Package 부분지원 X 별도의변환작업없이원본 DDL 그대로수행된다. View 부분지원 X 별도의변환작업없이원본 DDL 그대로수행된다. Materialized View 부분지원 X 별도의변환작업없이원본 DDL 그대로수행된다. 참고로 migration을위해서는베이스테이블에 primary key가있어야한다. Trigger 부분지원 X 별도의변환작업없이원본 DDL 그대로수행된다. 58 Migration Center User's Manual
C. 부록 : 데이터타입맵핑 이기종데이터베이스들간의데이터타입을맵핑하기위한 Migration Center 정책은 " 데이터손실을최소화하라 " 이다. 그러나데이터가손실되거나손상되더라도데이터가맵핑되는방식을사용자가정의하길원하는상황이발생할수도있다. 이런요구를충족시키기위해 Migration Center 는데이터타입맵핑테이블을편집하는방법도제공한다. 이부록은기존프로젝트에대해기본데이터타입맵핑을확인하고커스터마이징하는방법에대해설명한다. 마지막으로데이터타입기본맵핑테이블을제공한다. 데이터타입맵핑조작 기본데이터타입맵핑테이블 C. 부록 : 데이터타입맵핑 59
데이터타입맵핑조작 사용자는기본데이터타입맵핑을확인하고, 아래의방법을사용하여데이터가맵핑되는방식을수정할수있다 : 1. 프로젝트에대해조정단계를수행하라. 2. 데이터타입맵핑단계에서, 조작할데이터타입을선택한다음 "Change" 버튼을클릭하라. 3. 적절한새로운데이터타입을지정하고 precision 및또는 scale 값을설정하라. 60 Migration Center User's Manual
기본데이터타입맵핑테이블 Oracle 데이터베이스 to Altibase 인덱스 소스 대상 특이사항 1 CHAR CHAR 2 NCHAR NCHAR 원본및대상데이터베이스의 NCHAR 칼럼의명시적인크기는같다 ( 예. NCHAR(10) -> NCHAR(10)). 그러나, 오라클 JDBC 드라이버에서는 NCHAR 칼럼의크기가사용되는바이트의개수로정의되는반면, Altibase의 JDBC 드라이버에서는 NCHAR 칼럼의크기가저장되는문자의개수로정의된다. 이는 Altibase에서생성되는 NCHAR 칼럼이필요에따라오라클보다 2 배또는 3 배정도클것이라는의미이므로, 이런점을유의하도록한다. 3 VARCHAR2 VARCHAR 오라클의 VARCHAR2 최대크기는 32,767 바이트로 Altibase의 VARCHAR 최대크기 32,000 바이트보다크기때문에데이터손실이발생할수있다. 4 NVARCHAR2 NVARCHAR NCHAR와같은이유로, 칼럼크기가서로다르다. 또한오라클의 NVARCHAR2 최대크기는 32,767 바이트로 Altibase의 NVARCHAR 최대크기 32,000 바이트보다크기때문에데이터손실이발생할수있다. 5 LONG CLOB 6 NUMBER NUMERIC 오라클에서 precision과 scale 없이정의된 NUMBER 타입칼럼은 Altibase에서도동일하게 precision과 scale이없는 NUMBER 타입으로변환된다. * 참고 : 오라클과 Altibase 모두 precision과 C. 부록 : 데이터타입맵핑 61
scale 없이 NUMBER 타입으로칼럼을 정의하면데이터베이스내부적으로 FLOAT 타입으로다루어진다. 7 FLOAT FLOAT 8 BINARY FLOAT 9 BINARY DOUBLE FLOAT VARCHAR(310) Altibase 에는오라클 BINARY DOUBLE 타입과호환되는데이터타입이없으므로데이터손실을막기위해문자형으로저장된다. 10 DATE DATE 11 TIMESTAMP DATE 스케일의차이로인해서소량의데이터손실이발생할수있다. 오라클에서는타임스탬프값의스케일이나노초 (9 자리수 ) 인반면, Altibase에서는타임스탬프값의스케일이마이크로초 (6 자리수 ) 이다. 12 RAW BLOB 13 LONG RAW BLOB 14 BLOB BLOB 15 CLOB CLOB 16 NCLOB NVARCHAR(10 666) Altibase에는오라클 NCLOB 타입과호환가능한데이터타입이없으므로, 최대크기의 NVARCHAR 타입으로변환된다. 실제데이터크기가 NVARCHAR 최대크기를초과하는경우, 데이터를마이그레이션하는동안데이터손실이발생할수도있다. 17 ROWID VARCHAR(18) MS SQL Server to Altibase 인덱스 소스 대상 특이사항 1 BIGINT BIGINT 2 DECIMAL NUMERIC 3 INT INTEGER 4 NUMERIC NUMERIC 62 Migration Center User's Manual
5 SMALLINT SMALLINT 6 MONEY FLOAT 7 TINYINT SMALLINT 8 SMALLINTMO NEY FLOAT 9 BIT CHAR(1) 10 FLOAT VARCHAR(310) Altibase에는 SQL Server FLOAT 타입과호환가능한데이터타입이없으므로, 데이터손실을막기위해 VARCHAR(310) 으로맵핑된다. 11 REAL FLOAT 12 DATE DATE 13 DATETIME2 DATE 스케일의차이로인해서시간의 fraction 손실이발생할수있다. SQL Server의 DATETIME2 타입스케일이나노초의 100 배 (7 자리수 ) 인반면, Altibase에서는 DATE 타입의스케일이마이크로초 (6 자리수 ) 이다. 14 DATETIME DATE 15 SMALLDATET IME DATE 16 CHAR CHAR 17 TEXT CLOB 18 VARCHAR VARCHAR 19 VARCHAR (MAX) CLOB 20 NVARCHAR NVARCHAR 21 NVARCHAR (MAX) NVARCHAR (10666) Altibase에는 SQL Server NTEXT 타입과호환가능한데이터타입이없다. 최대크기의 NVARCHAR 타입이사용된다. 실제데이터길이가최대 NVARCHAR 크기를초과하는경우, 데이터를마이그레이션하는동안데이터손실이발생할수도있다. 22 BINARY BYTE 23 IMAGE BLOB C. 부록 : 데이터타입맵핑 63
24 VARBINARY BLOB 25 ALLIDENTITY NUMERIC(38, 0) 26 UNIQUEIDEN TIFIER VARCHAR(40) Altibase에는 SQL Server UNIQUEIDENTIFIER 타입과호환가능한데이터타입이없으므로, 데이터손실을방지하기위해 VARCHAR 타입이사용된다. 27 SYSNAME NVARCHAR (128) MySQL to Altibase 인덱스소스대상특이사항 1 TINYINT SMALLINT 2 TINYINT UNSIGNED SMALLINT 3 SMALLINT INTEGER 4 SMALLINT UNSIGNED INTEGER 5 MEDIUMINT INTEGER 6 MEDIUMINT UNSIGNED INTEGER 7 INT (INTEGER) INTEGER 주의 : Altibase의 INT 타입의최솟값 (- 2,147,483,647) 은 MySQL INT 타입의최솟값 (-2,147,483,648) 보다 크다. 8 INT UNSIGNED BIGINT 9 BIGINT BIGINT 주의 : Altibase의 BIGINT 타입의최솟값 (- 9,223,372,036,854,775,807) 은 MySQL BIGINT 타입의최솟값 (- 9,223,372,036,854,775,808) 보다크다. 10 BIGINT UNSIGNED NUMERIC(20,0) Altibase에는 MySQL BIGINT UNSIGNED 타입과호환가능한 64 Migration Center User's Manual
11 DECIMAL (NUMERIC) VARCHAR(70) 데이터타입이없으므로, 데이터손실을막기위해 NUMERIC 타입으로맵핑된다 Altibase에는 MySQL DECIMAL 타입과호환가능한데이터타입이없으므로, 데이터손실을막기위해 VARCHAR 타입으로맵핑된다. 12 FLOAT FLOAT 13 DOUBLE VARCHAR(310) Altibase에는 MySQL DOUBLE 타입과호환가능한데이터타입이없으므로, 데이터손실을막기위해 VARCHAR 타입으로맵핑된다. 14 BIT VARBIT 15 DATETIME DATE 시각부분이 0 으로설정된다. 16 DATE DATE 17 TIMESTAMP DATE TIMEZONE 제외 18 CHAR CHAR 19 VARCHAR CLOB VARCHAR 타입의최대크기는 MySQL(65,536) 이 Altibase(32,000) 보다크기때문에, 데이터손실을막기위해 CLOB 타입으로맵핑된다. 20 CHAR with National Character 21 VARCHAR with National Character NCHAR NVARCHAR 22 BINARY BYTE 23 VARBINARY BLOB 24 TINYBLOB BLOB 25 MEDIUMBLOB BLOB 26 BLOB BLOB 27 LONGBLOB BLOB 28 TINYTEXT VARCHAR(255) 29 TEXT CLOB C. 부록 : 데이터타입맵핑 65
30 MEDIUMTEXT CLOB 31 LONGTEXT CLOB 32 ENUM VARCHAR(10666) Altibase에는 MySQL ENUM 타입과호환가능한데이터타입이없으므로, 데이터손실을막기위해 VARCHAR 타입으로맵핑된다. 33 SET VARCHAR(10666) Altibase에는 MySQL SET 타입과호환가능한데이터타입이없으므로, 데이터손실을막기위해 VARCHAR 타입으로맵핑된다. Informix 11.5 to Altibase 인덱스 소스 대상 특이사항 1 BIGINT BIGINT 2 INT8 BIGINT 3 INT INTEGER 4 SMALLINT SMALLINT 5 BIGSERIAL BIGINT 6 SERIAL8 BIGINT 7 SERIAL INTEGER 8 FLOAT DOUBLE 9 REAL REAL 10 SMALLFLOAT REAL 11 MONEY NUMERIC 12 DECIMAL_FLOAT FLOAT 13 DATE DATE 14 DATETIME DATE 15 BOOLEAN CHAR(1) 16 CHAR CHAR CHAR 데이터타입의최대크기는 Informix(32,767) 가 Altibase(32,000) 보다 크기 때문에 데이터 손실이 발생할 수 있음을 염두에두어야한다. 17 NCHAR NCHAR NCHAR 데이터타입의최대크기는 66 Migration Center User's Manual
Informix(32,767) 가 Altibase(32,000) 보다 크기 때문에 데이터 손실이 발생할 수 있음을 염두에두어야한다. 18 VARCHAR VARCHAR 19 NVARCHAR NVARCHAR 20 LVARCHAR VARCHAR Informix의 LVARCHAR 데이터타입의 최대 크기가 32,767 으로 Altibase(32,000) 보다 크기 때문에 데이터 손실이 발생할 수 있음을 염두에두어야한다. 21 TEXT CLOB 22 CLOB CLOB CLOB 데이터타입의최대크기는 Informix(4GB) 가 Altibase(2GB) 보다 크기때문에데이터손실이발생할수 있음을염두에두어야한다. 23 BYTE BLOB 24 BLOB BLOB BLOB 데이터타입의최대크기는 Informix(4GB) 가 Altibase(2GB) 보다 크기때문에데이터손실이발생할수 있음을염두에두어야한다. 25 INTERVAL FLOAT TimesTen to Altibase 인덱스소스대상특이사항 1 BINARY BLOB 2 BINARY_DOUBL E VARCHAR(310) 3 BINARY_FLOAT FLOAT 4 BLOB BLOB 5 CHAR CHAR 6 CLOB CLOB 7 DATE DATE 8 NCHAR NCHAR C. 부록 : 데이터타입맵핑 67
9 NCLOB NVARCHAR(10 666) 10 NUMBER NUMBER 11 NVARCHAR2 NVARCHAR TimesTen의 VARCHAR2 최대크기는 2,097,152 바이트로 Altibase의 VARCHAR 최대크기 32,000 바이트보다크기때문에데이터손실이발생할수있다. 12 ROWID VARCHAR(18) 13 TIME DATE 14 TIMESTAMP DATE TimesTen의 TIMESTAMP 최대스케일이나노초 (9 자릿수 ) 로 Altibase의 DATE 최대스케일마이크로초 (6 자릿수 ) 보다크기때문에데이터손실이발생할수있다. 15 TT_BIGINT BIGINT TimesTen의 TT_BIGINT 최소크기는 -9,223,372,036,854,775,808 로 Altibase의 BIGINT 최소크기 - 9,223,372,036,854,775,807 보다작기때문에데이터손실이발생할수있다. 16 TT_CHAR CHAR 17 TT_DATE DATE 18 TT_DECIMAL NUMBER TimesTen의 TT_DECIMAL 최대크기는 precision(40) 으로 Altibase의 NUMBER 최대크기 precision(38) 보다크기때문에데이터손실이발생할수있다. 19 TT_INTEGER INTEGER TimesTen의 TT_INTEGER 최소크기는 -2,147,483,648 로 Altibase의 INTEGER 최소크기 - 2,147,483,647 보다작기때문에데이터손실이발생할수있다. 20 TT_NCHAR NCHAR 21 TT_NVARCHAR NVARCHAR TimesTen의 TT_NVARCHAR 최대크기 (2,097,152 바이트 ) 는 Altibase의 NVARCHAR 최대크기 (32,000 68 Migration Center User's Manual
바이트 ) 보다크기때문에데이터손실이발생할수있다. 22 TT_SMALLINT SMALLINT TimesTen의 TT_SMALLINT 최소크기 (-32,768) 는 Altibase의 SMALLINT 최소크기 (-32,767) 보다작기때문에데이터손실이발생할수있다. 23 TT_TIMESTAMP DATE TimesTen의 TT_TIMESTAMP 최대스케일이나노초 (7 자릿수 ) 로 Altibase의 DATE 최대스케일마이크로초 (6 자릿수 ) 보다크기때문에데이터손실이발생할수있다. 24 TT_TINYINT SMALLINT 25 TT_VARCHAR VARCHAR TimesTen의 TT_VARCHAR 최대크기 (4,194,304 바이트 ) 는 Altibase의 VARCHAR 최대크기 (32,000 바이트 ) 보다크기때문에데이터손실이발생할수있다. 26 VARBINARY BLOB 27 VARCHAR2 VARCHAR TimesTen의 VARCHAR2 최대크기 ( 4,194,304 바이트 ) 는 Altibase의 VARCHAR 최대크기 (32,000 바이트 ) 보다크기때문에데이터손실이발생할수있다. CUBRID to Altibase 인덱스 소스 대상 특이사항 1 SHORT SMALLINT CUBRID의 SHORT 최솟값 (-32,768) 이 Altibase의 SMALLINT 최솟값 (- 32,767) 보다작다 2 INTEGER INTEGER CUBRID의최솟값 (-2,147,483,648) 이 Altibase의최솟값 (-2,147,483,647) 보다작다. 3 BIGINT BIGINT CUBRID의최솟값 (- 9,223,372,036,854,775,808) 이 Altibase의최솟값 (- C. 부록 : 데이터타입맵핑 69
9,223,372,036,854,775,807) 보다작다. 4 NUMERIC NUMERIC 5 FLOAT REAL 6 DOUBLE DOUBLE 7 MONETARY DOUBLE 8 DATE DATE 9 TIME DATE 10 TIMESTAMP DATE 11 DATETIME DATE 12 CHAR CHAR CUBRID의 CHAR 타입최대크기가 1,073,741,823 바이트로 Altibase의 CHAR 타입최대크기 32,000 바이트보다크기때문에데이터손실이발생할수있다. 13 VARCHAR VARCHAR CUBRID의 VARCHAR 타입최대크기가 1,073,741,823 바이트로 Altibase의 VARCHAR 타입최대크기 32,000 바이트보다크기때문에데이터손실이발생할수있다. 14 NCHAR NCHAR CUBRID의 NCHAR 타입최대크기가 1,073,741,823 바이트로 Altibase의 NCHAR 타입최대크기 16,000 바이트보다크기때문에데이터손실이발생할수있다. 15 VARCHAR NVARCHAR CUBRID의 VARCHAR 타입최대크기가 1,073,741,823 바이트로 Altibase의 NVARCHAR 타입최대크기 16,000 바이트보다크기때문에데이터손실이발생할수있다. 16 STRING VARCHAR CUBRID의 VARCHAR 타입과동일한데이터타입으로 Altibase의 VARCHAR 타입최대크기 32,000 바이트보다크기때문에데이터손실이발생할수있다. 17 BIT BLOB 18 VARBIT BLOB 70 Migration Center User's Manual
19 BLOB BLOB CUBRID의 BLOB 최대길이는외부저장소에서생성가능한파일크기로 Altibase의 BLOB 타입최대크기 2GB와차이가있으므로, 데이터손실이발생할수있다. 20 CLOB CLOB CUBRID의 CLOB 최대길이는외부저장소에서생성가능한파일크기로 Altibase의 CLOB 타입최대크기 2GB와차이가있으므로, 데이터손실이발생할수있다. 21 ENUM VARCHAR(3200 ) 22 COLLECTION VARCHAR(3200 ) Altibase가지원하지않는데이터타입이다. CUBRID의열거형문자열상수들은 Altibase의 VARCHAR 타입으로임의변경하여마이그레이션을수행한다. Altibase가지원하지않는데이터타입이다. CUBRID의 COLLECTION 타입은 Altibase의 VARCHAR 타입으로임의변경하여마이그레이션을수행한다. Altibase to Oracle 데이터베이스 인덱스 소스 대상 특이사항 1 CHAR CHAR Altibase CHAR의최대크기는 32000 바이트, Oracle CHAR의최대크기는 2000 bytes 또는 characters이므로데이터손실이발생할수있다. 2 NCHAR NCHAR Altibase NCHAR의최대크기는 32000 바이트, Oracle NCHAR의최대크기는 2000 bytes이므로데이터손실이발생할수있다. 3 VARCHAR VARCHAR2 Altibase VARCHAR의최대크기는 32000 바이트, Oracle VARCHAR2 의최대크기는 4000 bytes 또는 characters이므로데이터손실이발생할 C. 부록 : 데이터타입맵핑 71
수있다. 4 VARCHAR NVARCHAR2 Altibase NVARCHAR의최대크기는 32000 바이트, Oracle NVARCHAR의최대크기는 4000 bytes이므로데이터손실이발생할수있다. 5 SMALLINT NUMBER 6 INTEGER NUMBER 7 BIGINT NUMBER 8 REAL BINARY_FLOAT 9 DOUBLE BINARY_DOUBLE 10 FLOAT FLOAT 11 NUMERIC NUMBER 12 DATE TIMESTAMP 13 BIT CHAR CHAR의최대크기는 2000 바이트, BIT는 64000(8000 바이트 ) 이므로데이터손실이발생할수있다. 14 VARBIT VARCHAR2 VARCHAR2 의최대크기는 4000 바이트, VARBIT는 64000(8000 바이트 ) 이므로데이터손실이발생할수있다. 15 BYTE RAW BYTE의최대크기는 32000, RAW의최대크기는 2000 바이트이므로데이터손실이발생할수있다. 16 VARBYTE RAW VARBYTE의최대크기는 32000, RAW의최대크기는 2000 바이트이므로데이터손실이발생할수있다. 17 NIBBLE RAW 18 BLOB BLOB 19 CLOB CLOB 72 Migration Center User's Manual
D. 부록 : 기본값맵핑 Altibase 의테이블칼럼의기본값은원본데이터베이스의기본값과대부분호환된다. 하지만이기종데이터베이스들간의기본값정책이일부상이하여, Migration Center 가이러한몇가지예외상황에대해원본데이터베이스의값을 Altibase 정책에맞춰변환한다. 이부록은 Migration Center 가 Altibase 에맞춰원본데이터베이스의기본값을변환하는기본값맵핑테이블을제공한다. D. 부록 : 기본값맵핑 73
기본값맵핑테이블 Migration Center 는데이터를이전하기전에마이그레이션대상데이터베이스에원본데이터베이스의테이블과동일한테이블을생성한다. 이를위해원본데이터베이스의테이블속성과일치하는테이블생성구문을먼저만든다. 이때 Migration Center 는원본테이블의칼럼기본값과동일하게대상테이블의칼럼에기본값을설정하려한다. 이절의맵핑테이블에나열된기본값은 Migration Center 가 CREATE TABLE 문생성시에표에따라변환하여지정한다. 그외의기본값은변경없이그대로 CREATE TABLE 문에지정된다. * 주의 : 변경없이그대로사용되는기본값중에는원본과대상데이터베이스간에호환이되지않는것이있을수있다. 필요하다면나중에사용자가 Reconcile 단계의 DDL Editing 창에서직접 CREATE TABLE 문의기본값을수정해야한다. 기본값맵핑정책 대다수의원본데이터베이스기본값은변경없이대상데이터베이스와호환된다. 하지만아래의경우에는 Migration Center 가원본데이터베이스의기본값을대상데이터베이스정책에맞춰변환한다 문자형데이터타입의기본값이길이가 0 인문자열 ('') 인경우 : Altibase 는길이가 0 인문자열을 NULL 로인식하므로, 기본값을지정하지않는다. 날짜형데이터타입의기본값이문자열표현인경우 : 원본데이터베이스별로날짜형을위한기본포맷이다르므로, Migration Center 는테이블생성구문에기본값대신에 DEFAULT 키워드가포함된주석을지정한다. 필요하다면나중에사용자가주석을참고하여직접기본값을설정해야한다. 단원본데이터베이스가 MySQL, TimesTen, 또는 CUBRID 일때, 아래의표처럼 Migration Center 가기본값을 74 Migration Center User's Manual
자동으로변환한다. 기본값에함수가사용된경우 : 아래표에열거된함수가원본데이터베이스의기본값으로단독사용된경우에한해서표와같이변환된다. 그외의함수또는복잡한형태의표현식일경우에는변경없이그대로변환된다. 필요하다면나중에사용자가직접변경해야한다. Oracle 데이터베이스 to Altibase Expression Type 원본 ( 오라클 ) 대상 (Altibase) 특이사항 문자형을위한문자열날짜형을위한문자열 '' '97/04/21' /* DEFAULT '97/04/21' */ 함수 DBTIMEZONE DB_TIMEZONE() Altibase 6.3.1.0.0 이상에서지원됨 SYS_GUID() SYS_GUID_STR() Altibase 6.3.1.0.0 이상에서지원됨 UID USER USER_ID() USER_NAME() 아래는변환예제이다. 오라클의테이블생성 SQL문 CREATE TABLE testtbl_4_defval ( c1 INT DEFAULT 123, c2 VARCHAR(50) DEFAULT 'test', c3 INT DEFAULT NULL, c4 CHAR(10) DEFAULT '', c5 INT DEFAULT SQRT(144) + 72, c6 DATE DEFAULT '97/04/21', c7 DATE DEFAULT TO_DATE('1999-12-01', 'YYYY-MM-DD'), c8 VARCHAR(100) DEFAULT DBTIMEZONE, c9 VARCHAR(100) DEFAULT SYS_GUID(), c10 VARCHAR(100) DEFAULT UID, c11 VARCHAR(100) DEFAULT USER Altibase의테이블생성 SQL문 CREATE TABLE TESTTBL_4_DEFVAL ( C1 NUMBER (38, 0) DEFAULT 123, C2 VARCHAR (50) DEFAULT 'test', C3 NUMBER (38, 0), C4 CHAR (10), C5 NUMBER (38, 0) DEFAULT SQRT(144) + 72, C6 DATE /* DEFAULT '97/04/21' */, C7 DATE DEFAULT TO_DATE('1999-12-01', 'YYYY-MM-DD'), C8 VARCHAR (100) DEFAULT DB_TIMEZONE(), C9 VARCHAR (100) DEFAULT SYS_GUID_STR(), C10 VARCHAR (100) DEFAULT D. 부록 : 기본값맵핑 75
); USER_ID(), C11 VARCHAR (100) USER_NAME() ); DEFAULT MS SQL Server to Altibase Expression Type 원본 (MS SQL Server) 대상 (Altibase) 특이 사항 문자형을위한문자열날짜형을위한문자열 '' 'December 5, 1985' /* DEFAULT 'December 5, 1985' */ 함수 GETDATE() SYSDATE CURRENT_TIMESTAMP LEN( str_expression ) LENGTH( str_expression ) 아래는변환예제이다. MS SQL Server의테이블생성 SQL문 CREATE TABLE testtbl_4_defval ( c1 BIT DEFAULT 0, c2 INT DEFAULT 2 + 3, c3 VARCHAR(50) DEFAULT 'test', c4 INT DEFAULT NULL, c5 NCHAR(10) DEFAULT '', c6 FLOAT DEFAULT sqrt(12 * 12), c7 DATE DEFAULT 'December 5, 1985', c8 DATE DEFAULT getdate(), c9 DATETIME DEFAULT CURRENT_TIMESTAMP, c10 INT DEFAULT len('test'), ); Altibase의테이블생성 SQL문 CREATE TABLE TESTTBL_4_DEFVAL ( C1 CHAR (1) DEFAULT (0), C2 INTEGER DEFAULT (2)+(3), C3 VARCHAR (50) DEFAULT 'test', C4 INTEGER, C5 NCHAR (10), C6 VARCHAR (310) DEFAULT sqrt((12)*(12)), C7 DATE /* DEFAULT 'December 5, 1985' */, C8 DATE DEFAULT SYSDATE, C9 DATE DEFAULT SYSDATE, C10 INTEGER DEFAULT LENGTH('test') ); MySQL to Altibase Expression Type 원본 (MySQL) 대상 (Altibase) 특이사항 문자형을위한 문자열 '' 76 Migration Center User's Manual
날짜형을위한 문자열 '1989-04-28' '1989-04-28 12:31:29' TO_DATE('1989-04-28', 'YYYY-MM-DD') TO_DATE('1989-04-28 12:31:29', 'YYYY-MM-DD HH:MI:SS') '0000-00-00 00:00:00' /* DEFAULT '0000-00-00 00:00:00' */ MySQL은날짜형타입의기본값이지정되지않으면자동으로 '0000-00-00 00:00:00' 으로지정된다. 하지만이값은 Altibase의 DATE 타입에는입력이불가능한값이므로주석처리가된다. 함수 CURRENT_TI MESTAMP CURRENT_TI MESTAMP() NOW() LOCALTIME LOCALTIME() LOCALTIMES TAMP LOCALTIMES TAMP() SYSDATE * 참고 : MySQL 은테이블의첫칼럼의데이터타입이 TIMESTAMP 인경우, 사용자가기본값을지정하지않아도기본값으로 CURRENT_TIMESTAMP 이자동으로지정된다. 따라서, 이경우기본값이 SYSDATE 으로변환된다. 아래의예제를참고하라. 아래는변환예제이다. MySQL의테이블생성 SQL문 CREATE TABLE testtbl_4_defval ( c1 TIMESTAMP NOT NULL, c2 INT DEFAULT 123, c3 VARCHAR(50) DEFAULT 'test', Altibase의테이블생성 SQL문 CREATE TABLE TESTTBL_4_DEFVAL ( C1 DATE DEFAULT SYSDATE NOT NULL, C2 INTEGER DEFAULT 123, D. 부록 : 기본값맵핑 77
c4 INT DEFAULT NULL, c5 CHAR(10) DEFAULT '', c6 DATE DEFAULT '1989-04- 28', c7 DATETIME DEFAULT '1989-04-28 12:31:29', c8 TIMESTAMP DEFAULT '1989-04- 28 12:31:29' NOT NULL, c9 TIMESTAMP NOT NULL ); C3 CLOB DEFAULT 'test', C4 INTEGER, C5 CHAR (10), C6 DATE DEFAULT TO_DATE('1989-04-28', 'YYYY-MM-DD'), C7 DATE DEFAULT TO_DATE('1989-04-28 12:31:29', 'YYYY-MM-DD HH:MI:SS'), C8 DATE DEFAULT TO_DATE('1989-04-28 12:31:29', 'YYYY-MM-DD HH:MI:SS') NOT NULL, C9 DATE /* DEFAULT '0000-00-00 00:00:00' */ NOT NULL ); Informix 11.5 to Altibase Expression Type 원본 (Informix) 대상 (Altibase) 특이사항 문자형을위한문자열날짜형을위한문자열 '' '2007-03-06' /* DEFAULT '2007-03-06' */ 함수 CURRENT SYSDATE TODAY 아래는변환예제이다. Informix의테이블생성 SQL문 CREATE TABLE testtbl_4_defval ( c1 INTEGER DEFAULT 123, c2 BOOLEAN DEFAULT 't', c3 CHAR(100) DEFAULT 'test', c4 INTEGER DEFAULT null, c5 CHAR(10) DEFAULT '', c6 DATETIME YEAR TO DAY DEFAULT DATETIME(07-3-6) YEAR TO DAY, c7 DATETIME DAY TO HOUR DEFAULT CURRENT DAY TO HOUR, c8 DATE DEFAULT TODAY ); Altibase의테이블생성 SQL문 CREATE TABLE TESTTBL_4_DEFVAL ( C1 INTEGER DEFAULT 123, C2 CHAR (1) DEFAULT 't', C3 CHAR (100) DEFAULT 'test', C4 INTEGER, C5 CHAR (10), C6 DATE /* DEFAULT '2007-03-06' */, C7 DATE DEFAULT SYSDATE, C8 DATE DEFAULT SYSDATE ); TimesTen to Altibase Expression Type 원본 (TimesTen) 대상 (Altibase) 특이사항 날짜형을위한 문자열 '1989-04-28' TO_DATE('1989-04-28', 'YYYY-MM-DD') 78 Migration Center User's Manual
'1989-04-28 12:31:29' '12:31:29' TO_DATE('1989-04-28 12:31:29', 'YYYY-MM-DD HH:MI:SS') TO_DATE('12:31:29', 'HH:MI:SS') 함수 UID USER_ID USER USER_NAME 아래는변환예제이다. TimesTen의테이블생성 SQL문 CREATE TABLE testtbl_4_defval ( c1 INT DEFAULT 123, c2 VARCHAR2(50) DEFAULT 'test', c3 INT DEFAULT NULL, c4 DATE DEFAULT '1999-12-01', c5 TIMESTAMP DEFAULT '1999-12-01 11:30:21', c6 TIME DEFAULT '11:30:21', c7 VARCHAR(100) DEFAULT UID, c8 VARCHAR(100) DEFAULT USER ); Altibase의테이블생성 SQL문 CREATE TABLE TESTTBL_4_DEFVAL ( c1 INT DEFAULT 123, c2 VARCHAR2(50) DEFAULT 'test', c3 INT DEFAULT NULL, c4 DATE DEFAULT TO_DATE('1999-12-01', 'YYYY-MM-DD'), c5 TIMESTAMP DEFAULT TO_DATE('1999-12-01 11:30:21', 'YYYY-MM-DD HH:MI:SS), c6 TIME DEFAULT TO_DATE('11:30:21', 'HH:MI:SS'), c7 VARCHAR(100) DEFAULT UID, c8 VARCHAR(100) DEFAULT USER ); CUBRID to Altibase Expression Type 원본 (CUBRID) 대상 (Altibase) 특이사항 함수 USER USER_ID() CURRENT_USER USER_NAME() 아래는변환예제이다. CUBRID의테이블생성 SQL문 CREATE TABLE testtbl_4_defval ( c1 INTEGER DEFAULT 123, c2 CHARACTER VARYING (50) DEFAULT 'test', c3 INTEGER, c4 CHARACTER VARYING (100) DEFAULT 'USER', c5 CHARACTER VARYING (100) DEFAULT 'CURRENT_USER', c6 CHARACTER VARYING(100) DEFAULT ' ', c7 DATE DEFAULT DATE'2008-10-31', c8 TIME DEFAULT TIME'1:15', Altibase의테이블생성 SQL문 CREATE TABLE TESTTBL_4_DEFVAL ( C1 INTEGER DEFAULT 123, C2 VARCHAR (50) DEFAULT 'test', C3 INTEGER, C4 VARCHAR (100) DEFAULT USER_ID(), C5 VARCHAR (100) DEFAULT USER_ID(), C6 VARCHAR (100) DEFAULT ' ', C7 DATE /* DEFAULT '10/31/2008' */, C8 DATE /* DEFAULT '01:15:00 AM' */, D. 부록 : 기본값맵핑 79
c9 TIMESTAMP DEFAULT TIMESTAMP'10/31', c10 DATETIME DEFAULT DATETIME'01:15:45 PM 2008-10-31' ); C9 DATE /* DEFAULT '12:00:00 AM 10/31/2016' */, C10 DATE /* DEFAULT '01:15:45.000 PM 10/31/2008' */ ); Altibase to Oracle Expression Type 원본 (Altibase) 대상 (Oracle) 특이사항 문자형을위한문자열 '' 함수 DB_TIMEZONE() DBTIMEZONE Altibase 6.3.1.0.0 이상에서지원됨 SYS_GUID_STR() SYS_GUID() Altibase 6.3.1.0.0 이상에서지원됨 USER_ID() USER_NAME() UID USER 아래는변환예제이다. Altibase의테이블생성 SQL문 CREATE TABLE testtbl_4_defval ( c1 INT DEFAULT 123, c2 VARCHAR(50) DEFAULT 'test', c3 INT DEFAULT NULL, c4 CHAR(10) DEFAULT '', c5 INT DEFAULT SQRT(144) + 72, c6 DATE DEFAULT TO_DATE('1999-12-01 PM', 'YYYY-MM-DD AM'), c7 VARCHAR(100) DEFAULT DB_TIMEZONE(), c8 VARCHAR(100) DEFAULT SYS_GUID_STR(), c9 VARCHAR(100) DEFAULT USER_ID(), c10 VARCHAR(100) DEFAULT USER_NAME() ); Oracle의테이블생성 SQL문 CREATE TABLE TESTTBL_4_DEFVAL ( C1 NUMBER (10) DEFAULT 123,C2 VARCHAR2 (50) DEFAULT 'test',c3 NUMBER (10),C4 CHAR (10),C5 NUMBER (10) DEFAULT SQRT(144) + 72,C6 TIMESTAMP DEFAULT TO_DATE('1999-12-01 PM', 'YYYY-MM- DD AM'),C7 VARCHAR2 (100) DEFAULT DBTIMEZONE,C8 VARCHAR2 (100) DEFAULT SYS_GUID(),C9 VARCHAR2 (100) DEFAULT UID,C10 VARCHAR2 (100) DEFAULT USER 80 Migration Center User's Manual
); D. 부록 : 기본값맵핑 81
E. 부록 : PSM 변환기규칙 목록 Migration Center 는 Oracle 또는 TimesTen 11.2 에서 Altibase 로마이그레이션을할때, PSM 변환기가 PSM 타입의데이터베이스객체를생성할수있는 DDL SQL 문장을제공한다. PSM 변환기에는 DDL SQL 문장을변환하는규칙이있으며, 그규칙은아래의세가지종류로분류된다 : CONVERTED: 변환가능 REMOVED: 변환불가, 그러나제거가능 TODO: 변환불가및제거불가 TODO 규칙이 PSM 객체에적용된다면, 해당객체는 To-Do 리스트창에표시될것이다. 그렇지않다면, Done 리스트창에표시될것이다. 각각의규칙에 " 버전범위 " 항목이기술된경우, 해당규칙은기술된 Altibase 버전에만적용됨을의미한다. " 버전범위 " 항목이생략된규칙은모든 Altibase 버전에적용됨을의미한다. 복수의구문을변환할때에는각각의 SQL 구문마지막에 '/' 를표기하여구분해야한다. E. 부록 : PSM 변환기규칙목록 83
뷰변환규칙 RULE-11001 타입 : REMOVED 설명 : 'WITH CHECK OPTION' 이제거되었다. CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1 WITH CHECK OPTION; CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1 /* WITH CHECK OPTION */ /* [REMOVED] RULE-11001 : 'WITH CHECK OPTION' is removed */; RULE-11002 타입 : REMOVED 설명 : 별칭의제약조건이제거되었다. CREATE OR REPLACE VIEW v1 (a1 UNIQUE ) AS SELECT c1 FROM t1; CREATE OR REPLACE VIEW v1 (a1 /* UNIQUE */ /* [REMOVED] RULE-11002 : Inline constraints are removed */ ) AS SELECT c1 FROM t1; RULE-11003 설명 : 뷰레벨제약조건은수동으로변환해야한다. CREATE OR REPLACE VIEW v1 84 Migration Center User's Manual
(c1, CONSTRAINT v1_uk UNIQUE(c1) ) AS SELECT c1 FROM t1; CREATE OR REPLACE VIEW v1 (c1, CONSTRAINT v1_uk UNIQUE(c1) /* [TODO] RULE-11003 : Out of line constraint must be converted manually */) AS SELECT c1 FROM t1; RULE-11004 타입 : REMOVED 설명 : BEQUEATH 절이제거되었다. CREATE OR REPLACE VIEW v1 BEQUEATH CURRENT_USER AS SELECT * FROM t1; CREATE OR REPLACE VIEW v1 /* BEQUEATH CURRENT_USER */ /* [REMOVED] RULE-11004 : BEQUEATH clause is removed */ AS SELECT * FROM t1; RULE-11005 설명 : XML 타입뷰절은수동으로변환해야한다. CREATE OR REPLACE VIEW v1 OF XMLTYPE WITH OBJECT ID DEFAULT AS SELECT * FROM t1; CREATE OR REPLACE VIEW v1 OF XMLTYPE WITH OBJECT ID DEFAULT /* [TODO] RULE-11005 : XMLType view should be manually converted */ AS SELECT * FROM t1; RULE-11006 설명 : 객체타입뷰절은수동으로변환해야한다. E. 부록 : PSM 변환기규칙목록 85
CREATE OR REPLACE VIEW v1_1 OF type1 UNDER v1 AS SELECT * FROM t1; CREATE OR REPLACE VIEW v1_1 OF type1 UNDER v1 /* [TODO] RULE-11006 : An object view must be converted manually */ AS SELECT * FROM t1; RULE-11007 타입 : REMOVED 설명 : VISIBLE 또는 INVISIBLE 이제거되었다. CREATE OR REPLACE VIEW v1 (c1, c2 INVISIBLE) AS SELECT * FROM t1; CREATE OR REPLACE VIEW v1 (c1, c2 /* INVISIBLE */ /* [REMOVED] RULE-11007 : VISIBLE or INVISIBLE is removed */) AS SELECT * FROM t1; 86 Migration Center User's Manual