报错信息:
ORA-39405: Oracle Data Pump does not support importing from a source database with TSTZ version 42 into a target database with TSTZ version 35.
分析过程:
这个报错是由于timezone_file的版本,源端比目标端高,于是impdp不支持。
这个报错是Oracle引擎本身的限制,参考Mos文章 ORA-39405: Oracle Data Pump Does Not Support Importing From A Source Database With TSTZ Version (Doc ID 2793311.1)
在原生Oracle上,将timezone_file的patch应用,完成升级即可解决。
那么如果AWS RDS Oracle 实例上,如果遇到这个报错,应该怎么解决呢?
解决方案:
有个误区,是可能此时大家会检查RDS Oracle的小版本,而后将目标端把版本升级到更高版本。但是timezone_file的版本,不一定会跟着RDS Oracle的升级而升级。
正确的方式是,根据文档[1], 首先将RDS Oracle的选项组,如果是默认选项组,那么需要更改为自建选项组。
而后在自建选项组中,将timezone_file_autoupgrade 这个选项添加上。
需要注意的是,根据文档[1], 打开此选项可能会导致几个小时的停机时间。当实例使用过时的时区文件版本时,可能会发生停机。或者,当引擎版本升级包含新的时区文件版本时,也可能会发生这种情况。
可以通过如下query查询timezone_file的版本:
select * from v$timezone_file;
参考文档:
[1] Downtime during the time zone file update - Amazon Relational Database Service