이 페이지에는 알려진 오류와 권장되는 문제 해결 단계가 나열되어 있습니다.
마이그레이션 작업 오류
마이그레이션 작업 프로세스 중에 런타임 오류가 발생할 수 있습니다.
- 소스 데이터베이스의 잘못된 비밀번호와 같은 일부 오류는 복구할 수 있습니다. 이러한 오류가 수정되면 마이그레이션 작업이 자동으로 다시 시작됩니다.
- 일부 오류는 복구할 수 없습니다(예: 데이터 복제 오류). 이러한 오류가 수정되면 마이그레이션 작업을 다시 시작해야 합니다.
오류가 발생하면 마이그레이션 작업 상태가 Failed로 변경되고 하위 상태는 실패 전의 마지막 상태를 반영합니다.
오류 문제를 해결하려면 실패한 마이그레이션 작업으로 이동하여 오류를 확인하고 오류 메시지에 설명된 단계를 따릅니다.
오류에 대한 자세한 내용을 보려면 마이그레이션 작업의 링크를 사용하여 Cloud Monitoring으로 이동합니다. 로그는 특정 마이그레이션 작업으로 필터링됩니다.
다음 표에서 문제의 몇 가지 예와 해결 방법을 확인할 수 있습니다.
| 증상 | 가능한 원인 | 해결 방법 |
|---|---|---|
오류 메시지: Database Migration Service can't set up a tunnel to be
connected to the bastion host.
|
Database Migration Service에서 배스천 호스트에 액세스할 수 없거나 배스천 호스트에서 연결을 수락하지 않습니다. | 소스 연결 프로필 및 SSH 터널 서버 구성에서 정방향 SSH 터널 설정을 확인하고 다시 시도합니다. |
오류 메시지: Database Migration Service can't connect to the database
또는
Database Migration Service private connectivity error, cannot connect to the database.
|
Database Migration Service에서 소스 Oracle 데이터베이스에 대한 연결을 설정할 수 없습니다. |
프로젝트에서 소스 데이터베이스에 액세스할 수 있는지 확인합니다. 소스 연결 구성 방법과 관련된 설정을 확인합니다 .
예를 들어 특정 Oracle 오류 코드가 포함되어 있는 경우 자세한 내용은 Oracle 문서를 참조하세요. |
오류 메시지: Archiving mode is not ARCHIVELOG. |
소스 데이터베이스가 ARCHIVELOG 모드로 실행되고 있지 않습니다. |
ARCHIVELOG 모드를 사용하도록 소스 데이터베이스를 구성합니다.
자세한 내용은
소스 Oracle 데이터베이스 구성을 참조하세요.
|
오류 메시지: Supplemental logging ("ALL COLUMN LOGGING") isn't turned
on for the tables listed below.
|
소스 데이터베이스에 추가 로그 데이터가 사용 설정되어 있지 않습니다. | 추가 로그 데이터를 사용 설정하고 모드를 ALL로 설정합니다.
자세한 내용은
소스 Oracle 데이터베이스 구성을 참조하세요.
|
오류 메시지: No Archive Log Files were found in the source. |
Database Migration Service는 닫힌 보관 로그만 읽으며 소스 데이터베이스에서 로그가 발견되지 않았습니다. |
데이터베이스에 활성 쓰기 작업이 없는 경우 로그 생성을 트리거하려면 하나 이상의 |
오류 메시지: We're missing the necessary permissions to read
from the source.
|
소스 데이터베이스의 마이그레이션 사용자 계정에 필요한 권한이 없습니다. |
Database Migration Service는 소스 연결 프로필에서 구성한 사용자 계정으로 소스에 연결합니다. 이 계정에는 소스 데이터베이스에서 데이터를 읽기 위한 특정 권한 세트 (예: 마이그레이션 사용자 계정에 필요한 권한이 있는지 확인합니다. 자세한 내용은 소스 Oracle 데이터베이스 구성을 참조하세요. |
오류 메시지: Unable to connect to the destination database. |
대상 데이터베이스에 연결하는 중에 문제가 발생했습니다. | 프로젝트에서 대상 데이터베이스에 액세스할 수 있는지 확인합니다. 대상 연결 구성 방법과 관련된 설정을 확인합니다. |
오류 메시지: The following tables don't exist in the destination database: {table_names}. |
마이그레이션하려는 나열된 테이블이 대상 데이터베이스에 없습니다. | Database Migration Service는 소스 스키마를 변환할 때 필요한 테이블과 정의를 만듭니다. |
오류 메시지: password authentication failed for user {username}. |
대상 데이터베이스의 사용자 이름 또는 비밀번호가 잘못 구성되었습니다. | 대상 PostgreSQL 연결 프로필이 올바른 사용자 이름과 비밀번호로 올바르게 구성되어 있는지 확인합니다. |
오류 메시지: The following tables in the destination database
don't have primary keys: {table_names}.
|
오류 메시지에 나열된 테이블이 대상 데이터베이스에 있지만 기본 키가 없습니다. |
Database Migration Service 변환 작업공간은 스키마를 변환할 때 기본 키가 없는 테이블에 기본 키를 자동으로 추가합니다. 기존 변환 작업공간을 사용하는 경우 대상에서 기본 키를 수동으로 만들어야 합니다. 자세한 내용은 기존 변환 작업공간을 참조하세요. |
경고: The following tables have foreign keys: {table_names}. |
오류 메시지에 나열된 테이블이 대상 데이터베이스에 있지만 외래 키가 있습니다. |
Database Migration Service는 트랜잭션 방식으로 데이터를 복제하지 않으므로 테이블이 순서대로 마이그레이션되지 않을 수 있습니다. 외래 키가 있고 외래 키를 사용하는 하위 테이블이 상위 테이블보다 먼저 마이그레이션되면 복제 오류가 발생할 수 있습니다. 이러한 데이터 무결성 문제를 방지하려면 마이그레이션 사용자의 |
오류 메시지: Unable to resume replication as log position is lost. |
이 오류는 복제 프로세스가 장시간 일시중지되어 로그 위치가 손실될 때 발생할 수 있습니다. | 마이그레이션 작업은 로그 보관 기간보다 길거나 로그 보관 기간에 가까운 시간 동안 일시중지하면 안 됩니다. 로그 위치가 손실되면 마이그레이션 작업을 다시 만들어야 합니다. |
오류 메시지: ORA-00942: table or view does not exist. |
이 오류는 Oracle 서버에서 캐싱한 결과로 발생할 수 있습니다. | 데이터베이스 사용자를 다시 만들어 캐싱 문제를 해결합니다. |
| 마이그레이션 작업이 전체 덤프 단계에 머물러 있고 변경 데이터 캡처 (CDC) 단계로 진행되지 않습니다. | Database Migration Service가 아직 일부 테이블에 대해 전체 덤프를 실행 중이거나 오류로 인해 하나 이상의 테이블에서 전체 덤프를 완료할 수 없습니다. |
|
연결 문제
이 섹션에서는 잠재적인 네트워크 연결 문제의 문제 해결 단계를 나열하고 설명합니다.
대상 데이터베이스에 연결할 수 없음: EOF
연결 테스트를 실행하면 [DATABASE] unable to connect to the destination database: EOF 오류 메시지가 반환됩니다.
가능한 원인: 서비스 연결이 잘못 구성되었습니다.
해결 방법: 서비스 연결 Terraform 구성 파일에서 enable_proxy_protocol이(가)
false
으로 설정되어 있는지 확인합니다.
프록시 프로토콜은 NGINX 및 Apache와 같은 HTTP 서버에서만 지원됩니다.
gcloud를 사용하여 Private Service Connect 설정을 만들 때 프록시 프로토콜은 기본적으로 사용 중지됩니다.
연결 시간 초과, 연결 거부됨
연결 테스트를 실행하면 실패하거나 시간이 초과됩니다. 이는 Private Service Connect 설정 내에서 잘못 구성된 라우팅으로 인해 발생할 가능성이 높습니다. 이 문제에는 여러 가지 원인이 있을 수 있습니다.
가능한 원인: 배스천이 있는 Private Service Connect 서브넷(특히 배스천 VM nic0 인터페이스)에 Private Service Connect NAT CIDR 범위가 액세스할 수 있도록 허용하는 방화벽 규칙이 없습니다.
해결 방법: 조직 정책에서 PSC가 사용 설정되지 않은 Cloud SQL 인스턴스의 대상 비공개 IP 연결 구성에 대한 Terraform 스크립트 예에 정의된 psc_sp_in_fw 방화벽 규칙과 같은 내부
방화벽 규칙을 제한하지 않는지 확인합니다.
가능한 원인: 프록시가 다운되었습니다. 제공된 포트에 수신 대기자가 없으므로 연결이 중단됩니다.
해결 방법: 배스천 VM에 대한 SSH 연결을 설정하고 다음 명령어를 사용하여 프록시를 검색해 볼 수 있습니다.
netstat -tunalp | grep PORT
명령어에 대한 응답을 분석합니다.
빈 응답이 반환되면 프록시가 다운된 것입니다. 다음 명령어를 실행해 보세요.
sudo su; cd /및sudo dpkg -s dante-server를 실행하여 Dante 서버가 설치되어 있는지 확인합니다.프록시가 실행 중이고 제공된 포트에서 수신 대기 중인 경우 다음을 수행하여 프록시에 대한 연결을 열어봅니다.
PostgreSQL 클라이언트를 설치합니다.
sudo apt-get install postgresql-client.PostgreSQL 데이터베이스에 연결합니다.
psql -h 127.0.0.1 -p PORT -U DBUSERNAME -W(비밀번호를 입력하라는 메시지가 표시됨)다음을 바꿉니다.
PORT: 데이터베이스 포트 번호DBUSERNAME: PostgreSQL 데이터베이스에 연결하는 데 사용되는 사용자 이름
Telnet 클라이언트를 설치합니다.
sudo apt-get install telnetTelnet 클라이언트에 연결합니다.
telnet 127.0.0.1 PORTPORT를 데이터베이스 포트 번호로 바꿉니다.
명령어 결과에 따라 다음을 수행합니다.
명령어로 연결을 열 수 없는 경우 프록시 로그를 확인하여 근본 원인을 찾아봅니다. 근본 원인은 Cloud SQL 인스턴스 설정에 따라 다를 수 있습니다.
Telnet을 사용하여 연결이 열리지만 클라이언트에서 중단되는 경우 배스천 IP 주소 라우팅이 문제일 수 있습니다. VM의 터미널에
ip route를 입력합니다. 보조nic(nic1,DB_SUBNETWORK_GATEWAYIP 주소)를 사용하여 Cloud SQL 인스턴스 비공개 IP 주소로 연결을 라우팅하는 라우팅 규칙을 찾을 수 있는지 확인합니다.
가능한 원인: 서비스 연결에서 Database Migration Service의 엔드포인트 연결을 수락하지 않습니다. 서비스 연결에는 허용되는 프로젝트 목록이 있으며 Database Migration Service 프로젝트는 목록에 포함되어 있지 않습니다.
해결 방법: 이 문제를 해결하려면 다음 중 하나를 시도해 보세요.
콘솔에서 Private Service Connect 로 이동합니다. Google Cloud
게시된 서비스 탭에서 서비스 연결에 대한 Database Migration Service의 연결을 수락합니다 (대기 중인 경우).
요청 프로젝트를 서비스 연결의 허용 목록에 추가합니다(거부된 경우).
Terraform에서 허용 목록에 있는 프로젝트를 추가하는 방법에 대한 자세한 내용은 Terraform 문서를 참조하세요.
gcloud에서 허용 목록에 있는 프로젝트를 추가하는 방법에 대한 자세한 내용은 Google Cloud CLI 참고 문서를 참조하세요.
그래도 문제가 해결되지 않으면 연결 프로필을 다시 만듭니다.
연결 프로필을 삭제하고 Private Service Connect 연결과 연결된 연결 프로필을 다시 만듭니다.
Oracle SCAN 오류 문제 해결
이 섹션에서는 단일 클라이언트 액세스 이름 (SCAN) 기능을 사용하여 Oracle Real Application Clusters (RAC) 소스에서 마이그레이션할 때 발생할 수 있는 잠재적인 문제에 대해 설명합니다.
Oracle SCAN 데이터베이스에 연결할 수 없음
연결 테스트를 실행하면 실패하거나 시간이 초과됩니다.
가능한 원인: Oracle SCAN 소스 데이터베이스에 직접 연결을 설정하려고 할 수 있습니다. Database Migration Service는 Oracle RAC 환경에서 SCAN 기능을 사용하여 데이터베이스에 대한 직접 연결을 지원하지 않습니다.
해결 방법: 이 문제를 해결하려면 다음 중 하나를 시도해 보세요.
노드 중 하나에 직접 연결합니다.
Oracle Connection Manager를 사용합니다.
HAProxy와 같은 리버스 프록시 솔루션을 사용하여 비공개 연결 구성을 만듭니다.