教你如何使用 Oracle 经典预升级工具和服务器变更
简而言之:如果您使用的是经典的 Preupgrade 工具 (preupgrade.jar),您应该确保该工具存在于目标 Oracle Home 中。MOS 说明如何下载和运行 Oracle 的数据库预升级实用程序(文档 ID 884522.1)已更新以突出显示以下内容:
如果升级到 12.2 或更高版本,则将文件保存到目标 $ORACLE_HOME/rdbms/admin 目录,然后解压缩文件。
您可以使用此示例:
cp preupgrade_19_cbuild_7_lf.zip /u01/app/oracle/product/19.0.0.0/dbhome_1/rdbms/admin/
cd /u01/app/oracle/product/19.0.0.0/dbhome_1/rdbms/admin/
unzip preupgrade_19_cbuild_7_lf.zip
如果在升级过程中将数据库移动到新服务器,请确保在源数据库主机和目标数据库主机上使用相同版本的 Preupgrade 工具。
##3 背景
最近,我参与了一些案例,客户报告说经典的 Preupgrade 工具在升级后修复期间失败:
@postupgrade_fixups.sql
DECLARE
*
ERROR at line 1:
ORA-20000: In run_check, Pre-Upgrade Package Requested Check "post_disable_bct_upg" does not exist
ORA-06512: at line 1
ORA-06512: at "SYS.DBMS_PREUP", line 293
ORA-06512: at "SYS.DBMS_PREUP", line 5227
ORA-06512: at "SYS.DBMS_PREUP", line 3239
ORA-06512: at line 139
在我们开发人员的指导下,我了解到您必须在执行升级后修复之前将经典的 Preupgrade 工具(所有文件)提取到目标 Oracle Home。具体来说,文件必须进入$ORACLE_HOME/rdbms/admin.
您可以安全地覆盖现有文件。或者,如果您谨慎,请先备份它们。
当您升级数据库并将数据库移动到新服务器时,这一点尤其重要。我有一篇关于在 OCI 中升级 VM 数据库系统的博文系列,它们都涉及将数据库移动到新服务器。而且我最初的帖子版本没有这些信息。
当您在源数据库上运行经典的 Preupgrade 工具时,您应该使用该工具的最新版本。您可以从 My Oracle Support下载它。在关闭源数据库之前在源数据库上运行该工具,然后将数据库移动到另一台服务器。当升级完成并执行升级后修复时,它将使用目标 Oracle Home 中的辅助包来进行一些修复。如果辅助包的两个版本不同步,您可能会遇到问题。
一位开发人员写道:
执行 postupgrade_fixups.sql 时,会再次执行 preupgrade_package.sql,但它取自 $ORACLE_HOME/rdbms/admin。由于它具有不同的版本,因此无法执行升级后修复
结论
我多年来一直在升级数据库,但我一直没有意识到这一点。我之前没有遇到过问题,我想这只是纯粹的运气。
请记住,始终使用 My Oracle Support 提供的最新版本的工具。