代码改变世界

Oracle数据库升级(10.2.0.4->11.2.0.4)

2015-09-28 13:43  AlfredZhao  阅读(3315)  评论(0编辑  收藏  举报

**环境: **RHEL5.4 + Oracle 10.2.0.4
**目的: **在本机将数据库升级到11.2.0.4

之前总结的Oracle数据库异机升级:http://www.cnblogs.com/jyzhao/p/4813324.html
本文简单总结下在本机升级的大体步骤,和异机升级的不同点,及需要注意的地方。下面为主要步骤:

  1. 新路径安装11.2.0.4软件
  2. 临时生效11g软件环境变量脚本
  3. 创建必须的目录
  4. 10g库升级前检查
  5. 备份10g数据库
  6. 升级10g数据库到11g

1. 新路径安装11.2.0.4软件

比如我这里10.2.0.4是`/opt/app/oracle` 11.2.0.4就选择安装到`/opt/app/oracle11` 即`$ORACLE_BASE`就不一样。

2. 临时生效11g软件环境变量脚本

vi ora11.env ``` export ORACLE_BASE=/opt/app/oracle11 export ORACLE_HOME=/opt/app/oracle11/product/11.2.0/dbhome_1 export ORACLE_SID=vas export PATH=$ORACLE_HOME/bin:$PATH ``` 需要11g环境变量时, `source /home/oracle/ora11.env`即可。 需要10g环境变量时,新窗口重新登陆oracle用户即可。

3. 创建必须的目录

此时环境变量配置是Oracle 11g的。 ``` mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/dpdump mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/cdump mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/pfile ```

4. 10g库升级前检查

此时环境变量配置是Oracle 10g的,但执行的是11g软件中的脚本。 ``` spool upgrade.info @/opt/app/oracle11/product/11.2.0/dbhome_1/rdbms/admin/utlu112i.sql spool off ``` 根据检查结果对数据库的修正,和Oracle数据库异机升级的相关部分一样,不再重复。

5. 备份10g数据库

此时环境变量配置是Oracle 10g的。 我这里选择停机一致性备份, 干净关库(shutdown immediate)启动到mount(startup mount)备份数据库(backup database plus archivelog)。 备份的目的当然是防止升级过程中失败,可以有备份还原库到最初的状态。

6. 升级10g数据库到11g

此时环境变量配置是Oracle 11g的。 注意,这里直接open upgrade,因为就不需要resetlogs了。 ``` alter database open upgrade; spool upgrade.log @?/rdbms/admin/catupgrd.sql spool off ``` 升级数据库后的操作和Oracle数据库异机升级的相关部分一样,也不再重复。