使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何解决我的 Amazon RDS for Oracle 数据库实例中的“ORA-39405”或“ORA-39002”错误?

1 分钟阅读
0

我的 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 实例的时区?

AWS 官方
AWS 官方已更新 1 个月前