Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
maxLevel2

개요 

...

본 문서는 Oracle DBMS를 ALTIBASE HDB v6.3 으로 전환하는 절차에 대한 문서입니다Database를 Altibase v7.1 이상으로 전환하는 방법에 대한 문서이다.

 

 

Note

이 문서와 관련된 오류 및 개선사항은 궁금사항은 기술지원포털 또는 기술지원센터로 문의주시기 바랍니다.

 

 

Note

이 문서는 정보 제공을 목적으로 제공되며하며, 사전에 사전 예고 없이 변경될 수 있습니다.

이 문서는 오류가 있을 수 있으며, 상업적 또는 특정 목적에 부합하는 명시적, 묵시적인 묵시적 책임이 일절 없습니다.

이 문서에 포함된 Altibase 포함된 알티베이스 제품의 특징이나 기능의 개발, 발표 등의 시기는 Altibase 시기는 알티베이스 재량입니다.

Altibase는 알티베이스는 이 문서에 대하여 관련된 특허권, 상표권, 저작권 또는 기타 지적 재산권을 보유할 수 있습니다.

 

 

Migration Process 

...

Oracle에서 Altibase로 전환 절차는 다음의 Process에 전환은 다음 절차를 따른다.

Image RemovedImage Added

Image RemovedImage Added

  

시스템 분석 

환경 구성 

...

Altibase로 변경 전환 가능한 Oracle의 Oracle 버전 및 환경 구성을 위한 사전 점검 항목은 다음과 같습니다항목에 대해 기술한다.

 

지원 버전

...

Oracle 9i - 11g12c

 

사전 점검 항목

...

Oracle에서 Altibase로 변환하기 전환하기 위해서는 Oracle의 기본 정보들을 취합하여야 한다.

 

환경 분석

...

  • Oracle 버전
  • Oracle DBMS Oracle이 설치된 시스템의 OS 및 HW Spec (Cpu, Memory, Disk 등)
  • ALTIBASE HDB 제품 및 버전
  • ALTIBASE HDB 설치될 Altibase 버전
  • Altibase가 설치될 시스템의 OS 및 HW Spec (Cpu, Memory, Disk 등)
  • DBMS Database 서버의 Storage 제품, 사양(Cpu, Memory Network) 및 구성 (RAID1/RAID5 등)
  • DBMS Database 서버와 Storage 간의 Network 구성 및 속도

 

Oracle

...

분석

...

  • 보유한 Tablespace 개수 및 사이즈
  • 보유한 Table 개수 및 사이즈
  • 보유한 Object 개수 및 사이즈
  • 사용 중인 Oracle 서버의 Physical Memory / Swap 사이즈
  • 전체 Query 중 Function/Procedure의 비중

 

비즈니스 분석

...

  • 온라인성 업무와 배칭성 배치성 업무의 구성 비율 구성
  • 배치성 업무의 Query 복잡도 (Join, Group By, Order By 등)
  • 배치성 업무의 Query 중 동시에 수행 되는 동시 작업(Query)

 

 

환경 설정 

SQL 변환 가이드 

...

Oracle에서 Altibase로 변환 시 고려되어야 할 환경 설정에 대한 내용입니다전환 시 SQL 변환 방법에 대한 설명이다.

 

...

데이터 타입 변환

...

Oracle Object들을 Oracle의 데이터 타입을 Altibase로 변환할 때 고려할 사항에 대하여 기술한다. 

분류

...

문자 길이 최대10666B 문자 길이 최대 10666B(FLOAT(p),FLOATFLOAT(p)INTERVAL DAYTO

Oracle

분류

Altibase

Oracle 최대 크기Altibase 최대 크기

비고

문자 타입

 

 

 

 

 

 

 

 

CHAR

CHAR

최대 32K

2000 bytes32000 bytes

 

VARCHAR2,VARCHAR

VARCHAR2,VARCHAR

최대 32K. DESC로 조회 시 VARCHAR로 조회

 

4000 bytes

32000 bytes

Oracle에서 MAX_STRING_SIZE=EXTENDED일 경우, 32767 bytes

NCHAR

NCHAR문자 길이 최대16000B

1000(UTF16),

666(UTF8)

최대 2000 bytes

16000(UTF16), 10666(UTF8)

최대 32000 bytes

 

NVARCHAR2

NVARCHAR문자 길이 최대16000B

2000(UTF16),

1333(UTF8)

최대 4000 bytes

숫자 타입

16000(UTF16), 10666(UTF8)

 

LONG

CLOB

최대 2G

LOB 타입

BLOB

BLOB

최대 2G

 

CLOB

CLOB

최대 2G

 

NCLOB

CLOB

최대 2G

최대 32000 bytes

Oracle에서 MAX_STRING_SIZE=EXTENDED일 경우, 16383(UTF16), 10922(UTF8)

최대 32767 bytes

숫자 타입

 

 

 

  

NUMBER
NUMBER(p)
NUMERIC(p, s)

NUMBER
NUMBER(p)
NUMERIC(p, s)데이터가

  

NUMBER(38)은 정수형이므로 최대 크기를 고려하여 SMALLINT, INTEGER, BIGINT , REAL, DOUBLE 등 native type으로 지정 가능 하다면 native type으로 지정하는 것이 좋다. 데이터 처리시 전환을 권장한다.

native type을 사용할 경우, 데이터 처리 시 변환 비용에 따른 Overhead를 줄일 수 있고, 저장 공간의 효율성이 좋아지기 때문이다좋아진다.

 FLOAT
NUMBER FLOAT(p, s)NUMBER

FLOAT
FLOAT(p, s)

  

DECIMAL(p, s)

DECIMAL(p, s)

 

BINARY_FLOATREAL  4 bytes 실수형 타입
BINARY_DOUBLEDOUBLE  

SMALLINT

SMALLINT

2 Byte 정수형 타입

 

INT

INTEGER

4 Byte 정수형 타입

 

REAL

REAL

4 Byte 실수형 타입

 

BINARY_DOUBLE

DOUBLE

8 Byte 실수형 타입

날짜 타입

DATE

DATE

ALTIBASE HDB DATE 타입은 ORACLE DATE 타입의 표현 범위를 포함

 

INTERVAL YEARTO MONTH

-

지원 안됨

 

8 bytes 실수형 타입
LONG & RAW 타입LONG

CLOB

2 GB4 GB - 1Altibase CLOB으로 대체 가능

LONG RAW

BLOB

2 GB4 GB - 1

Altibase BLOB으로 대체 가능

RAW (size)

BLOB

2000 bytes

4 GB - 1

Oracle에서 MAX_STRING_SIZE=EXTENDED일 경우, 32767 bytes

Altibase BLOB으로 대체 가능

날짜 타입

 

 

 

 

 

DATE

DATE

  

Altibase DATE : 8 bytes. 범위는 1년 1월 1일부터 9999년 12월 31일. 년, 월, 일, 시, 분, 초, 마이크로초까지 저장 가능

Oracle DATE : 7 bytes. 범위는 BC 4712년 1월1일 ~ AD 9999년 12월 31일. 년,월,일,시,분,초까지 저장 가능

INTERVAL YEAR TO MONTH

-

  

Altibase 미 지원

INTERVAL DAY TO SECOND

-

  

Altibase 미 지원

TIMESTAMP WITH TIME ZONE

-

  

Altibase 미 지원

TIMESTAMP WITH LOCAL TIME ZONE

-

  

Altibase 미 지원

TIMESTAMP

TIMESATAMPDATE

 

이진 타입

BFILE

BLOB

최대 2G

 

RAW (size)

BLOB

 

 

LONG RAW

BLOB

 

 

Object 비교

지원하지 않음

Oracle

Altibase

CLUSTER

 

Altibase DATE로 대체 가능

Altibase DATE : 초 정보의 정밀도를 6자리(microsec)까지 표현 가능

Oracle TIMESTAMP : 초 정보의 정밀도를 9자리까지 표현 가능

* 참고 : Altibase의 TIMESTAMP는 사용자가 값을 입력할 수 없다.

대용량 타입



BLOB

 

BLOB(4 GB - 1) * (database block size)4 GB - 1

 

CLOBCLOB(4 GB - 1) * (database block size)4 GB - 1

 

NCLOBCLOB(4 GB - 1) * (database block size)4 GB - 1Altibase CLOB으로 대체 가능

BFILE

BLOB

4 GB4 GB - 1Altibase BLOB으로 대체 가능

ROWID 타입

 

ROWID- 

 

Altibase 미 지원

UROWID

-

  

Altibase 미 지원

Any 타입

ANYTYPE

-

 

  

Altibase 미 지원

ANYDATA-  Altibase 미 지원
ANYDATASET-  Altibase 미 지원
XML 타입

XMLType

-

 

  

Altibase 미 지원

URI Data Types-  Altibase 미 지원
URIFactory Package-  Altibase 미 지원
Spatial 타입SDO_GEOMETRYGEOMETRY 16 bytes ~ 100 MB
기본값 : 32,000 bytes
Altibase GEOMETRY으로 대체 가능
SDO_TOPO_GEOMETRY-  Altibase 미 지원
SDO_GEORASTER-  Altibase 미 지원
Media 타입ORDAudio-  Altibase 미 지원
ORDDicom-  Altibase 미 지원
ORDDoc-  Altibase 미 지원
ORDImage-  Altibase 미 지원
ORDVideo-  Altibase 미 지원
still_image_object_types-  Altibase 미 지원

 

Object 변환

...

Oracle Object들을 Altibase로 변환할 때 고려할 사항에 대해 기술한다.

 

Object 비교

...

 

분류

Oracle

Altibase

Schema Object











 

 

 

 

 

 

 

 

 

 











 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 






ANALYTIC VIEW미 지원
ATTRIBUTE DIMENSION미 지원

CLUSTER

미 지원

CONSTRAINT

지원

DATABASE LINK

지원

DATABASE TRIGGER

지원

DIMENSION지원하지

않음미 지원

EXTERNAL PROCEDURE LIBRARY

지원(C/C++만 가능)

HIERARCHY미 지원

INDEX-ORGANIZED TABLE

지원하지 않음미 지원

INDEX

B-TREE, R-TREE, Function based 지원(BITMAP, CLUSTER, Global Partitioned INDEX는 지원하지 않음미 지원)

INDEXTYPE지원하지

않음미 지원

JAVA 관련 객체

지원하지 않음

미 지원

JOIN GROUP미 지원

MATERIALIZED VIEW

지원

MATERIALIZED VIEW LOG

지원하지 않음

미 지원

MINING MODEL미 지원

OBJECT TABLE

지원하지 않음미 지원

OBJECT TYPE

지원하지 않음미 지원

OBJECT VIEW

지원하지 않음미 지원

OPERATOR지원하지

않음미 지원

PACKAGE

지원

SEQUENCE

지원

STORED FUNCTION/PROCEDURE

지원

SYNONYM

지원

TABLE

지원

VIEW

지원

ZONE MAP미 지원
Nonschema Object









 

 

 

 



CONTEXT지원하지

않음미 지원

DIRECTORY

지원

PARAMETER FILE

객체로서 지원하지 않음. altibase.properties 파일로 지원

PROFILE

지원하지 않음

EDITION미 지원
FLASHBACK ARCHIVEF미 지원
LOCKDOWN PROFILE미 지원

PROFILE

미 지원

RESTROE POINT미 지원

ROLE

지원

ROLLBACK SEGMENT미 지원

TABLESPACE

MEMORY, DISK, VOLATILE, TEMPORARY, UNDO 지원

TABLESPACE SET미 지원
UNIFIED AUDIT POLICY미 지원

USER

지원

 

CREATE TABLESPACE

...

Oracle의 Date Data Tablespace는 모두 Disk Tablespace입니다. Altibase 전환 시 CREATE DISK TABLESPACE 구문 을 이용하여 Disk Tablespace를 생성해야 합니다Tablespace이다. Altibase는 Memory Tablespace와 Disk Tablespace를 지원하므로 업무 특성에 맞게 구성할 수 있다.

 

DATA TABLESPACE

...

Oracle

Altibase

비고

BIGFILE|SMALLFILE

-

Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

DATAFILE File Specification

DATAFILE File Specification

 

MINIMUM EXTENT

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

BLOCKSIZE

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

LOGGING|NOLOGGING

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

FORCE LOGGING

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

DEFAULT Storage 구문

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

ONLINE|OFFLINE

-

AltibaseALTER TABLESPACE 구문으로 가능

OFFLINE의 경우, CREATE TABLESPACE 구문에서 지원하지 않으므로 변환 시 해당 옵션 삭제옵션을 삭제하고
ALTER TABLESPACE tablespace_name OFFLINE; 구문 추가

EXTENT MANAGEMENT LOCAL AUTOALLOCATE|DICTIONARYUNIFORM SIZE

-

 EXTENTSIZE

EXTENT 관리 방식은 지원하지 않고 EXTENTSIZE만 설정 가능

SEGMENT SPACE MANAGEMENT AUTO|MANUAL

SEGMENT MANAGEMENT AUTO|MANUAL

 

FLASHBACK ON|OFF

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

 

CREATE DATA TABLESPACE 변환 예제

...

Oracle

Altibase

Code Block
themeDJango
languagesql
 CREATE   TABLESPACE TESTDATA
DATAFILE   'testdata01.dbf'
SIZE   1024M
AUTOEXTEND   ON
NEXT   50M
MAXSIZE   UNLIMITED
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT   SPACE MANAGEMENT MANUAL
FLASHBACK ON; 
Code Block
themeDJango
languagesql
 CREATE   TABLESPACE TESTDATA
DATAFILE   'testdata01.dbf'
SIZE   1024M
AUTOEXTEND ON
NEXT   50M
MAXSIZE   UNLIMITED
SEGMENT MANAGEMENT MANUAL; 

 SEGMENT 절은 SEGMENT MANAGEMENT AUTO|MANUAL 절로 수정하고 그 외의 모든 절은 지원하지 않으므로 외 지원하지 않는 구문은 삭제

 

TEMPORARY TABLESPACE

...

Oracle

Altibase

비고

TABLESPACE GROUP

-

Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

EXTENT MANAGEMENT LOCAL AUTOALLOCATE|DICTIONARYUNIFORM SIZE

-

 EXTENTSIZE

EXTENT 관리 방식은 지원하지 않고 EXTENTSIZE만 설정 가능

 

CREATE TEMPORARY TABLESPACE 변환 예제

...

Oracle

Altibase

Code Block
themeDJango
languagesql
CREATE TEMPORARY TABLESPACE   tbs_temp_02 
TEMPFILE 'temp02.dbf' SIZE   5M AUTOEXTEND ON 
TABLESPACE GROUP   tbs_grp_01; 
Code Block
themeDJango
languagesql
CREATE TEMPORARY TABLESPACE   tbs_temp_02 
TEMPFILE   'temp02.dbf' SIZE 5M AUTOEXTEND ON; 

...

Altibase는 시스템에 의해 자동으로 Undo Tablespace를 관리 합니다관리한다. Undo Tablespace에 데이터 파일의 추가 및 크기 변경만 가능합니다가능하다.

 

CREATE UNDO TABLESPACE 변환 예제

...

Oracle

Altibase

Code Block
themeDJango
languagesql
CREATE UNDO TABLESPACE UNDOTBS2 
DATAFILE ‘undotbs2.dbf' 
SIZE 500M 
AUTOEXTEND ON 
NEXT 5M 
MAXSIZE UNLIMITED; 
Code Block
themeDJango
languagesql
ALTER TABLESPACE SYS_TBS_DISK_UNDO 
ADD DATAFILE 'undotbs2.dbf' 
SIZE 500M 
AUTOEXTEND ON 
NEXT 5M 
MAXSIZE UNLIMITED; 

 

CREATE TABLE

...

Altibase는 Temporary Table, Object Table, XMLType Table을 제공하지 않습니다. Altibase는 지원하지 않지만 Memory Table을 제공합니다. 기존의 Table 의 지원하므로 업무 특성을 파악하여 Memory Table 또는 Table과 Disk Table로 분리할 분리하여 테이블을 생성할 있습니다. 그러나 Memory Table 생성 시 Oracle에서 사용했던 CREATE TABLE 구문에 사용한 옵션들은 사용할 수 없습니다. 또한 TABLE 있다.

TABLE 생성 시 Segment 관련 내용을 지정할 경우에는 TABLESPACE 지정 -> PCTFREE/PCTUSED 지정 -> INITRANS/MAXTRANS 지정 -> Storage 절 -> Logging 절 순 으로 지정해 줘야 합니다순으로 지정해야 한다.

 

COLUMN DEFINITION 절

...

Oracle

Altibase

비고

SORT

-

ALTIBASE HDB는 Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

DEFAULT

DEFAULT

 

ENCRYPT

ENCRYPT

 

Constraint 구문

Constraint 구문

ALTIBASE HDB는 Altibase는 Constraint 지정 시 ENABLE/DISABLE 옵션, References 절의 ON DELETE SET NULL(ON DELETE CASCADE는 지원) 옵션을 제공하지 옵션은 지원하지 않으므로 삭제.
ALTIBASE HDB는 Altibase는 PRIMARY KEY, UNIQUE 지정 시 Using Index 절에는 Tablespace 절, Parallel 절, Logging 절, Force 절만 지정 가능하다. 즉 Index 이름 및 CREATE INDEX 절은 제공하지 지원하지 않는다.

Ref Constraint 구문

-

ALTIBASE HDB는 REF컬럼을 Altibase는 REF 컬럼을 지원하지 않으므로 변환 시 해당 옵션 삭제

ORGANIZATION

-

ALTIBASE HDB는 Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

CLUSTER-Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

COMPRESS|NOCOMPRESS

COMPRESS|NOCOMPRESS

 

Altibase는 지정하지 않으면 NOCOMPRESS이므로 변환 시 NOCOMPRESS 옵션은 삭제

Column의 크기 지정 시 Byte 키워드 명시 가능

Column의 크기 지정 시 Byte 키워드 제공하지 않음미지원

Oracle은 Column의 크기 지정 시 Byte 키워드를 명시할 수 있지만, ALTIBASE HDB는 크기 지정 시 Byte를 제공하지 Altibase는 지원하지 않음.
ex) ORACLE Oracle : c1 VARCHAR2(10 Byte) => ALTIBASE Altibase : c1 VARCHAR2(10)

 PRIMARY KEY, UNIQUE Constraint을 지정할 때 지정 시 USING INDEX 절을 이용하여 INDEX 속성을
지정할 때 ALTIBASE HDB는 속성을 지정할 경우, Altibase는 TABLESPACE 절, PARALLEL/NOPARALLEL 절, LOGGING/NOLOGGING 절만 지정이 가능합니다가능하다.
    , storage 관련 속성은 지정할 수 없습니다없다.

 

SEGMENT ATTRIBUTES 절

...

Oracle

Altibase

비고

TABLESPACE

TABLESPACE

 

PCTFREE

PCTFREE

 

PCTUSED

PCTUSED

 

INITRANS

INITRANS

 

MAXTRANS

MAXTRANS255를 120으로 변경한다.Oracle의 MAXTRANS는 Deprecate 되었고, 항상 그 값은 255이다. 반면에 Altibase의 MAXTRANS 값을 최대 120까지 지정할 수 있기 때문에 120으로 변경한다.

Oracle의 기본/최대값 : 255, Altibase의 기본/최대값 : 120

Altibase로 변환 시 이 파라미터 생략 또는 120으로 변경한다. 참고로 Oracle의 MAXTRANS 파라미터는 deprecated 상태이다.

LOGGING|NOLOGGING

LOGGING|NOLOGGING

 

 

STORAGE 절

...

Oracle

Altibase

비고

INITIAL

INITEXTENTS

Bytes bytes -> extent 개수로 변경

NEXT

NEXTEXTENTS

Bytes bytes -> extent 개수로 변경

MINEXTENTS

MINEXTENTS

 

MAXEXTENTS

MAXEXTENTS

 

PCTINCREASE

-

Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

FREELISTS

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

FREELIST

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

OPTIMAL

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

BUFFER POOL

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

 

LOB STORAGE 절

...

Oracle

Altibase

비고

TABLESPACE

TABLESPACE

Altibase의 LOB STORAGE절은 TABLESPACE만 지정 가능

STORAGE

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

CHUNK

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

PCTVERSION

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

RETENTION

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

FREEPOOLS

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

CACHE

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

STORAGE IN ROW

-

AltibaseAltibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

LOGGING|NOLOGGING

LOGGING|NOLOGGING

 

 

TABLE PARTITION 절

...

Oracle

Altibase

비고

PARTITION BY RANGE

PARTITION BY RANGE

 

PARTITION BY HASH

PARTITION BY HASH

 

PARTITION BY LIST

PARTITION BY LIST

 

Composite partitioning 구문

-

Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

 

TABLE PROPERTIES 절

...

Oracle

Altibase

비고

ENABLE|DISABLE ROW MOVEMENT

ENABLE|DISABLE ROW MOVEMENT

Partitioned TABLE에만 지원

NOPARALLEL|PARALLEL

NOPARALLEL|PARALLEL

 

ENABLE|DISABLE VALIDATE|NOVALIDATE

-

Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

 

CREATE TABLE 변환 예제

...

Oracle

Altibase

Code Block
themeDJango
languagesql
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 ("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" ;
Code Block
themeDJango
languagesql
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 ("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

...

 삭제
 

...

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 절 순으로 지정

...

 

CREATE INDEX

...

Altibase는 BTREE와 RTREE INDEX만 제공하고 Altibase가 지원하는 인덱스 종류는 BTREE, RTREE 및 Function-based INDEX이고, BITMAP, CLUSTER, Function based, REVERSE, Global partitioned INDEX를 제공하지 않습니다. 또한, INDEX는 지원하지 않는다.

Altibase INDEX 생성 시 segment 관련 내용 내용을 지정할 경우에는 경우, TABLESPACE 지정 -> PARALLEL/ NOPARALLEL 지정 -> LOGGING/NOLOGGING 지정 -> storage 절 순으로 지정해야 합니다한다.

Oracle

Altibase

비고

TABLESPACE

TABLESPACE

 

LOGGING|NOLOGGING

LOGGING|NOLOGGING

 

NOPARALLEL|PARALLEL

NOPARALLEL|PARALLEL

 

COMPUTE STATISTICS

-

ALTIBASE는 Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

REVERSE

-

ALTIBASE는 Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

SORT|NOSORT

-

ALTIBASE는 Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

ONLINE

-

ALTIBASE는 Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

COMPRESS|NOCOMPRESS

-

ALTIBASE는 Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

PCTFREE, PCTUSED,

-

ALTIBASE는 Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

INITRANS

INITRANS



|MAXTRANS

MAXTRANS

Oracle의 기본/최대값 : 255, Altibase의 기본/최대값 : 30

Altibase로 변환 시 이 파라미터 생략 또는 30으로 변경한다. 참고로 Oracle의 MAXTRANS

ALTIBASE는 최대 30까지 지원

파라미터는 deprecated 상태이다.

Storage 구문

TABLE의 Storage 구문과 동일

 

 

CREATE INDEX 변환

...

예제

...

Oracle

Altibase

Code Block
themeDJango
languagesql
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" ;
Code Block
themeDJango
languagesql
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) ;
1.
 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의 

...

개수로 

...

수정
TABLESPACE "USERS"
INITRANS 2 MAXTRANS 30
STORAGE ...

...

: segment 관련 내용 지정할 경우에는 TABLESPACE 지정 -> PARALLEL/NOPARALLEL 지정 -> LOGGING/NOLOGGING 지정 -> storage 절 순으로 지정

...

 

CREATE VIEW

...

Altibase의 VIEW는 Oracle의 VIEW 생성 구문과 동일하게 CREATE OR REPLACE VIEW 구문으로 생성합니다생성한다.

Oracle

Altibase

비고

WITH READ ONLY

WITH READ ONLY

ALTIBASE는 WITH READ ONLY 옵션의 VIEW만 제공하므로 해당 옵션이 default임

[DOCKI:NO] FORCE

[DOCKI:NO] 이 옵션을 지정하지 않으면 updatable view가 생성된다.

NO FORCE

NO FORCE

 

WITH CHECK OPTION

-

ALTIBASE는 지원하지않으므로 Altibase는 지원하지 않으므로 변환 시 해당옵션 해당 옵션 삭제

XMLType view 구문

-

ALTIBASE는 지원하지않으므로 Altibase는 지원하지 않으므로 변환 시 해당옵션 해당 옵션 삭제

Object view 구문

-

ALTIBASE는 지원하지않으므로 Altibase는 지원하지 않으므로 변환 시 해당옵션 해당 옵션 삭제

 

CREATE TRIGGER

...

Altibase의 TRIGGER는 Oracle의 TRIGGER 생성 구문과 동일하게 CREATE OR REPLACE TRIGGER 구문으로 생성합니다. 이중화로 인해 반영되는 데이블 데이터의 생성한다.

Altibae 이중화를 사용할 경우, 이중화에 의해 반영되는 데이터 변경은 트리거 동작을 발생시키지 않습니다. Altibase는 TRIGGER 대상 TABLE에 LOB 컬럼을 포함할 수 없습니다.않으므로 비지니스 로직에서 이런 사항이 고려되어야 한다.

Oracle

Altibase

비고

CREATE OR REPLACE TRIGGER

CREATE OR REPLACE TRIGGER

 

BEFORE|AFTER|INSTEAD OF

BEFORE|AFTER

ALTIBASE는 INSTEAD OF는 지원하지 않음

|INSTEAD OF

 

DML 이벤트 구문

DML 이벤트 구문

DML 이벤트 구문은 Oracle과 동일

DDL 이벤트 구문

-

ALTIBASE는 Altibase는 DDL TRIGGER를 제공하지 지원하지 않음

WHEN 조건

WHEN 조건

 

FOR EACH ROW

FOR EACH ROW

 

REFERENCING

REFERENCING

DELETE 이벤트에서 NEW는 REFERENCING 할 수 없고, INSERT 이벤트에서는 OLD는 REFERENCING 할 수 없다. OLD/NEW에 alias를 줄 경우 OLD/NEW는 Altibase에서는 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)

 

CREATE SEQUENCE

Altibase의 CREATE SEQUENCE 구문은 Oracle과 동일합니다. 다만, Oracle에서 제공하는 ORDER, NOORDER 옵션은 지원하지 않습니다
또한, ORACLE SEQUENCE의 maxvalue 값은 28자리 정수까지 지정할 수 있지만, ALTIBASE SEQUENCE의 maxvalue는 (-9223372036854775807)부터 9223372036854775806까지의 범위 내에서 지정할 수 있습니다.

 

 

 

CREATE SEQUENCE

...

Altibase의 SEQUENCE는 Oracle의 SEQUENCE 생성 구문과 동일하게 CREATE SEQUENCE 구문으로 생성한다.

Oracle

Altibase

비고

CREATE SEQUENCE

CREATE SEQUENCE

 

START WITH

START WITH

 

INCREMENT BYINCREMENT BY 
MAXVALUE|NOMAXVALUEMAXVALUE|NOMAXVALUE

Oracle의 maxvalue는 28자리 정수까지 지정 가능

Altibase의 maxvalue는 -9223372036854775805 ~ 9223372036854775806 범위 내에서 지정 가능

MINVALUE|NOMINVALUEMINVALUE|NOMINVALUE 
CYCLE|NOCYCLECYCLE|NOCYCLE 
CACHE|NOCACHECACHE|NOCACHE 
ORDER|NOORDER Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제
KEEP|NOKEEP Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제
SESSION|GLOBAL Altibase는 지원하지 않으므로 변환 시 해당 옵션 삭제

 

CREATE SYNONYM

...

Altibase의 CREATE SYNONYM 구문은 Oracle과 동일합니다.동일하다. 단, EDITIONABLE|NONEDITIONABLE 옵션은 지원하지 않는다.

 

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, UNIQUE Constraint, INDEX 생성 중 하나만 가능합니다가능하다. 즉, INDEX를 생성한 컬럼에 PK Constraint를 지정할 수 없습니다없다.

 

 

SQL 변환

...

Numeric Functions

Math Function

...

Oracle

Altibase

비고

ABS(n)

ABS절대값을 (n)

n의 절대 값을 반환

ACOS(n)

ACOS(n)

n의 역코사인(arc cosine) 값을 반환

ASIN(n)

ASIN(n)

n의 역사인(arc sine) 값을 반환

ATAN(n)

ATAN(n)

n의 역탄젠트(arc tangent) 값을 반환

ATAN2(n1, n2)

ATAN2ATAN2(nn1, mn2)은 n

n1/m의 n2의 역탄젠트(arc tangent) 값을 라디안(radian)으로 반환

AVG

AVG

Row의expr 값의 평균값을 구한다

BITAND

BITAND

인수1과 인수2의 BITAND(expr1, expr2)

BITAND(expr1, expr2)

expr1과 expr2의 비트에 대한 and 연산을 수행하여 정수를 반환

CEIL(n)

CEIL(n)

인수에서 n에서 지정한 수치를 올림 하여 올림하여 정수를 반환

COS(n)

COS(n)

n의 코사인값을 코사인 값을 반환

COSH(n)

COSH(n)

n의 쌍곡 코사인 값을반환

COUNT

COUNT

Row의 개수를 세는 함수, 분석함수이다

DENSE_RANK

DENSE_RANK

DENSE_RANK 함수는 RANK 함수처럼 결과 집합 또는 파티션의 특정 멤버를 기준으로 순위를 매긴다. 그러나 중복 순위 발생 후에 건너뛰지 않고 다음 순위가 매겨진다. 반환 값의 타입은 BIGINT 이다.

EXP

EXP

e의n제곱 값을 반환

EXP(n)

EXP(n)

e의 n제곱 값을 반환

FLOOR(n)

FLOOR지정한 숫자보다 (n)

n 보다 작거나 같은 가장 큰 정수 반환

LAG

LAG

정렬된 각 파티션 내에서 현재 행을 기준으로 이전의 offset 번째 행의 값을 구하는 함수이다

LN

LN

입력한 자연 로그값 구한다

LOG(N,MLN(n)

LN(n)

n의 자연 로그 값을 반환

LOG(n2, n1)

LOG(Nn2, Mn1)

밑을 n으로 하는 m의 로그값을 밑이 n2인 n1의 로그 값을 반환

MOD(n2, n1)

MOD(n2, n1)

n2을 n2를 n1으로 나눈 나머지 값을 반환

NANVL

N/A

입력 값n2가 수치가 아니면 대체값n1을 반환

NTH_VALUE

NTH_VALUE

파티션 또는 윈도우 내에서 offset 번째 행의 값을 구하는 함수이다

POWER

POWER

n2의 1n1승 값을 반환

ROUND

ROUND

n값을 (n2, n1)

미 지원

n2가 NaN이면 대체 값 n1을 반환, NaN가 아니면 n2를 반환

POWER(n2, n1)

POWER(n2, n1)

n2의 n1 제곱을 반환

REMAINDER(n2, n1)MOD(n2, n1)n2를 n1으로 나눈 나머지를 반환

ROUND(number) 

ROUND(number)

n값의 소수점 이하를 integer를 기준으로 반올림하여 반환

ROW_NUMBER

ROW_NUMBER

ROW_NUMBER 함수는 결과 집합 또는 파티션의 특정 멤버를 기준으로 연속적인 유일한 수를 부여한다. 1 부터 시작하여 ORDER BY 식에 명시된 순서대로 부여된다.

SIGN

SIGNSIGN(n)

SIGN(n)

n의 부호를 반환

SIN(n)

SIN(n)

n의 사인값을 사인 값을 반환

SINH(n)

SINH(n)

n의 쌍곡선 사인을 반환

SQRT(n)

SQRT(n)

n의 제곱근을 반환

STDDEV

STDDEV

STDDEV 는 입력된 expression 들의 표준편차를 반환한다.

TAN

TAN

N의탄젠트 값을반환

TANH

TANH

N의쌍곡선탄젠트TAN(n)

TAN(n)

n의 탄젠트 값을 반환

TANH(n)

TANH(n)

n의 쌍곡선 탄젠트(hyperbolic tangent)값을 반환

VARIANCE

VARIANCE

VARIANCE 는 입력된 expression 들의 변동량을 반환한다.

 

TRUNC(number) TRUNC(number)n1에서 소수점 자리 파라미터 n2 이하를 절삭
WIDTH_BUCKET미 지원동일한 넓이를 갖는 히스토그램을 생성

 

Character Functions Returning Character Values

...

변환한다입력된 문자열을 대문자로 지정된 자릿수N으로부터EXPR1을 채우고, 왼편에 남은 공간에 expr1을 채운다입력 문자열을 sorting하여 string을 sting expr을

Oracle

Altibase

비고

CHR

CHR

입력 ASCII 코드 값에 해당하는 문자를 반환

CONCAT

CONCAT

char1과 char2를 연결하여 반환

CHRINITCAP

CHR

number에 해당하는 문자를 구한다.

NCHR

NCHR

유니코드 문자를 변환한다

INITCAP

입력 문자열 중에서 각 단어의 첫 글자를 대문자로 변환하여 반환

LOWER

LOWER

입력된 문자열을 소문자로

UPPER

UPPER

변환하여 반환

LPAD

LPAD

expr1의 왼쪽에 expr2를 전체 길이가 n이 될 때까지 반복적으로 삽입하여 그 결과를 반환

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 문자 길이만큼 문자열을 추출하여 반환

REPLACE

REPLACE2

Parameter로 주어지는 첫번째 문자열에서, 두번째 문자열을 모두 세번째 문자열로바꾼 후 결과를 반환

REGEXP_REPLACE/SUBSTR

N/A

지정한 정규 표현을 만족하는 부분을 치환, 반환

INITCAP

INITCAP

입력 문자열 중에서 각 단어의 첫 글자를 대문자로 변환한다

NLS_INITCAP

N/A

입력문자열 중에서 각 단어의 첫 글자를 대문자로 변환한다(다국언어 지원)한다

NLSSORT

N/A

expr1의 왼쪽에 expr2와 같은 문자가 있으면 삭제하여 그 결과를 반환

NCHR

NCHR

국가 문자 집합(national character set)에서 n 값에 해당하는 문자를 반환

NLS_INITCAP

미 지원

입력 문자열에서 각 단어의 첫 글자를 대문자로 변환하여 반환

NLS_LOWER미 지원모든 문자를 소문자로 변환하여 반환
NLS_UPPER미 지원입력 문자열을 모두 대문자로 변환하여 반환

NLSSORT

미 지원

입력 문자열을 정렬하여 반환

REGEXP_REPLACE

REGEXP_REPLACE

지정한 정규 표현을 만족하는 부분을, 지정한 다른 문자열로 변환하여 반환

REGEXP_SUBSTRREGEXP_SUBSTR지정한 정규 표현을 만족하는 부분 문자열을 반환

REPLACE

REPLACE2

파라미터의 첫 번째 문자열에서, 두 번째 문자열을 모두 세 번째 문자열로 바꾼 후 결과를 반환

RPAD

RPAD

expr1의 오른쪽에 expr2를 전체 길이가 n이 될 때까지 반복적으로 삽입하여 그 결과를 반환

RTRIM

RTRIM

expr1의 오른쪽에 expr2와 같은 문자가 있으면 삭제하여 그 결과를 반환

SOUNDEX미 지원char의 음성 표현을 가지는 문자열을 반환

SUBSTR

SUBSTR

SUBSTRING

expr에서 start번째 문자부터 length 길이 만큼의 문자열을 반환

TRANSLATETRANSLATEfrom_string에서 각 문자를 to_string 안의 대응하는 문자로 치환하여 반환

TO_CHAR

TO_CHAR

CHAR 타입으로 반환

TREAT

N/A

인수의 선언형을 변경해준다

NLS_CHARSET_DECL_LEN

N/A

NCHR열의 선언된 폭을 반환

NLS_CHARSET_ID

N/A

문자셋 이름에 상응하는 ID번호를 반환

TRANSLATE ... USING미 지원char를 database character set과 national character set 간에 지정된 문자 집합으로 변환하여 반환
TRIMTRIMexpr2에서 찾을 수 있는 모든 문자를 expr1의 처음과 끝에서 제거하여 그 결과를 반환
UPPERUPPER모든 문자를 대문자로 변환하여 반환

 

Character Functions Returning Number Values

...

char대신 바이트 단위로 길이를 계산한다정규표현 최초의 위치를

Oracle

Altibase

비고

ASCIIASCII주어진 char의 char에서 첫 문자의 아스키 ASCII 값에 상응하는10진수 상응하는 10진수 값을 반환
INSTRINSTR문자열 중에서 지정한 문자가 처음 나타나는 위치를 숫자로 반환
LENGTH

CHAR_LENGTH

CHARACTER_LENGTH

LENGTH

인수 char의 길이를 반환

LENGTHB

LENGTHB

REGEXP_COUNTREGEXP_COUNT문자열에서 pattern_expr이 발생한 횟수를 반환
REGEXP_INSTRREGEXP_INSTR지정한 조건(정규 표현)을 만족하는 부분의 최초 위치(무슨 문자인지)를 반환

 

Character Set Functions

...

Oracle

Altibase

비고

NLS_CHARSET_DECL_LEN

NLS_CHARSET_ID

NLS_CHARSET_NAME

미 지원database character set ID 및 이름 반환

 

...

Collation Functions

...

Oracle

Altibase

비고

(use +)

(use +)

일자 date에서 integer를 더한 날짜가 반환

(use - )

(use -)

일자 Date 에서 integer 를 뺀 날짜가

COLLATION

NLS_COLLATION_ID

NLS_COLLATION_NAME

미 지원데이터 정렬 설정에 대한 정보 반환

 

Datetime Functions

...

사용자가 지정한 폼을 갖는 varchar2 형식의 Data로 NUMBER(TO_CHAR())지정된 형식인 number형식으로 DATE지정된 형식인 date형식으로 DSINTERVAL

Oracle

Altibase

비고

+, - 연산+, -, DATEADDdate의 date_field_name부분을 number 만큼 증가 또는 감소 시켜 그 결과를 반환

ADD_MONTHS

ADD_MONTHS

일자 date에 특정 개월 수integer를 수 integer를 더한 값을 반환

CURRENT_DATE

CURRENT_DATE

현재 세션의 날짜 정보를 date 형으로 반환

CURRENT_TIME

N/A

현재 세션의 시간대를 기준으로 현재 시간을 출력한다.

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP

현재 세션의 날짜와 시간정보를 시간 정보를 반환 (* CURRENT_DATE의 alias임)

DBTIMEZONEDB_TIMEZONE데이터베이스 time zone 값을 반환

EXTRACT(datetime)

EXTRACT(datetime)

DATEPART

날짜/시간 또는 interval 표현식에서 지정된 날짜/시간 필드의 값을 추출하여 반환

FROM_TZ미 지원

timestamp 값과 time zone을 TIMESTAMP WITH TIME ZONE 값으로 변환

LAST_DAY

LAST_DAY

해당날짜가 해당 날짜가 속한 달의 마지막 날짜를 반환

LOCALTIMESTAMP

미 지원

세션 시간대의 현재 날짜와 시간을 TIMESTAMP 데이터 유형 값으로 반환

MONTHS_BETWEEN

MONTHS_BETWEEN

date1과 date2 사이의 개월 수를 반환

NEW_TIME

CONV_TIMEZONE

date,zone1시간대를 zone2 시간대로 출력한다미 지원

timezone1 시간대의 날짜와 시간을 timezone2 시간대의 날짜와 시간으로 변환하여 반환

NEXT_DAY

NEXT_DAY

해당일을 기준으로 명시된 요일의 다음 날짜를 반환

ROUND

ROUND주어진 날짜 이후의 가장 가까운 지정 요일을 반환

NUMTODSINTERVAL

NUMTODSINTERVAL

TO_INTERVAL

n을 INTERVAL DAY TO SECOND 문자로 변환
NUMTOYMINTERVALTO_INTERVALn을 INTERVAL YEAR TO MONTH 문자로 변환
ORA_DST_AFFECTED미 지원 
ORA_DST_CONVERT미 지원 
ORA_DST_ERROR미 지원 

ROUND(date)

ROUND(date)

지정된 단위로 반올림한 날짜 반환TRUNC

SESSIONTIMEZONE

TRUNC

지정된 단위로 잘라서 날짜 반환

EXTRACT(datetime)

EXTRACT(datetime)

특정 날짜, 시간 값이나 날짜 값 표현식으로부터 지정된 날짜 영역의 값을 추출 후 반환

LOCALTIMESTAMP

DB_TIMEZONE

timestamp의 현재 날짜와 시각을 출력SESSION_TIMEZONE현재 세션의 시간대(time zone)을 반환
SYS_EXTRACT_UTC미 지원협정 세계 시간 UTC(Coordinated Universal Time—formerly Greenwich Mean Time)를 반환
SYSDATESYSDATE데이터베이스가 있는 OS의 날짜와 시간을 반환

SYSTIMESTAMP

SYSTIMESTAMP

데이터베이스가 있는 시스템의 시스템 날짜를 TIMESTAMP WITH TIME ZONE 유형으로 반환

MONTHS_BETWEEN

MONTHS_BETWEEN

일자 date1과 date2 사이의 시간대로 출력

TO_CHAR(datetime)TO_CHAR(datetime)지정된 포맷의 VARCHAR 데이터 타입 값으로 변환
TO_

TO_NUMBER(TO_CHAR())

DSINTERVAL미 지원인수를 INTERVAL DAY TO SECOND 데이터 타입 값으로 변환
TO_TIMESTAMPTO_DATEchar를 TIMESTAMP 데이터 타입 값으로 변환
TO_

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부분을  number  만큼 증가시켜 그  결과를  반환

 

TIMESTAMP_TZ미 지원char를 TIMESTAMP WITH TIME ZONE 데이터 타입 값으로 변환
TO_YMINTERVAL미 지원문자열을 INTERVAL YEAR TO MONTH 데이터 타입 값으로 변환

TRUNC(date)

TRUNC(date)

날짜를 지정된 단위로 잘라서 반환

TZ_OFFSET미 지원문장이 실행된 일자에 근거한 인수에 상응하는 time zone offset을 반환

 

General Comparison Functions

...

Oracle

Altibase

비고

GREATEST

GREATEST

하나 이상의 인수 중에서 가장 큰 값을 반환

LEAST

LEAST

하나 이상의 인수 expr의 리스트 중에서 가장 작은 값을 반환

 

...

Conversion Functions

...

Oracle

Altibase

비고

ASCIISTRASCIISTR문자열의 ASCII 문자열을 반환
BIN_TO_NUMBIN_TO_NUM비트(2진수) 벡터를 동등한 수치(10진수)로 변환

CAST

CAST

Data형식을 변환

한 데이터 타입을 다른 데이터 타입으로 변환

CHARTOROWID미 지원문자 타입의 값을 ROWID 형으로 변환
COMPOSE미 지원정규화된 형태의 유니코드를 반환

CONVERT

CONVERT

문자열을 지정된 문자 세트를 변환

RAWTOHEX

N/Acharacter set으로 변환

DECOMPOSE미 지원

모든 데이터 유형의 문자열을 인수로 사용하여 입력과 동일한 문자 집합으로 분해된 유니코드 문자열을 반환

HEXTORAW

미 지원

16진수를 RAW 데이터 타입 값으로 변환

NUMTODSINTERVAL

NUMTODSINTERVAL

TO_INTERVAL

n을 INTERVAL DAY TO SECOND 데이터 타입 값으로 변환
NUMTOYMINTERVALTO_INTERVALn을 INTERVAL YEAR TO MONTH 데이터 타입 값으로 변환

RAWTOHEX

미 지원

RAW를 16진수의 문자로 변환

HEXTORAW

N/A

16진수를 raw값으로 변환

RAWINTOCHAR

N/A

rowid 값을 VARCHAR2형식으로 변환

SCN TO TIMESTAMP

N/A

RAWTONHEX미 지원RAW를 NVARCHAR2 형태의 16진수로 변환

RAWIDTOCHAR

미 지원

RAWID 값을 VARCHAR2 형식으로 변환

ROWIDTONCHAR미 지원RAWID 값을 NVARCHAR2 형식으로 변환

SCN_TO_TIMESTAMP

미 지원

인수를 시스템 변경 번호(SCN)로 변환

TIMESTAMP_TO_SCN미 지원

TIMESTAMP 값을 인수로 받아 해당 TIMESTAMP와 연관된 대략적인 시스템 변경 번호(SCN)를 반환

TO_BINARY_DOUBLE

N/A미 지원

인수를 배정밀도(double-precision) 부동소수점 숫자로 변환

TO_BINARY_FLOAT미 지원인수를 단순정밀도(single-precision) 부동소수점 숫자로 변환
TO_BLOB(bfile)미 지원BFILE을 BLOB으로 변환
TO_BLOB(raw)미 지원RAW를 BLOB으로 변환
TO_CHAR(bfile|blob)미 지원BFILE 및 BLOB을 database character set으로 변환
TO_CHAR(character)미 지원NCHAR, NVARCHAR2, CLOB

N/A

nclob값을 clob값으로 변환

TO_LOB

N/A

long또는 long raw 값을 lob값으로 변환

COLEASE

COLEASE

나열된 값을 순차적으로 체크하여 NULL 이 아닌 첫번째 인수를 반환

LNNVL

N/A

조건의 한쪽 또는 양쪽 연산자가 NULL이 존재할 경우에, 조건문을 평가하기 위한 방법

, 또는 NCLOB 데이터를 database character set으로 변환
TO_CHAR(datetime)TO_CHAR(datetime)날짜형 데이터 타입의 datetime 또는 interval 값을 지정된 포맷의 VARCHAR 데이터 타입의 값으로 변환
TO_CHAR(number)TO_CHAR(number)숫자형 데이터 타입의 값을 VARCHAR 데이터 타입의 값으로 변환
TO_CLOB(bfile|blob)미 지원BFILE 및 BLOB을 database character set으로 변환하고 CLOB값으로 변환
TO_CLOB(character)미 지원LOB 컬럼에 있는 NCLOB 값 또는 다른 문자열을 CLOB값으로 변환
TO_DATETO_DATEchar를 날짜 데이터 타입의 값으로 변환
TO_DSINTERVAL미 지원인수를 INTERVAL DAY TO SECOND 데이터 타입 값으로 변환
TO_LOB미 지원LONG 또는 LONG ROW 값을 LOB값으로 변환
TO_MULTI_BYTE미 지원

해당 multibyte 문자로 변환된 모든 single-byte 문자로 char를 반환

TO_NCHAR(character)TO_NCHAR(character)database character set의 문자열, CLOB, NCLOB 값을 national character set으로 변환
TO_NCHAR(datetime)TO_NCHAR(datetime)날짜형 데이터 타입의 datetime 또는 interval 값을 national character set으로 변환
TO_NCHAR(number)TO_NCHAR(number)n을 national character set으로 변환
TO_NCLOB미 지원CLOB값을 NCLOB값으로 변환
TO_NUMBERTO_NUMBERexpr을 NUMBER 데이터 타입의 값으로 변환
TO_SINGLE_BYTE미 지원

해당 single-byte 문자로 변환된 모든 multibyte 문자로 char를 반환

TO_TIMESTAMPTO_DATEchar를 TIMESTAMP 데이터 타입의 값으로 변환
TO_TIMESTAMP_TZ미 지원char를 TIMESTAMP WITH TIME ZONE 데이터 타입의 값으로 변환
TO_YMINTERVAL미 지원문자열을 INTERVAL YEAR TO MONTH 데이터 타입의 값로 변환
TREAT미 지원객체 지향 타입 변환을 위한 함수로 슈퍼타입(부모 객체)을 서브타입(자식 객체)으로 변환
UNISTRUNISTR유니코드 문자열을 표현하거나 변환
VALIDATE_CONVERSION미 지원expr이 지정된 데이터 유형으로 변환 될 수 있는지 여부를 판별

 

Large Object Functions

...

Oracle

Altibase

비고

BFILENAME

미 지원

Server File System의 물리 LOB BinaryFile과 연관된 BFILE Locator를 반환

EMPTY_BLOB/EMPTY_CLOB

EMPTY_BLOB/EMPTY_CLOB

LOB변수를 초기화하는 함수

 

Collection Functions

...

Oracle

Altibase

비고

CARDINALITY
COLLECT
POWERMULTISET
POWERMULTISET_BY_CARDINALITY
SET

미 지원

중첩된 테이블과 varray에서 수행되는 함수

 

Hierarchical Functions

...

Oracle

Altibase

비고

SYS_CONNECT_BY_PATH

SYS_CONNECT_BY_PATH

최상위 노드에서 현재 노드까지의 칼럼 값 경로를 구하는 함수

 

Data Mining Functions

...

Oracle

Altibase

비고

CLUSTER_DETAILS
CLUSTER_DISTANCE
CLUSTER_ID
CLUSTER_PROBABILITY
CLUSTER_SET
FEATURE_COMPARE
FEATURE_DETAILS
FEATURE_ID
FEATURE_SET
FEATURE_VALUE
ORA_DM_PARTITION_NAME
PREDICTION
PREDICTION_BOUNDS
PREDICTION_COST
PREDICTION_DETAILS
PREDICTION_PROBABILITY
PREDICTION_SET

미 지원

데이터 마이닝 관련 함수

 

XML Functions

...

Oracle

Altibase

비고

DEPTH
EXISTSNODE
EXTRACT (XML)
EXTRACTVALUE
PATH
SYS_DBURIGEN
SYS_XMLAGG
SYS_XMLGEN
XMLAGG
XMLCAST
XMLCDATA
XMLCOLATTVAL
XMLCOMMENT
XMLCONCAT
XMLDIFF
XMLELEMENT
XMLEXISTS
XMLFOREST
XMLISVALID
XMLPARSE
XMLPATCH
XMLPI
XMLQUERY
XMLROOT
XMLSEQUENCE
XMLSERIALIZE
XMLTABLE
XMLTRANSFORM

미 지원

XML 관련 함수

 

JSON Functions

...

Oracle

Altibase

비고

JSON_QUERY
JSON_TABLE
JSON_VALUE
JSON_ARRAY
JSON_ARRAYAGG
JSON_OBJECT
JSON_OBJECTAGG
JSON_DATAGUIDE

미 지원

JSON 관련 함수

 

Encoding and Decoding Functions

...

Oracle

Altibase

비고

DECODE

DECODE

프로그래밍언어의 IF 문을 SQL , PL/SQL 안으로 사용하기 위한 함수

DUMP

DUMP

지정한 data의 위치와 길이 등을 지정한 형식으로 반환

ORA_HASH

미 지원

주어진 표현에 대한 해쉬 값을 계산하는 함수

STANDARD_HASH

미 지원

기본 해쉬 값 계산

VSIZE

OCTET_LENGTH

입력된 문자열의 길이를 바이트 단위로 반환

 

NULL-Related Functions

...

NULL (공백으로 반환)값을

Oracle

Altibase

비고

COALESCE

COALESCE

나열된 값을 순차적으로 체크하여 NULL이 아닌 첫 번째 인수를 반환

LNNVL

LNNVL

조건의 결과가 FALSE 또는 NULL인 경우 TRUE를 반환하고, TRUE인 경우 FALSE를 반환

NANVL미 지원부동소수점 NaN 값만 감지해서 다른 값으로 치환

NULLIF

NULLIF

expr1과 expr2 가 같으면, null 값을 반환

NVL

NVL

쿼리의 결과에서

NULL값을 치환

NVL2

NVL2

expr1이 NULL이 아니면 expr2를 반환하고 NULL 이면 NULL이면 expr3를 반환

 

...

Environment and Identifier Functions

...

Oracle

Altibase

비고

DECODE

DECODE

프로그래밍언어의 IF 문을 SQL , PL/SQL 안으로 끌어들이는 함수

DUMP

DUMP

지정한 Data의 위치와 길이등을 지정한 형식으로 반환

VSIZE

SIZEOF

expr 의 내부 표현에서 바이트 수를 반환

 

Large Object Function

Oracle

Altibase

비고

EMPTY_BLOB/EMPTY_CLOB

N/A

LOB변수를 초기화하는 함수

BFILENAME

N/A

Server File System의 물리 LOB BinaryFile과 연관된 BFILE Locator를 반환

 

Analyze Function

Oracle

Altibase

비고

MAX

MAX

인수 중에 CON_DBID_TO_ID
CON_GUID_TO_ID
CON_NAME_TO_ID
CON_UID_TO_ID
ORA_INVOKING_USER
ORA_INVOKING_USERID

미 지원 
SYS_CONTEXT

SYS_CONTEXT

현재 세션에 접속한 환경 정보(context)를 namespace로 하여 관련된 파라미터의 결과 값을 반환

SYS_GUID

SYS_GUID_STR

16 바이트로 구성된 전 세계적으로 고유한 식별자(RAW값)를 생성하고 반환

SYS_TYPEID

미 지원

식별자의 typeid를 반환

UID

USER_ID

세션 사용자를 고유하게 식별하는 정수를 반환

USER

USER_NAME

세션 사용자의 이름을 반환

USERENV

SESSION_ID

USERENV는 세션에 대한 정보를 반환

SESSION_ID는 사용자의 SESSION_ID를 반환

 

Aggregate/Analytic Functions

...

중에 순위N/A

Oracle

Altibase

비고

AVG

AVG

지정된 컬럼에 대한 조건을 만족하는 행 중에서 Null을 제외한 평균을 반환

CORRCORR수치 쌍에 대한 상관 계수를 반환
COUNT

COUNT

쿼리에 의해 반환된 행의 수를 반환

COVAR_POP

COVAR_POP

number 조합의 세트의 모집단 공분산을 반환

COVAR_SAMP

COVAR_SAMP

number 쌍의 세트의 표본 공분산을 반환

CUME_DIST

CUME_DIST

값의 그룹에 있는 값의 누적 분포치를 계산

DENSE_RANK

DENSE_RANK

ORDER BY절에 사용된 컬럼이나 표현식에 대하여 순위를 부여하는데 RANK와

달리 동일 순위 다음의 순위는 동일 순위의 수와 상관 없이 1씩 증가

FIRST

FIRST

집계 함수(MIN, MAX 등)와 같이 써서 특정 컬럼을 기준으로 정렬했을 때 첫 번째 행의 값을 가져올 때 사용

LAST

LAST

집계 함수(MIN, MAX 등)와 같이 써서 특정 컬럼을 기준으로 정렬했을 때 마지막 행의 값을 가져올 때 사용

LISTAGG

LISTAGG

여러 행의 문자열 값을 하나의 문자열로 이어 붙이는 집계 함수

MAX

MAX

인수 중에서 최대값을 반환

MIN

MIN

인수

중에서 최소값을 반환

SUM

SUM

Row의 expr에 대한 합계

PERCENT_RANK

PERCENT_RANK

그룹 수에 대한 값의 순위 퍼센트를 반환

PERCENTILE_CONT

PERCENTILE_CONT

연속된 분포 모델을 가정한 역 분포 함수(inverse distribution function)

PERCENTILE_DISC

PERCENTILE_DISC

이산 분포 모형을 가정하는 역 분포 함수

RANK

RANK

값의 그룹에서 값의

LEAD

LEAD

현재형 기준으로 이후 값을 참조

GROUP_ID

순위를 계산

REGR_ (Linear Regression) Functions

미 지원

선형 회귀를 위한 집계 함수들

STDDEV

STDDEV

number의 조합인 expr의 표본 표준편차를 반환

STDDEV_POP

STDDEV_POP

모집단 표준편차를 계산하고, 모집단 분산의 제곱근 값을 반환

STDDEV_SAMP

STDDEV_SAMP

누적 표본 표준편차를 계산하고, 표본 분산의 제곱근 값을 반환

SUM

SUM

expr의 값의 합을 반환

VAR_POP

VAR_POP

null 값들을 제거한 후에 number 세트의 모집단 분산을 반환

VAR_SAMP

VAR_SAMP

null 값들을 제거한 후에 number 세트의 표본 분산을 반환

VARIANCE

VARIANCE

expr의 분산을 반환

 

Aggregate Functions

...

Oracle

Altibase

비고

APPROX_COUNT_DISTINCT
APPROX_COUNT_DISTINCT_AGG
APPROX_COUNT_DISTINCT_DETAIL
APPROX_MEDIAN
APPROX_PERCENTILE
APPROX_PERCENTILE_AGG
APPROX_PERCENTILE_DETAIL

미 지원 
CORR_* (CORR_S,CORR_K)미 지원Pearson's 상관 계수를 계산
GROUP_ID미 지원지정된 GROUP BY 결과로부터 중복된 그룹을 구별
GROUPINGGROUPING

ROLLUP, CUBE, GROUPING SETS 사용 시 집계 레벨을 구분하는 함수

GROUPING_IDGROUPING_ID

행과 관련되는 GROUPING 비트 벡터에 대응되는 수치를 반환

MEDIANMEDIAN

중앙값 구하는 집계/분석 함수

STATS_BINOMIAL_TEST

미 지원단지 두 개의 유효한 값이 존재하는 이분 변수(두 개의 배타적인 값을 가지는 변수)에 대해서 이용되는 정확 확률 테스트
STATS_CROSSTAB미 지원두 개의 명목 변수를 분석하는 방법
STATS_F_TEST미 지원두 개의 분산이 유의한 차가 있는지 테스트
STATS_KS_TEST미 지원두 개의 표본이 같은 모집단에 속하고 있는지 또는 같은 분포를 가지는 모집단에 속하고 있는지 테스트하는 Kolmogorov-Smirnov 함수
STATS_MODE미 지원가장 큰 빈도를 가지는 값을 반환
STATS_MW_TEST미 지원A Mann Whitney Test는 2개의 독립 표본을 비교
STATS_ONE_WAY_ANOVASTATS_ONE_WAY_ANOVA분산의 다른 2개 추정치 비교에 의해 통계적 유의성에 대한 평균(그룹 또는 변수에 대한)의 유의한 차를 검증
STATS_T_TEST_*미 지원t검정에서는, 평균치의 차이의 유의성을 측정
STATS_WSR_TEST미 지원대응쌍표본의 윌콕스 부호 순위 검증을 수행하며, 표본 간의 차이가 zero로부터 유의한 차이가 있는지 검정
SYS_OP_ZONE_ID미 지원인수로 rowid를 취하여 영역 ID를 반환
TO_APPROX_COUNT_DISTINCT미 지원 
TO_APPROX_PERCENTILE미 지원 

 

Analytic Functions

...

파티션 또는 윈도우 내에서 마지막 번째 함수이다.

Oracle

Altibase

비고

CLUSTER_DETAILS
CLUSTER_DISTANCE
CLUSTER_ID
CLUSTER_PROBABILITY
CLUSTER_SET

미 지원 

FEATURE_DETAILS
FEATURE_ID
FEATURE_SET
FEATURE_VALUE

미 지원 
FIRST_VALUE *FIRST_VALUE

파티션 또는 윈도우 내에 첫 번째 행의 값을 구하는 함수이다.

값의 정렬된 세트에서 첫번째 값을 반환
LAGLAG현재 행을 기준으로 이전 값을 참조하는 함수
LAST_VALUE *LAST_VALUE윈도우에서 정렬된 값 중에서 마지막 값을 반환
LEADLEAD현재 행을 기준으로 이후의 값을 참조하는 함수

NTH_VALUE *

NTH_VALUEoffset번째 행의 값을 구하는

 

함수
NTILENTILE출력 결과를 사용자가 지정한 그룹 수로 나누어 출력하는 함수

PREDICTION
PREDICTION_COST
PREDICTION_DETAILS
PREDICTION_PROBABILITY
PREDICTION_SET

미 지원 
RATIO_TO_REPORTRATIO_TO_REPORT값의 세트의 합에 대한 값의 비율을 계산
ROW_NUMBERROW_NUMBER분할 별로 정렬된 결과에 대해 순위를 부여하는 기능

 

Object Reference Functions

...

Oracle

Altibase

비고

DEREF
MAKE_REF
REF
REFTOHEX
VALUE

미 지원

객체 참조 함수

 

Model Functions

...

Oracle

Altibase

비고

CV
ITERATION_NUMBER
PRESENTNNV
PRESENTV
PREVIOUS

미 지원

Select 문의 Model_clause에서만 사용 가능

 

OLAP Functions

...

Oracle

Altibase

비고

CUBE_TABLE

미 지원

3차원 데이터를 2차원 데이터로 변환

 

Data Cartridge Functions

...

Oracle

Altibase

비고

DATAOBJ_TO_MAT_PARTITION
DATAOBJ_TO_PARTITION

미 지원

데이터 카트리지 개발에 유용함

 

Pseudocolumns

...

Oracle

Altibase

비고

ROWID미 지원 
ROWNUMROWNUM

Select되는 ROW의 순서값, DML에는 미 지원

 

Expressions

...

Oracle

Altibase

비고

CASECASE, CASE2expr1이 참이면 ret_expr1을 반환

 

Stored Procedure or Function 변환

 

...

Altibase AUTOCOMMIT 모드에서 Procedure 처리

...

Altibase가 AUTOCOMMIT 모드일 경우 모드에서 Altibase의 PROCEDURE/FUNCTION FUNCTION은 전체가 하나의 트랜잭션으로 처리되고 PROCEDURE 내에서의 처리된다.

따라서 PROCEDURE 내의 COMMIT/ROLLBACK은 무시됩니다.
PROCEDURE/FUNCTION을 실행한 후에 자동으로 COMMIT됩니다. 따라서 PROCEDURE/FUNCTION에서 DML 문장을 실행한 후 결과가 Altibase와 Oracle이 다를 수 있습니다.
Altibase를 NON-AUTOCOMMIT 모드로 적용했다면 Oracle의 NON-AUTOCOMMIT 모드와 동일한 결과가 나타납니다무시되고 PROCEDURE 실행 후 자동으로 COMMIT 된다.

반면 Oracle은 AUTOCOMMIT 모드에서도 PROCEDURE/FUNCTION 내의 COMMIT/ROLLBACK이 수행되기 때문에 이 경우 PROCEDURE 수행 결과가 달라질 수 있다.

NON-AUTOCOMMIT 모드에서는 Altibase와 Oracle의 PROCEDURE 수행 결과가 동일하다.

Oracle

Altibase

Code Block
themeDJango
languagesql
CREATE OR REPLACE PROCEDURE t1_test( in_t IN INTEGER, in_v IN VARCHAR)
IS
BEGIN
    INSERT INTO t1 VALUES(in_t, in_v);
    ROLLBACK;
END;
/
EXEC t1_test(4, '000004');
SQL> SELECT COUNT(*) FROM t1;
COUNT(*)
-----------------
0
Code Block
themeDJango
languagesql
CREATE OR REPLACE PROCEDURE t1_test( in_t IN INTEGER, in_v IN VARCHAR(20))
IS
BEGIN
    INSERT INTO t1 VALUES(in_t, in_v);
    ROLLBACK;
END;
/
EXEC t1_test(4,   '000004');
iSQL> SELECT COUNT\(*) FROM t1;
COUNT
-----------
1

 

...

PROCEDURE/FUNCTION의 PARAMETER TYPE과 RETURN TYPE

PARAMETER의 TYPE과 RETURN TYPE의 CHAR, VARCHAR는 크기 지정해야 합니다.
Altibase에서 PROCEDURE나 FUCTION의 PARAMATER 혹은 RETURN TYPE을 Oracle처럼 CHAR, VARCHAR로 선언하면 CHAR(1), VARCHAR(1)과 동일한 의미입니다. 따라서, 하나의 문자가 아니라 문자열을 사용하고자 한다면, 반드시 그 크기를 지정해 줘야 합니다. 만약 지정 해주지 않고 문자열이 2문자 이상이면 다음과 같은 에러가 발생합니다.

Code Block
themeDJango
languagesql
ERR-2100D : Invalid length of the data type

 

파일 및 출력 결과

...

Altibase의 파일 및 출력에 관련된 PROCEDURE는 SYSTEM_ 유저에 자동으로 생성이 되어 Oracle의 PARAMETER TYPE과 RETURN TYPE은 크기를 지정할 수 없고, 자동으로 최대 크기까지 허용된다.

다만, 동일 타입이더라도 SQL에서 최대 크기와 PL/SQL에서 최대 크기가 다를 수 있는데, 그 내용은 아래 표에 기술되어 있다.

반면 Altibase의 PARAMETER TYPE과 RETURN TYPE은 크기를 지정할 수 있다.

만약 크기를 지정하지 않으면, PARAMETER TYPE과 RETURN TYPE 최대 크기는 아래 프로퍼티 설정에 따라 결정된다.

  • PSM_PARAM_AND_RETURN_WITHOUT_PRECISION_ENABLE = 0
    • CHAR, NCHAR, NVARCHAR, VARCHAR의 크기는 1이다.
  • PSM_PARAM_AND_RETURN_WITHOUT_PRECISION_ENABLE = 1 (기본값)
    • CHAR, NCHAR, NVARCHAR, VARCHAR의 크기는 각각 아래 표의 프로퍼티 설정 값으로 결정된다.

PROCEDURE/FUNCTION에서 데이터 타입의 최대 크기

...

데이터 타입

Oracle SQL에서 최대 크기

Oralce PL/SQL에서 최대 크기

Altibase SQL에서 최대 크기Altibase PL/SQL에서 최대 크기Altibase PL/SQL에서 크기를 지정하지 않은 경우 최대 크기
CHAR2000 bytes32767 bytes32000 bytes65534 bytesPSM_CHAR_DEFAULT_PRECISION (기본값 : 32767)
NCHAR

1000(UTF16), 666(UTF8)

최대 2000 bytes

16383(UTF16), 10922(UTF8)

최대 32767 bytes

16000(UTF16), 10666(UTF8)

최대 32000 bytes

32766(UTF16), 21843(UTF8)

최대 65534 bytes

PSM_NCHAR_UTF16_DEFAULT_PRECISION (기본값 : 16383)

PSM_NCHAR_UTF8_DEFAULT_PRECISION (기본값 : 10921)

RAW2000 bytes32767 bytes   

VARCHAR

VARCHAR2

4000 bytes32767 bytes32000 bytes65534 bytesPSM_VARCHAR_DEFAULT_PRECISION (기본값 : 32767)

NVARCHAR2

NVARCHAR2

2000(UTF16), 1333(UTF8)

최대 4000 bytes

16383(UTF16), 10922(UTF8)

최대 32767 bytes

16000(UTF16), 10666(UTF8)

최대 32000 bytes

32766(UTF16), 21843(UTF8)

최대 65534 bytes

PSM_NVARCHAR_UTF16_DEFAULT_PRECISION (기본값 : 16383)

PSM_NVARCHAR_UTF8_DEFAULT_PRECISION (기본값 : 10921)

LONG2 GB - 132760 bytes   
LONG RAW2 GB32760 bytes   
BLOB(4 GB - 1) * (database block size)128 TB4 GB - 1100 MBLOB_OBJECT_BUFFER_SIZE (기본값 : 32000)
CLOB(4 GB - 1) * (database block size)128 TB4 GB - 1100 MBLOB_OBJECT_BUFFER_SIZE (기본값 : 32000)
NCLOB(4 GB - 1) * (database block size)128 TB   

Oracle의 Extended Data Types (MAX_STRING_SIZE = EXTENDED) 의 최대 크기는 본 문서의 'SQL 변환 가이드 -> 데이터 타입 변환'에서 확인할 수 있다.

 

입출력 및 파일 제어를 위해 제공되는 저장 프로시저 및 함수

...

입출력 및 파일 제어에 관련된 PROCEDURE 및 FUNCTION은 SYSTEM_ 사용자에 자동으로 생성되어 있고, PUBLIC SYNONYM으로 정의되어 있기 때문에 사용자는 PROCEDURE/FUNCTION 이름만 호출하여 사용할 수 있습니다있다. 

표준출력PUTPRINT표준출력PUT_PRINTLN파일처리UTLFILEFOPEN파일처리파일처리파일처리파일처리

구분

Oracle

ALTIBASE

Altibase

비고
표준 출력





DBMS_OUTPUT.DISABLE미 지원 
DBMS_OUTPUT.ENABLE미 지원 
DBMS_OUTPUT.GET_LINE미 지원 
DBMS_OUTPUT.

FOPEN

파일처리

GET_LINES미 지원 
DBMS_OUTPUT.NEW_LINEDBMS_OUTPUT.NEW_LINEAltibase의 DBMS_OUTPUT 패키지는 $ALTIBASE_HOME/packages의 스크립트를 실행해서 생성 후 사용할 수 있다.
DBMS_OUTPUT.PUT

DBMS_OUTPUT.PUT

Altibase의 PRINT로 대체 가능
DBMS_OUTPUT.PUT_LINE

DBMS_OUTPUT.PUT_LINE

Altibase의 PRINTLN으로 대체 가능
파일 처리




 

 

 

     

 

 

 

 


 



 

 



     

 

 

 

 

 

 

  

 

 

  




UTL_FILE.FCLOSEFCLOSE 
UTL_FILE.FCLOSE_ALLFCLOSE_ALL 
UTL_FILE.FCOPYFCOPY 
UTL_FILE.FFLUSHFFLUSH 
UTL_FILE.FGETATTR미 지원 
UTL_FILE.FGETPOS미 지원 

UTL_FILE.FOPEN

FOPEN

 

UTL_FILE.FOPEN_NCHAR

미 지원

 

UTL_FILE.FREMOVE

FREMOVE파일처리

 

UTL_FILE.FRENAME

FRENAME파일처리

 
UTL_FILE.FSEEK미 지원 

UTL_FILE.GET_LINE

GET_LINE파일처리

 
UTL_FILE.GET_LINE_NCHAR미 지원 
UTL_FILE.GET_RAW미 지원 

UTL_FILE.IS_OPEN

IS_OPEN파일처리

 

UTL_FILE.NEW_LINE

NEW_LINE

 

REF CURSOR

Oracle의 REF CURSOR는 보통 PACKAGE에 선언을 하고, 이를 PROCEDURE의 OUT PARAMATER로 선언하여 사용합니다. 하지만, Altibase는 PACKAGE를 제공하지 않기 때문에 TYPESET으로 생성하여 사용해야 합니다.

Oracle

Altibase

Code Block
themeDJango
languagesql
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)
AS
BEGIN OPEN v_result FOR v_sql [USING] [Bind Var];
END;
/
Code Block
themeDJango
languagesql
CREATE OR REPLACE TYPESET my_type 
AS 
TYPE my_cur IS REF CURSOR;
END;
/
CREATE OR REPLACE PROCEDURE opencursor( v_result OUT my_type.my_cur, v_sql IN VARCHAR(200) ) 
AS 
BEGIN 
    OPEN y_result FOR v_sql \[USING\] \[Bind Var\]; 
END;
/
UTL_FILE.PUTPUT 
UTL_FILE.PUT_LINEPUT_LINE 
UTL_FILE.PUT_LINE_NCHAR미 지원 
UTL_FILE.PUT_NCHAR미 지원 
UTL_FILE.PUTF미 지원 
UTL_FILE.PUTF_NCHAR미 지원 
UTL_FILE.PUT_RAW미 지원 

 

DBMS_RANDOM 변환

...

Altibase는 DBMS_RANDOM 패키지 외에 RANDOM 함수도 지원한다.

Oracle

Altibase

비고
DBMS_RANDOM.NORMAL미 지원정규 분포에서 난수를 반환
DBMS_RANDOM.SEED

DBMS_RANDOM.SEED

seed를 재설정

Altibase의 RANDOM(seed) 함수로 대체 가능

DBMS_RANDOM.STRINGDBMS_RANDOM.STRING임의의 문자열을 반환
DBMS_RANDOM.VALUE

DBMS_RANDOM.VALUE

난수를 반환

Altibase의 RANDOM(0) 함수로 대체 가능

DBMS_RANDOM.INITIALIZE

DBMS_RANDOM.INITIALIZE

패키지를 초기화하는 프로시저

Oracle은 deprecated

DBMS_RANDOM.RANDOMDBMS_RANDOM.RANDOM

난수 생성

Oracle은 deprecated

DBMS_RANDOM.TERMINATE미 지원

패키지를 종료하는 프로시저

Oracle은 deprecated

 

WHERE CURRENT OF 구문

...

Altibase는 Oracle의 CURSOR를 이용한 WHERE CURRENT OF 구문을 지원하지 않습니다. 다만, 해당 TABLE에 PRIMARY KEY가 있다면 다음과 같이 변경이 가능합니다구문은 Altibase에서 다음과 같이 변환이 필요하다.

Oracle

Altibase

Code Block
themeDJango
languagesql
CREATE OR REPLACE PROCEDURE proc1
IS

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;
/
Code Block
themeDJango
languagesql
CREATE OR REPLACE PROCEDURE proc1
AS
BEGIN
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’SALESMAN' WHERE emp_noempno = v_empno; //emp_no가 PK이어야 한다.
END LOOP;
CLOSE cur1;
END;
END;
/

...

Oracle과 Altibase는 Stored PROCEDURE/FUNCTION에서 발생하는 EXCEPTION들을 미리 시스템에서 정의해 놓았습니다놓았다.

6530

Oracle

 

Altibase

 

SQLERRM

SQLCODE

SQLERRM

SQLCODE(integer)

SQLCODE(hexadecimal)

ACCESS_INTO_NULL

-6530

 

미 지원

 

CASE_NOT_FOUND

-6592

 

미 지원

 

COLLECTION_IS_NULL

-6531

 

미 지원

 

CURSOR_ALREADY_OPEN

-

6511

CURSOR_ALREADY_OPEN

20106231166

DUP_VAL_ON_INDEX

-1

DUP_VAL_ON_INDEX

201063

31167

INVALID_CURSOR

-1001

INVALID_CURSOR

201064

31168

INVALID_NUMBER

-1722

INVALID_NUMBER

201065

31169

LOGIN_DENIED

-1017

 

미 지원

 

NO_DATA_FOUND

+100

NO_DATA_FOUND

100201066

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

 

지원하지 않음

NOT_LOGGED_ON

-1012

 

지원하지 않음

ROWTYPE_MISMATCH

-6504

 

지원하지 않음

SELF_IS_NULL

-30625

 

지원하지 않음

SUBSCRIPT_BEYOND_COUNT

-6533

 

지원하지 않음

SUBSCRIPT_OUTSIDE_LIMIT

-6532

 

지원하지 않음

SYS_INVALID_ROWID

-1410

 

지원하지 않음

 

 

변환 절차 

...

3116A
NO_DATA_NEEDED-6548 미 지원 

NOT_LOGGED_ON

-1012

 

미 지원

 

PROGRAM_ERROR

-6501

PROGRAM_ERROR

201067

3116B

ROWTYPE_MISMATCH

-6504

 

미 지원

 

SELF_IS_NULL

-30625

 

미 지원

 

STROAGE_ERROR

-6500

STORAGE_ERROR

201068

3116C

SUBSCRIPT_BEYOND_COUNT

-6533

 

미 지원

 

SUBSCRIPT_OUTSIDE_LIMIT

-6532

 

미 지원

 

SYS_INVALID_ROWID

-1410

 

미 지원

 

TIMEOUT_ON_RESOURCE

-51

TIMEOUT_ON_RESOURCE

201069

3116D

TOO_MANY_ROWS

-1422

TOO_MANY_ROWS

201070

3116E

VALUE_ERROR

-6502

VALUE_ERROR

201071

3116F

ZERO_DIVIDE

-1476

ZERO_DIVIDE

201072

31170

 

데이터베이스 전환 절차 

...

Oracle에서 Altibase로 데이터베이스 전환을 위해, 객체 변환 및 데이터 마이그레이션을 자동으로 수행해주는 MigrationCenter 도구를 사용할 수 있다.
전환 작업이 진행되기 이전에 맵핑 작업을 위하여 이전 DBMS에서 Database에서 사용하는 환경에 맞게 user생성 과 user와 Tablespace 생성이 필요합니다필요하다.
특정 DB 종속적인 기능이 적용된 경우에는 수동 변환 작업을 수행합니다.Image RemovedOracle에 종속적인 기능이나 비표준 및 Altibase에서 지원하지 않는 기능 등은 수동으로 변환해주어야 한다.

Image Added

 

Data

...

이관 및 Application 변환 작업 절차

...

Image RemovedImage Added

 

Data 정합성 확인

...

APPLICATION 검증

검증 방안 도출
- 고객과의 사전 협의를 통하여 검증 방안 도출
예) 온라인 화면 Capture 또는 장표 비교, 배치 Report 비교 등

DATA검증

Migration Center Report
- Migration 결과 레포트를 통한 원본 DBMS와 ALTIBASE의 Database와 Altibase의 테이블 데이터 총 건수 비교

검증 방안 도출
- 고객과의 사전 협의를 통하여 검증 방안 도출
예) 데이터 총 건수 확인, 특정 칼럼 데이터 합산 값 비교, 특정 쿼리 수행 결과 비교 등

 

...

Database 전환 장애 대처 방안

...

Image RemovedImage Added

 

Database 전환 도구

...

Oracle에서 Altibase로 전환 시 자동화 툴인 Migratin Center를 , 자동 전환 도구인 MigratinCenter를 이용하여 전환한다.

 

1)

...

MigrationCenter 이점

...

GUI기반의 GUI 기반의 툴로 손쉽게 사용이 가능
 CLI 모드 지원으로 이관작업의 이관 작업의 손쉬운 실행과 높은 성능
 스키마와 함께 데이터도 모두 한 번의 조작으로 이관수행이관 수행
 서로 다른 데이터 형식에 대한 매핑작업을 매핑 작업을 통해 이관작업 이관 작업 수행
 유연한 데이터 이관을 지원하기 위하여 사용자 정의 형식 지원
 전환 결과에 대한 단계별 단계 별 요약 보고서 제공

2) 사용법

...

(1) Add Database Connection

...

Source/Target DBMS의 정보를 입력합니다Database의 정보를 입력.
 Connection Name : 임의 지정 가능
 IP : DBMS Server Database Server IP
 Port : DBMS Database Server Port
 User : 연결 사용자 계정
 Password : 연결 사용자 비밀번호
 SID : 서비스 명
 IP Version : IPv4/IPv6

Image RemovedImage Added

데이터베이스 접속을 위해 JDBC 드라이버를 사용하므로, 원본 데이터베이스와 대상 데이터베이스에 알맞은 JDBC 드라이버를 준비하는 것이 중요합니다중요하다.

사용자 편의를 위해 지원되는 데이터베이스에 적합한 몇 가지 JDBC 드라이버를 Migration Center와 MigrationCenter와 함께 제공합니다제공한다.

 

(2) Create Project

...

데이터 이관에 대한 프로젝트를 생성합니다생성.
 Project Name : 임의 지정 가능
 Project Path : 자동 생성
 Source Database : Oracle
 Destination Database : Altibase

Image RemovedImage Added

(3)

...

Connect

...

원본 및 대상 데이터베이스로 연결.

Image Added

 

(4) Build Project

...

 Build User : 원본 데이터베이스에 접속한 사용자의 이관 가능한 모든 객체 정보를 수집한다.
 Build Table : 원본 데이터베이스에 접속한 사용자의 테이블들로부터 이관할 테이블 목록을 직접 구성한다. 선택된 테이블과 그에 종속된 제약조건 및 인덱스의 객체 정보를 수집한다.

 Source Database에서 테이블의 레코드 개수를 가져오는 방식(Fast/Slow)을 선택하고 진행합니다진행한다.

Image RemovedImage Added

 

(

...

5) Reconcile Project

...

마이그레이션 수행 방법을 정의하는 단계로, 마이그레이션 과정에서 가장 중요한 단계입니다단계이다.

 User Mode : Source Database 생성시 정의한 사용자 계정이 접근할 수 있는 모든 Table과 모든 데이터를 마이그레이션 대상으로 정의
 Table Mode : Source Database 생성시 정의한 사용자 계정이 접근할 수 있는 모든 Table 중에서 데이터를 마이그레이션 대상 Table을 선택 정의

Image Removed

 

Image Added

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 수정

Image RemovedImage Added

 

(

...

6) Run Project

...

데이터 마이그레이션을 수행합니다수행.

Image RemovedImage Added

 

(

...

7) PL/SQL Converter Tool

...

파일로 저장된 Oralce PL/SQL을 Migration Center를 MigrationCenter를 이용하여 데이터 타입에 대한 sytax를 변경합니다수정한다.
비즈니스 로직에 대한 변경은 로직은 자동 변환되지 않으므로, 비즈니스 로직을 구현한 개발자가 수동으로 변환해야 합니다한다.

 

Info

다운로드
SupportMigrationCenter는 support.altibase.com의 다운로드 페이지를 통하여 다운로드 가능 합니다가능합니다.

문의사항http://support.altibase.com
02-2082-1114MigrationCenter 관련 자세한 내용은 아래 매뉴얼을 참고하시기 바랍니다.

 

 

Info

구 버전 (Altibase v6 & Oracle 11g) : ALTIBASE_Oracle_변환_가이드.pdf

구버전 구 버전 (Altibase v5 & Oracle 10g) ORACLE_to_ALTIBASE_변환_가이드_5.5.pdf (Altibase v5.5, Oracle 10g)