> For the complete documentation index, see [llms.txt](https://docs.tibero.com/prosync/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tibero.com/prosync/administration/apply/key-features/flow-control/conflict/discard.md).

# Discard

## DML DISCARD <a href="#dml-discard" id="dml-discard"></a>

ProSync가 동기화 과정 속에 DML을 Target DB에 반영 중 에러가 발생할 수 있다. 일반적인 경우에는 ProSync가 해당 DML에 대한 반영을 성공할 때까지 재시도하게 된다.

해당 기능을 사용하면 특정한 에러에 대해 재시도하는 대신 해당 DML에 대한 반영을 생략하고 이후의 동기화를 진행하도록 설정할 수 있다.

또한 DISCARD 기능이 발생한 이력을 기록하는 Discard file 을 작성할 수 있다.

해당 기능을 사용하기 위해선 config 파일에 다음과 같은 Parameter를 설정해야 한다.

{% code collapsedlinecount="10" %}

```
DISCARD_YN=[Y|N]
DISCARD_EC=2 10007 8033
DISCARD_FILE_YN=[Y|N]

DISCARD_FILE_DIR=/directory/to/save/file
DISCARD_FILE_SIZE=200M
DISCARD_BACKUP_DIR=/directory/to/save/backup/file
DISCARD_BACKUP_SIZE=10G
```

{% endcode %}

<table><thead><tr><th width="214">파라미터 이름</th><th>설명</th></tr></thead><tbody><tr><td>DISCARD_YN</td><td><p>동기화 중 에러가 발생하는 경우에 스킵할지 여부를 설정한다.<br>Y 상태에선 발생한 에러가 DISCARD_EC 에 작성된 에러코드에 속해있는 경우 재시도를 생략한다.</p><ul><li>유형: Y/N</li><li>범위: Y/N</li><li>기본값: N</li></ul></td></tr><tr><td>DISCARD_EC</td><td><p>재시도를 하지 않고 건너뛰고자 하는 에러코드를 입력한다.</p><ul><li>유형: 에러코드</li><li>범위: 최대 256개</li><li>기본값:</li></ul></td></tr><tr><td>DISCARD_FILE_YN</td><td><p>DISCARD 동작이 발생했을 때 해당 내용을 discard 파일에 남기는 기능을 활성화 하는 파라미터이다.</p><ul><li>유형: Y/N, dynamic</li><li>범위: Y/N</li><li>기본값: N</li></ul></td></tr><tr><td>DISCARD_FILE_DIR</td><td><p>discard file의 저장 위치를 지정하는 파라미터.</p><ul><li>유형: 디렉토리</li><li>범위: -</li><li>기본값: (LOG_DIR과 같은 디렉토리)</li></ul></td></tr><tr><td>DISCARD_FILE_SIZE</td><td><p>discard 파일의 최대 크기를 지정하는 파라미터.</p><ul><li>유형: int32, dynamic</li><li>범위: 1M - 1G</li><li>기본값: 100M</li></ul></td></tr><tr><td>DISCARD_BACKUP_DIR</td><td><p>discard 파일의 크기가 설정한 최대 크기를 초과하게 되면 생성하는 백업파일의 위치를 지정하는 파라미터.</p><ul><li>유형: 디렉토리</li><li>범위: -</li><li>기본값: (LOG_BACKUP_DIR과 같은 디렉토리)</li></ul></td></tr><tr><td>DISCARD_BACKUP_SIZE</td><td><p>backup 디렉토리의 최대 크기를 지정하는 파라미터.</p><ul><li>유형: uint64, dynamic</li><li>범위: 0 - 128G</li><li>기본값: 0(무제한)</li></ul></td></tr></tbody></table>

{% hint style="warning" %}
**주의**

* DISCARD 기능을 활성화하면 batch apply 기능이 사용 불가능하다.
* DML을 반영할 때 발생하는 에러에 대해서만 DISCARD 기능을 지원한다.
* (12032)Deadlock detected. 에러는 DISCARD 기능을 지원하지 않는다.
* SAM\_BIND\_VALUE=Y 를 사용하면, discard log에 실패한 query의 value 값이 함께 저장된다.
  {% endhint %}

***

## 변환 실패 DISCARD <a href="#discard" id="discard"></a>

ProSync가 Source DB의 값을 Target DB의 데이터 타입으로 변환하지 못하면(지원하지 않는 timestamp 지역 정보 등) 해당 DML은 반영에 실패하고, 일반적인 경우에는 성공할 때까지 재시도하게 된다.

`DISCARD_CAST_ERR=Y`로 설정하면 변환에 실패한 DML을 재시도하지 않고 건너뛴 뒤 이후의 동기화를 진행한다. 건너뛴 DML은 Target DB에 반영되지 않는다.

{% code collapsedlinecount="10" %}

```
DISCARD_CAST_ERR=[Y|N]
DISCARD_FILE_YN=[Y|N]
```

{% endcode %}

<table><thead><tr><th width="214">파라미터 이름</th><th>설명</th></tr></thead><tbody><tr><td>DISCARD_CAST_ERR</td><td><p>데이터 변환에 실패한 DML을 재시도하지 않고 건너뛸지 여부를 설정한다.<br>DISCARD_YN, DISCARD_EC 설정과 무관하게 동작한다.</p><ul><li>유형: Y/N</li><li>범위: Y/N</li><li>기본값: N</li></ul></td></tr></tbody></table>

{% hint style="warning" %}
**주의**

* 건너뛴 DML은 Apply 로그에 `skip insert stmt because of cast error.(xid: <xid>)` 형태의 경고로 남는다. UPDATE, DELETE도 같은 형식으로 남는다.
* `DISCARD_FILE_YN=Y`이면 discard 파일에 `cast error discarded`와 함께 해당 DML의 xid, seqno, tsn, obj\_id가 기록된다. SQL 문은 기록되지 않는다.
  {% endhint %}

***

## DDL DISCARD <a href="#ddl-discard" id="ddl-discard"></a>

DDL도 DML과 마찬가지로 Target DB에 반영 중 에러가 발생할 수 있다. 일반적인 경우에는 ProSync가 해당 DDL에 대한 반영을 성공할 때까지 재시도하게 된다.

해당 기능을 사용하면 재시도하는 대신 해당 DDL에 대한 반영을 생략하고 이후의 동기화를 진행하도록 설정할 수 있다.

{% hint style="warning" %}
**주의**

단, TABLE 관련 DDL은 해당 기능을 사용하더라도 실패하는 경우 생략할 수 없다.
{% endhint %}

또한 DISCARD 기능이 발생한 이력을 기록하는 Discard file 을 작성할 수 있다.

해당 기능을 사용하기 위해선 config 파일에 다음과 같은 Parameter를 설정해야 한다.

{% code collapsedlinecount="10" %}

```
DISCARD_DDL_YN=[Y|N]
DISCARD_DDL_FILE_YN=[Y|N]

DISCARD_DDL_FILE_DIR=/directory/to/save/file
DISCARD_DDL_FILE_SIZE=200M
DISCARD_DDL_BACKUP_DIR=/directory/to/save/backup/file
DISCARD_DDL_BACKUP_SIZE=10G
```

{% endcode %}

<table><thead><tr><th width="263.4140625">파라미터 이름</th><th>설명</th></tr></thead><tbody><tr><td>DISCARD_DDL_YN</td><td><p>동기화 중 에러가 발생하는 경우에 스킵할지 여부를 설정한다.</p><ul><li>유형: Y/N</li><li>범위: Y/N</li><li>기본값: N</li></ul></td></tr><tr><td>DISCARD_DDL_FILE_YN</td><td><p>DISCARD 동작이 발생했을 때 해당 내용을 discard 파일에 남기는 기능을 활성화 하는 파라미터이다.</p><ul><li>유형: Y/N</li><li>범위: Y/N</li><li>기본값: N</li></ul></td></tr><tr><td>DISCARD_DDL_FILE_DIR</td><td><p>discard file의 저장 위치를 지정하는 파라미터.</p><ul><li>유형: 디렉토리</li><li>범위: -</li><li>기본값: $PRS_HOME/var/&#x3C;인스턴스명>/ddl_err</li></ul></td></tr><tr><td>DISCARD_DDL_FILE_SIZE</td><td><p>discard 파일의 최대 크기를 지정하는 파라미터.</p><ul><li>유형: int32</li><li>범위: 1M - 1G</li><li>기본값: 100M</li></ul></td></tr><tr><td>DISCARD_DDL_BACKUP_DIR</td><td><p>discard 파일의 크기가 설정한 최대 크기를 초과하게 되면 생성하는 백업파일의 위치를 지정하는 파라미터.</p><ul><li>유형: 디렉토리</li><li>범위: -</li><li>기본값: $PRS_HOME/var/&#x3C;인스턴스명>/ddl_err/backup</li></ul></td></tr><tr><td>DISCARD_DDL_BACKUP_SIZE</td><td><p>backup 디렉토리의 최대 크기를 지정하는 파라미터.</p><ul><li>유형: uint64</li><li>범위: 0 - 128G</li><li>기본값: 0</li></ul></td></tr></tbody></table>
