ORA-56935
1 現象
連接到: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production ORA-39006: 內部錯誤 ORA-39065: DISPATCH 中出現意外的主進程異常錯誤 ORA-56935: 現有數據泵作業正在使用其他版本的時區數據文件 ORA-06512: 在 "SYS.DBMS_DST", line 1864 ORA-06512: 在 "SYS.DBMS_SYS_ERROR", line 79 ORA-06512: 在 "SYS.DBMS_DST", line 1827 ORA-06512: 在 "SYS.KUPM$MCP", line 20451 ORA-06512: 在 "SYS.KUPM$MCP", line 13058 ORA-06512: 在 "SYS.KUPM$MCP", line 12434 ORA-06512: 在 "SYS.KUPM$MCP", line 15078 ORA-06512: 在 "SYS.KUPM$MCP", line 10314 ORA-39097: 數據泵作業出現意外的錯誤 -56935
2 原因
之前一次的datapump操作沒有正常退出,比如強制退出的。沒有清除DST_UPGRADE_STATE. 當執行多個job 同時導入時也有可能導致此問題。 這是BUG 11836540. 據MOS文檔中說明,在12.2 中已經被修復。但是我在19C 中仍遇到。
3 解決
如果有,進入到pdb操作。
col property_name for a30 col value for a12 SELECT PROPERTY_NAME, SUBSTR (property_value, 1, 30) value FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME= 'DST_UPGRADE_STATE' ORDER BY PROPERTY_NAME; PROPERTY_NAME VALUE ------------------------------ ------------ DST_UPGRADE_STATE DATAPUMP(1)
從上面查詢的結果可以看到,DST_UPGRADE_STATE 的 value 值是DATAPUMP(1), 正常應該是NONE. 下面進行修復:
SQL> ALTER SESSION SET EVENTS '30090 TRACE NAME CONTEXT FOREVER, LEVEL 32'; 會話已更改。 SQL> exec dbms_dst.unload_secondary; PL/SQL 過程已成功完成。
再次查看 DST_UPGRADE_STATE的值:
SQL> col property_name for a30 SQL> col value for a12 SQL> SELECT PROPERTY_NAME, SUBSTR (property_value, 1, 30) value 2 FROM DATABASE_PROPERTIES 3 WHERE PROPERTY_NAME ='DST_UPGRADE_STATE' 4 ORDER BY PROPERTY_NAME; PROPERTY_NAME VALUE ------------------------------ ------------ DST_UPGRADE_STATE NONE
修改完成后,再次導入執行成功。
4 參考文檔
MOS ID 1307959.1 。
Created: 2020-08-14 Fri 09:50
