기본 키가 없는 테이블 마이그레이션

이 페이지에서는 아직 기본 키가 없는 Oracle 테이블을 마이그레이션하는 방법을 설명합니다.

Database Migration Service를 사용하려면 대상 PostgreSQL 테이블에 기본 키가 있어야 합니다. 기본 Database Migration Service 변환 작업공간은 기본 키가 없는 테이블에 rowid 열을 만들어 이를 자동으로 처리합니다.

하지만 Ora2Pg 마이그레이션 도구와 함께 기존 변환 작업공간을 사용 중이고 Oracle 소스 테이블에 기본 키가 없는 경우 키를 수동으로 만들어야 합니다.

다음 섹션에서는 Oracle 소스 테이블의 기본 키를 만드는 방법에 관한 옵션을 제공합니다.

기존 열을 사용하여 기본 키 만들기

테이블에 이미 열 또는 열 조합을 기반으로 하는 논리적 기본 키가 있을 수 있습니다. 예를 들어 고유 제약 조건 또는 색인이 구성된 열이 있을 수 있습니다. 이 열을 사용하여 대상 PostgreSQL 인스턴스에서 새 기본 키를 생성합니다.

rowid 열을 사용하여 기본 키 만들기

Oracle 데이터베이스는 rowid 가상 열을 사용하여 테이블의 각 행 위치를 저장합니다. 기본 키가 없는 Oracle 테이블을 마이그레이션하려면 대상 PostgreSQL 데이터베이스에 새 rowid 열을 추가합니다. Database Migration Service는 소스 Oracle rowid의사 열의 해당 숫자 값으로 열을 채웁니다.

열을 추가하고 기본 키로 설정하려면 다음을 실행합니다.

ALTER TABLE TABLE_NAME ADD COLUMN rowid numeric(33,0) NOT NULL;
CREATE SEQUENCE TABLE_NAME_rowid_seq INCREMENT BY -1 START WITH -1 OWNED BY TABLE_NAME.rowid;
ALTER TABLE TABLE_NAME ALTER COLUMN rowid SET DEFAULT nextval('TABLE_NAME_rowid_seq');
ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_NAME PRIMARY KEY (rowid);

다음을 바꿉니다.

  • TABLE_NAME: 열을 추가할 테이블의 이름입니다.
  • CONSTRAINT_NAME: PRIMARY KEY 제약조건의 식별자입니다.

모든 열을 사용하여 기본 키 만들기

앞에서 설명한 옵션을 사용할 수 없고 소스 Oracle 테이블에 중복 행이 없는 경우 테이블의 모든 열을 사용하여 기본 키를 만듭니다. PostgreSQL 인스턴스에서 허용하는 기본 키의 최대 길이를 초과하지 않아야 합니다.