先前保留了一份oracle的数据目录,然后重装了oracle数据库,oracle版本从11.2.0.1升级到11.2.0.4
新的数据文件目录为/data/oradata
数据文件目录备份为/data/oradata_bak
关闭数据库和服务监听
#su - oracle
#lsnrctl stop
#sqlplus / as sysdba
SQL>shutdown immediate;
把新安装的数据库文件目录改名为oradata_new
mv /data/oradata /data/oradata_new
把备份的数据库文件目录改名为oradata
mv /data/oradata_bak /data/oradata
使用sysdb登录并启动数据库
#sqlplus / as sysdba
SQL>startup;
启动会提示control文件不一致,这种情况把oradata下的control01.ctl 覆盖fast_recovery_area下的control02.ctl
mv /opt/oracle/app/oracle/fast_recovery_area/scc/control02.ctl /opt/oracle/app/oracle/fast_recovery_area/scc/control02.ctl.bak
cp /data/oradata/scc/control01.ctl /opt/oracle/app/oracle/fast_recovery_area/scc/control02.ctl
然后启动数据库会提示加上upgrade参数,这是因为要将一些基础信息表以及系统信息表升级到11.2.0.4版本
--特殊方式启动
SQL>startup upgrade
--查看预升级信息,这一步可以不做
SQL>@$ORACLE_HOME/rdbms/admin/utlu112i.sql
--执行升级脚本,执行完后就可以startup数据库
SQL>@$ORACLE_HOME/rdbms/admin/utlu112s.sql
--下面的步骤可以不做
SQL> @$ORACLE_HOME/rdbms/admin/utlu112s.sql
SQL> @$ORACLE_HOME/rdbms/admin/catuppst.sql
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
注:在执行升级脚本时可能会报SELECT TO_NUMBER(‘DATA_VAULT_OPTION_ON’) FROM v$option错误,这是因为开启了Oracle Vault功能,选关闭此功能后再执行升级
升级完成后启动数据库即可正常使用
SQL> col parameter for a30
SQL> col value for a20
SQL> SELECT * FROM V$OPTION WHEREPARAMETER = 'Oracle Database Vault';
关闭数据库实例
SQL> shutdown immediate
SQL> exit
# lsnrctl stop
编译ins_rdbms.mk
cd $ORACLE_HOME/rdbms/lib/
make -f ins_rdbms.mk dv_off
执行relink
cd $ORACLE_HOME/bin
relink all
执行完后启动oracle即可
关闭数据库实例
SQL> shutdown immediate
SQL> exit
# lsnrctl stop
编译ins_rdbms.mk
cd $ORACLE_HOME/rdbms/lib/
make -f ins_rdbms.mk dv_on
执行relink
cd $ORACLE_HOME/bin
relink all
执行完后启动oracle即可