Oracle 10.2.0.5 64位RMAN迁移到11.2.0.3x64

本文是采用迁移的方式来实现数据库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数据库服务器上。

 

三、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;

Oracle 实例已启动

系统全局区域总计     238034944 字节

Fixed Size                     2227136 字节
Variable Size                180356160 字节
Database Buffers              50331648 字节
Redo Buffers                   5120000 字节


2. 恢复参数文件

# 恢复spfile文件

RMAN> restore spfile from '/u01/rman_bak/data/spfile20130728.bak'; 

启动 restore 于 28-7月 -13
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=19 设备类型=DISK

通道 ORA_DISK_1: 正在从 AUTOBACKUP /u01/rman_bak/data/spfile20130728.bak 还原 spfile
通道 ORA_DISK_1: 从 AUTOBACKUP 还原 SPFILE 已完成
完成 restore 于 28-7月 -13


3. 恢复控制文件

说明: 通过RMAN自动备份的参数与控制文件进行恢复,这个是标准恢复方式;
另一方式是没有自动备份的情况下,通过备份集中的参数文件与控制文件进行恢复。
特点就是指定备份集。

RMAN> startup nomount force;

系统全局区域总计     597098496 字节

Fixed Size                     2230672 字节
Variable Size                163579504 字节
Database Buffers             427819008 字节
Redo Buffers                   3469312 字节


RMAN> restore controlfile from '/u01/rman_bak/data/control20130728.bak';

启动 restore 于 28-7月 -13
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=19 设备类型=DISK

通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时: 00:00:03
输出文件名=/u01/app/oracle/oradata/orcl/control01.ctl
输出文件名=/u01/app/oracle/oradata/orcl/control02.ctl
输出文件名=/u01/app/oracle/oradata/orcl/control03.ctl
完成 restore 于 28-7月 -13

RMAN> 


4. 恢复数据库

RMAN> set dbid=1349744318

正在执行命令: SET DBID

RMAN> alter database mount;

数据库已装载
释放的通道: ORA_DISK_1

RMAN> restore database;

启动 restore 于 28-7月 -13
启动 implicit crosscheck backup 于 28-7月 -13
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=19 设备类型=DISK
已交叉检验的 10 对象
完成 implicit crosscheck backup 于 28-7月 -13

启动 implicit crosscheck copy 于 28-7月 -13
使用通道 ORA_DISK_1
完成 implicit crosscheck copy 于 28-7月 -13

搜索恢复区中的所有文件
正在编制文件目录...
没有为文件编制目录

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00001 还原到 /u01/app/oracle/oradata/orcl/system01.dbf
通道 ORA_DISK_1: 将数据文件 00002 还原到 /u01/app/oracle/oradata/orcl/undotbs01.dbf
通道 ORA_DISK_1: 将数据文件 00003 还原到 /u01/app/oracle/oradata/orcl/sysaux01.dbf
通道 ORA_DISK_1: 将数据文件 00004 还原到 /u01/app/oracle/oradata/orcl/users01.dbf
通道 ORA_DISK_1: 正在读取备份片段 /u01/rman_bak/data/db_full_08ofsfkc_1_1.bkp
通道 ORA_DISK_1: 段句柄 = /u01/rman_bak/data/db_full_08ofsfkc_1_1.bkp 标记 = 2013-07-28-FULL
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:42
完成 restore 于 28-7月 -13

RMAN> 

RMAN> recover database;

启动 recover 于 28-7月 -13
使用通道 ORA_DISK_1

正在开始介质的恢复

通道 ORA_DISK_1: 正在开始将归档日志还原到默认目标
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=6
通道 ORA_DISK_1: 正在读取备份片段 /u01/rman_bak/data/db_full_0aofsfls_1_1.bkp
通道 ORA_DISK_1: 段句柄 = /u01/rman_bak/data/db_full_0aofsfls_1_1.bkp 标记 = 2013-07-28-FULL
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
归档日志文件名=/u01/archivelog1_6_821963584.dbf 线程=1 序列=6
无法找到归档日志
归档日志线程=1 序列=7
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 07/28/2013 19:05:30 上) 失败
RMAN-06054: 介质恢复正在请求未知的线程 1 序列 7 的归档日志以及起始 SCN 419068

说明:
也可以再次运行以下脚本进行恢复。


5. 升级模式升级数据库

1)升级模式resetlogs启动数据库

SQL> alter database open resetlogs upgrade;
数据库已更改。


2)重建temp临时表空间数据文件

SQL> alter tablespace temp add tempfile '/u01/app/oracle/oradata/orcl/temp02.dbf' size 100m reuse autoextend on next 10m;
表空间已更改
SQL> 


6. upgrade模式下运行脚本:catupgrd.sql

SQL> @?/rdbms/admin/catupgrd.sql

... 大约执行了1个小时。

SQL> Rem Set errorlogging off
SQL> SET ERRORLOGGING OFF;
SQL> 
SQL> REM END OF CATUPGRD.SQL
SQL> 
SQL> REM bug 12337546 - Exit current sqlplus session at end of catupgrd.sql.
SQL> REM                This forces user to start a new sqlplus session in order
SQL> REM                to connect to the upgraded db.
SQL> exit

从 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开


7. 执行utlu112s.sql脚本

这个脚本显示升级过程的一个摘要。不需要在upgrade 模式下。

SQL> @?/rdbms/admin/utlu112s.sql

Oracle Database 11.2 Post-Upgrade Status Tool           07-28-2013 20:29:35
Component                               Current      Version     Elapsed Time
Name                                     Status      Number      HH:MM:SS
Oracle Server                             VALID      11.2.0.3.0  00:12:26
JServer JAVA Virtual Machine              VALID      11.2.0.3.0  00:09:22
Oracle Workspace Manager                  VALID      11.2.0.3.0  00:00:33
OLAP Analytic Workspace                   VALID      11.2.0.3.0  00:00:36
OLAP Catalog                              VALID      11.2.0.3.0  00:00:49
Oracle OLAP API                           VALID      11.2.0.3.0  00:00:28
Oracle Enterprise Manager                 VALID      11.2.0.3.0  00:09:24
Oracle XDK                                VALID      11.2.0.3.0  00:02:02
Oracle Text                               VALID      11.2.0.3.0  00:00:48
Oracle XML Database                       VALID      11.2.0.3.0  00:04:28
Oracle Database Java Packages             VALID      11.2.0.3.0  00:00:23
Oracle Multimedia                         VALID      11.2.0.3.0  00:03:34
Spatial                                   VALID      11.2.0.3.0  00:04:54
Oracle Expression Filter                  VALID      11.2.0.3.0  00:00:11
Oracle Rules Manager                      VALID      11.2.0.3.0  00:00:09
Gathering Statistics        
00:02:33  Total Upgrade Time: 00:52:49

PL/SQL 过程已成功完成。

SQL> 


8. 编译无效对象

# 查看无效对象数量

SQL> select count(*) from dba_invalid_objects;
  COUNT(*)
----------
      5917


# 编译无效对象
SQL> @?/rdbms/admin/utlrp.sql

执行完成。

# 查看无效对象
SQL> select count(*) from dba_invalid_objects;

未选定行

SQL> SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);

  COUNT(*)
----------
       0


9. 检查数据库状态

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE    11.2.0.3.0      Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production


SQL> select comp_name,version, status from dba_registry;

COMP_NAME                                VERSION                        STATUS
---------------------------------------- ------------------------------ ----------------------
Oracle Enterprise Manager                11.2.0.3.0                     VALID
OLAP Catalog                             11.2.0.3.0                     VALID
Spatial                                  11.2.0.3.0                     VALID
Oracle Multimedia                        11.2.0.3.0                     VALID
Oracle XML Database                      11.2.0.3.0                     VALID
Oracle Text                              11.2.0.3.0                     VALID
Oracle Data Mining                       11.2.0.3.0                     VALID
Oracle Expression Filter                 11.2.0.3.0                     VALID
Oracle Rules Manager                     11.2.0.3.0                     VALID
Oracle Workspace Manager                 11.2.0.3.0                     VALID
Oracle Database Catalog Views            11.2.0.3.0                     VALID
Oracle Database Packages and Types       11.2.0.3.0                     VALID
JServer JAVA Virtual Machine             11.2.0.3.0                     VALID
Oracle XDK                               11.2.0.3.0                     VALID
Oracle Database Java Packages            11.2.0.3.0                     VALID
OLAP Analytic Workspace                  11.2.0.3.0                     VALID
Oracle OLAP API                          11.2.0.3.0                     VALID

17 rows selected.

 

你可能感兴趣的:(oracle)