暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Windows:升级到Oracle 18.10.0失败,并显示ORA-01722

原创 小小亮 2020-07-10
487

image.png

问题:

在Windows上:使用ORA-01722升级到Oracle 18.10.0失败。这发生在升级阶段的后期。

这里的问题很小,因为SUBSTR函数的使用方式并未考虑潜在的两位数字补丁发布。以前没有从来没有Oracle 11.2.0.10.0发行版的情况,所以没有发现这一点。%ORACLE_HOME\admin\catupstr.sql

仅在Windows上会发生此问题。

但是,当您运行数据库升级时,无论您使用AutoUpgrade,dbupgrade,catctl.pl还是dbua,升级都会在一开始就失败,因为catupstr.sql在调用升级之前会运行多个检查。只要您保持COMPATIBLE不变,此时一切都没有损坏。

解决方法:

解决方法是一个简单的小修改,您可以自己快速完成。

在目标18.10.0(或更高版本)的主目录中,打开 %ORACLE_HOME\admin\catupstr.sql进行编辑并更改以下部分:

SELECT TO_NUMBER(
 'MUST_BE_&C_ORACLE_HIGH_MAJ..&C_ORACLE_HIGH_RU..&C_ORACLE_HIGH_RUR')
FROM v$instance
WHERE substr(version_full,1,instr(version,'.',1,3)-1) !=
           '&C_ORACLE_HIGH_MAJ..&C_ORACLE_HIGH_RU..&C_ORACLE_HIGH_RUR';

至:

SELECT TO_NUMBER(
 'MUST_BE_&C_ORACLE_HIGH_MAJ..&C_ORACLE_HIGH_RU..&C_ORACLE_HIGH_RUR')
FROM v$instance
WHERE substr(version_full,1,instr(version_full,'.',1,3)-1) !=
           '&C_ORACLE_HIGH_MAJ..&C_ORACLE_HIGH_RU..&C_ORACLE_HIGH_RUR';

您一眼看不出差异吗?

不用担心–只需将
substr(version_full,1,'.',1,3)-1)” 替换为
“ ”即可。 而已。substr(version_full,1,instr(version_full,'.',1,3)-1)

由于Windows上没有一次性软件,因此无法寻求bug 30870439的修复。您将必须等到最早(18.12.0)提供此修复程序。

什么时候会发生此问题?

在升级到Oracle 18.10.0,Oracle 18.11.0以及Oracle 18.12.0的最有可能发生此类问题-但仅在Windows上

当您在Linux环境中检查Oracle 19c?/rdbms/admin/catupstr.sql时,您将认识到那里也不存在此修复程序。但是,随着RU 19.10.0将于2021年1月到达,我们将确保随后存在此修复程序。

同样,Oracle 18c在Unix端口上不会发生此问题,而仅在Windows 上会发生。

作者:Mike.Dietrich
文章来源:https://mikedietrichde.com/2020/07/08/windows-only-upgrade-to-oracle-18-10-0-fails-with-ora-01722/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论