本頁面列出以下項目的已知錯誤和建議疑難排解步驟:
遷移工作錯誤
遷移工作程序可能會在執行期間發生錯誤。
- 部分錯誤 (例如來源資料庫的密碼錯誤) 是可以復原的。這些錯誤修正後,遷移工作會自動恢復。
- 有些錯誤無法復原,例如資料複製錯誤。必須在修正這些錯誤後重新啟動遷移工作。
發生錯誤時,遷移工作狀態會變更為 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
錯誤訊息。
可能原因:服務附件設定有誤。
建議嘗試做法:請確認
服務附件 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 的 AlloyDB for PostgreSQL 例項設定目的地私人 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 正在執行並在提供的通訊埠上聽取,請嘗試執行下列操作,開啟與 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 記錄,找出根本原因。原因可能因 AlloyDB for PostgreSQL 執行個體的設定而異。
如果使用 telnet 開啟連線,但在用戶端中掛起,問題可能出在防禦主機 IP 位址路由。在 VM 的終端機中輸入
ip route
。請確認是否可以找到路由規則,以便使用次要nic
(nic1
,即DB_SUBNETWORK_GATEWAY
IP 位址) 將連線路由至 AlloyDB for PostgreSQL 執行個體的私人 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 功能,直接連線至資料庫。
可嘗試的做法:如要解決這個問題,請嘗試下列任一做法:
直接連線至其中一個節點。
使用 Oracle 連線管理器。
使用 HAProxy 等反向 Proxy 解決方案建立私人連線設定。