SQL Server: 지원되는 데이터 유형, 객체 및 작업
SQL Server 데이터베이스에서 Oracle GoldenGate에 대한 지원 정보에 대해 알아봅니다.
Oracle GoldenGate for SQL Server를 사용하면 지원되는 SQL Server 데이터베이스 버전에 대한 초기 로드 및 트랜잭션 데이터의 캡처 및 전달을 지원합니다.
Oracle GoldenGate for SQL Server는 이 문서에서 별도로 언급하지 않는 한 소스 데이터의 매핑, 필터링 및 변환을 지원하고, Oracle GoldenGate에서 지원하는 다른 소스 데이터베이스에서 파생된 데이터를 SQL Server 데이터베이스로 복제합니다.
인스턴스 요구사항
-
SQL Server 서버 이름(
@@SERVERNAME)은NULL일 수 없습니다. -
(추출) Oracle GoldenGate가 트랜잭션 데이터를 캡처하려면 SQL Server 에이전트가 소스 SQL Server 인스턴스에서 실행 중이어야 하고 SQL Server 변경 데이터 캡처 작업이 데이터베이스에 대해 실행 중이어야 합니다. 데이터베이스에 대해 SQL ServerSQL Server 트랜잭션 복제도 사용으로 설정된 경우 SQL ServerSQL Server 로그 리더 에이전트가 실행 중이어야 합니다.If SQL ServerSQL Server Transactional Replication is also enabled for the database, then the SQL ServerSQL Server Log Reader Agent must be running.
-
TEXT, NTEXT, IMAGE,또는VARCHAR(MAX), NVARCHAR(MAX)및VARBINARY(MAX)열에 대한 데이터가max text repl size옵션에 대해 설정된 SQL Server 기본 크기를 초과하는 경우 크기를 확장합니다.max text repl size의 현재 값을 보거나 조정하려면sp_configure를 사용합니다. 주: SQL Server용 Amazon RDS의 경우 인스턴스 설정을 조정하려면sp_configure대신 매개변수 그룹을 사용해야 합니다.
- 적절한 기능을 위해 SQL ServerSQL Server 인스턴스에 대한 최신 서비스 팩 또는 누적 업데이트를 설치하는 것이 좋습니다.It is recommended to install the most recent service pack or Cummulative Update for your SQL ServerSQL Server instance to ensure proper functionality. SQL Server 2012, 2014, 2016 및 2017의 경우 Microsoft는 SQL Server 변경 데이터 캡처 기능에 직접적인 영향을 미치는 몇 가지 중요한 문제를 식별하고 해결했습니다. 이러한 상황은 Oracle GoldenGate가 데이터를 올바르게 캡처하는 기능에 영향을 줍니다. Microsoft 패치가 필요한 현재 알려진 문제로는 KB3030352, KB3166120 및 KB 4073684가 있습니다.
데이터베이스 요구사항
Oracle GoldenGate 지원에 대한 다음 요구 사항 및 제한 사항을 준수하십시오.
-
유저 데이터베이스만 캡처 및 전달이 지원됩니다.
-
데이터베이스에 대해
Auto Create Statistics및Auto Update Statistics가 사용으로 설정되었는지 확인합니다. -
데이터베이스를 SQL ServerSQL Server 인스턴스 버전의 호환성 수준으로 설정해야 합니다.The database must be set to the compatibility level of the SQL ServerSQL Server instance version.
-
Oracle GoldenGate는 TDE(투명한 데이터 암호화)로 구성된 SQL Server 데이터베이스를 지원합니다.
-
(추출) 소스 데이터베이스는 Microsoft SQL Server에서 데이터 변경 캡처 기능을 지원하는 모든 복구 모델로 설정할 수 있습니다.
-
다른 Instance에서 백업을 복원하여 원본 데이터베이스를 생성한 경우에는 데이터베이스 소유자 SID를 새 Instance의 SID와 동기화해야 합니다. 또는
sp_changedbowner를 사용하여 복원된 데이터베이스를 현재 로그인으로 설정할 수 있습니다. -
인메모리 OLTP(인메모리 최적화)가 사용으로 설정된 SQL Server 데이터베이스(SQL Server 2017 CU15 이상 릴리스)의 캡처가 Oracle GoldenGate 릴리스 21.15 및 23.5 이상에서 지원됩니다. 하지만 온디스크 테이블에서 캡처만 지원되며 메모리 최적화 테이블에서는 지원되지 않습니다.
-
(AlwaysOn) Extract는 기본 데이터베이스 또는 읽기 전용 동기 커밋 모드에서 캡처를 지원합니다. 비동기 커밋 모드는 캡처에 지원되지 않습니다.
-
Replicat 성능 고려 사항: SQL Server 2016부터 Microsoft는 데이터베이스 옵션
TARGET_RECOVERY_TIME의 기본 설정을 0초에서 60초로 변경했습니다. 내부 테스트에서 Replicat의 처리량을 줄일 수 있다는 것이 입증되었습니다. Replicat 처리량 저하가 발생하는 경우TARGET_RECOVERY_TIME설정을 0으로 조정해 보십시오.
제한 사항:
-
Oracle GoldenGate는 시스템 데이터베이스 캡처 또는 전달을 지원하지 않습니다.
-
Oracle GoldenGate는 포함된 데이터베이스의 캡처를 지원하지 않습니다.
-
소스 데이터베이스 이름은 121자를 초과할 수 없습니다. 이 제한은 보완 로깅을 활성화하는 데 사용되는 SQL ServerSQL Server 내장 프로시저 때문입니다.This limit is due to the SQL ServerSQL Server stored procedures that are used to enable supplemental logging.
-
Oracle GoldenGate 하트비트 기능을 구성하는 경우 SQL Server 데이터베이스 이름은 107자를 초과하지 않아야 합니다.
-
(AlwaysOn) AlwaysOn 가용성 그룹의 비동기 커밋 모드로 구성된 데이터베이스에서 캡처는 지원되지 않습니다.
테이블 요구사항
캡처 및 전달을 위해 포함할 테이블에는 지원되는 SQL Server 데이터 유형에 나열된 데이터 유형만 포함되어야 합니다.
-
Oracle GoldenGate는 사용자 테이블에서 트랜잭션 DML을 캡처하고 사용자 테이블 및 쓰기 가능한 뷰로 전달할 수 있도록 지원합니다.
-
DDL 작업은 지원되지 않습니다.
-
Oracle GoldenGate는 SQL Server Change Data Capture가 추적하는 테이블에 대해 허용되는 최대 테이블 이름 및 열 길이를 지원합니다.
-
캡처할 테이블의 모든 열 길이 합계는 SQL Server에서 테이블에 대한 변경 데이터 캡처를 사용하도록 허용하는 길이를 초과하지 않아야 합니다. If the sum of all column lengths exceeds what is allowed by SQL Server procedure
sys.sp.cdc_enable_table, thenADD TRANDATAcannot be enabled for that table. 허용되는 최대 레코드 길이는 열 수가 많을수록 감소하므로 최대 레코드 길이와 테이블의 열 수 사이에 역관계가 있습니다.
지원되는 SQL Server 데이터 유형
다음 제한 사항에 특별히 명시되지 않은 경우 캡처 및 전달에 지원되는 데이터 유형은 다음과 같습니다.
-
이진 데이터 유형
-
(binary, varbinary, varbinary (max)) -
(varbinary (max)와FILESTREAM)
-
-
문자 데이터 유형
(char, nchar, nvarchar, nvarchar (max), varchar, varchar (max))
-
날짜 및 시간 데이터 유형
(date, datetime2, datetime, datetimeoffset, smalldatetime, time)
-
숫자 데이터 유형
(bigint, bit, decimal, float, int, money, numeric, real, smallint, smallmoney, tinyint)
-
LOB
(image, ntext, text)
-
기타 데이터 유형
(timestamp, uniqueidentifier, hierarchyid, geography, geometry, sql_variant (Delivery only), XML)
-
Oracle GoldenGate for SQL Server는
SPARSE설정을 포함하는 열 데이터를 복제할 수 있습니다.
제한 사항:
-
Oracle GoldenGate는 4KB보다 큰 대형 객체의 필터링, 열 매핑 또는 조작을 지원하지 않습니다. 전체 Oracle GoldenGate 기능은 최대 4KB의 객체에 사용할 수 있습니다.
-
Oracle GoldenGate는 XML이 행에 맞지 않을 때 SQL Server와 마찬가지로 XML 데이터를 LOB(대형 객체)로 처리합니다. SQL Server 확장 XML 향상 기능(예: lax validation,
DATETIME, union 기능)은 지원되지 않습니다. -
시스템 지정
TIMESTAMP열 또는 비구체화 계산 열은 키의 일부가 될 수 없습니다.TIMESTAMP열을 포함하는 테이블에는 키가 있어야 합니다. 키는 기본 키 또는 고유 제약 조건일 수도 있고,TABLE또는MAP문에서KEYCOLS절로 지정된 대체 키일 수도 있습니다. 자세한 내용은 행 식별자 지정을 참조하십시오. -
Oracle GoldenGate는 문자 열에 저장된 멀티바이트 문자 데이터 유형 및 멀티바이트 데이터를 지원합니다. 멀티바이트 데이터는 유사 SQL ServerSQL Server 구성에서만 지원됩니다.Multibyte data is supported only in a like-to-like, SQL ServerSQL Server configuration. 멀티바이트 문자 데이터에는 변환, 필터링 및 기타 유형의 조작이 지원되지 않습니다.
-
TEXT,NTEXT,IMAGE,VARCHAR (MAX),NVARCHAR(MAX)및VARBINARY (MAX)열에 대한 데이터를 캡처하면max text repl size옵션에 대해 설정된 SQL Server 기본 크기를 초과하여 크기를 확장합니다.sp_configure를 사용하여max text repl size의 현재 값을 확인하고 필요에 따라 옵션을 조정합니다. 주: SQL Server용 Amazon RDS에서는max text repl size가 64MB보다 크도록 허용하지 않습니다. {: .infoboxnote} -
IMAGE,NTEXT및TEXT데이터 유형의 열은 삭제 및 이미지 업데이트 작업 전의NULL값으로 기록됩니다. 열이 업데이트되지 않은 경우VARBINARY(MAX),VARCHAR(MAX)및NVARCHAR(MAX)의 열은 이전 이미지 업데이트 작업에 대한NULL값으로 기록됩니다.자세한 내용은 다음 Microsoft 문서에서 대형 객체 데이터 유형 컨텐츠를 검토하십시오.
-
Oracle GoldenGate는 최대 2GB 크기의 UDT 및 UDA 데이터를 지원합니다. SQL_Variant를 제외한 모든 UDT가 지원됩니다.
-
SQL Server 내장 CLR 데이터 유형(예: 지오메트리, 지리 및 계층 ID)을 포함한 CLR(Common Language Runtime)이 지원됩니다. CLR 데이터 유형은 유사 SQL Server 구성에서만 지원됩니다. CLR 데이터에 대해서는 변환, 필터링 및 기타 유형의 조작이 지원되지 않습니다.
-
FILESTREAM속성이 있는VARBINARY (MAX)열은 최대 4GB까지 지원됩니다. Extract는 표준Win32파일 함수를 사용하여FILESTREAM파일을 읽습니다. -
부동 소수점 수의 범위와 정밀도는 호스트 시스템에 따라 달라집니다. 일반적으로 정밀도는 16자리까지 정확하지만 예상 근사치를 확인하려면 데이터베이스 설명서를 검토해야 합니다. Oracle GoldenGate는 지원되는 전체 자릿수를 초과하는 값을 반올림하거나 자릅니다.
-
Oracle GoldenGate는 0001/01/03:00:00:00에서 9999/12/31:23:59:59까지의 시간 기록 데이터를 지원합니다. 시간 기록이 GMT에서 현지 시간으로 변환되는 경우 이러한 제한은 결과 시간 기록에도 적용됩니다. 시간대에 따라 변환에서 시간을 더하거나 뺄 수 있으므로 시간 기록이 지원되는 하한 또는 상한을 초과할 수 있습니다.
계산된 열에 대한 제한 사항:
-
지속되거나 비지속된 계산된 열은 Microsoft의 변경 데이터 캡처에서 지원되지 않습니다. 따라서 계산된 열이 포함된 열의 트레일에는 데이터가 기록되지 않습니다. 비지속 계산 열에 대한 데이터를 복제하려면
TABLE매개변수의FETCHCOLS또는FETCHMODCOLS옵션을 사용하여 테이블에서 열 데이터를 인출합니다.데이터베이스에서 열이 변경된 시간과 Extract가 처리 중인 트랜잭션 레코드에 대한 데이터를 인출하는 시간 사이의 데이터 값 차이로 인해 불일치가 발생할 수 있습니다.
-
지원되지 않는 데이터 유형이
sql_variant인 열이FETCHCOLS또는FETCHMODCOLS옵션에서 사용되는 경우 Extract 비정상 종료는 다음 오류와 함께 수행됩니다.ERROR OGG-25230 Unsupported datatype '*column-name* (sql_variant)' used with 'FETCHCOLS/FETCHCOLSEXCEPT' in table '*table-name>*. -
데이터베이스는 해당 열 유형에 대해 DML을 허용하지 않으므로 Replicat는 해당 열의 데이터가 트레일 내에 있더라도 계산된 열에 DML을 적용하지 않습니다. 소스 지속 계산 열 또는 패치된 비지속 열의 데이터를 계산된 열이 아닌 대상 열에 적용할 수 있습니다.
-
초기 로드에서는 모든 데이터가 트랜잭션 로그가 아닌 소스 테이블에서 직접 선택됩니다. 따라서 초기 로드에서는 비지속 계산 열을 포함한 모든 열의 데이터 값이 사용되는 방법에 따라 추적에 기록되거나 대상으로 전송됩니다. 그러나 변경 데이터를 적용할 때와 마찬가지로 데이터베이스가 해당 유형의 열에 대해 DML을 허용하지 않기 때문에 Replicat는 초기 로드 데이터를 계산된 열에 적용하지 않습니다.
-
Oracle GoldenGate는 비지속적 계산 열이
TABLE또는MAP문의KEYCOLS절에서 사용되도록 허용하지 않습니다. -
고유 키에 비지속형 계산 열이 포함되어 있고 Oracle GoldenGate가 키를 사용해야 하는 경우 비지속형 계산 열은 무시됩니다. 나머지 열이 고유성을 적용하지 않을 경우 데이터 무결성에 영향을 줄 수 있습니다.
-
비지속 계산 열에서 고유 인덱스가 정의된 경우에는 사용되지 않습니다.
-
고유 키 또는 인덱스가 비지속 계산 열을 포함하고 테이블에서 유일한 고유 식별자인 경우 Oracle GoldenGate는 모든 열을 식별자로 사용하여 대상 행을 찾아야 합니다. 비지속 계산 열은 이 식별자에 사용할 수 없으므로 Replicat는 이 식별자가 포함된 작업을 잘못된 대상 행에 적용할 수 있습니다.
지원되지 않는 SQL Server 데이터 유형 및 기능
-
SQL_Variant데이터 유형은 캡처에 지원되지 않습니다. -
지원되지 않는 데이터 유형을 포함하는 테이블로 인해 Extract가 비정상 종료될 수 있습니다. 임시해결책으로 해당 테이블에서
TRANDATA를 제거하고 Extract의TABLE문에서 제거하거나 테이블에 대해 Extract의TABLEEXCLUDE매개변수를 사용해야 합니다.
SQL Server에 대해 지원되는 객체 및 작업
지원되는 객체 및 작업은 다음과 같습니다.
-
병렬 Replicat는 SQL Server용 Oracle GoldenGate에서 지원됩니다.
-
Oracle GoldenGate는 사용자 테이블에서 트랜잭션 DML을 캡처하고 사용자 테이블 및 쓰기 가능한 뷰로 전달할 수 있도록 지원합니다.
-
TEXT, NTEXT, IMAGE, VARBINARY, VARBINARY (MAX) VARCHAR (MAX)및NVARCHAR (MAX)열은 SQL Server Chang Data Capture에 의해 기록되는 작업에 대해 전체 크기로 지원됩니다. 예를 들어,IMAGE,NTEXT및TEXT데이터 유형의 열은 삭제 작업에 대해 NULL 값으로 기록됩니다. 자세한 내용은 다음 Microsoft 문서에서 대형 객체 데이터 유형 컨텐츠를 검토하십시오. -
Oracle GoldenGate는 SQL Server 변경 데이터 캡처에 대해 사용으로 설정된 테이블에 대해 허용되는 최대 행 크기를 지원합니다.
-
Oracle GoldenGate는
PAGE및ROW압축을 사용하여 사용으로 설정된 테이블에서 캡처를 지원합니다. 압축을 사용하는 분할된 테이블의 경우 모든 분할 영역이 동일한 압축 유형으로 활성화되어야 합니다. -
Oracle GoldenGate는 테이블에 모든 분할 영역에 대해 동일한 물리적 레이아웃이 있는 경우 분할된 테이블에 대한 캡처를 지원합니다.
-
캡처할 테이블의 모든 열 길이 합계는 SQL Server에서 테이블에 대한 변경 데이터 캡처를 사용하도록 허용하는 길이를 초과하지 않아야 합니다. If the sum of all column lengths exceeds what is allowed by the SQL Server procedure
sys.sp.cdc_enable_table, thenADD TRANDATAcannot be added for that table. 허용 가능한 최대 레코드 길이는 더 많은 열이 존재하므로 최대 레코드 길이와 테이블의 열 수 사이에 역관계가 있습니다.
SQL Server에 대해 지원되지 않는 객체 및 작업
다음 객체 및 작업은 지원되지 않습니다.
-
ON UPDATE SET DEFAULT절을 사용하여 하위 테이블의 외래 키에서 상위 테이블의 기본 키를 참조하는 두 테이블 간의 상위-하위 관계를 고려해 보십시오. 상위 테이블에 대한 지연된 PK 갱신으로 DELETE 및 INSERT 쌍이 생성됩니다. 상위 테이블에서 해당하는 DELETE 및 INSERT 작업을 안정적으로 식별할 수 없습니다. 이러한 지연 업데이트가 상위 테이블에서 수행되는 경우 Oracle GoldenGate Extract가 모든 이벤트를 안정적으로 캡처하지 못할 수 있습니다. -
소스 데이터베이스의 경우 SQL Server 변경 데이터 캡처에서 지원되지 않는 작업(예:
TRUNCATE문)입니다. SQL Server 변경 데이터 캡처를 사용으로 설정하여 제한된 작업의 전체 목록은 Microsoft SQL Server 설명서를 참조하십시오. -
Oracle GoldenGate for SQL Server는 SQL Server에 대한 DDL 변경 사항의 캡처 또는 전달을 지원하지 않으며 소스 및 대상의 Oracle GoldenGate 프로세스에 대해 테이블 인덱스 재구축 작업을 비롯한 테이블 레벨 DDL 변경 사항을 처리하기 위한 추가 단계가 필요합니다. 테이블 레벨 DDL 변경에 대한 요구 사항을 참조하십시오.
-
뷰는 지원되지 않습니다.
-
TextCopy유틸리티와WRITETEXT및UPDATETEXT문에 의한 작업입니다. 이러한 기능은 데이터베이스에 의해 기록되지 않거나 부분적으로만 기록된 작업을 수행하므로 추출 프로세스에서 지원할 수 없습니다. -
분할 영역 간에 둘 이상의 물리적 레이아웃이 있는 분할된 테이블입니다.
-
소스 테이블에 대해 분할 영역이 전환됩니다. SQL Server 변경 데이터 캡처는 분할 영역 스위치를 DDL 작업으로 처리하며 한 분할 영역에서 다른 분할 영역으로 이동된 데이터는 CDC 테이블에 기록되지 않으므로 테이블 레벨 DDL 변경에 대한 요구 사항의 절차에 따라 테이블을 보완 로깅에 대해 사용으로 설정할 때 분할 영역 스위치를 수동으로 구현해야 합니다.
-
SQL ServerSQL Server의 변경 데이터 캡처에 대한 제한으로 인해 데이터베이스 조합과 다른 열 레벨 조합으로 인해 문자 데이터에 대한 CDC 테이블에 잘못된 데이터가 기록될 수 있으며 Extract는 CDC 테이블에 기록될 때 이를 캡처합니다.Change Data Capture, column level collations that are different from the database collation, may cause incorrect data to be written to the CDC tables for character data and Extract will capture them as they are written to the CDC tables. 비ASCII 데이터를 포함하는 열에 대해
NVARCHAR,NCHAR또는NTEXT데이터 유형을 사용하거나 데이터베이스와 동일한 테이블 열에 대해 동일한 데이터 조합을 사용하는 것이 좋습니다. 자세한 내용은 변경 데이터 캡처 정보(SQL Server)를 참조하십시오. -
Due to a limitation with SQL Server’s Change Data Capture,
NOOPUPDATESare not captured by the SQL Server Change Data Capture agent so there are no records for Extract to capture for no-op update operations. -
임시 테이블은 변경 데이터 캡처를 사용으로 설정하는 데 지원되지 않으므로 소스 구현의 Extract에 대해 구성할 수 없습니다.
테이블 레벨 DDL 변경 사항 요구 사항
SQL Server용 Oracle GoldenGate는 DDL 변경 사항의 캡처 또는 전달을 지원하지 않습니다. 그러나 Oracle GoldenGate 21c부터는 TRANDATA로 사용으로 설정된 테이블을 변경해도 Extract가 비정상 종료되지 않습니다. Extract는 TRANDATA가 사용으로 설정되었을 때 테이블에 대한 변경 데이터를 계속 처리합니다.
테이블 레벨 DDL 변경으로 간주되는 작업에는 ALTER TABLE, TRUNCATE TABLE, 인덱스 재구축 및 분할 영역 스위치가 포함되지만 이에 국한되지는 않습니다.
테이블 레벨 DDL 변경으로 인한 데이터 불일치를 방지하려면 다음 단계가 필요합니다.
-
소스: 수정할 테이블에 대한 응용 프로그램 데이터를 일시 정지하거나 정지합니다.
-
Source: 수정할 테이블에 대해 열린 트랜잭션이 없는지 확인합니다.
-
출처: SQL Server CDC 캡처 작업이 수정될 테이블에 대한 나머지 모든 트랜잭션을 처리하는지 확인합니다.
-
Source: Extract가 DDL을 변경하기 전에 수정될 테이블에 대한 모든 트랜잭션을 처리하는지 확인합니다.
-
대상: Replicat가 DDL을 변경하기 전에 수정될 테이블에 대한 모든 트랜잭션을 처리하는지 확인하십시오.
-
선택적으로 이벤트 마커 테이블을 구현하여 수정할 테이블에 대해 나머지 모든 트랜잭션이 처리된 시기를 확인하고 Extract 및 Replicat를 올바르게 정지할 시기 조정을 처리할 수 있습니다.
-
출처: 추출 프로세스를 중지합니다.
-
대상: Replicat 프로세스를 중지합니다.
-
소스:
DELETE TRANDATA를 실행하여 수정할 테이블에 대해 보완 로깅을 사용 안함으로 설정합니다. -
Source: 소스 테이블에 대해 테이블 DDL을 변경합니다.
-
Target: 대상 테이블에 대해 테이블 DDL을 변경합니다.
-
출처: 수정이 수행된 후 테이블에 대해
ADD TRANDATA를 실행하여 보완 로깅을 다시 사용으로 설정합니다. -
출처: Extract를 시작합니다.
-
대상: Replicat를 시작합니다.
-
Source: 수정된 테이블로 응용 프로그램 데이터를 재개합니다.
SQL Server용 시스템 스키마
다음 시스템 스키마는 복제에 지원되지 않습니다.
-
sys -
cdc -
INFORMATION_SCHEMA
guest 스키마는 와일드카드 매핑을 사용하여 지원되지 않지만 TABLE guest.employees와 같이 명시적으로 나열된 경우 지원됩니다.