本文是采用迁移的方式来实现数据库10g到11g的迁移升级。
一、环境介绍
1. 源数据库环境
操作系统版本: OEL5.8 x64
数据库版本 : 10.2.0.5 x64
数据库sid名 : orcl
Oracle 10g 10.2.0.5(64bit)安装目录如下:
数据库软件:/u01/app/oracle/product/10.2.0/db_1
数据库文件:/u01/app/oracle/oradata/orcl
归档目录:/u01/archivelog
RMAN目录:/u01/rman_bak/data
2. 目标数据库环境
操作系统版本: OEL5.8 x64
数据库版本 : 11.2.0.3 x64
数据库sid名 : orcl
Oracle 11g 11.2.0.3(64bit)安装目录如下(未创建数据库)
数据库软件:/u01/app/oracle/product/11.2.0/db_1
数据库文件:/u01/app/oracle/oradata/orcl
归档目录:/u01/archivelog
RMAN目录:/u01/rman_bak/data
Oracle 11g 11.2.0.3(64bit)安装文件
p10404530_112030_Linux-x86-64_1of7.zip
p10404530_112030_Linux-x86-64_2of7.zip
3. 升级思路
1)Oracle 10.2.0.2 以后才可以升级到11g 11.2.0.3。
2)创建Oracle 11.2.0.3数据库相关目录。
3) 在Oracle 10.2.0.5x64数据库上执行Oracle 11.2.0.3x64数据库utlu112i.sql脚本。
4)备份Oracle 10.2.0.5x64数据库,并传到11g数据库服务器上。
5)还原10g数据库到11g库上,并升级。
二、RMAN备份源10g数据库
1. 在Oracle 10g库上执行utlu112i.sql脚本
道先需要将11g $ORACLE_HOME/rdbms/admin下的utlu112i.sql脚本传到10g的$ORACLE_HOME/rdbms/admin目录下并执行。
并在10g上执行,这个脚本可以检查升级前的一些信息,必须要执行,否则在恢复时会出现错误。
SQL> @?/rdbms/admin/utlu112i.sql
#执行过程中无错误
2. 备份源数据库
说明:记录数据库DBID(DBID=1349744318),恢复时有用。
[oracle@oradb ~]$ rman target /
Recovery Manager: Release 10.2.0.5.0 - Production on 星期日 7月 28 12:34:56 2013
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: ORCL (DBID=1349744318)
RMAN>
run {
allocate channel c1 device type disk;
backup incremental level 0 format '/u01/rman_bak/data/db_full_%U.bak' tag '2013-07-28-FULL'
database plus archivelog;
release channel c1;
}
# 备份控制文件与参数文件
RMAN> backup current controlfile format '/u01/rman_bak/data/control20130728.bak';
RMAN> backup spfile format '/u01/rman_bak/data/spfile20130728.bak';
4. 将/u01/rman_bak/data目录拷贝到11g数据库服务器上。
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/
三、11g数据库恢复准备
1. 创建11g数据库基本目录
# su - oracle
mkdir -p /u01/app/oracle/admin/orcl/{adump,dpdump,pfile,scripts}
mkdir -p /u01/app/oracle/oradata/orcl
mkdir -p /u01/app/oracle/flash_recovery_area/ORCL
2. 创建规档日志文件
mkdir -p /u01/archivelog
3. 将rman备份数据库恢复到/u01/rman_bak/data目录下。
# su - oracle
$ cd /u01
[root@rman data]# ll
-rw-r--r-- 1 root root 7110656 07-24 22:23 control20130728.bak
-rw-r--r-- 1 root root 38029824 07-24 22:22 db_full_01ofj0gt_1_1.bak
-rw-r--r-- 1 root root 545660928 07-24 22:22 db_full_02ofj0h1_1_1.bak
-rw-r--r-- 1 root root 7168 07-24 22:22 db_full_03ofj0hs_1_1.bak
-rw-r--r-- 1 root root 98304 07-24 22:23 spfile20130728.bak
四、恢复数据库
1. nomount启动数据库
说明:由于10g实例名与11g实例名与数据库目录一致,不需要手动创建参数文件与控制文件。
# su - oracle
$ echo 'db_name=orcl' > $ORACLE_HOME/dbs/initorcl.ora
$ rman target /
恢复管理器: Release 11.2.0.3.0 - Production on 星期日 7月 28 18:52:43 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库 (未启动)
RMAN> startup nomount;