本方法保守来说适用与相同系统环境、相同字节序、相同大版本的Oracle数据库间可跨小版本相互迁移。有一些厉害的人用一些奇怪的方法也迁移过不同平台不同字节序数据库
select * from vtransportable_platform 可通过vtransportable_platform视图查到
本文档是window server 2008 x64 Oracle 11.2.0.1.0 单实例 ,升级至window server 2008 x64 Oracle 11.2.0.4.0 单实例
一、初始环境准备
1、原环境
11.2.0.1数据库中查询数据文件,参数文件,控制文件的具体位置。并生成控制文件trace
查看数据文件位置
select FILE_NAME from dba_data_files;
查看控制文件位置
select name from v$controlfile;
查看参数文件位置
show parameter pfile
如果没有pfile 则从spfile创建pfile
Create pfile=’E:\pfileorcl.ora’ from spfile;
生成控制文件备份,获取创建控制文件语句
alter database backup controlfile to trace as ‘e:\control’;
2、目标环境
提前安装Oracle 11.2.0.4数据库,可以先创建一个数据库,与源库相同的实例名,这样省事可以不用在去创建各种服务,当然也可以不创建,就是在升级前需要配置各种相关服务才可以启动数据库(需要配置的服务网上自行搜索)。此处是创建了一个与源库相同实例名的数据库。
二、开始复制数据文件
1、关闭源库
Shu immediate
2、关闭目标库
Shu immediate
3、复制源库 所有文件至目标库 包含数据文件(datafile)、参数文件(pfile)、控制文件(controlfile)、在线日志(redolog)
注意:原环境与目标环境各文件路径尽量一致,一致可以省去很多麻烦
若不一致,则需要重建控制文件(此文档不一致)
三、开始启动目标库
1、
如果原环境的各文件路径与目标环境各文件路径一致时,直接使用原库参数文件,
使用upgrade模式启动数据库
SQL>Startup upgrade
2、若不一致 先修改参数文件中所有路径与目标环境一致。再使用pfile启动数据库至nomount状态
SQL>startup nomount
从创建的控制文件trace文件中找到创建控制文件的语句,修改相关路径,并重新生成控制文件,再启动数据至mount状态
正常切换至mount 状态后,切换数据库为open 且使用 upgrade参数
Alter database open upgrade;
四、执行数据库升级脚本
1、查看预升级信息
SQL> @$ORACLE_HOME\rdbms\admin\utlu112i.sql
2、执行数据库实例升级脚本
SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql 1小时左右(视服务器性能而定)
脚本执行完毕会强行退出SQL plus,并关闭数据库实例
3、重新起库,并查看升级情况
SQL>startup
SQL> @$ORACLE_HOME/rdbms/admin/utlu112s.sql 查看升级情况显示各组件升级时间及升级结果
创建新的临时文件
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE ‘E:\app\Administrator\oradata\ORCL\DATAFILE\O1_MF_TEMP_CV6KQX5J_.TMP’ SIZE 1808M REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
执行脚本会自动将该补丁集更新应用于数据库。
SQL> @ORACLE_HOME/rdbms/admin/catuppst.sql
执行脚本重新编译失效对象
SQL> @ORACLE_HOME/rdbms/admin/utlrp.sql
重启数据库
SQL> shutdown immediate;
SQL> startup;
检查数据库组件版本状态,
SQL>select * from v$version
SQL>select COMP_NAME,VERSION from DBA_REGISTRY;




