전환
Oracle to Tibero DB 전환 절차 및 방법을 설명합니다.
1. 사전 점검
타사 DB에서Tibero DB로 전환하기 전 점검사항에 대해서 설명합니다.
사전 점검은 전환하기 전 Oracle의 특성을 파악하고 Tibero에 적용해야 하는 값들을 확인하는 중요한 절차입니다.
본 절에서 설명하는 SQL문(10g, 11g에서 수행 가능한 쿼리)은 Oracle 버전에 따라서 일부 달라질 수 있음을 유의합니다.
1) 기본 항목
Oracle의 sys 또는 system 등의 DBA 권한을 가진 사용자로 접속하여 아래 정보를 확인합니다.
버전 정보
Oracle 9i, 10g, 11g는 전환 사례가 많으므로 그 이외 버전에서 전환할 경우에 대해서는 검토가 필요합니다.
전환 문자 집합
Oracle에서 사용 중인 문자 집합에 대응되는 Tibero 문자 집합으로 선택합니다.
전환 사용자 선택
Oracle을 설치할 때 자동 생성되는 기본 사용자의 경우는 제외합니다. 전환 사용자에 대해서 고객사 담당자 확인이 필요합니다.
전환 크기
전환 시간에 가장 큰 영향을 미치는 요소입니다. 그 외 DISK I/O, NETWORK I/O 등에 따라서 고객사의 전환 시간이 많이 달라질 수 있습니다.
전환 검증 항목
전환이 완료된 후에 비교해 보는 정보입니다
버전 정보
전환 Oracle 버전을 확인합니다.
select * from v$version;전환 문자 집합
Oracle과 Tibero간 대응되는 문자 집합을 사용합니다.
전환 사용자(=Schema) 선택
Oracle의 'sys' 또는 'system' 계정 등의 DBA 권한이 있는 사용자로 접속한 후 조회합니다.
사용자 조회 아래는 전체 사용자 목록입니다.
Open된 사용자 조회 아래는 현재 Open 사용자를 조회하는 쿼리입니다.
Oracle 기본 사용자 아래와 같은 사용자 이름의 경우 Oracle을 설치할 때 자동으로 생성되는 사용자로 전환할 때 제외합니다. (Oracle 버전에 따라 사용자명이 일부 다를 수 있습니다.)
ANONYMOUS
Enables HTTP access to Oracle XML DB.
APEX_050100
The account that owns the Oracle Application Express schema and metadata.
APEX_PUBLIC_USER
The minimally privileged account used for Oracle Application Express configuration with Oracle Application Express Listener or Oracle HTTP Server and mod_plsql.
APPQOSSYS
Used for storing and managing all data and metadata required by Oracle Quality of Service Management.
AUDSYS
The account where the unified audit data trail resides.
AURORA$ORB$UNAUTHENTICATED
Used for users who do not authenticate in Aurora/ORB
AWR_STAGE
Used to load data into the AWR from a dump file
CSMIG
User for Database Character Set Migration Utility
CTXSYS
The Oracle Text account.
DBSFWUSER
The account used to run the DBMS_SFW_ACL_ADMIN package.
DBSNMP
The account used by the Management Agent component of Oracle Enterprise Manager to monitor and manage the database.
DEMO
User for Oracle Data Browser Demonstration (last version 9.2)
DIP
The account used by the Directory Integration Platform (DIP) to synchronize the changes in Oracle Internet Directory with the applications in the database.
DMSYS
Data Mining user
DSSYS
Oracle Dynamic Services and Syndication Server
DVF
The account owned by Database Vault that contains public functions to retrieve the Database Vault Factor values.
DVSYS
There are two roles associated with this account. The Database Vault owner role manages the Database Vault roles and configurations. The Database Vault Account Manager is used to manage database user accounts. Note: Part of Oracle Database Vault user interface text is stored in database tables in the DVSYS schema. By default, only the English language is loaded into these tables. You can use the DVSYS. DBMS_MACADM.ADD_NLS_DATA procedure to add other languages to Oracle Database Vault.
EXFSYS
User to hold the dictionary, APIs for the Expression Filter
FLOWS_FILES
The account owns the Oracle Application Express uploaded files.
GGSYS
The internal account used by Oracle GoldenGate. It should not be unlocked or used for a database login.
GSMADMIN_INTERNAL
The internal account that owns the Global Data Services schema. It should not be unlocked or used for a database login.
GSMCATUSER
The account used by Global Service Manager to connect to the Global Data Services catalog.
GSMUSER
The account used by Global Service Manager to connect to the database.
HR (Human Resources)
OE (Order Entry)
SH (Sales History)
Training/ demonstration users containing the popular EMPLOYEES and DEPARTMENTS tables
LBACSYS
The Oracle Label Security administrator account. Starting with Oracle Database 18c, the LBACSYS user account is created as a schema-only account.
MDDATA
The schema used by Oracle Spatial and Graph for storing geocoder and router data.
MDSYS
The Oracle Spatial and Graph administrator account.
ORACLE_OCM
This account contains the instrumentation for configuration collection used by the Oracle Configuration Manager.
ORDPLUGINS
Object Relational Data (ORD) User used by Time Series, etc.
ORDSYS
Object Relational Data (ORD) User used by Time Series, etc.
OUTLN
The account that supports plan stability. Plan stability enables you to maintain the same execution plans for the same SQL statements. OUTLN acts as a role to centrally manage metadata associated with stored outlines.
PERFSTAT
Oracle Statistics Package (STATSPACK) that supersedes UTLBSTAT/UTLESTAT
REMOTE_SCHEDULER_AGENT
The account to disable remote jobs on a database. This account is created during the remote scheduler agent configuration. You can disable the capability of a database to run remote jobs by dropping this user.
SCOTT
ADAMS
JONES
CLARK
BLAKE
Training/ demonstration users containing the popular EMP and DEPT tables
SYS
The account used to perform database administration tasks.
SYS$UMF
The account used to administer Remote Management Framework, including the remote Automatic Workload Repository (AWR).
SYSBACKUP
The account used to perform backup and recovery tasks.
SYSDG
The account used to administer and monitor Oracle Data Guard.
SYSKM
The account used to perform encryption key management.
SYSRAC
The account used to administer Oracle Real Application Clusters (RAC).
SYSTEM
Another account used to perform database administration tasks.
TRACESVR
Oracle Trace server
TSMSYS
User for Transparent Session Migration (TSM) a Grid feature
WMSYS
The account used to store the metadata information for Oracle Workspace Manager.
XDB
The account used for storing Oracle XML DB data and metadata.
XS$NULL
The internal account that represents the absence of a database schema user in a session, and indicates an application user session is in use. XS$NULL cannot be authenticated to a database, nor can it own any database schema objects, or possess any database privileges.
전환 크기
전환 대상 사용자에 속하는 Table, Index가 저장된 Tablespace만 확인합니다. 아래는 Tablespace 전체에 대하여 확인하는 예제입니다.
전체 Tablespace 크기와 사용량 확인
전체 합계
전환 검증 항목
전환 대상 사용자에 대해당하는 정보만 확인합니다.
Object 상태별 개수 확인
실제 dba_object에는 삭제된 Object까지 포함($BIN~ 형식)되어 있어 정확한 Count를 위해서는dba_tables, dba_index 같은 정보를 보는 것이 좋습니다.
INVALID한 Object에 대해서 고객사 DB 담당자에게 정리요청을 하는것이 전환시간을 단축할 수 있습니다.
Object 개수 확인
전환 완료 후 Oracle과 Object 개수를 비교할 때 검증용으로 사용합니다.
Constraint 개수 확인
2) DB 생성 관련 항목
Oracle의 sys 또는 system 등의 DBA 권한을 가진 사용자로 접속하여 아래의 정보를 확인하고, Tibero 설치 과정 중 CREATE DATABASE를 수행할 경우 아래의 정보를 참고하여 DB를 생성합니다.
아래는 DB 생성관련 항목에 대한 설명입니다.
문자 집합
Oracle과 대응되는 문자 집합을 선택합니다.
초기 파라미터
세션 개수 및 메모리 설정 등을 확인합니다.
Redo 구성
Group과 Member의 개수 또는 크기 등을 확인합니다.
Undo와 Temp 구성
Undo와 Temp Tablespace 크기를 확인합니다.
Log 모드
Tibero 미지원 사항으로 일반 Index로 변경을 고려합니다.
문자 집합
문자 집합 정보를 확인합니다.
Oracle
Tibero
확인 결과 항목에 대한 설명은 아래와 같습니다.
NLS_CHARACTERSET
DB 문자 집합
NLS_NCHAR_CHARACTERSET
National 문자 집합
아래는 Oracle과 Tibero의 문자 집합 대응 정보입니다.
US7ASCII
ASCII
KO16KSC5601
EUCKR or MSWIN949
KO16MSWIN949
MSWIN949
UTF8, AL32UTF8
UTF8
JA16SJIS[TILDE]
JA16SJIS[TILDE]
JA16EUC[TILDE]
JA16EUC[TILDE]
ZHS16GBK
GBK
VN8VN3
VN8VN3
US7ASCII 캐릭터 셋에 한글이 들어있는 경우 목적에 따라 MSWIN949로 할 수도 있습니다. 단, 애플리케이션의 인코딩과 디코딩 부분의 변경이 필요할 수 있습니다.
KO16KSC5601, KO16MSWIN949, JA16SJIS에서 UTF8, AL32UTF8로 변경할 경우 해당 테이블 컬럼 크기를 1.5~2배 정도 늘린 후에 데이터 전환을 해야 합니다.
National 문자 집합
UTF8
UTF8
AL16UTF16(기본값)
UTF16(기본값)
Oracle의 National 캐릭터 셋이 UTF8이고 Tibero가 UTF16이라면 관련 타입의 글자가 깨져서 전환되므로 동일한 설정이 필요합니다.
초기 파라미터
초기 파라미터 정보를 확인합니다.
아래는 Oracle에서 전환할 때 확인해야 할 초기 파라미터입니다.
SESSIONS
세션 수를 설정합니다.
OPEN_CURSORS
세션당 열 수 있는 Cursor의 개수입니다.
UNDO_RETENTION
Undo 보존 시간을 설정합니다.
SGA_MAX_SIZE
사용 가능한 SGA 전체 크기를 확인합니다
SGA_TARGET
SGA의 목표 크기를 설정합니다
PGA_AGGREGATE_TARGET
사용 가능한 PGA 전체 크기를 확인합니다
MEMORY_TARGET
사용 가능한 전체 메모리 크기를 설정합니다. (Oracle 11g용)
메모리 관련 SGA 세부항목 크기는"V$SGA"로 조회하여 확인합니다.
Redo 로그 구성
Tibero에서 Redo 로그를 생성할 경우 참고하며 파일 크기를 동일하거나 더 크게 생성해 줍니다.
아래는 Redo를 확인하는 예입니다.
Undo와 Temp 구성
Tibero에서 Undo와 Temp를 생성할 경우 참고하며 파일 크기를 동일하거나 더 크게 생성합니다.
아래는 Undo Tablespace를 확인하는 예입니다.
아래는 Temp Tablespace 확인 예입니다.
Log 모드
아래는 Log 모드를 확인하는 예입니다.
만약, ARCHIVE LOG 모드라면 전환 시간 단축을 위해 전환이 모두 완료된 후에 모드를 변경합니다.
3) 추가 Object 확인
아래는 추가로 확인해야 할 Object에 대한 설명입니다.
DB Link
전환 사용자의 DB Link 정보와 데이터가 존재하는 DB의 종류를 조사합니다.
tnsnames.ora
DB Link의 경우 사용하는 Host 정보를 확인합니다.
Job
전환 사용자 또는 전체를 수행하는 Job이 없는지 확인하고, 전환할 경우 수행되어 데이터 가 변경되지 않는지 확인합니다.
Cluster Object
Tibero 미지원 Object로 일반 Table 형태로 변경을 고려합니다.
XML Type
Table 생성문 column부분 type의 sys.xmltype을 xmltype으로 변경이 필요합니다.
BitMap Index
Tibero 미지원 사항으로 일반 Index로 변경을 고려합니다.
DB Link 확인
tnsnames.ora 파일 확인
Job 확인
Cluster Object 확인
XML Type 확인
BitMap Index 확인
2. 전환 수행
본 절에서는 실제 전환을 수행하는 방법에 대해서 설명합니다.
아래는 전환을 수행하는 과정입니다.
각 과정에 대한 상세한 설명은 해당 절의 내용을 참고합니다.
1) 전환 사전 준비
전환할 때 Object를 생성하는 기본 순서는 아래와 같습니다.
4~8번의 경우는 고객사의 Object들의 의존성에 따라 변동성이 있으므로 고객사의 상황에 맞게 변경합니다.
1
Tablespace
-
2
User
-
3
Table
-
4
Synonym
생성할 때 Source Object가 존재하지 않아도 문제되지 않지만 추후 조회할 때 자동으로 VALID하므로 먼저 만들어주는 것이 좋습니다.
5
View
의존성 때문에 에러가 발생할 수 있습니다.
6
Sequence
-
7
Data Migration
8
psm(=pl/sql)
T-UP 또는 Table Migrator 등의 Tool을 사용하여 데이터를 전환합니다.
9
Index
package, procedure, function이 해당하며 의존성 때문에 에러가 발생할 수 있습니다.
10
Constraint
-
11
Trigger
-
12
Grant
-
13
기타(C, Java external procedure, Job 등)
-
2) 전환 DDL 스크립트 추출
Oracle의 생성문(=DDL)을 추출하기 위하여 T-UP DDL export 기능을 사용합니다.
스크립트를 추출할 수 있는 다른 Tool을 사용해도 무방합니다.
데이터베이스 주요 오브젝트 DDL 스크립트 추출
Tablespace, User, Table 생성문(=DDL)을 추출합니다.
(1) T-UP > Migrator
“Migrator” 를 선택합니다.

(2) Source Database > Type Conversion
ORACLE과 대응되는 데이터 타입을 선택합니다.

(3) Schema Object
“Independent Objects” Tablespace, User를 선택합니다.
“Dependent Objects” Table을 선택합니다.
“Schema” Table을 선택합니다.

(4) Migration Option
“Data Transfer”, ”DDL Execution” 비활성화 합니다.
“Export DDL Script” 선택, “Filename”과 “Path“ 를 지정합니다.
스키마별로 파일을 분리하고 싶다면, “Create Individual DDL Script Files" 을선택합니다.

(5) Target Database > Summary
추출 대상을 확인합니다.

(6) Data Migration
“Migrate“ 를 수행합니다.

(7) Result > “close”
“Result” 단계는 Execution 정보가 출력되며 DDL Export 정보는 출력되지 않습니다.

(8) 파일 확인
DDL문이 정상적으로 출력됬는지 확인합니다.

데이터베이스 기타 오브젝트 DDL 스크립트 추출
Tablespace, User, Table을 제외한 나머지 Object(=DDL)를 추출합니다.
(1) T-UP > Migrator
“Migrator” 를 선택합니다.

(2)Source Database > Type Conversion
ORACLE과 대응되는 데이터 타입을 선택합니다.Table은 포함되지 않아 관계없습니다.

(3) Schema Object
“Dependent Objects” 추출 오브젝트를 선택합니다.
“Schema” Table 선택, 의존성을 위해 테이블을 선택합니다.

(4) Migration Option
“Data Transfer”, ”DDL Execution” 비활성화 합니다.
“Export DDL Script” 선택, “Filename”과 “Path“ 를 지정합니다.
스키마 및오브젝트별로 파일을 분리하고 싶다면, “Create Individual DDL Script Files" 을선택합니다.

(5) Target Database > Sumamry
추출 대상을 확인합니다.

(6) Data Migration
“Migrate“ 를 수행합니다.

(7) Result > “close”
“Result” 단계는 Execution 정보가 출력되며 DDL Export 정보는 출력되지 않습니다.

(8) 파일 확인
DDL문이 정상적으로 출력됬는지 확인합니다.

3) 전환 DDL 스크립트 보정
추출한 스크립트를 Tibero에서 실행할 수 있게 정리와 변경을 진행합니다.
데이터베이스 주요 오브젝트 DDL 스크립트
Tablespace, User, Table DDL 스크립트 보정 Tablespace, User, Table 스크립트 파일명은 export_ddl.sql 입니다.
Tablespace DDL - Tibero DB를 생성하였다면 System, Undo, 기본 Temp Tablespace는 이미 존재하므로 생성하지 않습니다. 단, 기본 Temp Tablespace 이외의 Temp Tablespace는 전환해야 합니다. (예 : TEMP1) - Oracle 전용 Tablespace는 제외합니다. (예 : SYSAUX) - 데이터 파일의 경로, 파일명, Size 조정이 필요할 경우 수정합니다. - Tibero에서 미지원되는 사항은 주석처리 합니다.
아래는 Tablespace 스크립트의 주석처리 항목에 대한 설명입니다.
BLOCKSIZE 4K
Tibero는 Tablespace마다 Block Size 지정이 가능하지 않으므로 주석 처리 합니다. 초기화 파라미터에서 DB를 생성할 때 고정되며 보통 8KB를 사용합니다.
SEGMENT SPACE MANAGEMENT MANUAL
Tibero는 AUTO 부분만 지원하므로 MANUAL 부분을 AUTO로 변경 합니다.
FLASHBACK ON
Tibero는 파라미터를 통해서 전체모드로 FLASHBACK 기능 지원하므로 주석 처리 합니다.
TABLESPACE GROUP
TABLESPACE GROUP이 지원되지 않으므로 주석 처리 합니다. 하나의 Tablespace에 여러 데이터 파일로 분리하는 것을 검토합니다.
User DDL - 사용자별 패스워드를 확인합니다. (Oracle DB 관리자에게 문의합니다.) 사용자별 패스워드는 기본 tibero로 설정됩니다. - 전환 대상 사용자만 적용합니다. Oracle을 설치할 때 자동으로 생성되는 사용자는 전환이 필요하지 않습니다. - Tibero에서 미지원되는 사항은 주석 처리 합니다.
GRANT UNLIMITED TABLESPACE TO USER_NAME
Tibero는 기본으로 UNLIMITED이며 해당 문법이 지원되지 않으므로 주석 처리합니다.
ALTER USER USERNAME QUOTA UNLIMITED ON USERNAME
사용자별 QUOTA 기능이 지원되지 않으므로 주석 처리합니다.
Table DDL
- Oracle에서 전환되는 문자 집합으로 인해 Active Value 에러가 발생할 수 있습니다.
- 컬럼 타입 부분에서 에러가 발생할 경우 “데이터 타입 비교”의 "Oracle"을 참고합니다.
데이터베이스 기타 오브젝트 DDL 스크립트
Tablespace, User, Table을 제외한 나머지 Object DDL 스크립트 보정
추출 파일명은 export_other_ddl.sql 입니다.
기타 오브젝트 리스트
Index View
Constraint
Sequence Synonym
Materialized View
Library
Function
Procedure Package
Type
Trigger
Object Privilege
Job
DBMS_SCHEDULER
External Procedure
기타 오브젝트는 DDL에 포함되지 않아, Oracle을 참조하여 생성합니다.
4) 전환
데이터베이스 주요 오브젝트 DDL 스크립트
(1) Tibero 데이터베이스 서버에 export_ddl.sql 파일을 업로드합니다.
컬럼 타입 부분에서 에러가 발생할 경우 “데이터 타입”의 "Oracle"을 참고합니다.
(2) export_ddl.sql 을 수행합니다.
데이터 전환 수행
데이터 전환 작업 수행 시 다양한 도구를 통해 전환을 수행합니다.
T-UP
클라이언트 PC에서 T-UP을 통해 전환을 수행합니다.
Oracle → T-UP(클라이언트 PC) → Tibero
Table Migrator
Tibero에서 Table Migrator를 통해 전환을 수행합니다.
Oracle → Tibero
DB Link
Tibero에서 Oracle DB Link를 통해 전환을 수행합니다.
Oracle → Tibero
자세한 도구 사용법은 각 도구의 매뉴얼을 참고합니다.
데이터베이스 기타 오브젝트 DDL 스크립트
(1) Tibero 데이터베이스 서버에 export_other_ddl.sql 파일을 업로드합니다.
사용자가 많거나 전환을 반복적으로 수행할 경우 Shell(또는 Batch) 스크립트를 작성하여 진행할 것을 권장합니다.
전환을 반복적으로 수행할 경우 1차 전환을 할 때 의존성과 예외 상황을 정리해 놓고 2차, 3차 전환을 수행할 때 스크립트에 사전 작업을 수행하여 에러가 발생하지 않게 합니다.
Shell 프로그램을 사용하여 Object들이 자동으로 생성되도록 하고 다음과 같은 방법으로 검증합니다.
모든 사용자에 대해서 생성이 완료된 후 Oracle과 개수를 비교하여 누락된 부분이 없는지 확인합니다.
만약, 정상적으로 Object가 생성되지 않았다면 원인을 찾아 해결한 후 문제가 발생한 Object 수동 생성 및 다음 단계로 진행합니다.
(2) export_other_ddl.sql 을 수행합니다.
Synoym Synonym에서 참조하는 원본의 Object가 존재하지 않아도 생성할 때 문제가 되지 않습니다. 이후에 원본 Object가 생성되었다면 사용할 때 자동으로 VALID하게 됩니다.
View 생성할 때 의존성, Object 권한으로 인해 에러가 발생할 수 있습니다. 처음 생성할 때 컴파일 에러가 발생하더라도 모든 Object를 생성 후 "Object 상태변경"을 참고하여 VALID 수행 작업을 합니다.
아래는 의존성을 확인하는 예입니다.
Sequence 최종 전환 작업을 수행할 때에는 Oracle의 Current Value가 변경되지 않게 애플리케이션을 종료한 후 진행합니다.
PSM(=PL/SQL) PSM을 생성할 때 다음과 같은 사항을 고려합니다. - 생성할 때 의존성, Object 권한으로 인해 에러가 발생할 수 있다. 처음 생성할 때 컴파일 에러가 발생하더라 도 모든 Object를 생성 후 "Object 상태 변경"을 참고하여 VALID 수행 작업을 합니다. - 해당 Object에 대한 권한이 없어 "TBR-8053: Not authorized" 에러가 발생할 수 있습니다. 이때, Object의 권한을 부여한 후 재생성하면 됩니다. - PSM 내의 쿼리 부분에서 에러가 발생할 수 있습니다. 자세한 내용은 "애플리케이션 쿼리 수정"을 참고하여 수정 합니다. - Object 타입의 경우 Tibero는 지원되지 않으므로 Package 내의 타입을 선언하여 우회합니다.
아래는 Object 타입에 대하여 Package 내의 타입으로 우회 생성하는 방법입니다.
Oracle
Tibero
Index 아래는 Index 생성 이후 Oracle과 Tibero의 Index 개수 비교에 대한 설명입니다.
Tibero가 더 적을 경우
Constraint가 생성되면서 자동으로 Index가 생성되는 것도 고려해야 하므로 Constraint 생성 이후에 비교합니다.
Tibero가 더 많을 경우
Table내의 LOB Column에 대응하는 Index가 자동 생성된 부분이 아닌지 확인합니다. (Oracle 11g r2에서도 동일하게 자동생성되며 Oracle 과거버전의 경우 생성 안하는 경우도 있습니다.)
Constraint 전환 검증 항목의 "Constraint 개수 확인"에서 확인한 항목과 비교합니다.
Trigger Oracle에서 Disable된 Trigger를 전환할 때 Syntax 에러가 발생하므로 아래와 같이 처리합니다. - Disable 구문 부분을 주석 처리합니다. - Tibero에서 Disable 처리합니다.
Grant 아래는 Tibero의 Grant 미지원 사항에 대한 설명으로, Grant Count 계산할 때 제외시킵니다.
COMMIT REFRESH
Mview를 생성할 때 생성 구문으로 지원하며 권한으로는 지원하지 않습니다.
QUERY REWRITE
Mview를 생성할 때 생성 구문으로 지원하며 권한으로는 지원하지 않습니다.
DEBUG
PL/SQL DEBUGGING 권한으로 현재 Tibero는 지원하지 않습니다.
FLASHBACK
파라미터 형태로 지원하며 권한으로는 지원하지 않습니다.
위와 같은 권한이 정상적인 권한과 함께 부여될 경우 모두 부여되지 않으므로 미지원 권한을 찾아서 삭제한 이후에 재수행이 필요합니다.
기타 기타 External Procedure, Job 부분은 Oracle을 참조하여 생성합니다.
Object 상태 변경
생성할 때 의존성, Object 권한으로 인해 Object 상태가 INVALID할 수 있으므로 아래와 같이 처리합니다.
(1) Object 확인
상태별 개수 확인
INVALID Object 확인
(2) 재컴파일 수행
‘sys’ 계정으로 접속하여 아래와 같이 특정 스키마의 INVALID된 오브젝트 재컴파일을 수행합니다.
(3) Object별 재컴파일 및 에러 확인
해당 사용자로 접속하여 Object별로 재컴파일 및 에러 내용을 확인합니다.
View 재컴파일
PSM(=PL/SQL) 재컴파일
PSM(=PL/SQL) 에러 확인
Index 재컴파일
5) 전환 검증
전환이 완료된 후 DB 측에서 확인하는 사항으로 크게 Object 개수와 데이터 검증이 있습니다.
Object 개수
Table
View
Synonym
Sequence
Package
Package Body
Function
Procedure
Index
Constraint
Grant
Trigger
데이터 검증
Oracle DB Link
Count 건수 비교
Minus 결과 비교
T-UP Data Transfer Verification
(1) T-UP > Migrator
“Migrator” 를 선택합니다.

(2) Source Database > Type Conversion
ORACLE과 대응되는 데이터 타입을 선택합니다.

(3) Schema Object
“Dependent Objects” Table을 선택합니다.
“Schemas” 이관 대상 Schema 및 Table을 선택합니다.

(4) Migration Option
“Data Transfer” 활성화 합니다.
“Verification” 선택합니다.

(5) Target Database > Summary
Source와 Target 대응 Schema 및 Table 확인

(6) Data Migration
“Migrate“ 를 수행합니다.

(7) Result
Type: Data의 지정 Table 성공률을 확인합니다.

Type: Data 클릭 시 Verification 결과를 확인합니다.

3. 애플리케이션 전환
DB 전환이 완료된 후 애플리케이션 전환을 수행합니다.
크게 인터페이스 수정 및 애플리케이션 쿼리 수정이 필요할 수 있습니다.
1) 인터페이스 수정
JDBC
$TB_HOME/client/lib/jar 폴더에 tibero7-jdbc.jar 드라이버를 애플리케이션의 드라이버 관리 폴더에 복사합니다.
Oracle
Tibero
ODBC
Tibero ODBC를 설치합니다.
Oracle
Tibero
2) 애플리케이션 쿼리 수정
애플리케이션 쿼리 수정은 필요한 경우에만 사용하며 다음과 같은 상황에서 필요합니다.
Syntax Error가 발생할 경우
1
SQL을 작성할 때 From절에 있는 Table 또는 서브 쿼리절에 Alias를 주지 않고 Join 등을 실 행할 때 중복된 Column이 존재할 경우 Syntax Error가 발생합니다.
Alias를 주어서 중복되지 않게 처리합니다.
2
Union All 같은 쿼리를 사용하여 결과를 보려는 경우 실제 상위 쿼리는 특정 Column을 number type으로 하고, 하위 쿼리는 varchar type으로 하면 Syntax Error가 발생합니다.
같은 Column절에서는 동일한 Type을 사용합니다.
3
PSM(=PL/SQL) 내부에 같은 이름의 변수를 선언할 경우 Syntax Error가 발생합니다.
최종 선언된 변수 이름을 사용하고 앞 부분에 선언한 같은 이름의 변수를 삭제합니다.
결과가 정렬된 상태로 출력되지 않을 경우
1
Oracle은 order by를 주지 않아도 결과가 정렬된 형태로 나오는 경우가 있는 반면에 Tibero는 정렬된 상태로 출력되지 않을수 있습니다.
단, 대용량 테이블에서 Index 등을 강제로 태워서 일부 값만 보고자 하는 쿼리 구현의 경우는 Tibero 역시 order by를 사용하지 않아도 정렬되어 출력됩니다.
정렬된 결과를 꼭 얻어야 한다면 order by를 명시합니다.
PSM(=PL/SQL) 작성 후 컴파일을 수행할 때 Error가 발생하는 경우
1
PSM(=PL/SQL)을 작성한 후 컴파일을 수행할 때 내부 SQL의 Object에 대하여 실제 Object,Column 등이 존재하는지 체크해서 유효하지 않다면 Tibero는 Error를 발생합니다.
반면에 Oracle은 위와 같은 상황에서 컴파일을 성공했더라도 runtime때 Error가 발생하는 차이가 있습니다.
실제 존재하는 Object를 사용하고 정확한 Column Name을 사용합니다.
Last updated

