Oracle에서 PostgreSQL로의 마이그레이션 문제 진단

런타임 중에 이전 작업 프로세스에 오류가 발생할 수 있습니다.

  • 소스 데이터베이스의 잘못된 비밀번호와 같은 일부 오류는 복구할 수 있습니다. 이러한 오류가 수정되면 마이그레이션 작업이 자동으로 다시 시작됩니다.
  • 데이터 복제 오류와 같이 복구할 수 없는 오류도 있습니다. 이러한 오류가 수정된 후에는 마이그레이션 작업을 다시 시작해야 합니다.

오류가 발생하면 이전 작업 상태가 Failed로 변경되고 하위 상태는 실패 전의 마지막 상태를 반영합니다. 오류를 해결하려면 실패한 이전 작업으로 이동하여 오류를 확인하고 오류 메시지에 설명된 단계를 따릅니다. 오류에 관한 자세한 내용을 보려면 이전 작업의 링크를 사용하여 Cloud Monitoring으로 이동하세요. 로그가 특정 이전 작업으로 필터링됩니다.

다음 표에서 문제의 예와 해결 방법을 확인할 수 있습니다.

증상 가능한 원인 해결 방법
오류 메시지: Cloud DMS can't set up a tunnel to be connected to the bastion host. Database Migration Service가 배스천 호스트에 액세스할 수 없거나 배스천 호스트가 연결을 허용하지 않습니다. 연결 프로필의 정방향 SSH 터널 설정 및 배스천 호스트 구성을 확인한 후 다시 시도해 보세요.
오류 메시지: Cloud DMS can't connect to the database 또는 Cloud DMS private connectivity error, cannot connect to the database Database Migration Service에서 소스 Oracle 데이터베이스에 연결할 수 없습니다.

프로젝트에서 소스 Oracle 데이터베이스에 액세스할 수 있는지 확인하고 소스 연결 프로필에서 연결 설정을 올바르게 구성했는지 확인합니다.

ORA-12170: TNS:Connect timeout occurred와 같은 특정 Oracle 오류 코드가 포함된 경우 자세한 내용은 Oracle 문서를 참고하세요.

오류 메시지: Archiving mode is not ARCHIVELOG. 소스가 올바르게 구성되지 않았습니다. 소스를 올바르게 구성합니다. 자세한 내용은 소스 Oracle 데이터베이스 구성을 참고하세요.
오류 메시지: Supplemental logging ("ALL COLUMN LOGGING") isn't turned on for the tables listed below. 소스가 올바르게 구성되지 않았습니다. 소스를 올바르게 구성합니다. 자세한 내용은 소스 Oracle 데이터베이스 구성을 참고하세요.
오류 메시지: No Archive Log Files were found in the source. Database Migration Service는 닫힌 보관처리 로그만 읽으며 소스 데이터베이스에서 로그를 찾을 수 없습니다.
  1. 소스 데이터베이스에서 다음 명령어(ALTER SYSTEM SWITCH LOGFILE)를 실행하여 현재 로그 파일을 닫습니다.
  2. 로그를 다시 찾으세요.

데이터베이스에 활성 쓰기 작업이 없는 경우 INSERT 작업을 하나 이상 실행하여 로그 생성을 트리거해야 할 수 있습니다.

오류 메시지: We're missing the necessary permissions to read from the source. 소스가 올바르게 구성되지 않았습니다. 소스를 올바르게 구성합니다. 자세한 내용은 소스 Oracle 데이터베이스 구성을 참고하세요.
오류 메시지: Unable to connect to the destination database. 대상 데이터베이스에 연결하는 중에 문제가 발생했습니다. 대상 PostgreSQL 연결 프로필의 설정을 확인합니다. 비공개 연결의 경우 Private Service Connect 오류 문제 해결을 참고하세요.
오류 메시지: database {database_name} does not exist. Database Migration Service는 대상 데이터베이스 이름과 사용자 이름이 일치할 것으로 예상합니다. 대상 연결 프로필에 표시된 사용자 이름과 대상 데이터베이스 이름이 일치하는지 확인합니다. 대상 데이터베이스를 다시 만들거나 대상 데이터베이스와 일치하는 다른 사용자 이름을 만듭니다. 자세한 내용은 대상 PostgreSQL용 AlloyDB 데이터베이스 구성을 참고하세요.

Ora2pg를 실행하여 대상 데이터베이스에 스키마를 만들었는지 확인합니다.

오류 메시지: The following tables don't exist in the destination database: {table_names} 마이그레이션하려는 나열된 테이블이 대상 데이터베이스에 없습니다. Ora2pg를 실행하여 대상 데이터베이스에 스키마를 만들거나 마이그레이션 작업 설정을 수정해야 합니다.
오류 메시지: password authentication failed for user {username}. 대상 데이터베이스의 사용자 이름 또는 비밀번호가 잘못 구성되었습니다. 대상 PostgreSQL 연결 프로필이 올바른 사용자 이름과 비밀번호로 올바르게 구성되어 있는지 확인합니다.
오류 메시지: The following tables in the destination database don't have primary keys: {table_names}. 나열된 테이블이 대상 데이터베이스에 있지만 기본 키가 없습니다. Ora2pg를 실행하여 대상 데이터베이스에 스키마를 만들었는지 확인합니다. 소스 테이블에 기본 키가 없으면 대상 데이터베이스에서 키를 직접 만듭니다.
경고: The following tables have foreign keys: {table_names} 나열된 테이블이 대상 데이터베이스에 있지만 외래 키가 있습니다. Database Migration Service는 트랜잭션 방식으로 데이터를 복제하지 않으므로 테이블이 순서대로 마이그레이션되지 않을 수 있습니다. 외래 키가 있고 외래 키를 사용하는 하위 테이블이 상위 테이블보다 먼저 이전되면 복제 오류가 발생할 수 있습니다.

이러한 데이터 무결성 문제를 방지하려면 이전 사용자의 REPLICATION 옵션을 사용하여 외래 키를 건너뜁니다. 자세한 내용은 대상 구성을 참고하세요.

오류 메시지: Unable to resume replication as log position is lost. 이 오류는 복제 프로세스가 장시간 일시중지되어 로그 위치가 손실될 때 발생할 수 있습니다. 로그 보관 기간에 근접한 기간 동안 마이그레이션 작업을 일시중지하면 안 됩니다. 오류가 발생하면 마이그레이션 작업을 다시 만듭니다.
오류 메시지: ORA-00942: table or view does not exist. 이 오류는 Oracle 서버에서 캐싱한 결과로 발생할 수 있습니다. 데이터베이스 사용자를 다시 만들어 캐싱 문제를 해결합니다.
마이그레이션 작업이 전체 덤프 단계에 머물러 있고 변경 데이터 캡처 (CDC) 단계로 진행되지 않습니다. Database Migration Service가 일부 테이블에 대한 전체 덤프를 계속 실행 중이거나 하나 이상의 테이블이 오류로 인해 전체 덤프를 완료할 수 없습니다.
  • 이전 작업 오류를 확인하고 테이블에 적용되는 오류를 수정하거나 작업에서 연결된 테이블을 삭제합니다.
  • Database Migration Service 로그에서 진행 중인 전체 덤프 활동을 확인하고 완료될 때까지 기다립니다.