oracle拨云见日第7篇之Oracle10.2.0.1升级10.2.0.5.19

知识的价值不在于占有,而在于使用。这篇文章主要讲述oracle拨云见日第7篇之Oracle10.2.0.1升级10.2.0.5.19相关的知识,希望能为你提供帮助。
引言前面的几篇文章中,我们讲解的都是一些Oracle基本操作内容。今天我们来讲解一下Oracle的高级部分:Oracle升级。
为什么要升级1、新特性
oracle很少升级,除非你要用什么新的功能。因为升级要停库,好多和库相关的组件可能全要升级。也会影响公司的业务,所以升级前一定要开会研究很长时间。
2、提升安全
联通一些大公司定期委托第三方公司做《系统安全防护评测》,扫描出一些漏洞时,会要求升级并打补丁(我怎么知道?因为我在联通当过DBA啊!!)
系统安全防护评测很多兄弟应该没看过《系统安全防护评测》结果报告,此报告中有好多内容!!由于保密原因,我就截取《系统安全防护评测》中的一个oracle漏洞,给兄弟们看一下

环境描述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@db8 tmp]$ unzip p8202632_10205_Linux-x86-64.zip

2、查看安装补丁情况
[oracle@db8 ]$ cd $ORACLE_HOME/OPatch/
[oracle@db8 OPatch]$ ./opatch lsinventory

3、检查数据库的时区版本
SQL> select version from v$timezone_file;

4、关闭所有Oracle服务里程
关闭OEM
[oracle@db8 ~]$ emctl stop dbconsole

关闭isqlplus应用服务器
[oracle@db8 ~]$ isqlplusctl stop

关闭监听
[oracle@db8 ~]$ lsnrctl stop

关闭实例

5、进行数据备份
此处我使用的是冷备份,这样保险一些。热备份需要数据库正常运行,难免会有占用。
Oracle相关的全部配置都位于$ORACLE_BASE目录
[oracle@db8 ~]$ tar -zcvPf `date +%F`_oracle.tar.gz   $ORACLE_BASE

查看生成的备份文件

创建备份目录
[oracle@db8 ~]$ mkdir ora_backup

备份:日志文件、数据文件、控制文件
[oracle@db8 ~]$ cp $ORACLE_BASE/oradata/$ORACLE_SID/*   ora_backup/

备份:参数文件
[oracle@db8 ~]$ cp $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ora_backup

6、确认显示终端  
换成oracle用户,登录图形化界面操作系统

升级Oracle 1、升级Oracle软件
解压安装介质
[oracle@db8 tmp]$ unzip p8202632_10205_Linux-x86-64.zip

解压后文件详情
[oracle@db8 tmp]$ cd Disk1/
[oracle@db8 Disk1]$ ll

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

欢迎界面

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

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


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

汇总信息

开始安装升级



换成root用户操作

换回oracle用户图形界面操作



手工升级oracle数据库 1、升级数据库字典
[oracle@db8 ~]$ sqlplus / as sysdba

SQL> STARTUP UPGRADE

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

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

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

SQL> STARTUP

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

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;  

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;

使用OPatch安装小补丁1、关闭所有Oracle服务里程
关闭OEM
[oracle@db8 ~]$ emctl stop dbconsole

关闭isqlplus应用服务器
[oracle@db8 ~]$ isqlplusctl stop

关闭监听
[oracle@db8 ~]$ lsnrctl stop

关闭实例

2、使用OPatch安装小补丁
解压安装介质
[oracle@db8 tmp]$ unzip   p20299014_10205_Linux-x86-64.zip
解压后文件详情
[oracle@db8 tmp]$ cd 20299014/
[oracle@db8 20299014]$ ll

解压后生成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

从报错指示中可以看出,OPatch现有的这个工具版本过低,要对它进行升级到10.2.0.5.0
3、升级OPatch工具
备份现有的OPatch目录
[oracle@db8 ~]$ mv $ORACLE_HOME/OPatch/ $ORACLE_HOME/OPatch.bak

解压高版本OPatch工具到ORACLE_HOME
[oracle@db8 ~]$ unzip /tmp/p6880880_102000_Linux-x86-64.zip -d $ORACLE_HOME/

检查OPatch工具版本
[oracle@db8 ~]$ $ORACLE_HOME/OPatch/opatch version

4、使用OPatch安装小补丁
运行opath apply应用补丁
[oracle@db8 ~]$ cd /tmp/20299014/
[oracle@db8 20299014]$ $ORACLE_HOME/OPatch/opatch apply

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

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

Is the local system ready for patching? [y|n] 输入y
随后会刷屏如下,内容过多,只截取一部分

最后提示成功

升级后的操作 1、查看升级状态
[oracle@db8 20299014]$ $ORACLE_HOME/OPatch/opatch lsinv

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

2、升级数据库字典
[oracle@db8 ]$ cd $ORACLE_HOME/rdbms/admin
[oracle@db8 admin]$ sqlplus / as sysdba
SQL> STARTUP 

SQL> @catbundle.sql psu apply

SQL> @utlrp.sql

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;

4、修改兼容性参数
SQL> show parameter compatible;
SQL> alter system set compatible=10.2.0.5.0 scope=spfile;

5、重新启动数据库
SQL> shutdown immediate;
SQL> STARTUP

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

7、查看数据库当前状态
SQL> select open_mode from v$database;

至此,我们本次文章的主要内容:Oracle10.2.0.1升级10.2.0.5.19就全操作完成了。
扩展、DBUA升级Oracle数据库升级oracle数据库方式较多,较常用的有2种方式:DBUA升级、手工升级。上面我演示了手工升级,下面这部分是DBUA升级。DBUA操作是 图型化界面的,它操作简单,但据统计其出错机率相对而言较高。
oracle用户图形化安装

欢迎界面

选择数据库
如果你要操作的数据库不在列表中,手工修改/etc/oratab添加sid


升级不要移动数据文件到新目录

升级完成后编译无效对象

备份数据
如果在操作之前没有备份数据库,可以在此选择备份(dbua执行的是冷备份,需要估计好磁盘剩余空间。

不用指定闪回区

升级汇总信息


剩下的,就是等着就行了。升级完毕之后,验证一下升级的结果,千万不可以懒惰!
结束语到此本篇文章就结束了,送给那些:
      1、准备学习Oracle的朋友们
      2、已经学习了Oracle,但是没有在Linux环境下安装成功oracle的朋友们
      3、对Oracle感兴趣、对Linux感兴趣的朋友们
      4、Oracle刚入门的朋友们
【oracle拨云见日第7篇之Oracle10.2.0.1升级10.2.0.5.19】     有一段时间没有写关于Oracle的博文了,感谢一直关注我的新老朋友,有你们的支持我会一起写下去!

    推荐阅读