이 페이지에서는 기본 키가 없는 Oracle 테이블을 마이그레이션하는 방법을 설명합니다.
기본 키 자동 생성에서는 Database Migration Service가 기본 키가 누락된 소스 테이블을 처리하는 방법을 설명합니다.
누락된 기본 키 수동 추가는 변환된 스키마에서 누락된 기본 키를 추가하는 데 사용할 수 있는 예시 쿼리를 보여줍니다.
기본 키 자동 생성 개요
기본 키가 없는 테이블은 일관된 복제를 보장하지 않습니다. Database Migration Service는 기본 키가 있는 테이블만 마이그레이션합니다. 소스 데이터베이스에 기본 키가 없는 테이블이 포함된 경우 Database Migration Service는 다음과 같은 방법으로 이를 처리할 수 있습니다.
-
소스 코드와 스키마를 변환하면 Database Migration Service가 대상 테이블에
ROWID열을 추가하여 누락된 기본 키를 자동으로 만들 수 있습니다. 이 자동화 프로세스를 사용하려면 소스 테이블이 다음을 충족해야 합니다.- 기본 키가 아직 없습니다.
- null을 허용하지 않는 열이 없는
UNIQUE제약조건이 없습니다. - null을 허용하지 않는 열이 있는
UNIQUE색인을 사용하지 마세요.
- 기존 변환 작업공간에서 Database Migration Service는 기본 키를 자동으로 만들지 않습니다. 기존 변환 작업공간을 사용하는 경우 변환된 PostgreSQL 스키마의 테이블에 누락된 기본 키를 수동으로 추가해야 합니다.
누락된 기본 키 수동 추가
기본 키가 없는 Oracle 테이블을 마이그레이션하려면 다음 단계를 따르세요.
- 변환 작업공간을 사용하여 소스 코드와 스키마를 변환합니다.
- 표준 변환 작업공간은 소스 코드 및 스키마 변환을 참조하세요.
- 기존 변환 작업공간은 기존 변환 작업공간 작업을 참조하세요.
- SQL 클라이언트로 대상 Cloud SQL 인스턴스에 연결합니다. 다음 메서드를 사용할 수 있습니다.
-
psql클라이언트. 이 방법을 사용하여 인스턴스 비공개 IP에 연결할 수 있지만 Compute Engine 가상 머신을 만들어야 할 수 있습니다. -
gcloud sql connect명령어. 이 명령어는 공개 IP 주소가 사용 설정된 Cloud SQL 인스턴스에만 작동합니다.
-
- 테이블에 누락된 기본 키 제약 조건을 만듭니다. 기본 키에 대한 자세한 내용은 PostgreSQL 문서의
기본 키를 참조하세요.
다음 섹션을 펼쳐 샘플 SQL 명령어를 확인할 수도 있습니다.
기존 열을 사용하여 기본 키 만들기
테이블에 이미 열 또는 열 조합을 기반으로 하는 논리적 기본 키가 있을 수 있습니다. 예를 들어 고유 제약 조건 또는 색인이 구성된 열이 있을 수 있습니다. 이러한 열을 사용하여 소스 데이터베이스의 테이블에 대한 새 기본 키를 생성합니다. 예를 들면 다음과 같습니다.
ALTER TABLE TABLE_NAME ADD PRIMARY KEY (COLUMN_NAME);
다음을 바꿉니다.
- TABLE_NAME: 기본 키가 없는 테이블의 이름
- COLUMN_NAME: 기본 키로 사용할 수 있는 고유 제약조건 또는 색인이 있는 열의 이름입니다.
모든 열을 사용하여 기본 키 만들기
기본 키로 사용할 수 있는 기존 제약 조건이 없는 경우 테이블의 모든 열을 사용하여 기본 키를 만듭니다. PostgreSQL 인스턴스에서 허용하는 기본 키의 최대 길이를 초과하지 않아야 합니다.
이 방법으로 복합 기본 키를 만들 때는 사용하려는 모든 열 이름을 명시적으로 나열해야 합니다. 이 목적으로 모든 열 이름을 검색하는 데 문을 사용할 수 없습니다. 예를 들면 다음과 같습니다.
ALTER TABLE TABLE_NAME ADD PRIMARY KEY (COLUMN_NAME_1, COLUMN_NAME_2, COLUMN_NAME_3, ...);
다음을 바꿉니다.
- TABLE_NAME: 기본 키가 없는 테이블의 이름
- COLUMN_NAME_1, COLUMN_NAME_2 등을 기본 키를 만드는 데 사용할 열의 이름으로 바꿉니다.
ROWID의사 열을 사용하여 고유 제약 조건 만들기Oracle 데이터베이스는
ROWID유사 열을 사용하여 테이블에 있는 각 행의 위치를 저장합니다. 기본 키가 없는 Oracle 테이블을 마이그레이션하려면 대상 PostgreSQL 데이터베이스에ROWID열을 추가하면 됩니다. Database Migration Service는 소스 OracleROWID유사 열의 해당 숫자 값으로 열을 채웁니다.열을 추가하고 기본 키로 설정하려면 다음을 실행합니다.
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_DISPLAY_NAME PRIMARY KEY (rowid);
다음을 바꿉니다.
- TABLE_NAME을 열을 추가할 테이블의 이름으로 바꿉니다.
- CONSTRAINT_DISPLAY_NAME를
PRIMARY KEY제약 조건의 식별자로 바꿉니다.