我的 Amazon Relational Database Service (Amazon RDS) 数据库实例中出现了“ORA-39405”或“ORA-39002”错误。
简短描述
您可能会收到与以下内容之一类似的错误:
- "ORA-39002: invalid operation"
- "ORA-39405: Oracle Data Pump does not support importing from a source database with TSTZ version 35 into a target database with TSTZ version 33"
当您尝试在夏令时 (DST) 版本不同的源数据库和目标数据库之间传输数据时,您会收到上述错误之一。在新版本中,Oracle 针对不同时区的规则更改发布了新的 DST 文件和次要更新。
解决方法
**重要事项:**在更改生产 RDS 实例之前,最佳做法是在非生产环境中测试与时区相关的更改。此外,请在更改生产环境之前还原数据库实例的快照。
将目标数据库的 DST 时区版本升级到源数据库版本或更高版本。
检查您的数据库实例的当前时区
要检查数据库实例的当前时区版本,请运行以下查询:
SQL> SELECT * FROM V$TIMEZONE_FILE;
要查看最新的可用时区版本,请运行以下查询:
SQL> SELECT DBMS_DST.GET_LATEST_TIMEZONE_VERSION FROM DUAL;
添加 TIMEZONE_FILE_AUTOUPGRADE 选项
要将您的数据库实例的时区文件自动升级到最新版本,请在新的或现有实例选项组中添加 TIMEZONE_FILE_AUTOUPGRADE 选项。
**注意:**当您将该选项添加到连接到实例的现有选项组时,您会在时区文件更新期间遇到停机问题。
应用 TIMEZONE_FILE_AUTOUPGRADE 选项后,Amazon RDS 会运行以下查询来检查新的 DST 版本并立即开始更新:
SQL> SELECT * FROM V$TIMEZONE_FILE;
更新时区后检查您的数据
更新数据库实例上的时区文件后,最佳做法是检查数据。Amazon RDS for Oracle 会自动创建以下表:
- rdsadmin.rds_dst_affected_tables 列出了包含受更新影响的数据的表。
- rdsadmin.rds_dst_error_table 列出了更新期间生成的错误。
要查看更新结果,请运行以下命令来查询表:
SELECT * FROM rdsadmin.rds_dst_affected_tables;
SELECT * FROM rdsadmin.rds_dst_error_table;
有关受影响数据和错误表架构的详细信息,请参阅 Oracle 网站上的 FIND_AFFECTED_TABLES 过程。
相关信息
Amazon RDS for Oracle Database 19c (19.0.0.0)
选项组概述
如何更改我的 Amazon RDS for Oracle 实例的时区?