ProSync에서 테이블을 동기화하기 전에, 먼저 지원되는 데이터 타입을 확인한다. Source DB에 따라 지원하는 컬럼 타입이 다르므로 주의한다.
Tibero
VARCHAR2, NVARCHAR2, NUMBER, FLOAT, LONG, DATE, BINARY_FLOAT, BINARY_DOUBLE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE, INTERVAL YEAR TO MONTH
Oracle
ProSync 4.7은 Oracle 확장 데이터 타입을 자동으로 인식한다. 컬럼의 선언 길이를 바이트 기준으로 확인하며, VARCHAR2·NVARCHAR2는 4,000바이트 초과, RAW는 2,000바이트 초과인 컬럼을 확장 타입으로 처리한다. USE_ORACLE_EXTENDED_TYPE 파라미터는 사용하지 않는다.
확장 타입 컬럼이 있는 소스 테이블에는 PRIMARY KEY가 필요하며, UNIQUE 제약조건이나 ROWID로 대신할 수 없다. 별도로 저장된 확장 값은 Llob 프로세스가 소스 DB에 Flashback Query를 수행하여 읽는다.
Llob 프로세스의 동작은 를 참고한다.
동기화 대상 테이블은 Source DB와 Target DB 각각에 존재해야 한다. MAP Rule을 사용하지 않는 기본 구성에서는 Source와 Target에 동일한 사용자 계정과 동일한 스키마 구조로 생성하는 것을 전제로 한다.
다음은 TEST 사용자 계정에 테이블 T1, T2, T3을 생성하는 예제이다. Source DB와 Target DB 모두에 수행한다.
동기화 대상 테이블은 아래 경로의 파일에 등록한다.
등록 형식은 OWNER_NAME.TABLE_NAME 형태로 작성한다.
#으로 시작하는 줄과 빈 줄은 무시된다. 그 외의 줄은 OWNER_NAME.TABLE_NAME 형식이어야 하며, 구분자 .가 없거나 둘 이상이거나 OWNER 또는 TABLE이 비어 있으면 잘못된 항목으로 판단해 설치를 중단한다.
동기화 대상을 지정할 때 Table명과 User(Owner)명 모두에 % 와일드카드를 사용할 수 있다.
사용 예시는 다음과 같다.
Source DB가 Tibero 또는 Oracle인 경우, 다음 객체는 동기화 대상에서 자동으로 제외된다. 제외 대상에 따라 적용 범위가 다르다.
또한 등록되는 객체 타입은 TABLE과 SEQUENCE로 한정되며, 그 외의 객체 타입은 등록되지 않는다.
Source DB가 Tibero 또는 Oracle인 경우, 설치 config 파일에 AUTO_SYNC_ON_CREATE=Y를 설정하면 설치 이후 CREATE 문으로 생성된 테이블과 시퀀스가 자동으로 동기화 대상에 등록된다. prs_obj_group#.list에 미리 적지 못한 테이블을 매번 Admin 명령으로 등록하거나 재설치할 필요가 없다.
자동 등록을 사용하려면 Source DB에 DB 단위 supplemental log가 설정되어 있어야 한다. 테이블 단위로만 supplemental log를 건 경우, 자동 등록된 테이블은 supplemental log가 없는 상태가 되어 변경분을 추출할 수 없다.
Source DB가 Oracle인 경우 DB 단위로 supplemental log를 설정한다. 설치 config 파일에 SUPP_LOG_LVL_ALL=Y를 설정하면 설치 과정에서 database level로 설정된다.
Source DB가 Tibero인 경우 _DDL_AUTO_SUPPLOG_CTBL을 TRUE로 설정하여 DB 단위 supplemental log를 활성화한다. 운영 중인 DB에는 ALTER SYSTEM으로 바로 적용할 수 있으나 이 변경은 DB 재기동 후 유지되지 않으므로, TIP 파일에도 같은 값을 설정한다. TAC 환경에서는 모든 노드에 동일하게 설정한다.
설치 config 파일에 AUTO_SYNC_ON_CREATE=Y를 설정하면 설치 과정에서 이 값을 확인하며, 설정되어 있지 않으면 안내 메시지와 함께 설치를 중단한다.
%.%
Source DB의 모든 소유자의 모든 테이블 (User 와일드카드)
AQ 관련 테이블
항상
이름이 AQ$_ 로 시작하는 테이블이 제외된다.
IOT overflow 세그먼트
항상
이름이 SYS_IOT_OVER_ 로 시작하는 테이블이 제외된다.
Recycle Bin 객체
항상
이름이 BIN$ 로 시작하는 객체가 제외된다.
INTERVAL DAY TO SECONDRAWCHARNCHARCLOBNCLOBBLOBXMLTYPEVARCHAR2, NVARCHAR2, NUMBER, FLOAT, LONG, DATE, BINARY_FLOAT, BINARY_DOUBLE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE, INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND, RAW, CHAR, NCHAR, CLOB, NCLOB, BLOB, XMLTYPE
PostgreSQL
CHAR, VARCHAR, INT, SMALLINT, BIGINT, DECIMAL, REAL, DOUBLE PRECISION, BYTEA, TEXT, DATE, TIMESTAMP
TEST.%
TEST 소유의 모든 테이블 (Table 와일드카드)
TEST.TB%
TEST 소유의 테이블 중 이름이 TB로 시작하는 테이블
TEST%.%
시스템 스키마의 객체
OWNER를 %가 포함된 패턴으로 지정한 경우에만
Oracle 12c 이상은 DB가 관리하는 계정(ALL_USERS.ORACLE_MAINTAINED = 'Y', SYS · SYSTEM 등)이 제외된다. Oracle 11g는 이 컬럼이 없으므로 Oracle 기본 계정과 옵션 계정의 고정 목록(SYS, SYSTEM, OUTLN, DBSNMP, DIP, ORACLE_OCM, APPQOSSYS, ANONYMOUS, XS$NULL, XDB, CTXSYS, MDSYS, MDDATA, ORDSYS, ORDDATA, ORDPLUGINS, SI_INFORMTN_SCHEMA, OLAPSYS, EXFSYS, WMSYS, SYSMAN, MGMT_VIEW, OWBSYS, OWBSYS_AUDIT, SPATIAL_CSW_ADMIN_USR, SPATIAL_WFS_ADMIN_USR, TSMSYS, DMSYS, WKSYS, WKPROXY, WK_TEST, LBACSYS, DVSYS, DVF, FLOWS_FILES, APEX_PUBLIC_USER)과, APEX_030200 · FLOWS_030000처럼 APEX_ 또는 FLOWS_ 뒤에 숫자 6자리가 붙는 계정이 제외되며, 목록에 없는 계정은 제외되지 않는다. Tibero는 SYS, SYSCAT, SYSGIS, OUTLN, LBACSYS 및 일반 사용자가 아닌 계정이 제외된다.
ProSync 운영 계정과 메타 객체
항상
이름이 TEST로 시작하는 모든 소유자의 모든 테이블 (User 와일드카드)
PRS_USER 소유의 객체와 PRS_OBJ_LIST, PRS_DD_*, PRS_LCT 등 ProSync가 생성한 메타 객체가 제외된다.
$ tbsql sys/password
SQL> CREATE USER TEST IDENTIFIED BY PASSWORD;
SQL> GRANT RESOURCE, CONNECT TO TEST;
SQL> CREATE TABLE TEST.T1 (C1 NUMBER PRIMARY KEY, C2 VARCHAR(10));
SQL> CREATE TABLE TEST.T2 (C1 NUMBER PRIMARY KEY, C2 VARCHAR(10));
SQL> CREATE TABLE TEST.T3 (C1 NUMBER PRIMARY KEY, C2 VARCHAR(10));$PRS_HOME/install/prs_obj_group1.listTEST.T1
TEST.T2
TEST.T3TEST.%
TEST%.%
%.%SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;SQL> ALTER SYSTEM SET _DDL_AUTO_SUPPLOG_CTBL=TRUE;_DDL_AUTO_SUPPLOG_CTBL=TRUE# Source Tibero
SRC_DB_TYPE=TIBERO
SRC_DB_NAME=src_tibero
AUTO_SYNC_ON_CREATE=Y# Source Oracle
SRC_DB_TYPE=ORACLE
SRC_DB_NAME=src_oracle
AUTO_SYNC_ON_CREATE=Y
SUPP_LOG_LVL_ALL=Y