> 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/extract/key-features/sequence.md).

# Sequence 동기화

## 개요 <a href="#undefined" id="undefined"></a>

ProSync는 Source 데이터베이스의 Sequence 객체 값을 Target 데이터베이스로 실시간 동기화하는 기능을 제공한다. Sequence의 NEXTVAL이 호출되며 속성값이 갱신될 때 마다 Target으로 전달된다.

***

## 지원 환경 <a href="#undefined-2" id="undefined-2"></a>

| Source 데이터베이스 | Target 데이터베이스 | 지원 여부 |
| ------------- | ------------- | ----- |
| Tibero        | Tibero        | 지원    |
| Oracle        | Tibero        | 지원    |

### Tibero to Tibero 환경 <a href="#tibero-to-tibero" id="tibero-to-tibero"></a>

#### 동기화 방식 <a href="#undefined-3" id="undefined-3"></a>

Source Tibero에서 Sequence의 NEXTVAL이 호출되면, 해당 값이 Target Tibero의 동일 Sequence에 실시간으로 반영된다.

#### 사전 준비사항 <a href="#undefined-4" id="undefined-4"></a>

1. Source와 Target에 동일한 이름의 유저 아래에 동일한 이름의 Sequence가 생성되어 있어야 한다.
2. ProSync 설치 스크립트가 정상적으로 수행되어 있어야 한다.
3. 동기화 대상 리스트 파일(기본값: prs\_obj\_group1.list) 파일에 SYS.\_DD\_SEQ 테이블이 기재돼 있어야 한다.
4. 동기화 대상 리스트 파일(기본값: prs\_obj\_group1.list) 파일에 동기화하고자 하는 SEQUENCE가 기재돼 있어야 한다.
5. Source Tibero 의 데이터베이스 초기화 파라미터로 \_DDL\_SEQ\_SUPPLOG=Y 를 설정해야 한다. ProSync 의 config 파일에 기재하는 파라미터가 아니다.
6. Target Tibero 의 데이터베이스 초기화 파라미터로 SEQ\_GET\_NEXTVAL\_FROM\_DD\_TABLE=Y 를 설정해야 한다. ProSync 의 config 파일에 기재하는 파라미터가 아니다.

#### 제약사항 <a href="#undefined-5" id="undefined-5"></a>

1. Sequence 생성 시 **NOCACHE** 옵션으로 생성 필요하다.
2. Source, Target DB 의 동기화 대상이 되는 SEQUENCE 짝의 설정값은 일치해야 한다.
3. 프로싱크에서 Sequence ALTER 수행 시 타겟 DB에서 SYS.\_DD\_SEQ NEXTVAL 값을 기준으로 Boundary Check를 수행하기 때문에, 타겟 NextVal 값보다 MAX/MIN 값이 더 작은/큰 경우, TBR-7134 에러가 발생한다.

### Oracle to Tibero 환경 <a href="#oracle-to-tibero" id="oracle-to-tibero"></a>

#### 동기화 방식 <a href="#undefined-6" id="undefined-6"></a>

Source Oracle에서 Sequence의 NEXTVAL이 호출되면, 해당 값이 Target Tibero의 동일 Sequence에 반영된다. Target의 Sequence 값이 Source 와 겹치지 않고, 동일하거나 앞서가도록 동기화가 진행된다.

#### 사전 준비사항 <a href="#undefined-7" id="undefined-7"></a>

1. Source Oracle과 Target Tibero에 동일한 이름의 Sequence가 생성되어 있어야 한다.
2. ProSync 설치 스크립트가 정상적으로 수행되어 있어야 한다.
3. 동기화 대상 리스트 파일(기본값: prs\_obj\_group1.list) 파일에 SYS.SEQ$ 테이블이 기재돼 있어야 한다.
4. 동기화 대상 리스트 파일(기본값: prs\_obj\_group1.list) 파일에 동기화하고자 하는 SEQUENCE가 기재돼 있어야 한다.

#### 제약사항 <a href="#undefined-8" id="undefined-8"></a>

1. Source, Target DB 의 동기화 대상이 되는 SEQUENCE 짝의 설정값은 일치해야 한다.
2. SEQUENCE 값의 정합성을 위해 ORDER 옵션의 사용이 권장된다.

***

## 주의사항 <a href="#undefined-10" id="undefined-10"></a>

<table><thead><tr><th width="226.5">항목</th><th>설명</th></tr></thead><tbody><tr><td><strong>설치 준비</strong></td><td>Instance 설치 과정에서 DB 의 PRS_INSTALL_USER 는 SYS.SEQ$(SYS._DD_SEQ) 테이블 및 동기화 하고자 하는 SEQUENCE 에 대한 SELECT 권한이 필요하다.</td></tr><tr><td><strong>동기화 시점</strong></td><td>NEXTVAL 호출 시에만 동기화된다. CURRVAL 조회는 동기화되지 않는다.</td></tr><tr><td><strong>Sequence 존재 필수</strong></td><td>Target에 동일한 이름의 Sequence가 미리 생성되어 있어야 한다.</td></tr><tr><td><strong>ALTER SEQUENCE</strong></td><td>Sequence 속성 변경(INCREMENT BY, MAXVALUE 등)은 DDL 동기화를 통해 처리된다.</td></tr><tr><td><strong>대량 호출 시</strong></td><td>빈번한 NEXTVAL 호출은 동기화 부하로 이어질 수 있으며, CACHE 옵션의 취급은 적용 환경에 따라 다르다.<br><strong>[Oracle to Tibero]</strong> CACHE 를 사용하면 동기화 호출 빈도를 낮출 수 있다. Target 의 CACHE 도 지원되며, 동기화 시점에만 내부적으로 조정된 뒤 원래 설정으로 복원된다.<br><strong>[Tibero to Tibero]</strong> CACHE 를 사용하면 호출 단위 동기화가 성립하지 않으므로 NOCACHE 로 운용한다.</td></tr><tr><td><strong>Active-Active 환경 지양</strong></td><td>Target DB 에서 SEQUENCE 의 사용을 지양한다.<br>NEXTVAL을 통해 Target DB 에서 SEQUENCE 를 사용하게 되면 동기화 중인 SEQUENCE 의 정합성, 특히 고유성에 문제가 생길 가능성이 높다.</td></tr></tbody></table>
