本頁列出下列項目的已知錯誤和建議疑難排解步驟:
遷移工作錯誤
遷移工作程序在執行階段可能會發生錯誤。
- 部分錯誤 (例如來源資料庫的密碼有誤) 可以復原。 修正這些錯誤後,系統會自動繼續執行遷移工作。
- 有些錯誤無法復原,例如資料複製錯誤。修正這些錯誤後,請務必重新啟動遷移工作。
發生錯誤時,遷移工作狀態會變更為 Failed,子狀態則會反映失敗前的最後狀態。如要排解錯誤,請前往失敗的遷移工作查看錯誤,並按照錯誤訊息中的步驟操作。如要查看錯誤的詳細資料,請使用遷移工作中的連結前往 Cloud Monitoring。系統會根據特定遷移工作篩選記錄。
下表列出一些問題範例和解決方法:
| 問題 | 可能原因 | 建議做法 | 
|---|---|---|
| 錯誤訊息: Database Migration Service can't set up a tunnel to be
        connected to the bastion host。 | 資料庫遷移服務無法存取防禦主機,或防禦主機不接受連線。 | 請在 來源連線設定檔和 SSH 通道伺服器設定中確認轉送安全殼層通道設定,然後再試一次。 | 
| 錯誤訊息: Database Migration Service can't connect to the database或Database Migration Service private connectivity error, cannot connect to the database。 | 資料庫移轉服務無法與來源 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。 | 資料庫移轉服務只會讀取已關閉的封存記錄,但來源資料庫中找不到任何記錄。 | 
 如果資料庫沒有任何有效的寫入作業,您可能需要執行至少一項  | 
| 錯誤訊息: We're missing the necessary permissions to read
        from the source。 | 來源資料庫中的遷移使用者帳戶沒有必要權限。 | 資料庫遷移服務會以您在來源連線設定檔中設定的使用者帳戶連線至來源。該帳戶需要一組特定權限 (例如  確認遷移使用者帳戶具備必要權限。 詳情請參閱「 設定 Oracle 來源資料庫」。 | 
| 錯誤訊息: Unable to connect to the destination database。 | 無法連線至目標資料庫。 | 確認您可以從專案存取目的地資料庫。 檢查與 目的地連線設定方法相關的設定。 | 
| 錯誤訊息: The following tables don't exist in the destination database: {table_names}。 | 您嘗試遷移的所列資料表不存在於目標資料庫中。 | 轉換來源結構定義時,資料庫遷移服務會建立必要的資料表和定義。 | 
| 錯誤訊息: password authentication failed for user {username}。 | 目的地資料庫的使用者名稱或密碼設定有誤。 | 確認目的地 PostgreSQL 連線設定檔已正確設定,且使用者名稱和密碼正確無誤。 | 
| 錯誤訊息: The following tables in the destination database
        don't have primary keys: {table_names}。 | 錯誤訊息中列出的資料表存在於目的地資料庫,但缺少主鍵。 | 轉換結構定義時,資料庫移轉服務轉換工作區會自動為沒有主鍵的資料表新增主鍵。 如果您使用舊版轉換工作區,則必須在目的地手動建立主鍵。詳情請參閱「 舊版轉換工作區」。 | 
| 警告: The following tables have foreign keys: {table_names}。 | 錯誤訊息中列出的資料表存在於目的地資料庫,但具有外部索引鍵。 | 資料庫移轉服務不會以交易方式複製資料,因此資料表可能會以非預期的順序遷移。如果存在外鍵,且在遷移父項資料表之前遷移使用外鍵的子項資料表,可能會發生複製錯誤。 如要避免這類資料完整性問題,請為遷移使用者使用  | 
| 錯誤訊息: Unable to resume replication as log position is lost。 | 如果複製程序暫停時間過長,導致記錄位置遺失,就可能發生這個錯誤。 | 暫停遷移工作時,時間不應超過 (或接近) 記錄保留期限。如果記錄檔位置遺失,您必須重新建立遷移工作。 | 
| 錯誤訊息: ORA-00942: table or view does not exist。 | Oracle 伺服器上的快取可能會導致這項錯誤。 | 重新建立資料庫使用者,修正快取問題。 | 
| 移轉工作會停留在完整傾印階段,不會進入變更資料擷取 (CDC) 階段。 | 資料庫移轉服務仍在對部分資料表執行完整傾印,或一或多個資料表因發生錯誤而無法完成完整傾印。 | 
 | 
連線問題
本節列出並說明潛在網路連線問題的疑難排解步驟。
無法連線至目的地資料庫:EOF
執行連線測試時,系統會傳回 [DATABASE] unable to connect to the destination database: EOF 錯誤訊息。
可能原因:服務連結設定有誤。
嘗試以下做法:確認enable_proxy_protocol在
服務附件 Terraform 設定檔中設為 false。Proxy 通訊協定僅適用於 NGINX 和 Apache 等 HTTP 伺服器。
使用 gcloud 建立 Private Service Connect 設定時,系統預設會停用 Proxy 通訊協定。
連線逾時、連線遭拒
連線測試失敗或逾時。這很可能是因為 Private Service Connect 設定中的路由設定錯誤所致。這個問題可能有多種原因。
可能原因:缺少防火牆規則,導致 Private Service Connect NAT CIDR 範圍無法存取防禦主機所在的 Private Service Connect 子網路,特別是防禦主機 VM nic0 介面。
建議嘗試的做法:確認機構政策未限制內部防火牆規則,例如為未啟用 PSC 的 Cloud SQL 執行個體設定目的地私人 IP 連線時,範例 Terraform 指令碼中定義的 psc_sp_in_fw 防火牆規則。
可能原因:Proxy 停止運作。提供的通訊埠上沒有接聽程式,因此連線會掛斷。
可嘗試的做法:您可以嘗試與防禦 VM 建立 SSH 連線,並使用下列指令搜尋 Proxy:
- netstat -tunalp | grep PORT
分析指令的回覆:
- 如果收到空白回應,表示 Proxy 已停止運作。請嘗試執行下列指令: - sudo su; cd /,然後執行- sudo dpkg -s dante-server,檢查是否已安裝 Dante 伺服器:- 如果已安裝 Proxy,您會收到下列訊息: - Status: install ok installed
- 如果未安裝 Proxy,可能的問題是缺少路由器。新增路由器,然後執行 - apt-get install dante-server,確認是否可以下載 Proxy。
 
- 如果 Proxy 正在執行並監聽提供的通訊埠,請嘗試開啟連線,方法如下: - 安裝 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 telnet
- 連線至 Telnet 用戶端: - telnet 127.0.0.1 PORT- 將 - PORT替換為資料庫連接埠號碼。
 - 視指令結果而定: - 如果指令無法開啟連線,請嘗試查看 Proxy 記錄,找出根本原因。根本原因可能因 Cloud SQL 執行個體設定而異。 
- 如果連線是使用 Telnet 開啟,但用戶端中斷連線,可能的問題是堡壘 IP 位址的路由。在 VM 中,於終端機輸入 - ip route。查看是否能找到路由規則,使用次要- nic(- nic1,即- DB_SUBNETWORK_GATEWAYIP 位址) 將連線路由至 Cloud SQL 執行個體私人 IP 位址。
 
可能原因:服務附件不接受來自資料庫遷移服務的端點連線。服務連結會保留已接受的專案清單,而資料庫遷移服務專案不在清單中。
解決方法:如要解決這個問題,請嘗試下列任一方法:
- 在 Google Cloud 控制台中,前往「Private Service Connect」。 - 在「已發布的服務」分頁中,接受資料庫遷移服務的連線要求 (如果服務附件的狀態為「待處理」)。 
- 將要求專案新增至服務連結的允許專案 (如果遭到拒絕)。 - 如要進一步瞭解如何在 Terraform 中新增允許的專案,請參閱 Terraform 說明文件。 
- 如要進一步瞭解如何在 - gcloud中新增允許的專案,請參閱 Google Cloud CLI 參考說明文件。
 - 如果問題仍未解決,請重新建立連線設定檔。 
排解 Oracle SCAN 錯誤
本節說明使用單一用戶端存取名稱 (SCAN) 功能,從 Oracle Real Application Clusters (RAC) 來源遷移時可能遇到的問題。
無法連線至 Oracle SCAN 資料庫
連線測試失敗或逾時。
可能原因:您可能嘗試直接連線至 Oracle SCAN 來源資料庫。資料庫移轉服務不支援使用 Oracle RAC 環境中的 SCAN 功能直接連線至資料庫。
解決方法:如要解決這個問題,請嘗試下列任一方法:
- 直接連線至其中一個節點。 
- 使用 HAProxy 等反向 Proxy 解決方案建立私人連線設定。