本頁列出已知錯誤和建議的疑難排解步驟,適用於:
遷移工作錯誤
遷移工作程序在執行階段可能會發生錯誤。
- 部分錯誤可以復原,例如來源資料庫的密碼錯誤。修正這些錯誤後,遷移工作會自動繼續。
- 有些錯誤無法復原,例如資料複製錯誤。修正這些錯誤後,您必須重新啟動遷移工作。
發生錯誤時,遷移工作狀態會變更為 Failed,子狀態則會反映失敗前的最後狀態。如要排解錯誤,請前往失敗的遷移工作查看錯誤,並按照錯誤訊息中的步驟操作。如要查看錯誤的詳細資料,請使用遷移工作的連結前往 Cloud Monitoring。系統會篩選記錄,只顯示特定遷移工作的記錄。
下表列出一些問題範例和解決方法:
| 問題 | 可能原因 | 推薦主題 |
|---|---|---|
錯誤訊息:Database Migration Service can't set up a tunnel to be
connected to the bastion host。
|
資料庫遷移服務無法存取堡壘主機,或堡壘主機不接受連線。 | 請驗證 來源連線設定檔和 SSH 通道伺服器設定中的轉送 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 伺服器快取所致。 | 重新建立資料庫使用者,修正快取問題。 |
| 遷移工作會停留在完整 dump 階段,不會進入變更資料擷取 (CDC) 階段。 | 資料庫遷移服務仍在對部分資料表執行完整轉儲作業,或是一或多個資料表因錯誤而無法完成完整轉儲作業。 |
|
連線問題
本節列出並說明潛在網路連線問題的疑難排解步驟。
無法連線至目的地資料庫:EOF
執行 Connectivity Tests 時,傳回 [DATABASE] unable to connect to the destination database: EOF 錯誤訊息。
可能原因:服務連結設定有誤。
建議做法:確認
服務連結 Terraform 設定檔中的 enable_proxy_protocol 設為 false。Proxy 通訊協定僅支援 NGINX 和 Apache 等 HTTP 伺服器。
使用 gcloud 建立 Private Service Connect 設定時,Proxy 通訊協定預設為停用。
連線逾時,連線遭拒
執行連線能力測試失敗或逾時。這很可能是因為 Private Service Connect 設定中的轉送設定有誤。這個問題有幾個可能原因。
可能原因:缺少防火牆規則,無法允許 Private Service Connect NAT CIDR 範圍存取堡壘主機所在的 Private Service Connect 子網路,特別是堡壘主機 VM nic0 介面。
建議做法:確認組織政策未限制內部防火牆規則,例如在 Terraform 範例指令碼中定義的 psc_sp_in_fw 防火牆規則,用於
為未啟用 PSC 的 Cloud SQL 執行個體設定目的地私人 IP 連線。
可能原因: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」。
在「Published services」(已發布的服務) 分頁中,接受資料庫遷移服務對服務連結提出的連線要求 (如果狀態為「待處理」)。
將提出要求的專案新增至服務連結的許可清單專案 (如果遭到拒絕)。
如要進一步瞭解如何在 Terraform 中新增許可清單專案,請參閱 Terraform 說明文件。
如要進一步瞭解如何在
gcloud中新增許可清單專案,請參閱 Google Cloud CLI 參考文件。
如果問題仍未解決,請重新建立連線設定檔。
排解 Oracle SCAN 錯誤
本節說明使用單一用戶端存取名稱 (SCAN) 功能,從 Oracle Real Application Clusters (RAC) 來源遷移時,可能遇到的問題。
無法與 Oracle SCAN 資料庫建立連線
執行連線能力測試失敗或逾時。
可能原因:您可能嘗試直接連線至 Oracle SCAN 來源資料庫。在 Oracle RAC 環境中,資料庫遷移服務不支援使用 SCAN 功能直接連線至資料庫。
建議做法:如要解決問題,請嘗試下列任一做法:
直接連線至其中一個節點。
使用 HAProxy 等反向 Proxy 解決方案,建立私人連線設定。