oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3

少年乘勇气,百战过乌孙。这篇文章主要讲述oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3相关的知识,希望能为你提供帮助。
引言在上一篇文章中,我们讲解的是:Oracle10.2.0.1升级10.2.0.5.19。本篇文章,我带来的是Oracle11g这个版本的升级实战。
为什么要升级1、新特性
oracle很少升级,除非你要用什么新的功能。因为升级要停库,好多和库相关的组件可能全要升级。也会影响公司的业务,所以升级前一定要开会研究很长时间。
2、提升安全
联通一些大公司定期委托第三方公司做《系统安全防护评测》,扫描出一些漏洞时,会要求升级并打补丁(我怎么知道?因为我在联通当过DBA啊!!)
环境描述1、操作系统
rhel-server-6.4-x86_64
2、现在已有Oracle版本
Oracle 11.2.0.1.0
3、升级之后Oracle版本
Oracle  11.2.0.4.3
升级大体步骤(1)、备份数据库
(2)、运行patchset,升级oracle 软件
(3)、准备新的ORACLE_HOME
(4)、运行dbua 或者脚本升级实例
(5)、检查升级后的版本信息和无效对象
备份数据库升级数据库是一个十分危险的事情,在生产库上,升级之前最好做一个全库的数据做备份,以便在升级失败时可以还原数据库。停掉所有与这个数据库相关的业务系统,如中间件。确定没有业务在运行。在数据库正常关闭后,还需要备份Oracle根目录,目的还是为了升级失败时,能够还原出数据库软件到升级前的版本。
1、备份数据库软件
[oracle@DB88 ~]$ tar -zcvPf `date +%F`_oracle.tar.gz   $ORACLE_BASE

2、热备份数据
在上一篇文章中,Oracle10.2.0.1升级10.2.0.5.19中,我们使用的是全库冷备份,此处我演示一下热备份。升级过后验证一下,我们在升级之前做的数据,有没有丢失?如果有丢失,使用热备份进行恢复即可。
2.1、创建表空间、用户、授权[oracle@DB88 ~]$ sqlplus / as sysdba
SQL> create tablespace dafeige datafile /home/oracle/app/oracle/oradata/ecom/dafeige.dbf size 5M AUTOEXTEND OFF;
SQL> create user dafeige identified by dafeige default tablespace dafeige;
SQL> alter user dafeige account unlock;
SQL> grant connect,resource to dafeige;
SQL> grant select on scott.emp to dafeige;

2.2、登录用户初始化数据SQL> conn dafeige/dafeige
SQL> create table bigdata as select* from scott.emp;
SQL> insert into bigdata select * from bigdata;
SQL> commit;

2.3、创建数据目录并授权[oracle@DB88 ~]$ sqlplus / as sysdba
SQL> !mkdir -p /home/oracle/expdp
SQL> create directory expdp as /home/oracle/expdp;
SQL> grant read,write on directory expdp to dafeige;

2.4、使用expdp导出用户所有数据[oracle@DB88 ~]$ expdp dafeige/dafeige directory=expdp dumpfile=dafeige_all_`date +%F`.dmp SCHEMAS=dafeige logfile=dafeige_all_`date +%F`.log

2.5、使用impdp恢复数据全部升级完事后,如果验证数据丢失了,可以操作此步,来恢复数据
[oracle@DB88 ~]$ impdp dafeige/dafeige directory=expdp dumpfile=dafeige_all_2022-06-01.dmp logfile=dafeige_all_.log

升级前数据库信息1、查看版本信息
[oracle@DB88 ~]$ sqlplus / as sysdba
SQL> select * from v$version where rownum< 2;

2、查看组件信息
[oracle@DB88 ~]$ 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服务里程 1、关闭OEM
[oracle@DB88 ~]$ emctl stop dbconsole

2、关闭监听
[oracle@DB88 ~]$ lsnrctl stop

3、关闭实例
[oracle@DB88 ~]$ sqlplus / as sysdba
SQL> shutdown immediate;

4、退出sqlplus

5、查看进程确认

oracle11.2.0.1.0升级11.2.0.4.0 1、上传升级包

2、解压升级包
[oracle@DB88 ~]$ cd /tmp
[oracle@DB88 tmp]$ unzip p13390677_112040_Linux-x86-64_1of7.zip -d /tmp & & unzip p13390677_112040_Linux-x86-64_2of7.zip -d /tmp

3、oracle用户图形化安装

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


注意这里:我们选择第三个选项,skip software update,因为我们的patchset已经下载过了,如果选择第二个选项,会遇到如下错误, INS-20704 Thelocation provided is not in the expected directory structure

注意这里:11gR2的Patchset 可以直接用来安装。在这个界面就可以选择操作类型,这个功能比较方便,从而也导致patchset 越来越大,我们这里选择upgrade an existing database。

选择语言

选择  企业版

注意这里:安装位置,我之前的安装目录是11.2.0,我新目录是11.2.0.4 ,即将oracle 安装到其他位置,这样可以减少宕机时间,也是oracle 推荐的方法。(但是新目录至少空闲4G的空间)

操作用户组

此处检查的依赖条件,没有影响,直接就忽略了


汇总信息


执行到76%的时候弹出如下窗口

换成root用户来执行脚本

换回oracle用户图形界面操作

接下来就是配置监听的过程

给监听起个名字

TCP协议

监听端口默认1521


不配置另一个监听




随后会自动调用DBUA工具,来升级数据库的实例

选择要升级的数据库实例,如果这步没有出现内容,/etc/oratab没有内容



升级后编辑失效的对象

升级数据库但不移动数据文件

不指定闪回区,后期可以单独配置

不配置OEM,后期可以单独配置

升级汇总信息

开始升级


升级结果



修改环境变量 1、编辑.bash_profile
[oracle@DB88 ~]$ vi /home/oracle/.bash_profile
修改ORACLE_HOME为新路径

2、重新加载环境变量
[oracle@DB88 ~]$ source /home/oracle/.bash_profile
3、查看环境变量
[oracle@DB88 ~]$ echo $ORACLE_HOME

查看/etc/oratab   这个文件是在创建数据库实例时建立的,它记录主机中有多少个数据库。如果需要自动启动数据库,则将AUTO设为Y,在调用dbstart命令才生效。
[oracle@DB88 ~]$ cat /etc/oratab
可以看到,现在此文件中,保存的是新版本数据库的路径。
升级后验证 1、查看版本信息
[oracle@DB88 ~]$ sqlplus / as sysdba
SQL> select * from v$version where rownum< 2;

2、查看数据库补丁
[oracle@DB88 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory

3、确认数据库升级信息
[oracle@DB88 ~]$ 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;

4、确认数据库各组件信息
[oracle@DB88 ~]$ 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;

5、修改兼容性参数
SQL> show parameter compatible
SQL> alter system set compatible=11.2.0.4.0 scope=spfile;
SQL> shutdown immediate;
SQL> startup;
SQL> show parameter compatible

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

2、关闭监听
[oracle@DB88 ~]$ lsnrctl stop

3、关闭实例
[oracle@DB88 ~]$ sqlplus / as sysdba
SQL> shutdown immediate;

4、退出sqlplus

5、查看进程确认

oracle11.2.0.4.0升级11.2.0.4.3 1、解压升级包
[oracle@DB88 ~]$ cd /tmp/
[oracle@DB88 tmp]$ unzip p18522509_112040_Linux-x86-64.zip

2、使用OPatch工具升级
[oracle@DB88 ]$ cd /tmp/18522509
[oracle@DB88 18522509]$ $ORACLE_HOME/OPatch/opatch apply

从报错指示中可以看出,当前OPatch工具的版本是11.2.0.3.4。现有的这个工具版本过低,要对它进行升级。
3、升级OPatch工具
备份现有的OPatch目录
[oracle@DB88 ~]$ 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工具升级
[oracle@DB88 ]$ cd /tmp/18522509
[oracle@DB88 18522509]$ $ORACLE_HOME/OPatch/opatch apply
Do you want to proceed? [y|n]   输入y

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

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

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

5、升级数据库字典
[oracle@DB88 ~]$ cd $ORACLE_HOME/rdbms/admin
[oracle@DB88 admin]$ sqlplus / as sysdba
SQL> startup
SQL> @catbundle.sql psu apply

升级后验证 1、查看数据库补丁
[oracle@DB88 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory


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

2、确认数据库升级信息
[oracle@DB88 ~]$ 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;

3、确认数据库各组件信息
[oracle@DB88 ~]$ 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;

4、验证数据是否丢失
[oracle@DB88 ~]$ sqlplus dafeige/dafeige
SQL> select count(*) from bigdata;

升级之前,我们创建的bigdata表和数据,一切正常。
结束语到此本篇文章就结束了,送给那些:
      1、准备学习Oracle的朋友们
      2、已经学习了Oracle,但是没有在Linux环境下安装成功oracle的朋友们
      3、对Oracle感兴趣、对Linux感兴趣的朋友们
      4、Oracle刚入门的朋友们
【oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3】     有一段时间没有写关于Oracle的博文了,感谢一直关注我的新老朋友,有你们的支持我会一起写下去!

    推荐阅读