引言

不知不觉中,人气竟然50W+了。真是荣幸之至,何德何能有这么多兄弟来看我的文章。我今天整个狠活,再带来一篇非常非常非常干货的文章。

在前面的文章中,我们写过:Oracle10.2.0.1升级10.2.0.5.19Oracle11.2.0.1.0升级11.2.0.4.3。网上Oracle升级的文章非常多,而本篇文章带来的是Oracle升级终结篇:Oracle10.2.0.1升级11.2.0.4.3

一、oracle升级知识点

1、版本说明

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g

a、主的数据库版本号

b、数据库的维护版本号

c、应用服务器版本号

d、和特定组件相关的不同版本号

e、特定平台的版本号

2、名词解释

CPU(Critical Patch Update)升级关键补丁

和安全相关的漏洞补丁的集合,补丁更新补丁通常是累积的,每一个CPU包中包含着从上一个CPU包之后到现在所有修补的补丁,当你安装CPU之前,应该查看一下之前的CPU补丁情况。

PSU(Patch Set Update)更新补丁集

它是一个累积的补丁包,包含了自上一次PSU之后到现在所有的补丁包。PSU10.2.0.4.4 包含了PSU10.2.0.4.3的全部及10.2.0.4.3到10.2.0.4.4之间新的。

Tools

升级的过程全把一个已经存在的oracle数据库系统(包括相关的应用程序),升级到11G,这个升级的过程在所有操作系统上都类似,在某些操作系统可能有一些特定的操作细节,每个升级包中的readme中都会有说明,所以当我们拿一个新的CPU或PSU去进行升级的话,首先你要看readme的内容,这个补丁多了,我们可能按照同样一个步骤去做吗?不一定,但大体上类似。

(1)、Database Upgrade Assistant (DBUA)

提供图形界面操作方式,辅助我们升级。在安装oracle时图形界面中调用DBUA,也可以随时启动DBUA图形界面。对于主版本升级或patch release upgrade升级时,我们都建议用DBUA来操作。

(2)、Manual upgrade using SQL scripts and utilities(手动执行脚本升级,怎么打补丁,怎么Upgrade)

(3)、Export and Import utilities

(4)、CREATE TABLE AS SQL statement

3、更新和升级路线图

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_02

4、My Oracle Support下载升级包

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_03

从11g开始,它的PatchSet包含了一个完整的安装版和补丁,不像9i、10g的PatchSet中只包含补丁。

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_04

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_05

5、我们的升级路线

从升级路线图中,我们可以看出来,Oracle10.2.0.1无法直接升级11.2.0.4.3。所以,我们的升级路线如下:

10.2.0.1.0->10.2.0.5.0->10.2.0.5.19->11.2.0.4.0->11.2.0.4.3

二、安装Oracle10.2.0.1

1、软件环境

操作系统:redhat5.5(32位)

oracle版本:10.2.0.10(32位)

2、oracle安装

2.1、linux准备工作

1、root用户编辑本地yum源配置文件

vi /etc/yum.repos.d/base.repo  #追加如下内容

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_06

2、将本地光般连接到虚拟机中

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_07

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_08

3、root用户挂载光盘到/mnt目录下

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_09

4、root用户使用yum解决安装oracle需要的依赖包(安装源码包,必须要用到gcc编译)

yum install -y binutils compat-db control-center gcc* glibc libXp libstdc++ libstdc++-devel make openmotif sysstat control-center

5、root用户修改/etc/hosts

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_10

6、root用户修改主机名称

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_11

注解:

   (1)、hostname  DB(临时修改主机名)

   (2)、vi /etc/sysconfig/network(永久修改主机名)

7、root用户设置内核参数(vi /etc/sysctl.conf)  

   kernel.shmall = 2097152  

   /*共享内存,单位是页面数,每个页面数是4K,就是块大小,操作系统ext3的,一个块是4K,咱们设置共享内存8G ,官方推荐值,生产中可以自行改大  8GB/4KB=8388608KB /4KB=2097152(页) */

   kernel.shmmax = 2147483648  

   /*单个共享内存段的最大尺寸,单位字节,单次提取最多2G,不是数据仓库完全够用  2G=2*1024*1024*1024(byte)*/

   #插入下面信息

   kernel.sem = 250 32000 100 128   #信号量

   fs.file-max = 65536   #文件句柄的最大数量

   net.ipv4.ip_local_port_range = 1024 65000 #端口范围

   net.core.rmem_default = 262144  #默认读内存大小

   net.core.rmem_max = 262144          #读内存最大值

   net.core.wmem_default = 262144  #默认写存大小

   net.core.wmem_max = 262144           #写内存最大值

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_12

8、root用户修改操作系统版本号(vi /etc/redhat-release)

   Red Hat Enterprise Linux Server release 3 (Tikanga)

   /*修改版本号,oracle10g只支持到redhat版本4,如果不修改,检测安装环境会报错*/

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_13

9、root用户操作使内核生效

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_14

10、root用户操作限制oracle用户的策略(vi /etc/security/limits.conf  #追加) 

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_15

参数说明:

 core - 限制内核文件的大小

 date - 最大数据大小

 fsize - 最大文件大小

 memlock - 最大锁定内存地址空间

 nofile - 打开文件的最大数目

 rss - 最大持久设置大小

 stack - 最大栈大小

 cpu - 以分钟为单位的最多 CPU 时间

 noproc - 进程的最大数目

 as - 地址空间限制

 maxlogins - 此用户允许登录的最大数目

实际是 Linux PAM,插入式认证模块,用来限制用户的策略

11、root用户操作将上面的策略每次登录生效(vi /etc/pam.d/login  #追加)

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_16

/* limits.conf是pam_limits.so的配置文件,将上面的策略每次登录生效 */

12、root用户操作增加组、oracle用户及设置密码

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_17

13、oracle用户设置环境变量

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_18

14、让环境变量生效

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_19

15、创建目录并授权

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_20

2.2、上传解压oracle包

1、上传oracle安装包到/tmp下(我使用的是FileZilla工具)

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_21

2、oracle用户解压缩oracle安装包

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_22

2.3、图形化安装

使用Oracle用户安装oracle库(图形界面)

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_23

安装oracle软件详细步骤

选择 高级安装

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_24

自动识别安装目录,因为在前面配置了环境变量

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_25

选择 安装企业版

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_26

默认识别Oracle_home目录,因为在前面配置了环境变量

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_27

检查依赖条件

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_28

选择 仅安装软件

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_29

安装信息汇总

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_30

开始安装

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_31

操作授权脚本

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_32

根据提示,切换到root用户执行脚本,操作截图如下:

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_33

安装结束

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_34

创建数据库详细步骤     

在命令行下直接输入dbca

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_35

欢迎界面

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_36

选择创建数据库(如果是第一次创建数据库,只能创建数据库和管理模板可以使用)        

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_37

类型选择 一般用途

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_38

填写全局数据库名及SID(注意大小写)

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_39​  

不用配置OEM管理工具(后面可以手工单独配置)

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_40

设置数据库用户帐号的口令(所有用户设置同一个密码)

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_41​   

设置数据库的存储(默认文件系统)    

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_42​   

设置数据库文件的存放位置(默认选项)

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_43

 设置数据库的恢复选项(后面可以手工单独配置)   

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_44

     快速恢复:区用于恢复数据,以免系统发生故障时丢失数据; 启用归档用于将数据库设置为ARCHIVELOG模式,使得当数据库出现失败时可以完全恢复数据库数据

指定是否安装示例方案,并运行自定义脚本(不用安装) 

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_45​  

 初始化参数配置(初始化参数、数据库字符集和连接模式)    

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_46

数据库存储(用指定控制文件、数据文件、重做日志文件、名称和尺寸)   

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_47

创建选项(指定建立数据库,还是保存为数据库模板)   

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_48

开始数据库的建立

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_49

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_50

数据库建立完成后,就会出现如下对话框

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_51

系统会锁定除SYS、SYSTEM、DBSNMP、SYSMAN之外的所有其他用户,咱们解锁SCOTT用户     

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_52

单击“确定”按钮,最后单击“退出”按钮完成数据库建立的全部过程

3、验证oracle安装结果

登录到oracle数据库环境下,查看当前库状态

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_53

从上图的查询结果,我们可以看出来,当前数据库是可读可写状态,oracle已经成功的安装了。

三、Oracle10.2.0.1升级10.2.0.5.19

环境描述

1、操作系统

rhel-server-5.5-x86_64

2、现在已有Oracle版本

Oracle 10.2.0.1.0

3、升级之后Oracle版本

Oracle 10.2.0.5.19

准备工作  

1、上传并解压补丁包

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_54

[oracle@db8 tmp]$ unzip p8202632_10205_Linux-x86-64.zip

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_55

2、查看安装补丁情况

[oracle@db8 ]$ cd $ORACLE_HOME/OPatch/  

[oracle@db8 OPatch]$ ./opatch lsinventory

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_56

3、检查数据库的时区版本  

SQL>select version from v$timezone_file;

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_57

4、关闭所有Oracle服务进程  

关闭OEM

[oracle@db8 ~]$ emctl stop dbconsole

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_58

关闭isqlplus应用服务器

[oracle@db8 ~]$ isqlplusctl stop

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_59

关闭监听

[oracle@db8 ~]$ lsnrctl stop

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_60

关闭实例

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_61

5、进行数据备份

此处我使用的是冷备份,这样保险一些。热备份需要数据库正常运行,难免会有占用。

Oracle相关的全部配置都位于$ORACLE_BASE目录

[oracle@db8 ~]$ tar -zcvPf `date '+%F'`_oracle.tar.gz  $ORACLE_BASE

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_62

查看生成的备份文件

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_63

创建备份目录

[oracle@db8 ~]$ mkdir ora_backup

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_64

备份:日志文件、数据文件、控制文件

[oracle@db8 ~]$ cp $ORACLE_BASE/oradata/$ORACLE_SID/*  ora_backup/

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_65

备份:参数文件

[oracle@db8 ~]$ cp $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ora_backup

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_66

6、确认显示终端  

换成oracle用户,登录图形化界面操作系统

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_67

升级Oracle

1、升级Oracle软件  

解压安装介质

[oracle@db8 tmp]$ unzip p8202632_10205_Linux-x86-64.zip

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_68

解压后文件详情

[oracle@db8 tmp]$ cd Disk1/

[oracle@db8 Disk1]$ ll

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_69

解压后生成Disk1目录,里面patch_note.htm 有详细的升级补丁的介绍,建议升级补丁前,应该好好看看patch_note.htm,里面介绍了Oracle Database、Oracle Real Application Clusters、Oracle Database Client、Oracle Database Vault等各类情况升级。

oracle用户图形化安装

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_70

欢迎界面

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_71

从环境变量中自动识别oracle_home目录

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_72

不接收Oracle的安全更新(大部分兄弟都没有oracle帐号)

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_73

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_74

升级操作之前检查依赖条件

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_75

汇总信息

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_76

开始安装升级

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_77

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_78

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_79

换成root用户操作

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_80

换回oracle用户图形界面操作

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_81

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_82

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_83

手工升级oracle数据库

1、升级数据库字典

[oracle@db8 ~]$ sqlplus / as sysdba

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_84

SQL> STARTUP UPGRADE

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_85

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

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_86

中间内容较多,此处省略.................

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_87

由于catupgrd.sql重建过程中,可能造成一些对象失效,需要运行utlrp.sql,重新编译PL/SQL packages。

2、编译无译对象

SQL> SHUTDOWN IMMEDIATE 

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_88

SQL> STARTUP

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_89

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

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_90

3、升级后检查

SQL>set line 200  

SQL>col ACTION_TIME for a30    

SQL>col ACTION for a20    

SQL>col NAMESPACE for a10    

SQL>col VERSION for a10    

SQL>col BUNDLE_SERIES for a5    

SQL>col COMMENTS for a25    

SQL>select * from dba_registry_history; 

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_91

4、查看组件有效性

SQL> COL COMP_NAME FOR A50

SQL> COL VERSION FOR A12

SQL> COL STATUS FOR A12

SQL> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_92

使用OPatch安装小补丁

1、关闭所有Oracle服务进程

关闭OEM

[oracle@db8 ~]$ emctl stop dbconsole

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_58

关闭isqlplus应用服务器

[oracle@db8 ~]$ isqlplusctl stop

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_59

关闭监听

[oracle@db8 ~]$ lsnrctl stop

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_60

关闭实例

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_61

2、使用OPatch安装小补丁

解压安装介质

[oracle@db8 tmp]$ unzip  p20299014_10205_Linux-x86-64.zip

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_97解压后文件详情

[oracle@db8 tmp]$ cd 20299014/

[oracle@db8 20299014]$ ll

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_98

解压后生成20299014目录,里面README.html有详细的升级补丁的介绍,建议升级补丁前,应该好好看看README.html里面介绍了Oracle Database、Oracle Real Application Clusters、Oracle Database Client、Oracle Database Vault等各类情况升级。

运行opath apply应用补丁

[oracle@db8 ~]$ cd /tmp/20299014/

[oracle@db8 20299014]$ $ORACLE_HOME/OPatch/opatch apply

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_99

从报错指示中可以看出,OPatch现有的这个工具版本过低,要对它进行升级到10.2.0.5.0

3、升级OPatch工具

备份现有的OPatch目录

[oracle@db8 ~]$ mv $ORACLE_HOME/OPatch/ $ORACLE_HOME/OPatch.bak

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_100

解压高版本OPatch工具到ORACLE_HOME

[oracle@db8 ~]$ unzip /tmp/p6880880_102000_Linux-x86-64.zip -d $ORACLE_HOME/

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_101

检查OPatch工具版本

[oracle@db8 ~]$ $ORACLE_HOME/OPatch/opatch version

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_102

4、使用OPatch安装小补丁

运行opath apply应用补丁

[oracle@db8 ~]$ cd /tmp/20299014/

[oracle@db8 20299014]$ $ORACLE_HOME/OPatch/opatch apply

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_103

提示输入邮件,直接回车,跳过即可

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_104

Do you wish to remain uninformed of security issues ([Y]es, [N]o) [N]: 输入Y

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_105

Is the local system ready for patching? [y|n] 输入y

随后会刷屏如下,内容过多,只截取一部分

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_106

最后提示成功

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_107

升级后的操作

1、查看升级状态

[oracle@db8 20299014]$ $ORACLE_HOME/OPatch/opatch lsinv

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_108

[oracle@db8 ]$ $ORACLE_HOME/OPatch/opatch lsinv -bugs_fixed|grep SPU

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_109

2、升级数据库字典

[oracle@db8 ]$ cd $ORACLE_HOME/rdbms/admin

[oracle@db8 admin]$ sqlplus / as sysdba

SQL> STARTUP 

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_110

SQL> @catbundle.sql psu apply

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_111

SQL> @utlrp.sql

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_112

3、升级后检查

SQL> set line 200  

SQL> col ACTION_TIME for a30    

SQL> col ACTION for a20    

SQL> col NAMESPACE for a10    

SQL> col VERSION for a20    

SQL> col BUNDLE_SERIES for a5    

SQL> col COMMENTS for a25    

SQL> select * from dba_registry_history;

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_113

4、修改兼容性参数

SQL> show parameter compatible;

SQL> alter system set compatible='10.2.0.5.0' scope=spfile;

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_114

5、重新启动数据库

SQL> shutdown immediate;

SQL> STARTUP

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_115

6、检查数据库的时区版本

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_116

7、查看数据库当前状态

SQL> select open_mode from v$database;

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_117

至此,Oracle10.2.0.1升级10.2.0.5.19就全操作完成了。

8、关闭oracle实例

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_118

关闭实例,为后续的升级工作提前做好准备。

四、Oracle10.2.0.5.19升级11.2.0.4.3

1、linux准备工作

配置内核参数

[root@db8 ~]# vi /etc/sysctl.conf

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_119

内核配置生效

[root@db8 ~]# /sbin/sysctl -p

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_120

修改环境变量

1台机器安装2个库,注意目录。注释掉原来10g的ORACLE_HOME,添加新11g的ORACLE_HOME。

[oracle@db8 ~]$ vi ~/.bash_profile

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_121

环境变量生效

[oracle@db8 ~]$ source ~/.bash_profile

[oracle@db8 ~]$ env | grep -i oracle_home

[oracle@db8 ~]$ echo $ORACLE_HOME

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_122

安装依赖包

[root@db8 ~]# yum -y install binutils-* compat-libstdc++-* compat-libcap1-* elfutils-libelf-* elfutils-libelf-devel-* gcc* gcc-c++-* glibc* glibc-common-* glibc-devel-* glibc-headers-* ksh-* libaio-* libaio-devel-* libgcc-* libstdc++-* libstdc++-devel* make-* sysstat-* unixODBC-* unixODBC-devel-* numactl-devel-* pdksh-* kernel-headers* 

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_123

创建oracle安装目录

[root@db8 ~]# mkdir -p /oracle/app

[root@db8 ~]# chmod -R 777 /oracle/app

[root@db8 ~]# chown -R oracle.oinstall /oracle/app

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_124

2、上传oracle介质

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_125

3、重新加载环境变量

[oracle@db8 ~]$ source ~/.bash_profile

[oracle@db8 ~]$ env | grep -i oracle_home

[oracle@db8 ~]$ echo $ORACLE_HOME

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_126

4、解压oracle介质

[oracle@db8 tmp]$ cd /tmp/

[oracle@db8 tmp]$ unzip  p13390677_112040_Linux-x86-64_1of7.zip

[oracle@db8 tmp]$ unzip  p13390677_112040_Linux-x86-64_2of7.zip

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_127

5、图形化安装

5.1、使用Oracle用户

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_128

5.2、安装oracle软件

a、配置安全更新

是否通过oracle帐号,接收来自于oracle的安全更新

如果你有oracle帐号,在上面填写你的邮箱地址,然后勾选选项。如果没有oracle帐号,上面的邮箱不用填写,此处也不用勾选。

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_129

你没有设置一个邮箱地址。你不想了解配置中的关键安全问题?

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_130

b、下载更新软件

本次安装是为了更新软件,软件更新包括对安装程序系统要求检查补丁集更新(PSUS)的建议更新,和其他推荐的修补程序。

(1)通过oracle帐号下载

(2)使用提前下载好的软件更新

(3)跳过更新  

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_131

我们是安装oracle,所以选择第3项,跳过更新

c、安装选项

选择下面这些安装的选项之这

注意:如果你想更新一个已经存在的oracle 11gR2实例,请选择"Upgrade an existing database"选项

(1)创建和配置一个数据库

(2)只安装数据库软件

(3)升级一个已经存在的数据库

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_132

此处选择:只安装数据库软件。后面我们再单独定制的,安装数据库实例。

d、Grid安装选项

选择一种你想安装的数据库类型

(1)安装单实例数据库

(2)安装oracle RAC集群数据库

(3)安装oracle RAC集群的一个节点

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_133

此处选择:安装单实例数据库。后面我们再单独讲RAC集群的安装

e、选择语言

选择 英语。虽然有简体中文,但是不建议选择,翻译的非常不舒服

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_134

f、数据库版本

你想安装哪个版本的数据库?

此处有2类选择,一种是企业版,一种是标准版(功能有限制)。在生产中我们选择企业版,它的功能是最全的。

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_135

g、安装位置

在oracle用户设置环境变量时,在.bash_profile中配置了ORACLE_BASE和ORACLE_HOME的路径,此处在安装oracle时,它会自动识别。

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_136

h、Create Inventory

选择Inventory的位置,保持默认即可。这个位置是ORACLE_BASE下创建的oraInventory目录,用于注册ORACLE_HOME下安装的数据库组件及其版本,存放oracle软件安装的目录信息。oracle数据库软件的升级、增删组件,都要用到Inventory。oracle的界面会创建一个有oraInst.ora的文件,指定全局的Inventory。

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_137

i、操作系统组

选择oracle使用的操作系统用户组

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_138

j、依赖条件检查

此处依赖检查时,提示:物理内存小了,少一个rpm包。可以忽略,并不影响我们安装oracle。

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_139

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_140

k、汇总信息

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_141

l、安装产品

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_142

安装过程中,弹框提示:使用root用户执行如下脚本

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_143

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_144

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_145

m、完成

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_146

6、升级数据库

6.1、修改环境变量

注释掉11g的ORACLE_HOME,打开10g的ORACLE_HOME

[oracle@db8 ~]$ vi ~/.bash_profile

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_147

6.2、重新加载环境变量

[oracle@db8 ~]$ source ~/.bash_profile

[oracle@db8 ~]$ env | grep -i oracle_home

[oracle@db8 ~]$ echo $ORACLE_HOME

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_148

6.3、关闭10g的实例

如果10g的实例未关闭,关闭10g的实例 

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_149

6.4、修改环境变量

注释掉10g的ORACLE_HOME,打开11g的ORACLE_HOME

[oracle@db8 ~]$ vi ~/.bash_profile

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_150

6.5、重新加载环境变量

[oracle@db8 ~]$ source ~/.bash_profile

[oracle@db8 ~]$ env | grep -i oracle_home

[oracle@db8 ~]$ echo $ORACLE_HOME

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_151

6.6、DUBA(oracle用户图形操作)

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_152

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_153

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_154

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_155

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_156

1、已经在你的库中发现了一些无效的对象,你要注意一下这些对象。要求升级过后,你要判断一下有些对象是否无效。

2、升级前你可以先对OEM配置相关的内容进行备份

3、要求你执行PURGE_DBA_RECYCLEBIN,清空DBA对应的回收站

4、Oracle建议在升级数据库前,收集数据字典的统计信息

5、确保你的参数文件中有 EVENT 或 TRACE_EVENT参数的设置

单开一个窗口,切换为10g配置

[oracle@db8 ~]$ vi ~/.bash_profile

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_157

重新加载环境变量

[oracle@db8 ~]$ source ~/.bash_profile

[oracle@db8 ~]$ env | grep -i oracle_home

[oracle@db8 ~]$ echo $ORACLE_HOME

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_158

清空所有用户的回收站

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_159

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_160

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_161

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_162

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_163

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_164

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_165

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_166

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_167

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_168

7、验证升级结果

7.1、查看oratab文件

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_169

7.2、修改环境变量

注释掉10g的ORACLE_HOME,打开11g的ORACLE_HOME

[oracle@db8 ~]$ vi ~/.bash_profile

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_170

7.3、重新加载环境变量

[oracle@db8 ~]$ source ~/.bash_profile

[oracle@db8 ~]$ env | grep -i oracle_home

[oracle@db8 ~]$ echo $ORACLE_HOME

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_171

7.4、查看升级状态

[oracle@db8]$ $ORACLE_HOME/OPatch/opatch lsinv

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_172

7.5、确认数据库升级信息

断开oracle用户的会话,重新登录oracle用户。容易产生环境变量混乱,有可能报如下错误:

SP2-1503: Unable to initialize Oracle call interface

SP2-0152: ORACLE may not be functioning properly

[oracle@db8 ~]$ sqlplus / as sysdba

SQL> set line 200

SQL> col ACTION_TIME for a30

SQL> col ACTION for a20

SQL> col NAMESPACE for a10

SQL> col VERSION for a20

SQL> col BUNDLE_SERIES for a5

SQL> col COMMENTS for a25

SQL> select * from dba_registry_history;

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_173

7.6、修改兼容性参数

SQL> show parameter compatible;

SQL> alter system set compatible='11.2.0.4.0' scope=spfile;

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_174

重新启动数据库

SQL> shutdown immediate;

SQL> STARTUP

SQL> show parameter compatible;

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_175

7.7、查看数据库当前状态

SQL> select open_mode from v$database;

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_176

8、关闭所有进程

关闭OEM

[oracle@db8 ~]$ emctl stop dbconsole

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_58

关闭isqlplus应用服务器

[oracle@db8 ~]$ isqlplusctl stop

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_59

关闭监听

[oracle@db8 ~]$ lsnrctl stop

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_60

关闭实例

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_61

退出sqlplus 

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_181

查看进程确认

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_182

9、上传介质并解压  

上传介质

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_183

解压升级包  

[oracle@DB8~]$ cd /tmp/  

[oracle@DB8 tmp]$ unzip p18522509_112040_Linux-x86-64.zip

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_184

10、升级

10.1、使用OPatch升级  

[oracle@DB8]$ cd /tmp/18522509  

[oracle@DB 818522509]$ $ORACLE_HOME/OPatch/opatch apply

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_185

从报错提示中可以看出,当前OPatch工具的版本是11.2.0.3.4。现有的这个工具版本过低,下载最新版本的OPatch工具。

10.2、升级OPatch

备份现有的OPatch目录

[oracle@DB8~]$ mv $ORACLE_HOME/OPatch/ $ORACLE_HOME/OPatch.bak

解压高版本OPatch工具到ORACLE_HOME

[oracle@db8 ~]$ unzip /tmp/p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME/ 

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_186

检查OPatch工具版本

[oracle@db8 ~]$ $ORACLE_HOME/OPatch/opatch version

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_187

10.3、使用OPatch升级  

[oracle@DB8]$ cd /tmp/18522509  

[oracle@DB8 18522509]$ $ORACLE_HOME/OPatch/opatch apply

Do you want to proceed? [y|n]  输入y

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_188

提示输入邮件,直接回车,跳过即可

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_189

Do you wish to remain uninformed of security issues ([Y]es, [N]o) [N]: 输入Y

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_190

Is the local system ready for patching? [y|n] 输入y

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_10g_191

随后就是刷屏的过程,只截取最后成功部分

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_192

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_193

10.4、升级数据库字典  

[oracle@DB8~]$ cd $ORACLE_HOME/rdbms/admin  

[oracle@DB8 admin]$ sqlplus / as sysdba 

SQL> startup  

SQL> @catbundle.sql psu apply

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_194

11、升级后验证  

11.1、查看数据库补丁  

[oracle@DB8~]$ $ORACLE_HOME/OPatch/opatch lsinventory

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_11g_195

[oracle@DB8~]$ $ORACLE_HOME/OPatch/opatch lsinv -bugs_fixed|grep Bug

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_oracle_196

11.2、确认数据库升级信息  

[oracle@DB8~]$ sqlplus / as sysdba  

SQL> set pages 2000 lines 500  

SQL> col action format a17  

SQL> col namespace format a10  

SQL> col version format a10  

SQL> col comments format a30  

SQL> col action_time format a30  

SQL> col bundle_series format a15  

SQL> select * from DBA_REGISTRY_HISTORY;

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_数据库_197

11.3、确认数据库各组件信息  

[oracle@DB8~]$ sqlplus / as sysdba  

SQL> set pages 2000 lines 500  

SQL> col COMP_NAME format a50  

SQL> col version format a10  

SQL> col STATUS format a10  

SQL> col MODIFIED format a50  

SQL> SELECT COMP_NAME, VERSION, STATUS,MODIFIED FROM SYS.DBA_REGISTRY;

oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3_升级_198

结束语

到此本篇文章就结束了,送给那些:

      1、准备学习Oracle的朋友们

      2、已经学习了Oracle,但是没有在Linux环境下安装成功oracle的朋友们

      3、对Oracle感兴趣、对Linux感兴趣的朋友们

      4、Oracle刚入门的朋友们

   最近到了联想新财年winterplan的时候,一直在做计划赶项目。有一段时间没有写关于Oracle的博文了,感谢一直关注我的新老朋友,有你们的支持我会一起写下去!