ORA-56935

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 。

Author: halberd.lee

Created: 2020-08-14 Fri 09:50

Validate

posted @ 2020-08-14 09:50  halberd.lee  阅读(1176)  评论(0编辑  收藏  举报