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

Posted 飞哥大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

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

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;

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

2.2、登录用户初始化数据

SQL> conn dafeige/dafeige

SQL> create table bigdata as select* from scott.emp;

SQL> insert into bigdata select * from bigdata;

SQL> commit;

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

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;

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

2.4、使用expdp导出用户所有数据

[oracle@DB88 ~]$ expdp dafeige/dafeige directory=expdp dumpfile=dafeige_all_`date +%F`.dmp SCHEMAS=dafeige logfile=dafeige_all_`date +%F`.log

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

2.5、使用impdp恢复数据

全部升级完事后,如果验证数据丢失了,可以操作此步,来恢复数据

[oracle@DB88 ~]$ impdp dafeige/dafeige directory=expdp dumpfile=dafeige_all_2022-06-01.dmp logfile=dafeige_all_.log

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

升级前数据库信息

1、查看版本信息

[oracle@DB88 ~]$ sqlplus / as sysdba

SQL> select * from v$version where rownum<2;

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

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拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_database_08

关闭所有Oracle服务里程

1、关闭OEM

[oracle@DB88 ~]$ emctl stop dbconsole

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

2、关闭监听

[oracle@DB88 ~]$ lsnrctl stop

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_10

3、关闭实例

[oracle@DB88 ~]$ sqlplus / as sysdba

SQL> shutdown immediate;

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

4、退出sqlplus

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_12

5、查看进程确认

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

oracle11.2.0.1.0升级11.2.0.4.0

1、上传升级包

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

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

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_15

3、oracle用户图形化安装

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

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

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

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_18

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

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

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

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

选择语言

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

选择 企业版

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

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

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

操作用户组

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

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

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

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

汇总信息

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

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

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

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

换成root用户来执行脚本

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

换回oracle用户图形界面操作

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_31

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

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

给监听起个名字

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_33

TCP协议

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

监听端口默认1521

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_35

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

不配置另一个监听

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

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_38

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

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

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

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_41

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

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

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

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

升级后编辑失效的对象

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

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

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

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

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_47

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

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

升级汇总信息

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_49

开始升级

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

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

升级结果

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_52

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

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_54

修改环境变量

1、编辑.bash_profile

[oracle@DB88 ~]$ vi /home/oracle/.bash_profile

修改ORACLE_HOME为新路径

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_55

2、重新加载环境变量

[oracle@DB88 ~]$ source /home/oracle/.bash_profile

3、查看环境变量

[oracle@DB88 ~]$ echo $ORACLE_HOME

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_56

查看/etc/oratab  

这个文件是在创建数据库实例时建立的,它记录主机中有多少个数据库。如果需要自动启动数据库,则将AUTO设为Y,在调用dbstart命令才生效。

[oracle@DB88 ~]$ cat /etc/oratab

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_升级_57可以看到,现在此文件中,保存的是新版本数据库的路径。

升级后验证

1、查看版本信息

[oracle@DB88 ~]$ sqlplus / as sysdba

SQL> select * from v$version where rownum<2;

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

2、查看数据库补丁

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

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

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;

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_60

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;

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

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拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_62

关闭所有Oracle服务里程

1、关闭OEM

[oracle@DB88 ~]$ emctl stop dbconsole

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

2、关闭监听

[oracle@DB88 ~]$ lsnrctl stop

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_10

3、关闭实例

[oracle@DB88 ~]$ sqlplus / as sysdba

SQL> shutdown immediate;

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

4、退出sqlplus

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_12

5、查看进程确认

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

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

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

2、使用OPatch工具升级

[oracle@DB88 ]$ cd /tmp/18522509

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

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_69

从报错指示中可以看出,当前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/

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

检查OPatch工具版本

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

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_71

4、使用OPatch工具升级

[oracle@DB88 ]$ cd /tmp/18522509

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

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

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

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

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

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

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

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

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_75

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

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

5、升级数据库字典

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

[oracle@DB88 admin]$ sqlplus / as sysdba

SQL> startup

SQL> @catbundle.sql psu apply

oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3_数据库_77

升级后验证

1、查看数据库补丁

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

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

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

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

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

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;

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

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;

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

4、验证数据是否丢失

[oracle@DB88 ~]$ sqlplus dafeige/dafeige

SQL> select count(*) from bigdata;

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

升级之前,我们创建的bigdata表和数据,一切正常。

结束语

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

      1、准备学习Oracle的朋友们

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

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

      4、Oracle刚入门的朋友们

   有一段时间没有写关于Oracle的博文了,感谢一直关注我的新老朋友,有你们的支持我会一起写下去!

以上是关于oracle拨云见日第8篇之Oracle11.2.0.1.0升级11.2.0.4.3的主要内容,如果未能解决你的问题,请参考以下文章

oracle拨云见日第2篇之脚本安装10g

oracle拨云见日第4篇之脚本安装11g

oracle拨云见日第6篇之网络配置

oracle拨云见日第5篇之静默安装11g

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

9.24-9.30博客精彩回顾