impdp报ORA-39405,手动更新DST v41版本

发布时间 2023-09-20 11:57:47作者: 石云华

前言

业务部门使用impdp进行数据加载时报错,错误信息如下所示。

ORA-39405: Oracle Data Pump does not support importing from a source database with TSTZ version 41 into a target database with TSTZ version 32.

错误提示信息已经非常显示,源端数据库的TSTZ版本为41,而目标端数据库为32,所以不支持这个数据导入操作。

检查发现源端数据库版本为19.19,而目标端数据库版本为19.16。要解决这个故障,可以将目标端数据库升级至与源端相同的版本;也可以单独升级目标端的TSTZ版本。

本文简单记录升级TSTZ的步骤。

 

1、查看当前DST的版本

SQL> SELECT version FROM v$timezone_file;

   VERSION

----------

        32

SQL>

 

2、下载补丁

p35099667_190000_Linux-x86-64.zip

 

3、安装补丁

(oracle)$ unzip p35099667_190000_Linux-x86-64.zip -d /software/35099667

(oracle)$ cd /software/35099667/35099667

(oracle)$ opatch apply

(oracle)$ opatch lspatches

所有计算节点都执行。

 

4、更新数据库中DST的版本信息

更新DST信息有两种方式:(1).利用DBMS_DST包进行更新;(2).利用$ORACLE_HOME/rdbms/admin目录下的utltz_*脚本进行更新。推荐使用第二种方式进行更新。

SQL> @?/rdbms/admin/utltz_countstats.sql

SQL> @?/rdbms/admin/utltz_countstar.sql

SQL> exec dbms_scheduler.purge_log;

 

SQL> @?/rdbms/admin/utltz_upg_check.sql

 

SQL> alter system set cluster_database=false scope=spfile sid='*';

(oracle)$ srvctl stop database -d racdb -o immediate

(oracle)$ sqlplus / as sysdba

SQL> startup

 

SQL> @?/rdbms/admin/utltz_upg_check.sql

SQL> @?/rdbms/admin/utltz_upg_apply.sql

 

SQL> alter system set cluster_database=true scope=spfile sid='*';

(oracle)$ srvctl stop database -d racdb -o immediate

(oracle)$ srvctl start database -d racdb

 

5、查看更新后的DST版本

SQL> SELECT version FROM v$timezone_file;

 

   VERSION

----------

        41

SQL>

 

至此,impdp时的ORA-39405报错已经解决。