对于Oracle数据库的每个版本,总是需要遵循一个升级路径。而对于很多人来说,他们经常是在不了解需要做些什么的情况下就匆忙下载软件并尝试去安装或升级。如果失败,这就有可能会导致灾难并对业务产生潜在的影响。
升级至Oracle数据库12c(12.1.0)的路径是相当简单的。如果你所运行的Oracle数据库支持升级至12c的直接路径,那么使用任何受支持的升级方法都没问题。反之,如果你的版本不支持直接路径升级,那么你就需要在升级至Oracle数据库12c之前先升级至一个受支持的版本。
•Oracle数据库10g(10.2.0.5)
•Oracle 数据库 11g (11.1.0.7)
•Oracle 数据库 11g (11.2.0.2 或后续版本)
目前有三个受支持的升级路径/工具,每个都有各自需要注意的问题。升级选项包括:
•手动升级 (基于脚本)
•导出/导入
本文主要介绍如何使用DBUA升级到Oracle数据库12c。
Oracle已对DBUA做出改进以提供无缝升级。如果出现错误,我们现在就有选择可直接从DBUA对它们进行修复。此外,DBUA使得监控升级更为简便。要使用DBUA,我们必须去Oracle数据库12c主目录并通过运行dbua来开启它。
运行 PREUPGRD.sql
为了运行preupgrd.sql文件,我们首先需要为12c安装新的二进制文件到Oracle主目录。之后需要配置环境来连接想要升级的数据库。
在本文的测试环境中,Oracle数据库11g设置如下:
ORACLE_SID=ora11g
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/product/11.2.0.3.0/db_1
接下来,我们需要去preupgrd.sql 文件所在的目录:
#> cd /opt/oracle/product/12.1.0.1/dbhome_1/rdbms/admin
最后,我们需要使用sql*Plus并运行preupgrd.sql 文件来连接11g数据库:
#> sqlplus / as sysdba
当preupgrd.sql脚本完成后,我们就会获得需要参考的文件所在路径,这些文件可以帮助我们检验并纠正环境中出现的任何问题。
/opt/oracle/cfgtoollogs/ora11g/preupgrade/preupgrade.log
/opt/oracle/cfgtoollogs/ora11g/preupgrade/preupgrade_fixups.sql
/opt/oracle/cfgtoollogs/ora11g/preupgrade/postupgrade_fixups.sql
检查这些脚本并纠正任何需要修复的问题。一旦修正完成,再运行DBUA就会更加简单。而如果在preupgrade.log中列有任何错误,那就需要在继续之前对它们加以纠正。
运行 DBUA
一旦在检查了preupgrade.log之后并纠正了所有问题,我们就可以启动DBUA了。
要启动DBUA,我们需要去Oracle数据库12c主目录并运行dbua:
#> cd /opt/oracle/product/12.1.0.1/dbhome_1/bin
#> ./dbua &
这将开启GUI开始升级。注意目前并没有对环境做任何更改,仍然指向11g的环境。
DBUA启动后,你会注意到我们是处在11个步骤中的步骤1。而步骤数量的变化取决于所选择的选项。步骤1,我们有两个选项
•迁移一个已存在的12c数据库到一个新的12coracle主目录
出于更新的目的,我们可以只点击下一步并继续。
作为升级过程的一部分,我们需要确定想要升级的Oracle主目录。因为我们是在将Oracle主目录设置到11g主目录的情况下启动DBUA的,DBUA就会给我们所有与Oracle主目录相关的数据库。选择所要升级的数据库,然后点击下一步。
注意:如果在正在进行升级的服务器上已经安装了OEM12c,那么DBUA就会自动选择所需信息。
在步骤8中,我们可以选择在升级之前为数据库创建一个新备份。如果你对自己的备份策略自信的话,就可选择‘I have my own backup and restore strategy ’,告诉DBUA不必做备份。
验证升级
有多种方法可以对升级进行验证。而最为简单的方法就是检查/etc/oratab 文件。一旦升级完成,oratab文件就应该已将Oracle主目录变成与12c二进制文件相匹配的路径。
另外一种验证方法就是用以下命令行检查环境变量:
#> env | grep ORA
ORACLE_HOME=/opt/oracle/product/12.1.0.1/dbhome_1
sql> select banner from v$version