How to Upgrade to Oracle Database 12c Release1 (12.1.0 ... ... How to Upgrade to Oracle Database 12c

  • View
    2

  • Download
    0

Embed Size (px)

Text of How to Upgrade to Oracle Database 12c Release1 (12.1.0 ... ... How to Upgrade to Oracle Database 12c

  • 12.1.0.2 已经发布一段时间了,随着用户的增多,目前 12C

    很多用户,需要将数据库从低版本升级到 12C,本文就升级过程

    升级前,首选需要查看文档,了解哪些版本可以升级到

    Complete Checklist for Upgrading to Oracle

    另外,12C 在很多硬件&系统层面的需求有变更,需要提前准备和调整

    我在升级的过程中就遇到一些问题,不得不终止升级,调整完成后

    How to Upgrade to Oracle Database 12c Release1 (12.1.0) and Known Issues (Doc ID 2085705.1)

    How to Upgrade to/Downgrade from Grid Infrastructure 12c and Known Issues (Doc ID 1579762.1)

    12C 的版本稳定性,以及各个方面的功能性,得到大家的认可。

    本文就升级过程,做了详细的记录。(突然想起“多图杀猫”这个词)

    了解哪些版本可以升级到 12C

    Complete Checklist for Upgrading to Oracle Database 12c Release 1 using DBUA (Doc ID 1516557.1)

    需要提前准备和调整。

    调整完成后,才重新升级。

    How to Upgrade to Oracle Database 12c Release1 (12.1.0) and Known Issues (Doc ID 2085705.1)

    Infrastructure 12c and Known Issues (Doc ID 1579762.1)

    Database 12c Release 1 using DBUA (Doc ID 1516557.1)

    How to Upgrade to Oracle Database 12c Release1 (12.1.0) and Known Issues (Doc ID 2085705.1)

    Infrastructure 12c and Known Issues (Doc ID 1579762.1)

  • 在上面需求之外,补充注意几点:

    1. OCR diskgroup,至少需要 5G 空间,由于 12C 有 managment database,需要存放到 OCR diskgroup

    2. 需要明确在 ASM instance 中设定参数 asm_diskstring='/dev/raw/*' , 如果不设置的话,在升级过程中,重启 cssd 进程会失败,

    无法找到 voting disk

    原因:如果不设置这个参数,11.2 版本,默认是到/dev/raw/*查找 voting disk,但是 12C 默认是到/dev/sd*去查找 voting disk。

    势必会遇到读取权限问题,进而启动 cssd 失败。(如果使用 ASMlib,也是相同的道理,在升级前,就明确设置这个参数,不让 oracle

    使用默认的方式去查找磁盘)

    3. 需要保证两个节点的全部资源都正常运行,才可以升级

  • 上面的准备条件完成后,开始实际的升级步骤。

    1. 创建需求目录

    ~~~~~~~~~~oracle 目录~~~~~~~~~~~~~~~~

    # mkdir -p /u01/app/oracle/product/12.1.0/dbhome_1

    # chown -R oracle:oinstall /u01/app/oracle/product/12.1.0

    # chmod -R 755 /u01/app/oracle/product/12.1.0

    ~~~~~~~~~~grid 目录~~~~~~~~~~~~~~~~

    # mkdir -p /u01/app/12.1.0/grid

    # chown -R grid:oinstall /u01/app/12.1.0/grid

    # chmod -R 755 /u01/app/12.1.0/grid

    修改环境变量

    ~~~~~~~~~~~~~~oracle 用户~~~~~~~~~~~~~~两个节点 ORACLE_SID 设置不同

    $ vi ~/.bash_profile

    export PATH

    export ORACLE_SID=orcl1

    export ORACLE_BASE=/u01/app/oracle

    export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib

    export PATH=$ORACLE_HOME/bin:$PATH

    umask 022

    ==========原有设定===========

    export ORACLE_SID=orcl1

    export ORACLE_BASE=/u01/app/oracle

    export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

    export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:${PATH}

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib

    ~~~~~~~~~~grid 用户~~~~~~~~~~~~~~~~两个节点 ORACLE_SID 设置不同

    export ORACLE_SID=+ASM1

    export ORACLE_BASE=/u01/app/grid

    export ORACLE_HOME=/u01/app/12.1.0/grid

    export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:${PATH}

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib

    ==========原有设定===========

    export ORACLE_SID=+ASM1

    export ORACLE_BASE=/u01/app/grid

    export ORACLE_HOME=/u01/app/11.2.0/grid

    export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:${PATH}

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib

    2. 开始执行升级过程,其实与新安装的步骤基本是相同的

    su - grid

    cd /tmp/patch/

    unzip linuxamd64_12c_grid_1of2.zip

    unzip linuxamd64_12c_grid_2of2.zip

    cd /tmp/patch/grid

    ./runInstaller

  • 3. 选择 Upgrade Oracle Grid

  • 4. 这里开始遇到问题,由于之前的 OCR 空间只有 3G,这里提示,至少需要 4424MB

  • 5. 检查一下磁盘组空间,我由于是测试环境,磁盘设置较小,并且使用 external redundancy,如果是生产环境,建议使用 normal redundancy,并且根据实际情况分配磁

    盘组

    6. OCR 磁盘空间不够,扩展 OCR 磁盘组,扩展步骤如下(物理磁盘添加,裸设备分配,这里不做详细解释):

    a. 查询当前的 ASM 磁盘分配情况

    SQL> set line 400

    SQL> col path for a20

    SQL> select name,PATH,GROUP_NUMBER from v$asm_disk;

    NAME PATH GROUP_NUMBER

    ------------------------------ -------------------- ------------

    /dev/raw/raw4 0

  • NAME PATH GROUP_NUMBER

    ------------------------------ -------------------- ------------

    OCR_0000 /dev/raw/raw1 3

    OCR001 /dev/raw/raw4 3

  • 9. 检查一下用户实际的组是不是对,没有问题的话,下一步

    10. 手动修改成,之前创建的路径

  • 11. 这里有一些告警,建议将每一个告警都解决掉。

    提 ASM 磁盘组的问题,注意下面的描述,12C 开始如果不设置 ASM_diskstring,默认就会查找/dev/sd*。

    个人比较懒,也就注定后面遇到了问题。

  • 12. 在 node1 执行脚本,失败!!!

    13. 查询错误,搜索到下面文档,提及 ASM 参数设置的问题

    FAILS TO START ORA.CSSD WHEN UPGRADING GRID 12C ON NODE 1 (Doc ID 1917543.1)

    检查 OCSSD log,可以看到 voting disk 是无法识别的,而之前 11.2 是正常运行的,为什么?

    就是由于 12C 默认扫描磁盘的方式变为/dev/sd*导致的

    ~~~~~~~~~~~~~upgrade.sh 执行失败~~~~~~~~~~~~~~~~~~~~

    2017-01-18 14:12:14.881694 : CSSD:1102797120: clssscthrdmain: Starting thread GMPResponse

    2017-01-18 14:12:14.883050 : CSSD:486086176: clssscUpdateInitState: Set state to 0x000c1e46, based on prior state of 0x000c1e06 and requested change of

    0x00000040

    2017-01-18 14:12:14.883097 : CSSD:486086176: clssnmReadDiscoveryProfile: voting file discovery string()

    2017-01-18 14:12:14.883101 : CSSD:486086176: clssnkInit: NK generic layer initializing.

    2017-01-18 14:12:14.884219 : CSSD:1100556608: clssscthrdmain: Starting thread clssnmvDDiscThread

    2017-01-18 14:12:14.884454 : GPNP:1100556608: clsgpnp_Init: [at clsgpnp0.c:654] '/u01/app/12.1.0/grid' in effect as GPnP home base.

    2017-01-18 14:12:14.884461 : GPNP:1100556608: clsgpnp_Init: [at clsgpnp0.c:708] GPnP pid=29401, cli=clsuGpnpg GPNP comp tracelevel=1, depcomp tracelevel=0,

    tlsrc:ORA_DAEMON_LOGGING_LEVELS, apitl:0, complog:1, tstenv:0, devenv:0, envopt:0, flags=2003

    2017-01-18 14:12:14.887900 : GPNP:1100556608: clsgpnpkwf_initwfloc: [at clsgpnpkwf.c:402] Using FS Wallet Location :

    /u01/app/12.1.0/grid/gpnp/node1/wallets/peer/

    2017-01-18 14:12:14.887926 : GPNP:1100556608: clsgpnpkwf_initwfloc: [at clsgpnpkwf.c:414] Wallet readable. Path:

    /u01/app/12.1.0/grid/gpnp/node1/wallets/peer/

    2017-01-18 14:12:14.913073 : GPNP:1100556608: clsgpnp_profileGetXmlAttrValVA: [at clsgpnp.c:3351] (:GPNP00135:)Didn't find attribute Mode in profile

    2017-01-18 14:12:14.913101 : GPNP:1100556608: clsgpnp_Term: [at clsgpnp0.c:1347] GPnP cli=clsuGpnpg

    2017-01-18 14:12:14.914477 : CLSF:1100556608: Allocated CLSF context

    2017-01-18 14:12:14.914484 : CSSD:1100556608: clssnmvDDiscThread: using discovery string for initial discovery

    2017-01-18 14:12:14.914492 : SKGFD:1100556608: Discovery with str::

    2017-01-18 14:12:14.914537 : SKGFD:1100556608: UFS discovery with ::

    2017-01-18 14:12:14.914545 : SKGFD:1100556608: Execute glob on the string /dev/sd*

    2017-01-18 14:12:14.914639 : SKGFD:1100556608: running stat on disk:/dev/sde

    2017-01-18 14:12:14.914656 : SKGFD:1100556608: running stat on disk:/dev/sdd

    2017-01-18 14:12:14.914663 : SKGFD:1100556608: running stat on disk:/dev/sdc

    2017-01-18 14:12:14.914669 : SKGFD:1100556608: running stat on disk:/dev/sdb

  • 2017-01-18 14:12:14.914675 : SKGFD:1100556608: running stat on disk:/dev/sda1

    2017-01-18 14:12:14.914681 : SKGFD:1100556608: running stat on disk:/dev/sda2

    2017-01-18 14:12:14.914687 : SKGFD:1100556608: running stat on disk:/dev/sda

    2017-01-18 14:12:14.914696 : SKGFD:1100556608: Fetching UFS disk :/dev/sda:

    2017-01-18 14:12:14.914718 : SKGFD:1100556608: OSS discovery with ::

    2017-01-18 14:12:14.915332 : CSSD:1100556608: clssnmvDiskVerify: Successful discovery of 0 disks

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    14. 根据文档,是建议 downgrade 到 11.2 之后,修改 asm_diskstring='/dev/raw/*',然后再次升级。无非就是磁盘没有权限读取,我直接修改/dev/sd* 为 777,然后再

    次执行 rootupgrade.sh 脚本(注意,两个节点都需要修改