

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS DMS 작업의 소스 데이터베이스에 대한 LOB 지원 설정
<a name="CHAP_Tasks.LOBSupport"></a>

경우에 따라 대용량 이진 객체(LOB)는 시스템 간에 마이그레이션하기 어려울 수 있습니다. AWS DMS 에는 LOB 열을 튜닝할 때 도움이 되는 다양한 옵션이 있습니다. 어떤 데이터 형식이 LOBs로 간주되는지 확인하려면 설명서를 AWS DMS참조 AWS DMS 하세요.

다른 데이터베이스로 데이터를 마이그레이션할 때에는 LOB 저장 방법을 재고해 볼 수 있으며, 특히 이종 마이그레이션에서 그러합니다. 이 작업을 수행할 경우, LOB 데이터를 마이그레이션할 필요가 없습니다.

LOB를 포함하기로 결정하는 경우 다른 LOB 설정을 결정할 수 있습니다.
+ LOB 모드는 LOB가 처리되는 방식을 결정합니다.
  + **전체 LOB 모드** - 전체 LOB 모드에서는 크기에 관계없이 모든 LOBs 소스에서 대상으로 AWS DMS 마이그레이션합니다. 이 구성에서 AWS DMS 는 예상할 수 있는 최대 LOBs 크기에 대한 정보가 없습니다. 또한 LOB는 한 번에 하나씩, 조각별로 마이그레이션됩니다. 전체 LOB 모드는 매우 느릴 수 있습니다.
  + **제한적 LOB 모드** - 제한적 LOB 모드에서는 DMS가 수용해야 하는 최대 LOB 크기를 설정합니다. 이를 통해 DMS는 메모리를 사전 할당하고 LOB 데이터를 대량으로 로드할 수 있습니다. 최대 LOB 크기를 초과하는 LOB는 잘리고 경고가 로그 파일에 기록됩니다. 제한적 LOB 모드는 전체 LOB 모드에 비해 상당한 성능 이점이 있습니다. 가능하다면 제한적 LOB 모드 사용을 권장합니다. 이 파라미터의 최대값은 102,400KB(100MB)입니다.
**참고**  
63KB보다 큰 값의 최대 LOB 크기(K) 옵션을 사용하면 제한된 LOB 모드에서 실행하도록 구성된 전체 로드의 성능에 영향을 줍니다. 전체 로드 시 DMS는 최대 LOB 크기(k) 값에 커밋 비율을 곱하여 메모리를 할당하며, 해당 제품에는 LOB 열 수를 곱합니다. DMS가 해당 메모리를 사전 할당할 수 없는 경우 전체 로드 작업의 성능에 부정적인 영향을 미치는 SWAP 메모리를 사용합니다. 제한된 LOB 모드를 사용할 때 성능 문제가 발생하는 경우, 적정한 수준의 성능에 도달할 때까지 커밋 비율을 낮추는 것이 좋습니다. CDC 모드에서 DMS는 LOB 열 수에 제한된 LOB 작업 설정에 지정된 최대 LOB 크기 파라미터를 곱한 다음 레코드 크기를 곱하여 메모리를 할당합니다. DMS CDC 프로세스는 DMS 작업당 단일 스레드입니다. 자세한 내용은 [처리 튜닝 설정 변경](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.html)을 참조하세요.  
제한된 LOB 크기를 확인하려면 `ValidationPartialLobSize`를 `LobMaxSize`(K)와 같은 값으로 설정해야 합니다.
  + **인라인 LOB 모드** - 인라인 LOB 모드에서는 DMS가 인라인으로 전송하는 최대 LOB 크기를 설정합니다. 지정된 크기보다 작은 LOB는 인라인으로 전송됩니다. 지정된 크기보다 큰 LOB는 전체 LOB 모드를 사용하여 복제됩니다. 대부분의 LOB가 작은 경우, 이 옵션을 선택하여 작은 LOB와 큰 LOB를 모두 복제할 수 있습니다. DMS는 S3 및 Redshift와 같이 전체 LOB 모드를 지원하지 않는 엔드포인트에 대해서는 인라인 LOB 모드를 지원하지 않습니다.
**참고**  
Oracle을 통해 LOB는 가능할 때마다 VARCHAR 데이터 형식으로 처리됩니다. 이 접근 방식은가 데이터베이스에서 대량으로 AWS DMS 가져오므로 다른 방법보다 훨씬 빠릅니다. Oracle에서 VARCHAR의 최대 크기는 32K이므로 Oracle이 소스 데이터베이스일 때 32K 미만의 제한적인 LOB 크기가 최적입니다.
+ 작업이 제한적 LOB 모드에서 실행되도록 구성된 경우 **최대 LOB 크기(K)** 옵션은 AWS DMS 가 허용하는 최대 크기의 LOB를 설정합니다. 이 값보다 큰 LOB는 이 값으로 잘립니다.
+ 태스크가 전체 LOB 모드를 사용하도록 구성된 경우는 LOBs 여러 조각으로 AWS DMS 검색합니다. **LOB 청크 크기(K)** 옵션은 각 조각의 크기를 결정합니다. 이 옵션을 설정하면 네트워크 구성에서 허용된 최대 패킷 크기에 특히 유의해야 합니다. LOB 청크 크기가 최대 허용 패킷 크기를 초과하면 연결 해제 오류가 나타날 수 있습니다. `LobChunkSize`의 권장값은 64킬로바이트[KB]입니다. `LobChunkSize`의 값을 64KB 이상으로 늘리면 작업이 실패할 수 있습니다.
+ 작업이 인라인 LOB 모드에서 실행되도록 구성된 경우, `InlineLobMaxSize` 설정에 따라 DMS가 인라인으로 전송할 LOB가 결정됩니다.
**참고**  
프라이머리 키는 변경 데이터 캡처(CDC) 작업 중에 LOB 열이 포함된 테이블에 필수입니다. DMS는이 키를 사용하여 소스 테이블에서 LOB 값을 조회합니다. 이 요구 사항은 CDC 작업에만 적용됩니다. 전체 로드 작업은 제한 없이 전체 LOB 열을 소스에서 대상으로 직접 읽고 복사할 수 있습니다.

이 옵션을 지정하는 작업 설정에 관한 자세한 내용은 [대상 메타데이터 작업 설정](CHAP_Tasks.CustomizingTasks.TaskSettings.TargetMetadata.md) 섹션을 참조하세요

## 소스 테이블의 최대 LOB 열 길이를 확인하는 SQL 명령
<a name="CHAP_Tasks.Creating.SQLCommandsLOB"></a>

다음 SQL 명령을 사용하여 최대 LOB 열 길이를 확인하고 마이그레이션에서 데이터가 잘리지 않도록 DMS 제한 LOB 설정을 구성합니다.

**Oracle**  

```
SELECT dbms_lob.getlength(<COL_NAME>) as LOB_LENGTH
FROM <TABLE_NAME>
ORDER BY dbms_lob.getlength(<COL_NAME>) DESC
FETCH FIRST 10 ROWS ONLY;

Select ((max(length(<COL_NAME>)))/(1024)) from <TABLE_NAME>
```

**SQL Server**  

```
Select top 10 datalength(<COL_NAME>) as fieldsize from <TABLE_NAME> order by datalength(<COL_NAME>) desc;
```

**MySQL**  

```
Select (max(length(<COL_NAME>))/(1024)) as "Size in KB" from <TABLE_NAME>;
```

**PostgreSQL**  

```
Select max((octet_length(<COL_NAME>))/(1024.0)) as "Size in KB" from <TABLE_NAME>;
```

**Db2 LUW**  

```
-- Method 1: Using SYSCAT.COLUMNS (converting to KB)

SELECT TABSCHEMA, TABNAME, COLNAME, LENGTH/1024 as LENGTH_KB, TYPENAME FROM SYSCAT.COLUMNS WHERE TYPENAME IN ('BLOB', 'CLOB', 'DBCLOB') ORDER BY LENGTH DESC;

-- Method 2: For specific table with KB conversion

  SELECT COLNAME, LENGTH/1024 as LENGTH_KB, TYPENAME FROM SYSCAT.COLUMNS WHERE TABSCHEMA = 'YOUR_SCHEMA'AND TABNAME = 'YOUR_TABLE'AND TYPENAME IN ('BLOB', 'CLOB', 'DBCLOB'); 
  
-- Method 3: Using SYSIBM.SYSCOLUMNS

SELECT TBCREATOR, TBNAME, NAME, LENGTH/1024 as LENGTH_KB, COLTYPE FROM SYSIBM.SYSCOLUMNS WHERE COLTYPE IN ('BLOB', 'CLOB', 'DBCLOB') ORDER BY LENGTH DESC;

SYBASE :

SELECT c.name as column_name, t.name as data_type, (c.length)/1024 as length_KB FROM syscolumns c JOIN systypes t ON c.usertype = t.usertype WHERE object_name(c.id) = 'YOUR_TABLE_NAME'AND t.name IN ('text', 'image', 'unitext') ORDER BY c.length DESC;
```