Oracle DDL의 객체 및 작업에 대한 지원 세부정보
Oracle GoldenGate가 DDL 작업의 캡처 및 복제를 위해 지원하는 Oracle 객체 및 작업에 대해 알아봅니다.
Oracle DDL에서 지원되는 객체 및 작업
DDL 캡처 지원은 데이터베이스 로그마이닝 서버에 통합되어 있습니다. 데이터베이스 파라미터 호환성을 11.2.0.4.0 이상으로 설정해야 합니다. Extract는 다음과 같은 암호 기반 열 암호화를 포함하는 DDL을 지원합니다.
-
CREATE TABLE t1 (a number, b varchar2(32) ENCRYPT IDENTIFIED BY my_password); -
ALTER TABLE t1 ADD COLUMN c varchar2(64) ENCRYPT IDENTIFIED BY my_password;
다음 추가 명령문은 DDL 지원과 관련하여 Extract에 적용됩니다.
-
Oracle DDL 복제에 대해 모든 Oracle GoldenGate 토폴로지 구성이 지원됩니다.
-
Oracle DDL의 능동-능동(양방향) 복제는 동일한 메타 데이터를 포함하는 두 개의 데이터베이스 간에 지원됩니다.
-
Oracle GoldenGate는 다음 객체에 대해 DDL을 지원합니다.
-
클러스터
-
디렉토리
-
함수
-
인덱스
-
패키지
-
프로시저
-
테이블
-
테이블스페이스
-
역할
-
시퀀스
-
동의어
-
triggers
-
유형
-
뷰
-
구체화된 뷰
-
사용자
-
보이지 않는 열
-
-
다음 Oracle AI Database 객체의 Extract에 대해 Oracle DDL의 EBR(Oracle Edition-Based Redefinition) 데이터베이스 복제가 지원됩니다.
-
함수
-
라이브러리
-
패키지(사양 및 본문)
-
프로시저
-
동의어
-
유형(사양 및 본문)
-
뷰
-
-
Oracle GoldenGate 21c 이후부터 크기가 4MB를 초과하는 DDL은 복제 지원을 제공합니다.
-
Oracle GoldenGate 23ai 이후부터 SQL 도메인이 지원됩니다.
-
Oracle GoldenGate는 행 크기가 4MB 미만인 경우 4,000개의 열이 있는 테이블을 관리할 수 있습니다.
-
Oracle GoldenGate는 Extract가 복제할 수 있도록 GTT(전역 임시 테이블) DDL 작업을 표시할 수 있도록 지원합니다. 이 작업은 기본적으로 설정되지 않으므로 이 작업을 사용으로 설정하려면
DDLOPTIONS매개변수를 설정해야 합니다. -
Oracle GoldenGate는
NOUSERID및TRANLOGOPTIONS GETCTASDML와 함께 사용할 수 있도록 딕셔너리를 지원합니다. 즉, Extract는 딕셔너리 객체를 query하지 않고 LogMiner 딕셔너리에서 객체 메타 데이터를 수신합니다. Oracle GoldenGate는 소스 데이터베이스 호환성 매개변수가 11.2.0.4보다 크거나 같은 경우 딕셔너리를 자동으로 사용합니다.Oracle GoldenGate 릴리스 12.2.x에서 딕셔너리 및 트레일 형식을 사용하는 경우 Extract는 Oracle Database 릴리스가 12.1.0.2 이전인 경우 마이닝 데이터베이스에 Logminer 패치를 적용해야 합니다.
-
Oracle GoldenGate는 Extract에서 보이지 않는 열의 복제를 지원합니다. 트레일 형식 릴리스 12.2가 필요합니다. Replicat는
MAPINVISIBLECOLUMNS매개변수를 지정하거나MAP매개변수의COLMAP절에 있는 보이지 않는 열에 명시적으로 매핑해야 합니다.SOURCEDEFS또는TARGETDEFS를 사용할 경우 Oracle 테이블에 대한 정의 파일의 메타데이터 형식이 추적 형식과 호환되어야 합니다. 메타데이터 형식 12.2는 트레일 형식 12.2와 호환되며, 12.2 이전의 메타데이터 형식은 12.2 이전의 트레일 형식과 호환됩니다. 정의 파일의 메타데이터 형식을 지정하려면DEFGEN에서 정의 파일이 생성될 때DEFSFILE매개변수의FORMAT RELEASE옵션을 사용합니다. -
네임스페이스 컨텍스트(
CREATE CONTEXT)를 생성하기 위한 DDL 문은 Extract에 의해 캡처되고 Replicat에 의해 적용됩니다. -
펌프 모드에서 추출은 다음 DDL 옵션을 지원합니다.
-
DDL INCLUDE ALL -
DDL EXCLUDE ALL -
DDL EXCLUDE OBJNAME
DDL EXCLUDE의SOURCECATALOG및ALLCATALOG옵션도 지원됩니다.DDL 파라미터가 지정되지 않은 경우 모든 DDL이 트레일로 기록됩니다.
DDL EXCLUDE OBJNAME가 지정되고 객체 소유자가 제외 규칙과 일치하지 않는 경우 추적에 기록됩니다. -
-
Oracle 데이터베이스 21c부터 다음 DDL을 사용하여 Oracle GoldenGate에 의해 복제되지 않은 DML/DDL 변경 사항의 차단을 지원할 수 있습니다.
ALTER DATABASE [ENABLE | DISABLE] goldengate blocking mode;Oracle GoldenGate 차단 모드가 사용으로 설정된 경우 테이블에서
support_mode NONE를 사용하고 지원되지 않는 Oracle PL/SQL 문을 실행하는 DML은 다음 오류와 함께 실패합니다.ORA-26981: "operation was unsupported during Oracle GoldenGate blocking mode"Oracle 데이터베이스 21c의 경우 다음 기능으로 인해 Oracle GoldenGate에서 테이블이
support_mode NONE가 됩니다.-
BFILE- ADT 열 또는 입력된 테이블의 속성 -
스칼라가 없는 테이블
-
OLAP AW$ 테이블
-
샤딩된 대기열 테이블
-
정렬된 해시 클러스터 테이블
-
관계형 테이블의 ADT 속성에 대한 기본 키 제약 조건
-
긴
raw/varchar의 기본 키/고유 키 제약 조건(4000바이트 이상) -
V$DATABASE열,Goldengate_Blocking_Mode를 질의하여 현재 차단 모드 상태를 확인할 수 있습니다.
-
-
DDL 자동 캡처 모드의 경우:
-
Extract는
TABLE및TABLEEXCLUDE매개변수를 기반으로 DDL을 캡처하므로DDL INCLUDE MAPPED에만 적용됩니다. -
테이블 관련 DDL만 자동 캡처할 수 있습니다.
-
테이블 레벨에서 자동 캡처를 활성화하는 DDL:
CREATE/ALTER TABLE ... ENABLE LOGICAL REPLICATION ALLKEYS;
또는
<pre class="copy"><code>CREATE/ALTER TABLE ... ENABLE LOGICAL REPLICATION ALLOW NOVALIDATE KEYS;</code></pre>Oracle AI Database Utilities 가이드의 Oracle GoldenGate용 추가 로깅을 캡처하는 방법을 참고하세요.
-
-
분할 영역 관련 DDL 및 분할 영역 유지 관리 작업에 대해 다음 작업이 지원됩니다.
- 삭제 분할 영역:
동일한 이름으로 분할 영역을 재생성하면 새 객체 번호가 생성됩니다. 삭제 분할 영역 DDL이 처리될 때 공간 소비를 최소화하기 위해 내부 캐시가 지워집니다.
- 분할 영역을 자르기:
분할 영역 이름과 객체 번호는 동일하게 유지됩니다. 기본 테이블 객체 버전은 동일하게 유지됩니다.
- 분할영역 이름 바꾸기:
분할 영역 객체 번호는 동일하게 유지되지만 새 이름을 가져옵니다. 기본 테이블의 객체 버전이 범프됩니다. 메모리 내 이름 캐시는 이 DDL을 볼 때 무효화되고 다음 DML에 다시 채워집니다. 새 분할 영역 이름이 필터링됨에서 필터링되지 않음으로 전환되거나 그 반대로 전환될 수 있으므로 지정된 분할 영역 객체 번호가 적합한지 여부를 저장하는 캐시도 재평가해야 합니다.
- 교환 분할영역:
분할 영역의 데이터를 테이블의 데이터와 교환하거나 그 반대로 교환합니다. 교환되는 분할 영역의 obj#은 변경되지 않습니다. Dataobj#은 변경되지만 Extract에서 사용되지 않습니다. 분할 영역 자체는 여전히 동일한 테이블에 속합니다.
- 분할영역 병합:
하나 이상의 분할 영역을 새 분할 영역으로 병합합니다. DDL은 새 분할 영역을 생성하고 병합된 분할 영역을 삭제합니다. 공간을 절약하기 위해 메모리에서 캐시를 지워야 하며 사용자는 새로 생성된 분할 영역에 대해 적절한 필터 규칙을 확인해야 합니다.
- 분할영역 분할:
분할되는 분할 영역은 원래 이름과 객체 번호를 유지하며 분할 데이터에 대해 새 분할 영역이 생성됩니다. 사용자는 새로 생성된 분할 영역에 대해 분할 영역 필터 규칙이 올바른지 확인해야 합니다.
- 병합 분할 영역:
해시(Hash) 분할 테이블의 분할 영역 수를 줄입니다. 병합되는 특정 분할 영역은 데이터베이스에 의해 선택되며 해당 콘텐츠가 재분배된 후에 삭제됩니다. 나머지 분할 영역은 동일한 이름과 객체 번호를 유지합니다. 공간 소비를 최소화하려면 내부 캐시를 지워야 합니다.
- 분할 영역을 수정합니다.
목록 분할 영역에 대한 값을 추가하거나 삭제하지 않고 분할 영역의 기본 및 실제 속성을 수정합니다. 모든 수정 사항은 분할 영역 이름과 객체 번호를 그대로 유지합니다.
- 분할영역 이동:
Partition 데이터가 새 테이블스페이스로 이동됩니다. 분할 영역 이름과 번호는 동일하게 유지됩니다.
- 재정의 테이블:
dbms_redefinition는 중간 테이블을 사용하여 테이블을 분할하는 데 사용할 수 있습니다. 분할 영역은 중간 테이블에 생성되고finish_redef작업 후에 테이블 스왑 이름이 생성됩니다. 중간 테이블에 생성된 partition은 테이블이 교체될 때 해당 이름과 객체 번호를 유지합니다. 분할 영역이 이제 기본 테이블에 속하므로 추출 필터 캐시는finish_redef에서 재평가되어야 합니다. 사용자는 적절한 필터 규칙을 확인해야 합니다.- 재정의 분할 영역:
테이블을 재정의할 때 Partition은 원래 테이블에서 중간 테이블로 이동합니다. 예를 들어, 원래 테이블에
USER테이블스페이스에 상주하는 분할 영역이 있고, 분할 영역이 없는 중간 테이블이 생성되고 테이블이NEW테이블스페이스에 상주하는 경우를 고려해 보십시오. 이 경우finish_redef작업 후에도 테이블이 교체되면 분할 영역은 여전히USER테이블스페이스에 상주합니다. 재정의 분할 영역을 사용하면 분할 영역을 중간 테이블의NEW테이블스페이스로 이동할 수 있습니다. 분할 영역은 해당 이름과 객체 번호를 보유합니다.- 시스템에서 생성된 분할 영역 이름:
분할 영역과 같은 해시 분할 영역 및 작업에 대해 분할 영역이 자동으로 생성되면 분할 영역 이름은
SYS_P sequence value형식입니다. 마찬가지로 하위 분할 영역은SYS_SUBP sequence value형식입니다. 필터 규칙을 준수하는 DML을 제외하고 분할 영역의 이름을 바꾸는 것이 좋습니다.
Oracle DDL에서 지원되지 않는 객체 및 작업
다음은 Oracle DDL에서 지원되지 않는 객체 및 작업 목록입니다.
제외된 객체
다음 이름 또는 이름 접두어는 Oracle 예약으로 간주되며 Oracle GoldenGate DDL 구성에서 제외되어야 합니다. Oracle GoldenGate는 이러한 이름을 포함하는 객체를 무시합니다.
제외된 스키마
"ANONYMOUS", // HTTP access to XDB
"APPQOSSYS", // QOS system user
"AUDSYS", // audit super user
"BI", // Business Intelligence
"CTXSYS", // Text
"DBSNMP", // SNMP agent for OEM
"DIP", // Directory Integration Platform
"DMSYS", // Data Mining
"DVF", // Database Vault
"DVSYS", // Database Vault
"EXDSYS", // External ODCI System User
"EXFSYS", // Expression Filter
"GSMADMIN_INTERNAL", // Global Service Manager
"GSMCATUSER", // Global Service Manager
"GSMUSER", // Global Service Manager
"LBACSYS", // Label Security
"MDSYS", // Spatial
"MGMT_VIEW", // OEM Database Control
"MDDATA",
"MTSSYS", // MS Transaction Server
"ODM", // Data Mining
"ODM_MTR", // Data Mining Repository
"OJVMSYS", // Java Policy SRO Schema
"OLAPSYS", // OLAP catalogs
"ORACLE_OCM", // Oracle Configuration Manager User
"ORDDATA", // Intermedia
"ORDPLUGINS", // Intermedia
"ORDSYS", // Intermedia
"OUTLN", // Outlines (Plan Stability)
"SI_INFORMTN_SCHEMA", // SQL/MM Still Image
"SPATIAL_CSW_ADMIN", // Spatial Catalog Services for Web
"SPATIAL_CSW_ADMIN_USR",
"SPATIAL_WFS_ADMIN", // Spatial Web Feature Service
"SPATIAL_WFS_ADMIN_USR",
"SYS",
"SYSBACKUP",
"SYSDG",
"SYSKM",
"SYSMAN", // Adminstrator OEM
"SYSTEM",
"TSMSYS", // Transparent Session Migration
"WKPROXY", // Ultrasearch
"WKSYS", // Ultrasearch
"WK_TEST",
"WMSYS", // Workspace Manager
"XDB", // XML DB
"XS$NULL",
"XTISYS", // Time Index
특수 스키마:
"AURORA$JIS$UTILITY$", // JSERV
"AURORA$ORB$UNAUTHENTICATED", // JSERV
"DSSYS", // Dynamic Services Secured Web Service
"OSE$HTTP$ADMIN", // JSERV
"PERFSTAT", // STATSPACK
"REPADMIN",
"TRACESVR" // Trace server for OEM
제외된 테이블(* 와일드카드는 스키마 또는 임의의 문자를 나타냄):
"*.AQ$*", // advanced queues
"*.DR$*$*", // oracle text
"*.M*_*$$", // Spatial index
"*.MLOG$*", // materialized views
"*.OGGQT$*",
"*.OGG$*", // AQ OGG queue table
"*.ET$*", // Data Pump external tables
"*.RUPD$*", // materialized views
"*.SYS_C*", // constraints
"*.MDR*_*$", // Spatial Sequence and Table
"*.SYS_IMPORT_TABLE*",
"*.SYS_EXPORT_TABLE*",
"*.CMP*$*", // space management, rdbms >= 12.1
"*.DBMS_TABCOMP_TEMP_*", // space management, rdbms < 12.1
"*.MDXT_*$*" // Spatial extended statistics tables
기타 지원되지 않는 DDL
Oracle GoldenGate는 다음을 지원하지 않습니다.
-
중첩 테이블의 DDL
-
ID 열에 대한 DDL입니다.
-
ALTER DATABASE및ALTER SYSTEM(DDL로 간주되지 않음) 딕셔너리를 사용하여ALTER DATABASE DEFAULT EDITION및ALTER PLUGGABLE DATABASE DEFAULT EDITION를 복제할 수 있습니다. 다른 모든ALTER [PLUGABLE] DATABASE명령은 무시됩니다. -
대기 데이터베이스의 DDL입니다.
-
데이터베이스 링크 DDL.
-
FLASHBACK ARCHIVE절 및 DDL을 사용하여 Flashback Data Archive 자체를 생성, 변경 또는 삭제하는 테이블을 생성하는 DDL입니다.FLASHBACK ARCHIVE가 있는 테이블의 DML이 지원됩니다. -
일부 DDL은 시스템에서 생성된 객체 이름을 생성합니다. 시스템 생성 객체의 이름이 서로 다른 두 데이터베이스 간에 항상 같지는 않을 수 있습니다. 따라서 시스템에서 생성한 이름이 있는 객체에 대한 DDL 작업은 해당 이름이 대상에서 정확히 동일한 경우에만 수행해야 합니다.