헤르메스 문서

Similar documents
ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete

목 차

ALTIBASE 사용자가이드 Templete

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

MS-SQL SERVER 대비 기능

13주-14주proc.PDF

강의 개요

Microsoft Word - 04_EXCEPTION.doc

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

DBMS & SQL Server Installation Database Laboratory

ALTIBASE HDB Patch Notes

Tablespace On-Offline 테이블스페이스 온라인/오프라인

untitled

Document Control Change Reason Date Author Change Reference JHJEONG Created Reviews Date Name (Position) Distribution Name Locatio

PowerPoint Presentation

Oracle Database 10g: Self-Managing Database DB TSC

10.ppt

PowerPoint 프레젠테이션

最即時的Sybase ASE Server資料庫診斷工具


ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

Jerry Held

MySQL-.. 1

歯sql_tuning2

1217 WebTrafMon II

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER

SQL Tuning Business Development DB

Microsoft PowerPoint - 10Àå.ppt

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

Simplify your Job Automatic Storage Management DB TSC

FlashBackt.ppt

설계란 무엇인가?

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

문서 템플릿

62

ALTIBASE HDB Patch Notes

세미나(장애와복구-수강생용).ppt

슬라이드 1

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

Microsoft Word - SQL튜닝_실습교재_.doc

untitled

Altibase Starting User's Manual

歯PLSQL10.PDF

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

쉽게 풀어쓴 C 프로그래밊

슬라이드 1

오라클 데이터베이스 10g 핵심 요약 노트

PowerPoint Presentation

PowerPoint Presentation

90

오라클 명령어 와 SQL 정리

PowerPoint 프레젠테이션

Microsoft PowerPoint - e pptx

PowerPoint 프레젠테이션

USER GUIDE

<4D F736F F D203033C6C4C6BCBCC72DB8AEBFC0B1D7B9E6B9FD2E646F63>

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

TITLE

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft PowerPoint - ch07 - 포인터 pm0415

초보자를 위한 분산 캐시 활용 전략

Microsoft Word - 10g RAC on Win2k.doc

Microsoft PowerPoint - Tech-iSeminar_Managing_Tablespace.ppt

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2

Orcad Capture 9.x

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

6장. SQL

FileMaker 15 ODBC 및 JDBC 설명서

Microsoft PowerPoint - Java7.pptx

Remote UI Guide

C# Programming Guide - Types

The Self-Managing Database : Automatic Health Monitoring and Alerting

Microsoft Word - PLSQL.doc

Jerry Held

단계

제목 레이아웃

PowerPoint 프레젠테이션

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

ESQL/C

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

ETL_project_best_practice1.ppt

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

금오공대 컴퓨터공학전공 강의자료

thesis

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

Windows 8에서 BioStar 1 설치하기

EEAP - Proposal Template

제목을 입력하세요.

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

슬라이드 제목 없음

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx

Microsoft PowerPoint - chap03-변수와데이터형.pptx

´ÙÁß Row °á°ú¸¦ ´ÜÀÏÇàÀ¸·Î Äĸ¶·Î ºÐ¸®ÇØ Ãâ·ÂÇÏ´Â ¹æ¹ý

Microsoft Word - 05_SUBPROGRAM.doc

Transcription:

ALTIBASE 전환가이드 대상 DB : Oracle ( 주 ) 알티베이스

개정이력 버전변경일변경내용작성자 1.0 2014.09.01 오라클전환가이드 1.0 공공팀 2 / 36 2014-12-04

목차 개요... 5 1. 환경구성... 6 가. 지원버전... 6 나. 사전점검항목... 6 1) 환경분석... 6 2) Oracle DBMS 분석... 6 3) 비즈니스분석... 6 1.2 환경설정... 7 가. OBJECT 변환... 7 1) 데이터타입... 7 2) Object 비교... 8 3) CREATE TABLESPACE... 9 4) CREATE TABLE... 10 5) CREATE INDEX... 14 6) CREATE VIEW... 16 7) CREATE TRIGGER... 16 8) CREATE SEQUENCE... 17 9) CREATE SYNONYM... 17 10) ALTER TABLE... 17 나. SQL 변환... 18 1) Math Function... 18 2) String Function... 20 3) Date Function... 22 4) Compare Function... 23 5) Convert Function... 24 6) Encode/Decode Function... 24 7) Large Object Function... 25 8) Analyze Function... 25 다. STORED PROCEDURE/FUNCTION 변환... 26 1) ALTIBASE AUTOCOMMIT 모드에서 Procedure 처리... 26 2) PARAMETER의 TYPE 과 RETURN TYPE... 26 3) 파일및출력처리... 27 4) REF CURSOR... 27 5) WHERE CURRENT OF 구문... 27 6) EXCEPTION... 28 3 / 36 2014-12-04

1.3 전환절차... 29 가. DATA 전환및 APPLICATION 작업절차... 29 나. DATA 정합성확인... 30 APPLICATION 검증... 30 - 고객과의사전협의를통하여검증방안도출... 30 예 ) 온라인화면 Capture 또는장표비교, 배치 Report 비교등... 30 DATA검증... 30 - Migration 결과레포트를통한원본 DBMS와 ALTIBASE의테이블데이터총건수비교... 30 - 고객과의사전협의를통하여검증방안도출... 30 예 ) 데이터총건수확인, 특정칼럼데이터합산값비교, 특정쿼리수행결과비교등... 30 다. DATA 전환장애대처방안... 30 1.4 전환소요시간... 31 1.5 전환도구... 32 가. MIGRATION CENTER... 32 1) Migration Center 이점... 32 나. 사용법... 32 1) Add Database Connection... 32 3) Build Project... 34 4) Reconcile Project... 34 5) Run Project... 35 6) PL/SQL Converter Tool... 36 다. 다운로드... 36 라. 문의사항... 36 4 / 36 2014-12-04

개요 본문서는 Oracle DBMS 를 ALTIBASE HDB v6.3 으로전환하는절차에대한문서입니다. 단계내용산출물담당자 요구사항분석 DBA APP 개발자 환경분석 OS, HW, SW 등 DBA APP 개발자 DBMS 분석 1 단계 시스템분석 Data Size ( 건, Bytes) Object 수 (Table, Index 등 ) Tablespace Size Function, Procedure 시스템분석서 DBA APP 개발자 비즈니스분석 온라인성 / 배치성업무의비율 배치성업무의 Query 복잡도 DBA APP 개발자 2 단계 영향도분석 위험영향도분석 테이블사용과관련매트릭스에대한어플리케이션과 데이터베이스간의연관성분석 영향도보고서 DBA APP 개발자 DBA APP 개발자 3 단계 일정계획수립 일정계획수립 지원인력계획수립 일정표 PM Migration Center 를활용한전환 - Schema 및 Data 포함 DBA 4 단계전환 비표준 Schema 및 SP 에대한수동변환 개발자 데이터검증 DBA APP 개발자 5 단계최적화 파라메터튜닝을통한구성최적화 SQL 및 Procedure 튜닝을통한성능최적화 이관결과 보고서 DBA DBA APP 개발자 5 / 36 2014-12-04

1. 환경구성 ALTIBASE HDB 로변경가능한 Oracle 의버전및환경구성을위한사전점검항목은다음과같습니다. 가. 지원버전 Oracle 9i 11g 나. 사전점검항목 1) 환경분석 Oracle 버전 Oracle DBMS 설치된시스템의 OS 및 HW Spec(Cpu, Memory, Disk 등 ) ALTIBASE HDB 제품및버전 ALTIBASE HDB 설치될시스템의 OS 및 HW Spec(Cpu, Memory, Disk 등 ) DBMS 서버의 Storage 제품, 사양 (Cpu, Memory Network) 및구성 (RAID1/RAID5 등 ) DBMS 서버와 Storage 간의 Network 구성및속도 2) Oracle DBMS 분석 보유한 Tablespace 개수및사이즈 보유한 Table 개수및사이즈 보유한 Object 개수및사이즈 사용중인 Physical Memory / Swap 사이즈 전체 Query 중 Function/Procedure의비중 3) 비즈니스분석 온라인성업무와배칭성업무의비율구성 배치성업무의 Query 복잡도 (Join, Group By, Order By 등 ) 배치성업무의 Query 중동시에수행되는수 6 / 36 2014-12-04

1.2 환경설정 Oracle 에서 ALTIBASE HDB 로변환시고려되어야할환경설정에대한내용입니다. 가. OBJECT 변환 1) 데이터타입 분류 Oracle ALTIBASE 비고 문자 타입 LOB 타입 숫자 타입 날짜 타입 CHAR CHAR 최대 32K VARCHAR2,VARCHAR NCHAR NVARCHAR2 VARCHAR2,VARCHAR NCHAR NVARCHAR LONG CLOB 최대 2G BLOB BLOB 최대 2G CLOB CLOB 최대 2G NCLOB CLOB 최대 2G 최대 32K. DESC 로조회시 VARCHAR 로조회 문자길이최대 16000B(UTF16), 문 자길이최대 10666B(UTF8) 문자길이최대 16000B(UTF16), 문자길이최대 10666B(UTF8) NUMERIC(p, s) NUMERIC(p, s) 데이터가 SMALLINT, INTEGER, NUMBER (p, s) NUMBER(p, s) DECIMAL(p, s) DECIMAL(p, s) FLOAT(p),BINARY_FLOAT FLOAT(p) BIGINT, REAL, DOUBLE 등 native type 으로지정가능하다면 native type 으로지정하는것이좋 다. 데이터처리시변환비용에따 른 Overhead 를줄일수있고, 저장 공간의효율성이좋아지기때문이 SMALLINT SMALLINT 2 Byte 정수형타입 INT INTEGER 4 Byte 정수형타입 REAL REAL 4 Byte 실수형타입 BINARY_DOUBLE DOUBLE 8 Byte 실수형타입 DATE INTERVAL MONTH YEARTO INTERVAL DAYTO SECOND - TIMESTAMP WITH TIME ZONE TIMESTAMP WITH LOCAL TIME ZONE TIMESTAMP DATE - - - TIMESATAMP 다. ALTIBASE HDB DATE 타입은 ORACLE DATE 타입의표현범위 를포함 지원안됨 7 / 36 2014-12-04

이진 타입 BFILE RAW (size) LONG RAW BLOB BLOB BLOB 최대 2G 2) Object 비교 Oracle ALTIBASE CLUSTER CONSTRAINT DATABASE LINK DATABASE TRIGGER DIMENSION 지원하지않음 지원 지원 지원 지원하지않음 EXTERNAL PROCEDURE LIBRARY 지원 (C/C++ 만가능 ) INDEX-ORGANIZED TABLE INDEX INDEXTYPE JAVA 관련객체 MATERIALIZED VIEW MATERIALIZED VIEW LOG OBJECT TABLE OBJECT TYPE OBJECT VIEW OPERATOR PACKAGE SEQUENCE STORED FUNCTION/PROCEDURE SYNONYM TABLE VIEW CONTEXT DIRECTORY PARAMETER FILE PROFILE ROLE TABLESPACE USER 지원하지않음 B-TREE, R-TREE, Function based 지원 (BITMAP, CLUSTER, Global Partitioned INDEX 는지원하지않 음 ) 지원하지않음 지원하지않음 지원 지원하지않음 지원하지않음 지원하지않음 지원하지않음 지원하지않음 지원 지원 지원 지원 지원 지원 지원하지않음 지원 객체로서지원하지않음. altibase.properties 파일로지 원 지원하지않음 지원 MEMORY, DISK, VOLATILE, TEMPORARY, UNDO 지원 지원 8 / 36 2014-12-04

3) CREATE TABLESPACE Oracle 의 Date Tablespace 는모두 Disk Tablespace 입니다. ALTIBASE HDB 전환시 CREATE DISK TABLESPACE 구문을이용하여 Disk Tablespace 를생성해야합니다. 3.1 DATA TABLESPACE Oracle ALTIBASE 비고 BIGFILE SMALLFILE - ALTIBASE HDB는지원하지않으므로변환시해당옵션삭제 DATAFILE File Specification DATAFILE File Specification MINIMUM EXTENT - BLOCKSIZE - LOGGING NOLOGGING - FORCE LOGGING - ALTIBASE HDB는지원하지않으 DEFAULT Storage 구문 - 므로변환시해당옵션삭제 ONLINE OFFLINE - EXTENT MANAGEMENT - LOCAL DICTIONARY SEGMENT SPACE SEGMENT MANAGEMENT MANAGEMENT AUTO MANUAL AUTO MANUAL FLASHBACK ON OFF - ALTIBASE HDB는지원하지않으므로변환시해당옵션삭제 3.2 DATA TABLESPACE 예제 Oracle ALTIBASE CREATE TABLESPACE TESTDATA CREATE TABLESPACE TESTDATA DATAFILE 'testdata01.dbf' DATAFILE 'testdata01.dbf' SIZE 1024M SIZE 1024M AUTOEXTEND ON AUTOEXTEND ON NEXT 50M NEXT 50M MAXSIZE UNLIMITED MAXSIZE UNLIMITED LOGGING ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT MANUAL FLASHBACK ON; SEGMENT MANAGEMENT MANUAL; SEGMENT 절은 SEGMENT MANAGEMENT AUTO MANUAL 절로수정하고그외의모든절은지원하지않으므로삭제 9 / 36 2014-12-04

3.3 TEMPORARY TABLESPACE Oracle ALTIBASE 비고 TABLESPACE GROUP - EXTENT MANAGEMENT - LOCAL DICTIONARY ALTIBASE HDB 는지원하지않으 므로변환시해당옵션삭제 3.4 TEMPORARY TABLESPACE 예제 Oracle ALTIBASE CREATE TEMPORARY TABLESPACE tbs_temp_02 TEMPFILE 'temp02.dbf' SIZE 5M AUTOEXTEND ON TABLESPACE GROUP tbs_grp_01; CREATE TEMPORARY TABLESPACE tbs_temp_02 TEMPFILE 'temp02.dbf' SIZE 5M AUTOEXTEND ON; TABLESPACE GROUP 절은지원하지않으므로삭제 3.5 UNDO TABLESPACE ALTIBASE는시스템에의해자동으로 Undo Tablespace를관리합니다. Undo Tablespace에데이터파일의추가및크기변경만가능합니다. Oracle ALTIBASE CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE undotbs2.dbf' SIZE 500M AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED; ALTER TABLESPACE SYS_TBS_DISK_UNDO ADD DATAFILE 'undotbs2.dbf' SIZE 500M AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED; 4) CREATE TABLE ALTIBASE HDB는 Temporary Table, Object Table, XMLType Table을제공하지않습니다. ALTIBASE HDB는 Memory Table을제공합니다. 기존의 Table 의특성을파악하여 Memory Table 또는 Disk Table로분리할수있습니다. 그러나 Memory Table 생성시 Oracle에서사용했던 CREATE TABLE 구문에사용한옵션들은사용할수없습니다. 또한 TABLE 생성시 Segment 관련내용을지정할경우에는 TABLESPACE 지정 -> PCTFREE/PCTUSED 지정 -> INITRANS/MAXTRANS 지정 -> Storage 절 -> Logging 절순으로지정해줘야합니다. 10 / 36 2014-12-04

4.1 COLUMN DEFINITION 절 Oracle ALTIBASE 비고 SORT - ALTIBASE HDB 는지원하지않으 DEFAULT ENCRYPT DEFAULT ENCRYPT 므로변환시해당옵션삭제 Constraint 구문 Constraint 구문 ALTIBASE HDB 는 Constraint 지정 시 ENABLE/DISABLE 옵션, References 절의 ON DELETE SET NULL(ON DELETE CASCADE 는지원 ) 옵션을제공하 지않으므로삭제. ALTIBASE HDB 는 PRIMARY KEY, UNIQUE 지정시 Using Index 절에는 Tablespace 절, Parallel 절, Logging 절, Force 절만 지정가능하다. 즉 Index 이름및 CREATE INDEX 절은제공하지않 Ref Constraint 구문 - ALTIBASE HDB 는 REF 컬럼을지 ORGANIZATION - CLUSTER - COMPRESS NOCOMPRESS Column 의크기지정시 Byte 키워 드명시가능 COMPRESS NOCOMPRESS Column 의크기지정시 Byte 키워 드제공하지않음 는다. 원하지않으므로변환시해당옵션 삭제 ALTIBASE HDB 는지원하지않으 므로변환시해당옵션삭제 Oracle 은 Column 의크기지정시 Byte 키워드를명시할수있지만, ALTIBASE HDB 는크기지정시 Byte 를제공하지않음. ex) ORACLE : c1 VARCHAR2(10 Byte) => ALTIBASE : c1 VARCHAR2(10) PRIMARY KEY, UNIQUE Constraint 을지정할때 USING INDEX 절을이용하여 INDEX 속성을 지정할때 ALTIBASE HDB 는 TABLESPACE 절, PARALLEL/NOPARALLEL 절, LOGGING/NOLOGGING 절만지정이가능합니다. 즉 storage 관련속성은지정할수없습니다. 4.2 SEGMENT ATTRIBUTES 절 Oracle ALTIBASE 비고 TABLESPACE PCTFREE PCTUSED TABLESPACE PCTFREE PCTUSED 11 / 36 2014-12-04

INITRANS INITRANS MAXTRANS MAXTRANS 255를 120으로변경한다.Oracle 의 MAXTRANS 는 Deprecate 되었고, 항상그값은 255이다. 반면에 ALTIBASE 의 MAXTRANS 값을최대 120까지지정할수있기때문에 120으로변경한다. LOGGING NOLOGGING LOGGING NOLOGGING 4.3 STORAGE 절 Oracle ALTIBASE 비고 INITIAL INITEXTENTS Bytes -> extent 개수로변경 NEXT NEXTEXTENTS Bytes -> extent 개수로변경 MINEXTENTS MAXEXTENTS MINEXTENTS MAXEXTENTS PCTINCREASE - FREELISTS - FREELIST - OPTIMAL - ALTIBASE HDB 는지원하지 않으므로변환시해당옵션삭제 BUFFER POOL - 4.4 LOB STORAGE 절 Oracle ALTIBASE 비고 TABLESPACE TABLESPACE ALTIBASE의 LOB STORAGE절은 TABLESPACE만지정가능 STORAGE - CHUNK - PCTVERSION - RETENTION - ALTIBASE 는지원하지않으므로 변환시해당옵션삭제 FREEPOOLS - 12 / 36 2014-12-04

CACHE - STORAGE IN ROW - LOGGING NOLOGGING LOGGING NOLOGGING 4.5 TABLE PARTITION 절 Oracle ALTIBASE 비고 PARTITION BY RANGE PARTITION BY HASH PARTITION BY LIST PARTITION BY RANGE PARTITION BY HASH PARTITION BY LIST Composite partitioning 구문 - ALTIBASE 는지원하지않으므로 변환시해당옵션삭제 4.6 TABLE PROPERTIES 절 Oracle ALTIBASE 비고 ENABLE DISABLE ROW MOVEMENT NOPARALLEL PARALLEL ENABLE DISABLE VALIDATE NOVALIDATE ENABLE DISABLE ROW MOVEMENT NOPARALLEL PARALLEL - Partitioned TABLE 에만지원 ALTIBASE 는지원하지않으므로 변환시해당옵션삭제 4.7 TABLE 변환예제 Oracle ALTIBASE CREATE TABLE "SCOTT"."EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10 Byte), "JOB" VARCHAR2(9 Byte), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY CREATE TABLE "SCOTT"."EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY 13 / 36 2014-12-04

("EMPNO") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE, CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO") REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; ("EMPNO") USING INDEX TABLESPACE "USERS", CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO") ) REFERENCES "SCOTT"."DEPT" ("DEPTNO") TABLESPACE "USERS" PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 120 STORAGE(INITEXTENTS 1 NEXTEXTENTS 1 MINEXTENTS 1 MAXEXTENTS 2147483645) LOGGING ; "ENAME" VARCHAR2(10 Byte)Byte 는삭제 USING INDEX TABLESPACE "USERS" PK 지정시 USING INDEX 절에는 TABLESPACE 절, PARALLEL/NOPARALLEL 절, LOGGING/NOLOGGING 절만지정가능하므로 TABLESPACE 절이외의다른옵션은삭제 REFERENCES "SCOTT"."DEPT" ("DEPTNO") FK 지정시 ENABLE 옵션은지원하지않으므로삭제 PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 120 MAXTRANS 의최대값은 120 이므로 120 으로수정 STORAGE(INITEXTENTS 1 NEXTEXTENTS 1 MINEXTENTS 1 MAXEXTENTS 2147483645) INITIAL 과 NEXT 는각각 INITEXTENTS, NEXTEXTENTS 로변경해야하며그값도 extent 의 개수로수정 TABLESPACE "USERS" PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 120 STORAGE... LOGGING segment 관련내용을지정할경우에는 TABLESPACE 지정 -> PCTFREE/PCTUSED 지정 -> INITRANS/MAXTRANS 지정 -> Storage 절 -> logging 절순으로지정 5) CREATE INDEX ALTIBASE 는 BTREE 와 RTREE INDEX 만제공하고 BITMAP, CLUSTER, Function based, REVERSE, 14 / 36 2014-12-04

Global partitioned INDEX 를제공하지않습니다. 또한, ALTIBASE INDEX 생성시 segment 관련내용지정 할경우에는 TABLESPACE 지정 -> PARALLEL/ NOPARALLEL 지정 -> LOGGING/NOLOGGING 지정 -> storage 절순으로지정해야합니다. Oracle ALTIBASE 비고 TABLESPACE LOGGING NOLOGGING NOPARALLEL PARALLEL TABLESPACE LOGGING NOLOGGING NOPARALLEL PARALLEL COMPUTE STATISTICS - REVERSE - SORT NOSORT - ONLINE - ALTIBASE 는지원하지않으므로 변환시해당옵션삭제 COMPRESS NOCOMPRESS - PCTFREE, PCTUSED, - INITRANS INITRANS MAXTRANS MAXTRANS ALTIBASE 는최대 30 까지지원 Storage 구문 TABLE 의 Storage 구문과동일 5.1 INDEX 변환예제 Oracle CREATE INDEX "SCOTT"."EMP_IDX1" ON "SCOTT"."EMP" ("DEPTNO", "SAL") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; ALTIBASE CREATE INDEX "SCOTT"."EMP_IDX1" ON "SCOTT"."EMP" ("DEPTNO", "SAL") TABLESPACE "USERS" INITRANS 2 MAXTRANS 30 STORAGE(INITEXTENTS 1 NEXTEXTENTS 1 MINEXTENTS 1 MAXEXTENTS 2147483645) ; INITRANS 2 MAXTRANS 30 MAXTRANS 는 30 까지지원하므로 30 으로변경 STORAGE(INITEXTENTS 1 NEXTEXTENTS 1 MINEXTENTS 1 MAXEXTENTS 2147483645) ; STORAGE 절에는 INITEXTENTS, NEXTEXTENTS, MINEXTENTS, MAXEXTENTS 만지정가능하고, INITIAL 과 NEXT 는각각 INITEXTENTS, NEXTEXTENTS 로변경해야하며그값도 extent 의 개수로수정해야함 15 / 36 2014-12-04

TABLESPACE "USERS" INITRANS 2 MAXTRANS 30 STORAGE... ; segment 관련내용지정할경우에는 TABLESPACE 지정 -> PARALLEL/NOPARALLEL 지정 -> LOGGING/NOLOGGING 지정 -> storage 절순으로지정 6) CREATE VIEW ALTIBASE 의 VIEW 는 Oracle 의 VIEW 생성구문과동일하게 CREATE OR REPLACE VIEW 구문으로생성합니다. Oracle ALTIBASE 비고 WITH READ ONLY [NO] FORCE WITH READ ONLY [NO] FORCE ALTIBASE 는 WITH READ ONLY 옵션의 VIEW 만제공하므로해당 옵션이 default 임 WITH CHECK OPTION - XMLType view 구문 - ALTIBASE 는지원하지않으므로 변환시해당옵션삭제 Object view 구문 - 7) CREATE TRIGGER ALTIBASE의 TRIGGER는 Oracle의 TRIGGER 생성구문과동일하게 CREATE OR REPLACE TRIGGER 구문으로생성합니다. 이중화로인해반영되는데이블데이터의변경은트리거동작을발생시키지않습니다. ALTIBASE는 TRIGGER 대상 TABLE에 LOB 컬럼을포함할수없습니다. Oracle ALTIBASE 비고 CREATE OR REPLACE TRIGGER BEFORE AFTER INSTEAD OF CREATE OR REPLACE TRIGGER BEFORE AFTER ALTIBASE 는 INSTEAD OF 는 지원하지않음 DML 이벤트구문 DML 이벤트구문 DML 이벤트구문은 Oracle 과동일 DDL 이벤트구문 - ALTIBASE 는 DDL TRIGGER 를 제공하지않음 WHEN 조건 WHEN 조건 16 / 36 2014-12-04

FOR EACH ROW FOR EACH ROW REFERENCING REFERENCING DELETE 이벤트에서 NEW는 REFERENCING 할수없고, INSERT 이벤트에서는 OLD는 REFERENCING 할수없다. OLD/NEW에 alias를줄경우 OLD/NEW는키워드이므로 alias로사용할수없다. Trigger body 구문 Trigger body 구문 ALTIBASE Trigger body 구문은 AS BEGIN 구문으로시작해야한다. 또한 Oracle의 Trigger body 구문은 DECLARE 절로시작할수있지만, ALTIBASE의 Trigger body는 AS 절에선언부분을지정해야하고, DECLARE 절을명시할수없다. OLD/NEW row 사용시 : 사용할 수없다. Ex) :old (x) -> old(o) 8) CREATE SEQUENCE ALTIBASE의 CREATE SEQUENCE 구문은 Oracle과동일합니다. 다만, Oracle에서제공하는 ORDER, NOORDER 옵션은지원하지않습니다또한, ORACLE SEQUENCE의 maxvalue 값은 28자리정수까지지정할수있지만, ALTIBASE SEQUENCE의 maxvalue는 (-9223372036854775807) 부터 9223372036854775806까지의범위내에서지정할수있습니다. 9) CREATE SYNONYM ALTIBASE 의 CREATE SYNONYM 구문은 Oracle 과동일합니다. 10) ALTER TABLE ALTIBASE는 Constraint 추가시한번에 1개의 Constraint만추가가능합니다. Oracle에서 ALTER TABLE ADD (CONSTRAINT constraint_name constraint_type, ); 문으로여러개의 Constraint를추가하는문장은 Constraint별로나눠서 ALTER TABLE ADD CONSTRAINT constraint_name constraint_type; 문으로 Constraint 별로나눠서실행해야합니다. Oracle은 PRIMARY KEY와 UNIQUE를지정시 INDEX를미리생성한후지정이가능하지만, ALTIBASE는 Constraint를지정하는시점에내부적으로 INDEX를생성하기때문에동일컬럼에대해 PK Constraint, 17 / 36 2014-12-04

UNIQUE Constraint, INDEX 생성중하나만가능합니다. 즉, INDEX 를생성한컬럼에 PK Constraint 를지정 할수없습니다. 나. SQL 변환 1) Math Function Oracle ALTIBASE 비고 ABS ABS 절대값을반환 ACOS ACOS n 의역코사인 (arc cosine) ASIN ASIN n 의역사인 (arc sine) ATAN ATAN n 의역탄젠트 (arc tangent) ATAN2 ATAN2 ATAN2(n,m) 은 n/m 의역탄젠트 (arc tangent) 값을반환 AVG AVG Row 의 expr 값의평균값을구한다 BITAND BITAND 인수 1 과인수 2 의비트에대한 and 연산을수행하여정수를반환 CEIL CEIL 인수에서지정한수치를올림하여 정수를반환 COS COS n 의코사인값을반환 COSH COSH n 의쌍곡코사인값을반환 COUNT COUNT Row 의개수를세는함수, 분석함수이다 DENSE_RANK DENSE_RANK DENSE_RANK 함수는 RANK 함수처럼결과집합또는파티션의특정멤버를기준으로순위를매긴다. 그러나중복순위발생후에건너뛰지않고다음순위가매겨진다. 반환값의타입은 18 / 36 2014-12-04

BIGINT 이다. EXP EXP e 의 n 제곱값을반환 FLOOR FLOOR 지정한숫자보다작거나같은가장큰 정수반환 LAG LAG 정렬된각파티션내에서현재행을기 준으로이전의 offset 번째행의값을 구하는함수이다 LN LN 입력한자연로그값구한다 LOG(N,M) LOG(N,M) 밑을 n 으로하는 m 의로그값을반환 MOD MOD n2 을 n1 으로나눈나머지값을반환 NANVL N/A 입력값 n2 가수치가아니면 대체값 n1 을반환 NTH_VALUE NTH_VALUE 파티션또는윈도우내에서 offset 번 째행의값을구하는함수이다 POWER POWER n2 의 1n1 승값을반환 ROUND ROUND n 값을소수점이하를 integer 를 기준으로반올림하여반환 ROW_NUMBER ROW_NUMBER ROW_NUMBER 함수는결과집합또는파티션의특정멤버를기준으로연속적인유일한수를부여한다. 1 부터시작하여 ORDER BY 식에명시된순서대로부여된다. SIGN SIGN n 의부호를반환 SIN SIN n 의사인값을반환 SINH SINH n 의쌍곡선사인을반환 SQRT SQRT n 의제곱근을반환 STDDEV STDDEV STDDEV 는입력된 expression 들의 표준편차를반환한다. TAN TAN N 의탄젠트값을반환 19 / 36 2014-12-04

TANH TANH N 의쌍곡선탄젠트 (hyperbolic tangent) 값반환 VARIANCE VARIANCE VARIANCE 는입력된 expression 들 의변동량을반환한다. 2) String Function Oracle ALTIBASE 비고 CONCAT CONCAT char1 과 char2 를연결하여반환 CHR CHR number 에해당하는문자를구한다. NCHR NCHR 유니코드문자를변환한다 LOWER LOWER 입력된문자열을소문자로변환한다 UPPER UPPER 입력된문자열을대문자로반환 LPAD LPAD 지정된자릿수 N 으로부터 EXPR1 을 채우고, 왼편에남은공간에 expr1 을채운다 LTRIM LTRIM 문자열 char 좌측으로부터 set 으로 지정된모든문자를제거한다. RTRIM RTRIM 문자열 char 우측으로부터 set 으로 지정된모든문자를제거한다. RPAD RPAD 인수 expr1 오른편으로인수 expr2 로지정한문자를길이필요에따라 반복하여 n 만큼붙여준다 RPAD RPAD 인수 expr1 오른편으로공백을 채워준다 SOUNDEX N/A char 의음성표현을가지는문자열을 반환 SUBSTR SUBSTR 문자열 Char에서Position 문자위치로부터Substring_Leng th 문자길이만큼문자열을추출하여 반환 20 / 36 2014-12-04

REPLACE REPLACE2 Parameter로주어지는첫번째문자열에서, 두번째문자열을모두세번째문자열로바꾼후결과를반환 REGEXP_REPLACE/SUBSTR N/A 지정한정규표현을만족하는 부분을치환, 반환 INITCAP INITCAP 입력문자열중에서각단어의첫 글자를대문자로변환한다 NLS_INITCAP N/A 입력문자열중에서각단어의첫 글자를대문자로변환한다 ( 다국언어 지원 ) 한다 NLSSORT N/A 입력문자열을 sorting 하여 string 을 반환 TRANSLATE TRANSLATE from_string 에서각문자를 to_sting 안의대응하는문자로치환하여 expr 을반환 TO_CHAR TO_CHAR CHAR 타입으로반환 TREAT N/A 인수의선언형을변경해준다 NLS_CHARSET_DECL_LEN N/A NCHR 열의선언된폭을반환 NLS_CHARSET_ID N/A 문자셋이름에상응하는 ID 번호를 반환 ASCII ASCII 주어진 char 의첫문자의아스키 값에상응하는 10 진수값을반환 INSTR INSTR 문자열중에서지정한문자가처음 나타나는위치를숫자로반환 LENGTH LENGTH 인수 char 의길이를반환 LENGTHB LENGTHB char 대신바이트단위로길이를 계산한다 REGEXP_INSTR REGEXP_INSTR 지정한조건 ( 정규표현 ) 을만족하는 부분의최초의위치를반환 21 / 36 2014-12-04

3) Date Function Oracle ALTIBASE 비고 (use +) (use +) 일자 date 에서 integer 를더한 날짜가반환 (use - ) (use -) 일자 Date 에서 integer 를뺀 날짜가반환 ADD_MONTHS ADD_MONTHS 일자 date 에특정개월수 integer 를 더한값을반환 CURRENT_DATE CURRENT_DATE 현재세션의날짜정보를 date 형으로반환 CURRENT_TIME N/A 현재세션의시간대를기준으로 현재시간을출력한다. CURRENT_TIMESTAMP CURRENT_TIMESTAMP 현재세션의날짜와시간정보를 반환 (* CURRENT_DATE 의 alias 임 ) LAST_DAY LAST_DAY 해당날짜가속한달의마지막 날짜를반환 NEW_TIME CONV_TIMEZONE date,zone1 시간대를 zone2 시간대로출력한다 NEXT_DAY NEXT_DAY 해당일을기준으로명시된요일의 다음날짜를반환 ROUND ROUND 지정된단위로반올림한날짜반환 TRUNC TRUNC 지정된단위로잘라서날짜반환 EXTRACT(datetime) EXTRACT(datetime) 특정날짜, 시간값이나날짜값 표현식으로부터지정된날짜영역의 22 / 36 2014-12-04

값을추출후반환 LOCALTIMESTAMP DB_TIMEZONE timestamp 의현재날짜와시각을 출력 SYSTIMESTAMP SYSTIMESTAMP 시스템의날짜를반환 MONTHS_BETWEEN MONTHS_BETWEEN 일자 date1 과 date2 사이의 시간대로출력 TO_CHAR(datetime) TO_CHAR(datetime) 사용자가지정한폼을갖는 varchar2 형식의 Data 로변환 TO_NUMBER(TO_CHAR()) TO_NUMBER(TO_CHAR()) 지정된형식인 number 형식으로 변환 TO_DATE TO_DATE 지정된형식인 date 형식으로변환 TO_DSINTERVAL DATEDIFF 로대체가능 interval year to month 형태로변경 SYSDATE SYSDATE Database 가있는 OS 의일자와 시간을반환 N/A DATENAME 입력 date 에서 date_field_name 에 해당하는값만반환 N/A DATEDIFF enddate에서 startdate를뺀값 ( 즉, enddate-startdate) 을 date_field_name에명시한단위로반환 N/A DATEPART 입력 date 에서 date_field_name 에 해당하는값만반환 N/A DATEADD date 의 date_field_name부분을 numb er 만큼증가시켜그결과를반환 4) Compare Function Oracle ALTIBASE 비고 GREATEST GREATEST 하나이상의인수중에서가장큰 값을반환 LEAST LEAST 인수 expr 의리스트중에서가장 작은값을반환 23 / 36 2014-12-04

5) Convert Function Oracle ALTIBASE 비고 CAST CAST Data 형식을변환 CONVERT CONVERT 지정된문자세트를변환 RAWTOHEX N/A RAW 를 16 진수의문자로변환 HEXTORAW N/A 16 진수를 raw 값으로변환 RAWINTOCHAR N/A rowid 값을 VARCHAR2 형식으로 변환 SCN TO TIMESTAMP N/A 시스템변경번호 (SCN) 로변환 TO_BINARY_DOUBLE N/A 배정밀도부동소수점변환 TO_CLOB N/A nclob 값을 clob 값으로변환 TO_LOB N/A long 또는 long raw 값을 lob 값으로 변환 COLEASE COLEASE 나열된값을순차적으로체크하여 NULL 이아닌첫번째인수를반환 LNNVL N/A 조건의한쪽또는양쪽연산자가 NULL 이존재할경우에, 조건문을 평가하기위한방법 NULLIF NULLIF expr1 과 expr2 가같으면, null 값을 반환 NVL NVL 쿼리의결과에서 NULL ( 공백으로 반환 ) 값을치환 NVL2 NVL2 expr1 이 NULL 이아니면 expr2 를 반환하고 NULL 이면 expr3 를반환 6) Encode/Decode Function 24 / 36 2014-12-04

Oracle ALTIBASE 비고 DECODE DECODE 프로그래밍언어의 IF 문을 SQL, PL/SQL 안으로끌어들이는함수 DUMP DUMP 지정한 Data 의위치와길이등을 지정한형식으로반환 VSIZE SIZEOF expr 의내부표현에서바이트수를 반환 7) Large Object Function Oracle ALTIBASE 비고 EMPTY_BLOB/EMPTY_CLOB N/A LOB 변수를초기화하는함수 BFILENAME N/A Server File System 의물리 LOB BinaryFile 과연관된 BFILE Locator 를반환 8) Analyze Function Oracle ALTIBASE 비고 MAX MAX 인수중에최대값을반환 MIN MIN 인수중에최소값을반환 SUM SUM Row 의 expr 에대한합계 RANK RANK 값의그룹에서값의순위 LEAD LEAD 현재형기준으로이후값을참조 GROUP_ID N/A 지정된 GROUP BY 결과로부터 중복된그룹을구별 FIRST_VALUE FIRST_VALUE 파티션또는윈도우내에첫번째 행의값을구하는함수이다. LAST_VALUE LAST_VALUE 파티션또는윈도우내에서마지막 25 / 36 2014-12-04

번째행의값을구하는함수이다. 다. STORED PROCEDURE/FUNCTION 변환 1) ALTIBASE AUTOCOMMIT 모드에서 Procedure 처리 ALTIBASE가 AUTOCOMMIT 모드일경우 PROCEDURE/FUNCTION 전체가하나의트랜잭션으로처리되고 PROCEDURE 내에서의 COMMIT/ROLLBACK은무시됩니다. PROCEDURE/FUNCTION을실행한후에자동으로 COMMIT됩니다. 따라서 PROCEDURE/FUNCTION에서 DML 문장을실행한후결과가 ALTIBASE와 Oracle이다를수있습니다. ALTIBASE를 NON-AUTOCOMMIT 모드로적용했다면 Oracle의 NON-AUTOCOMMIT 모드와동일한결과가나타납니다. Oracle CREATE OR REPLACE PROCEDURE t1_test( in_t IN INTEGER, in_v IN VARCHAR)ISBEGIN INSERT INTO t1 VALUES(in_t, in_v); ROLLBACK;END;/EXEC t1_test(4, '000004');SQL> SELECT COUNT(*) FROM t1; COUNT(*)- ---------------- 0 ALTIBASE CREATE OR REPLACE PROCEDURE t1_test( in_t IN INTEGER, in_v IN VARCHAR(20))ISBEGIN INSERT INTO t1 VALUES(in_t, in_v); ROLLBACK;END;/EXEC t1_test(4, '000004');iSQL> SELECT COUNT(*) FROM t1;count ------------ 1 2) PARAMETER 의 TYPE 과 RETURN TYPE PARAMETER의 TYPE과 RETURN TYPE의 CHAR, VARCHAR는크기지정해야합니다. ALTIBASE에서 PROCEDURE나 FUCTION의 PARAMATER 혹은 RETURN TYPE을 Oracle처럼 CHAR, VARCHAR로선언하면 CHAR(1), VARCHAR(1) 과동일한의미입니다. 따라서, 하나의문자가아니라문자열을사용하고자한다면, 반드시그크기를지정해줘야합니다. 만약지정해주지않고문자열이 2문자이상이면다음과같은에러가발생합니다. ERR-2100D : Invalid length of the data type 26 / 36 2014-12-04

3) 파일및출력처리 ALTIBASE의파일및출력에관련된 PROCEDURE는 SYSTEM_ 유저에자동으로생성이되어있고, PUBLIC SYNONYM으로정의되어있기때문에사용자는 PROCEDURE 이름만호출하여사용할수있습니다. 구분 Oracle ALTIBASE 표준출력 파일처리 DBMS_OUTPUT.PUT DBMS_OUTPUT.PUT_LINE UTL_FILE.FOPEN UTL_FILE.FCLOSE UTL_FILE.FCLOSE_ALL UTL_FILE.FCOPY UTL_FILE.FFLUSH UTL_FILE.FREMOVE UTL_FILE.FRENAME UTL_FILE.GET_LINE UTL_FILE.IS_OPEN UTL_FILE.NEW_LINE PRINT PRINTLN FOPEN FCLOSE FCLOSE_ALL FCOPY FFLUSH FREMOVE FRENAME GET_LINE IS_OPEN NEW_LINE 4) REF CURSOR Oracle 의 REF CURSOR 는보통 PACKAGE 에선언을하고, 이를 PROCEDURE 의 OUT PARAMATER 로 선언하여사용합니다. 하지만, ALTIBASE 는 PACKAGE 를제공하지않기때문에 TYPESET 으로생성하여사 용해야합니다. Oracle CREATE OR REPLACE PACKAGE ref_cursor_pkg AS TYPE ref_type IS REF CURSOR; PROCEDURE ref_cursor_pro(v_result OUT ref_type, v_sql IN VARCHAR2);END;/ CREATE OR REPLACE PACKAGE BODY ref_cursor_pkg AS PROCEDURE ref_cursor_pro(v_result OUT ref_type, v_sql IN VARCHAR2) ASBEGIN OPEN v_result FOR v_sql [USING] [Bind Var];END;/ ALTIBASE CREATE OR REPLACE TYPESET my_typeas TYPE my_cur IS REF CURSOR;END;/CREATE OR REPLACE PROCEDURE opencursor( v_result OUT my_type.my_cur, v_sql IN VARCHAR(200) )ASBEGIN OPEN y_result FOR v_sql [USING] [Bind Var];END;/ 5) WHERE CURRENT OF 구문 27 / 36 2014-12-04

ALTIBASE 는 CURSOR 를이용한 WHERE CURRENT OF 구문을지원하지않습니다. 다만, 해당 TABLE 에 PRIMARY KEY 가있다면다음과같이변경이가능합니다. Oracle CREATE OR REPLACE PROCEDURE proc1is CURSOR emp_list IS SELECT empno FROM employee WHERE empno = 1 FOR UPDATE; BEGIN FOR emplst IN emp_list LOOP UPDATE employee SET empjob = 'SALESMAN' WHERE CURRENT OF emp_list; END LOOP; END; / ALTIBASE CREATE OR REPLACE PROCEDURE proc1asbegin DECLARE CURSOR cur1 IS SELECT empno FROM employee WHERE empno = 1; v_empjob VARCHAR(10); v_empno INTEGER; BEGIN OPEN cur1; LOOP FETCH cur1 INTO v_empno, v_empjob; EXIT WHEN cur1%notfound; UPDATE employee SET empjob = 'SALESMAN WHERE emp_no = v_empno; //emp_no 가 PK 이어야한다. END LOOP; CLOSE cur1; END;END;/ 6) EXCEPTION Oracle 과 ALTIBASE 는 Stored PROCEDURE/FUNCTION 에서발생하는 EXCEPTION 들을미리시스템에 서정의해놓았습니다. Oracle ALTIBASE SQLERRM SQLCODE SQLERRM SQLCODE CURSOR_ALREADY_OPEN -6530 CURSOR_ALREADY_OPEN 201062 DUP_VAL_ON_INDEX -1 DUP_VAL_ON_INDEX 201063 INVALID_CURSOR -1001 INVALID_CURSOR 201064 INVALID_NUMBER -1722 INVALID_NUMBER 201065 NO_DATA_FOUND +100 NO_DATA_FOUND 100 PROGRAM_ERROR -6501 PROGRAM_ERROR 201067 STROAGE_ERROR -6500 STROAGE_ERROR 201068 TIMEOUT_ON_RESOURCE -51 TIMEOUT_ON_RESOURCE 201069 TOO_MANY_ROWS -1422 TOO_MANY_ROWS 201070 VALUE_ERROR -6502 VALUE_ERROR 201071 ZERO_DIVIDE -1476 ZERO_DIVIDE 201072 ACCESS_INTO_NULL -6530 CASE_NOT_FOUND -6592 COLLECTION_IS_NULL -6531 지원하지않음 LOGIN_DENIED -1017 28 / 36 2014-12-04

NOT_LOGGED_ON -1012 ROWTYPE_MISMATCH -6504 SELF_IS_NULL -30625 SUBSCRIPT_BEYOND_COUNT -6533 SUBSCRIPT_OUTSIDE_LIMIT -6532 SYS_INVALID_ROWID -1410 1.3 전환절차 데이터의전환작업을위해자동화된 Migration Center라는도구를사용합니다. 전환작업이진행되기이전에맵핑작업을위하여이전 DBMS에서사용하는환경에맞게 user생성과 Tablespace 생성이필요합니다. 특정 DB 종속적인기능이적용된경우에는수동변환작업을수행합니다. 가. DATA 전환및 APPLICATION 작업절차 29 / 36 2014-12-04

나. DATA 정합성확인 APPLICATION 검증 검증방안도출 - 고객과의사전협의를통하여검증방안도출 예 ) 온라인화면 Capture 또는장표비교, 배치 Report 비교등 Migration Center Report - Migration 결과레포트를통한원본 DBMS 와 ALTIBASE 의테이블데이터총건수 비교 DATA 검증 검증방안도출 - 고객과의사전협의를통하여검증방안도출예 ) 데이터총건수확인, 특정칼럼데이터합산값비교, 특정쿼리수행결과비교등 다. DATA 전환장애대처방안 30 / 36 2014-12-04

1.4 전환소요시간 ALTIBASE 에서제공하는전환절차에대한소요시간추정치는다음과같습니다. 단계작업내용소요기간 시스템분석 영향도분석 -소스DBMS 분석 DB 관리자와인터뷰수행 -시스템분석서작성 -어플리케이션변경에따른위험영향도분석 -영향도보고서작성 -DBMS 1 대기준 1 일소요 -DBMS 1 대기준 1 일소요 계획수립 - 일정및지원인력계획서작성 -1.5 일소요 전환 데이터매핑 - 데이터매핑규칙정의 -+a(schema 복잡도에따라유동적 ) 실행 -Migration Center 를활용 -1TB 기준 1 일소요 시스템최적화 - 성능튜닝과테스트 - 1~3 일소요 전체 -5 일 + a 어플리케이션변경영향도에따라유동적 31 / 36 2014-12-04

1.5 전환도구 가. MIGRATION CENTER 1) Migration Center 이점 GUI기반의툴로손쉽게사용이가능 CLI 모드지원으로이관작업의손쉬운실행과높은성능 스키마와함께데이터도모두한번의조작으로이관수행 서로다른데이터형식에대한매핑작업을통해이관작업수행 유연한데이터이관을지원하기위하여사용자정의형식지원 전환결과에대한단계별요약보고서제공 나. 사용법 1) Add Database Connection Source/Target DBMS의정보를입력합니다. Connection Name : 임의지정가능 IP : DBMS Server IP Port : DBMS Server Port User : 연결사용자계정 Password : 연결사용자비밀번호 SID : 서비스명 IP Version : IPv4/IPv6 32 / 36 2014-12-04

데이터베이스접속을위해 JDBC 드라이버를사용하므로, 원본데이터베이스와대상데이터베이스에알맞은 JDBC 드라이버를준비하는것이중요합니다. 사용자편의를위해지원되는데이터베이스에적합한몇가지 JDBC 드라이버를 Migration Center 와함께제공합니다. 2) Create Project 데이터이관에대한프로젝트를생성합니다. Project Name : 임의지정가능 Project Path : 자동생성 Source Database : Oracle Destination Database : Altibase 33 / 36 2014-12-04

3) Build Project Source Database 에서테이블의레코드개수를가져오는방식 (Fast/Slow) 을선택하고진행합니다. 4) Reconcile Project 마이그레이션수행방법을정의하는단계로마이그레이션과정에서가장중요한단계입니다. User Mode : Source Database 생성시정의한사용자계정이접근할수있는모든 Table과모든데이터를마이그레이션대상으로정의 Table Mode : Source Database 생성시정의한사용자계정이접근할수있는모든 Table 중에서데이터를마이그레이션대상 Table을선택정의 34 / 36 2014-12-04

Data Type Mapping : Oracle과 Altibase의데이터타입매핑 PSM Data Type Mapping : Oracle PL/SQL과 Altibase PSM 의데이터타입매핑 Tablespace to Tablespace Mapping : Oracle과 Altibase의테이블스페이스매핑 Table to Tablespace Mapping : Altibase의테이블을저장할테이블스페이스지정 Select Editing : Oracle 데이터조회조건추가 / 수정 DDL Editing : Altibase의최종 DDL 수정 5) Run Project 데이터마이그레이션을수행합니다. 35 / 36 2014-12-04

6) PL/SQL Converter Tool 파일로저장된 Oralce PL/SQL 을 Migration Center 를이용하여데이터타입에대한 sytax 를변경합니다. 비즈니스로직에대한변경은자동변환되지않으므로, 비즈니스로직을구현한개발자가수동으로변환해야 합니다. 다. 다운로드 Support.altibase.com 의다운로드페이지를통하여다운로드가능합니다. http://support.altibase.com/kr/product 라. 문의사항 http://support.altibase.com 02-2082-1114 36 / 36 2014-12-04