oracle 为什么v$timezone_file的版本与DBMS_DST.get_latest_timezone_version不相同?

li9yvcax  于 12个月前  发布在  Oracle
关注(0)|答案(1)|浏览(145)

我遇到了一个Oracle问题,转储导入(impdp)。我得到的错误“ORA-39002:invalid operation”在日志中没有其他信息。在线我发现一些文件权限的提及,但这似乎不是一个问题。
我怀疑我安装的一个补丁出了问题。
经过调查,我发现了一些奇怪的事情。
我认为这些查询基本上会返回相同的结果。

SELECT * FROM v$timezone_file;
SELECT DBMS_DST.get_latest_timezone_version FROM   dual;

字符串
然而,第一个导致版本31,第二个导致版本40。

FILENAME                VERSION     CON_ID
-------------------- ---------- ----------
timezlrg_31.dat              31          0

GET_LATEST_TIMEZONE_VERSION
---------------------------
                         40


这是正确的吗?如果不是,我该如何修复它?

4dc9hkyq

4dc9hkyq1#

该功能似乎没有文档记录,但根据通常可靠的来源,它显示了时区文件的最新可用版本(截至Oracle版本或您安装的最新补丁级别),而不是您实际使用的版本。
从docs:

**注:**每个Oracle数据库版本都包括一个在发布时为最新的时区文件和多个较旧版本的文件。在Oracle数据库版本之间,可能会在补丁程序集中或单个补丁程序中提供新的时区文件版本,以反映各个时区区域的转换规则的更改。较旧的时区文件版本允许您运行升级的数据库,而无需立即将时区文件升级到最新版本。

您的发行版/修补程序级别似乎包括最高版本40的文件,但您尚未升级到版本31以上。因此,您可能需要考虑升级到最新的可用文件。
如果你认为你正在使用的版本是导致导入失败的原因,你可以尝试在你的环境中设置ORA_TZFILE,以匹配数据库版本。不知道这是否真的有帮助。
您得到的错误通常与数据或日志目录的权限有关,但错误堆栈中通常会有其他消息,以便给予更多关于错误的信息。

相关问题