zoukankan      html  css  js  c++  java
  • 静默升级oracle 11g (从11.2.0.1升级到11.2.0.4)

    --原文:http://blog.itpub.net/28916011/viewspace-2683059/

     一个环境是oracle 11.2.0.1,一个环境是oracle 11.2.0.4,同样的数据,同样的sql,在两个版本数据库表现不一样。于是,干脆都统一为11.2.0.4。 

        但由于环境限制,只能用静默的方法,把oracle 11.2.0.1 升级到 11.2.0.4。 

        不过,还好,根据网上的文档,升级过程还算顺利。

        下面,我记录一下升级过程,供自己以后查看,也供有需要的人参考。

    1、11.2.0.1环境(待升级数据库) 

    1
    2
    3
    4
    5
    6
    7
    8
    SQL> select * from v$version;
    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    PL/SQL Release 11.2.0.1.0 - Production
    CORE11.2.0.4.0Production
    TNS for Linux: Version 11.2.0.1.0 - Production
    NLSRTL Version 11.2.0.1.0 - Production
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@localhost ~]# su - oracle
    [oracle@localhost ~]$ cat .bash_profile 
    export ORACLE_SID=orcl
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
    alias sqlplus='rlwrap sqlplus'

    2、升级前的准备工作 

    2.1、 备份数据库

        升级数据库是一个有风险的过程,需要仔细规划和慎重处理。首先要做数据库的完全备份,备份的内容包括数据文件,控制文件,归档文件,日志文件,参数文件,密码文件等。可以备份一下整个ORACLE_HOME目录,如果升级有问题,还可以还原回来。备份的方法可以使用dump数据泵,tar,rman等。

         如:RMAN全备 

    1
    2
    3
    [oracle@localhost ~]$ export ORACLE_SID=orcl
    [oracle@localhost ~]$ rman target /
    RMAN>backup database format '/home/oracle/rmanbak/df_%t_%s_%p.bak';

        备份老的ORACLE_HOME和oraInventory 

    1
    2
    [oracle@localhost ~]$tar –cvfp product.tar.gz /u01/app/oracle/
    [oracle@localhost ~]$tar –cvfp oraInventory.tar.gz /u01/app/oraInventory/

    2.2、干净的关闭数据库

    1
    SQL> shutdown immediate;

    2.3、 关闭数据库的监听

    在数据库的升级中,会对数据库的监听文件做重新的配置,建议正常的关闭监听,如下:

    1
    2
    [oracle@localhost ~]$ lsnrctl stop
    [oracle@localhost ~]$  netstat -an |grep 1521

    2.4、 关闭OEM 

    在升级中需要关闭EM,

    1
    2
    [oracle@localhost ~]$emctl stop dbconsole
    [oracle@localhost ~]$netstat -an |grep 1158

    2.5、不 对数据库的任何原有文件做操作   

        本人在升级中,编辑数据库的监听文件,导致配置监听和EM错误,故不对数据库的任何原有文件做操作。

    3、安装oracle 11.2.0.4软件包

        把oracle 11.2.0.4的安装包上传到/home/oracle目录下,解压后得到database目录。 

    1
    2
    3
    4
    5
    6
    [oracle@localhost ~]$ ls
    p13390677_112040_Linux-x86-64_1of7.zip   p13390677_112040_Linux-x86-64_2of7.zip
    [oracle@localhost ~]$ unzip p13390677_112040_Linux-x86-64_1of7.zip
    [oracle@localhost ~]$ unzip p13390677_112040_Linux-x86-64_2of7.zip
    [oracle@localhost ~]$ ls
    database

        开始安装数据库软件11.2.0.4。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [oracle@localhost ~]$ cd database
    [oracle@localhost ~]$./runInstaller -silent -debug -force -ignorePrereq 
    DECLINE_SECURITY_UPDATES=true 
    oracle.install.option=INSTALL_DB_SWONLY 
    UNIX_GROUP_NAME=oinstall 
    INVENTORY_LOCATION=/u01/app/oraInventory 
    ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1 
    ORACLE_BASE=/u01/app/oracle 
    oracle.install.db.InstallEdition=EE 
    oracle.install.db.DBA_GROUP=dba 
    oracle.install.db.OPER_GROUP=oinstall

         说明:INVENTORY_LOCATION可以和老版本共用一个目录。ORACLE_BASE和老版本保持一样,ORACLE_HOME指向了一个新的目录11.2.0.4/dbhome_1(以前是11.2.0/db_1)。

         不过,这些目录都是可以随意指定,我上面做是只是为了版本管控方便。 

        安装过程大概需要15分钟左右(根据机型配置时间也不同),安装过程中有警告[WARNING] 时需要安装一些i386 的包。查看log安装即可。

         出现以下字样表示升级成功。

    1
    2
    3
    As a root user, execute the following script(s):
            1. /u01/oracle/app/product/11.2.0.4/dbhome_1/root.sh
    Successfully Setup Software.

         切换到 root 用户执行脚本。

    1
    [root@localhost ~]# /u01/oracle/app/product/11.2.0.4/dbhome_1/root.sh

    4、配置新环境变量,拷贝参数文件和监听文件 

    4.1、配置新环境变量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [oracle@localhost ~]$ whoami 
    oracle
    [oracle@localhost ~]$ cat .bash_profile 
    export ORACLE_SID=orcl
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
    alias sqlplus='rlwrap sqlplus'

        上面看到,新环境变量和老环境变量相比,我只修改了一个参数:

    1
    2
    新参数:ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1
    老参数:ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

         注意: 在10g以后,一般情况下环境变量中没有必要设置LD_LIBRARY_PATH,但是一旦将ORACLE_HOME迁移到其他目录,则环境变量中还需要添加这个变量。

        source一下后,环境变量就指向新安装的11.2.0.4位置了。

    1
    2
    3
    4
    5
    [oracle@localhost ~]$ source .bash_profile
    [oracle@localhost ~]$ env  |grep ORA
    ORACLE_SID=orcl
    ORACLE_BASE=/u01/app/oracle
    ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1

    4.2、修改 /etc/oratab 内容为最新位置

    1
    2
    [oracle@localhost ~]$ vim /etc/oratab
    orcl:/u01/app/oracle/product/11.2.0.4/db_1:N

    4.3、 将参数文件copy到新的目录下

    1
    2
    [oracle@localhost ~]$ cd /u01/app/oracle/product/11.2.0/db_1/dbs/
    [oracle@localhost dbs]$ cp -a * /u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/

    4.4、 拷贝监听TNS配置文件到新的目录下

    1
    2
    [oracle@localhost admin]$  cd /u01/app/oracle/product/11.2.0/db_1/network/admin/
    [oracle@localhost dbs]$ cp -a * /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin

    4.5、启动监听 

        先修改新位置下的listener.ora里面的路径,然后启动监听。

    1
    [oracle@localhost admin]$ lsnrctl start

    5、升级数据库 

        要注意退出oracle用户重新su - oracle下,然后sqlplus能看到11.2.0.4.0字样才行。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [oracle@19_mysql-slave ~]$ sqlplus / as sysdba
    SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 30 12:10:30 2020
    Copyright (c) 1982, 2013, Oracle.  All rights reserved.
    Connected to an idle instance.
    SQL> startup upgrade
    ORACLE instance started.
    Total System Global Area 1603411968 bytes
    Fixed Size        2253664 bytes
    Variable Size     1006636192 bytes
    Database Buffers    587202560 bytes
    Redo Buffers          7319552 bytes
    Database mounted.
    Database opened.
    SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql   ---该脚本会运行30分钟左右

        以上catupgrd.sql脚本整整运行了30分钟,执行完之后会shutdown immediate数据库。这个时候我们重启数据库即可。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [oracle@localhost admin]$ sqlplus /nolog
    SQL> conn / as sysdba
    SQL> startup
    SQL>  select * from v$version;
    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    PL/SQL Release 11.2.0.4.0 - Production
    CORE    11.2.0.4.0      Production
    TNS for Linux: Version 11.2.0.4.0 - Production
    NLSRTL Version 11.2.0.4.0 - Production

    6、 运行 utlrp.sql 编译失效对象

        检查无效对象:

    1
    2
    SQL> select from dba_objects where status !='VALID';
    SQL> SELECT count(*) FROM dba_objects WHERE status='INVALID';

        运行utlrp.sql编译失效对象。

    1
    SQL> @?/rdbms/admin/utlrp

        该脚本耗时约为3分钟左右。 至此数据库已经升级完成。

        最后,重启数据库没有问题就是升级成功了。

    7、更新数据库服务脚本

     将/u01/app/oracle/product/11.2.0.4/dbhome_1/bin/ 下的 dbstart 和 dbshut ,ORACLE_HOME_LISTNER=$1 改为 $ORACLE_HOME 。

    1
    2
    #ORACLE_HOME_LISTNER=$1
    ORACLE_HOME_LISTNER=$ORACLE_HOME

    8、 升级后的检查确认

    1
    2
    3
    4
    5
    SQL> select status from v$instance;
    STATUS
      
    ------------
    OPEN  #注意,成功打开数据库后,这里将是OPEN,而非OPEN MIGRATE
    1
    2
    3
    4
    5
    6
    7
    8
    SQL> select from v$version;
    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    PL/SQL Release 11.2.0.4.0 - Production
    CORE   11.2.0.4.0 Production
    TNS for Linux: Version 11.2.0.4.0 - Production
    NLSRTL Version 11.2.0.4.0 - Production

    9、升级成功后需重建EM(没有EM可忽略该步)

    手工创建EM资料库: 

    1
    2
    3
    4
    5
    6
    7
    8
    ####emca -repos drop
    [oracle@localhost admin]$ emca -reposdrop
    ####emca -repos create
      
    [oracle@localhost admin]$ emca -reposcreate
      
    ###emca -config dbcontrol db
    [oracle@localhost admin]$ emca-config dbcontrol db

    参考链接:

    1、 https://blog.csdn.net/jycjyc/article/details/89948192

    2、 https://www.icode9.com/content-2-4058.html

  • 相关阅读:
    概率算法_二项分布和泊松分布
    数据库_存储过程简介(oracle版)
    机器学习算法_knn(福利)
    统计算法_概率基础
    统计算法_数值/线性关系度量
    Python总结
    Python 冒泡排序法分析
    Oracle练习详解
    LINUX基础了解
    LINUX下OA搭建
  • 原文地址:https://www.cnblogs.com/ss-33/p/12973819.html
Copyright © 2011-2022 走看看