最近又给到一个oracle数据库升级的需求,其实以前是做过升级测试的,刚好现在遇到,要回去翻记录了,所以记录到这里,供自己查阅以及供需要的人了解。
注意:升级之前做好数据备份,条件允许情况下可以备份ORALCE_HOME目录以防万一!!!这样恢复快
1.准备所需要的文件:(这两个包是database的安装介质,升级也只需用到这两个包)
文件一:p13390677_112040_Linux-x86-64_1of7.zip
文件二:p13390677_112040_Linux-x86-64_2of7.zip
2.查看是否回收站里面有对象,有的话清空回收站,或者直接清空
SQL> purge DBA_RECYCLEBIN;
3.关闭数据库
SQL> shutdown immediate
4.关闭侦听
[oracle@localhost ~]$ lsnrctl stop
5.创建指向 ORACER_HOME 目录 11.2.0.4 ,原本的 ORACLE_HOME 是指向 $ORACLE_BASE/product/11 的
[oracle@localhost ~]$ mkdir -p $ORACLE_BASE/product/11.2.0.4
6.修改环境变量,建议修改配置文件,并 source 生效,这里只需要修改到 ORACLE_HOME 就可以了,当然直接用命令:
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4 也可以
[oracle@localhost ~]$ vi /home/oracle/.bash_profile
export ORACLE_BASE=/home/u01/app
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4
export ORACLE_SID=orcl
export ORACLE_OWNER=oracle
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
[oracle@localhost ~]$ source /home/oracle/.bash_profile
7.解压准备好的两个文件,会得到一个 database 目录,其实跟你安装 oracle 时一样,记得把权限给到 oracle 用户和组
[root@localhost ~]# tar -zxvf /opt/p13390677_112040_Linux-x86-64_1of7.zip
[root@localhost ~]# tar -zxvf /opt/p13390677_112040_Linux-x86-64_2of7.zip
[root@localhost ~]# chown -R oracle:oracle /opt/database
8.进入 database 执行 runInstaller,一开始我认为执行 ./runInstaller 就可以了,但是该执行会报错
DISPLAY not set. Please set the DISPLAY and try again.
为什么?那就设置下 DISPLAY,不过结果也是一样,用 root 运行也一样
[oracle@localhost database]$ DISPLAY=ip:0.0; export DISPLAY
[oracle@localhost database]$ xhost +
access control disabled, clients can connect from any host
那就老老实实去安装了,跟安装 oracle 的时候一样静默安装,不过这里要把信息补上
[oracle@localhost database]$ ./runInstaller -silent -debug -force -ignorePrereq DECLINE_SECURITY_UPDATeS=true oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/home/oracle/oracle/oraInventory ORACLE_HOME=/home/u01/app/product/11.2.0.4 ORACLE_BASE=/home/u01/app oracle.install.db.InstallEdition=EE oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=oracle
执行到 [OUISetupDriver.JobExecutorThread] [ 2018-05-12 23:59:36.276 CST ] [UnixSystem.getCSSConfigType:2463] configType=null 会出现假死状态,请继续等待!!!
出现以下字样表示升级成功。
As a root user, execute the following script(s):
/home/u01/app/product/11.2.0.4/root.sh
Successfully Setup Software.
切换到root用户执行脚本。
9.切换到 root 执行下脚本
# /home/u01/app/product/11.2.0.4/root.sh
10.修改/etc/oratab内容为最新位置:
#orcl:/home/u01/app/product/11.2.0:Y
orcl:/home/u01/app/product/11.2.0.4:Y
11.复制数据库文件到最新位置,并启动监听,使用 sqlplus 登录
$ cp /home/u01/app/product/11.2.0/dbs/* /home/u01/app/product/11.2.0.4/dbs/
$ lsnrctl start
$ sqlplus /nolog
SQL> conn / as sysdba
12.更新数据库文件
SQL> startup upgrade
SQL> @ $ORACLE_HOME/rdbms/admin/catupgrd.sql
13.更新时间比较长,更新完成后,启动数据库
$ sqlplus / as sysdba
SQL> startup
SQL> select * from v$version;
14.如果有配置了 oracle 自启动脚本,记得更改配置信息!!
下面列出升级过程中我遇到过的错误:
错误一:步骤 8 执行 runInstaller 脚本一定要等到提示(即:Successfully Setup Software),否则要重新执行
错误二:步骤 12 更新数据库文件报错,错误如下:
SQL>startup upgrade
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file “/home/u01/app/product/11.2.0.4/db_1/dbs/initorcl.ora”
解决方式如下:
a.查找pfile目录位置:find /home/u01/app/ -name pfile 该目录下可以找到文件:init.ora.492019214646(具体看实际情况)
[root@localhost ~]# find /home/u01/app/ -name pfile
/home/u01/app/admin/orcl/pfile
b.将其复制到:/home/u01/app/product/11.2.0.4/dbs/目录下并改名为:initorcl.ora
c.然后重新更新数据库数据(重复步骤 12)