某天晚上,同事在使用數據泵進行數據遷移的過程中遇到點問題,簡要記錄之。
1、概述
同事需要將一套19C數據庫中的數據遷移到COMPATIBLE=12.1.0的數據庫中,在使用數據泵導出的命令中添加了VERSION=12.1.0選項。在導出的日志中有幾條ORA-39373報錯信息。具體日志如下所示:
ORA-39373: cannot export SYSTEM_GRANT: ….. to version 12.1.0 due to long identifiers ORA-39373: cannot export SYSTEM_GRANT: ….. to version 12.1.0 due to long identifiers ORA-39373: cannot export INDEX_STATISTICS to version 12.1.0 due to long identifiers |
2、從報錯的信息可以看出,由於指定了導出的版本(VERSION=12.1.0),而一些標識符太長,所以無法導出,SYSTEM_GRANT這個關鍵字,看樣子是系統權限這部分的內容;INDEX_STATISTICS應該是索引的統計信息。
3、同事擔心這個報錯是否會導致遷移的數據不一致,這些報錯其實可以在數據遷移后手動處理,也不會造成業務數據的不一致。數據遷移完成后,對比兩個庫中業務用戶的系統權限部分,查看目標端的業務用戶缺少哪些系統權限,手動賦予這些系統權限即可。而索引的統計信息,這本來就是需要在數據遷移完成后,手動重新收集的。
4、這個問題在MOS文章:12.2 DataPump Export (EXPDP) Using a Lower Export Client Fails Due To ORA-39373 (Doc ID 2369249.1)中也有說明(In 12.2 Oracle database, the maximum length of identifiers is increased to 128 bytes for most identifiers, up from 30 bytes in previous releases.)。MOS中的解決方案是對超過30個字符的數據對象進行重命名,然后重新導出。
