zoukankan      html  css  js  c++  java
  • Oracle已经应用PSU+OJVM补丁后通过dbca新创建的数据库是否需要跑脚本

    Oracle已经应用PSU+OJVM补丁后通过dbca新创建的数据库是否需要跑脚本

    背景1

    db版本:11.2.0.4.0

    psu+ojvm版本:11.2.0.4.201020

    打完psu+ojvm的补丁后,才dbca一个新库testdb。

    testdb以custom database类型创建,并且最后生成创建脚本。

    分析

    角度1:从psu和ojvm的readme看,

    对于OJVM来讲,新创建的库(dbca)的库,需要再次执行脚本升级数据字典信息。

    31668908(OJVM的readme)的README.html中明确提到如下说明:

    Post Installation Instructions for Databases Created or Upgraded after Installation of OJVM PSU in the Oracle Home

    You must execute the steps in Postinstallation for any new database or upgraded database.


    从db层面看,新dbca的库也不存在OJVM补丁的注册信息:简单的翻译就是:在Oracle Home中安装OJVM PSU之后创建或升级的数据库的安装后说明:您必须对任何新数据库或升级后的数据库执行Postinstallation的步骤。

    SELECT * FROM dba_registry_history ORDER BY action_time DESC;
    
     
    
    ACTION_TIME         ACTION NAMESPAC VERSION       ID BUNDL COMMENTS
    
    ------------------- ------ -------- -------- ------- ----- -------------------
    
    2021-05-18 16:33:50 APPLY  SERVER   11.2.0.4  201020 PSU   PSU 11.2.0.4.201020


    从31718723的README.html看,有如下提示:对GI+DB来讲的话,dba_registry_history视图存在打完的PSU的信息(如上)。

    Patch Post-Installation Instructions for Databases Created or Upgraded after Installation of Patch in the Oracle Home

    These instructions are for a database that is created or upgraded after the installation of the patch.

    You must execute the steps in Loading Modified SQL Files into the Database for any new database only if it was created by any of the following methods:

    Using DBCA (Database Configuration Assistant) to select a sample database (General, Data Warehouse, Transaction Processing)

    Using a script that was created by DBCA that creates a database from a sample database

    There are no actions required for databases that have been upgraded.


    仅当使用以下任何一种方法创建新数据库时,才必须执行Loading Modified SQL Files into the Database中的步骤:

    简单的翻译就是:在Oracle Home中安装补丁后创建或升级的数据库的补丁安装后说明:这些说明适用于在安装修补程序后创建或升级的数据库。

    l  使用DBCA选择示例数据库(General, Data Warehouse, Transaction Processing)

    l  使用由DBCA创建的脚本,该脚本从示例数据库创建数据库

    对于已升级的数据库,无需执行任何操作。

    由于dbca建库是选择的是Custom Database,因此无需再次执行。

     

    角度2:实际查看dbca时候的日志和脚本来分析。

    在生成脚本的目录/u01/app/oracle/admin/testdb/scripts下,可以看到很多脚本,其中1个sh类型脚本,剩余都是sql脚本。

    结合dbca时候的临时日志以及/u01/app/oracle/cfgtoollogs/dbca/testdb/下的日志信息,在/u01/app/oracle/admin/testdb/scripts下的脚本有这么个顺序。

    执行顺序:

    1.testdb1.sh --调用2
    2.testdb1.sql --调用3-18
    3.CreateDB.sql
    4.CreateDBFiles.sql
    5.CreateDBCatalog.sql
    6.JServer.sql
    7.context.sql
    8.xdb_protocol.sql
    9.ordinst.sql
    10.interMedia.sql
    11.cwmlite.sql
    12.spatial.sql
    13.emRepository.sql
    14.apex.sql
    15.owb.sql
    16.CreateClustDBViews.sql
    17.lockAccount.sql
    18.postDBCreation.sql

    其中,postDBCreation.sql脚本调用了/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/catbundleapply.sql
    而该脚本会调用 catbundle_psu.sql,而这个脚本其实就是通常psu的readme文档的 @catbundle.sql PSU apply部分。
    并没看到ojvm的postinstall脚本。

    而且,刚建完的库通过查询dba_registry_history视图也可以发现,确实存在psu的注册信息而不存在ojvm的注册信息。

    从这里分析和角度1是一致的。

    但是我曾经观察过通过General, Data Warehouse, Transaction Processing来创建数据库,从dba_registry_history视图也能看到psu的注册信息。

     

    角度3:开sr询问原厂的人。

    得到的结论是针对psu的postinstall.sql,dbca完的库是需要跑脚本的。

    根据我开过的几个sr和以前乙方其他同事的sr,有的原厂的话只能说拿来当参考。。

     

    总结一下,实际对于custom database创建的数据库,无论是从readme(角度1)或者分析dbca日志(角度2),psu的脚本无需再跑(分析dbca日志就知道了自动帮你跑了psu的脚本),而ojvm的则都需要。

    不过对于非custom database的,readme明确说明psu的需要跑(但是实际我看了dba_registry_history发现是存在psu的注册条目的),没用角度2分析过非custom database的,有时间补上。

    至于sr的回复,仅供参考吧。

     

    背景2

    db版本:19.3.0.0.0

    ru+ojvm版本:19.11.0.0.0

    打完ru+ojvm的补丁后,才dbca一个新库testdb。

    testdb以custom database类型创建,并且最后生成创建脚本。

    题外话:11g的psu到了12c以上叫做ru或者rur了。

    分析

    实际上在19c的版本,没有11g那么复杂,相对来说容易分析一些。

    19c可以通过dbca的安装日志看出:
    /u01/app/oracle/cfgtoollogs/dbca/test/trace.log_2021-05-25_02-46-10PM:
    executing datapatch /u01/app/oracle/product/19.0.0/dbhome_1/OPatch/datapatch

    无论是ojvm或者是ru的readme对于升级数据字典的脚本的行为,通通都是通过os命令datapatch来统一实现。

    根据mos文档:Datapatch:数据库 12c 补丁后期 SQL 自动化 (文档 ID 2101974.1)截取部分说明如下:

     

     也就是说,datapatch工具已经对这块做了智能化处理,一次执行即可完成补丁的SQL自动化。

    我尝试过安装安装ojvm组件:

    以及不安装ojvm组件:

    查询dba_registry_history得到的结果相当智能。

    对于安装了ojvm组件的数据库,datapatch(dbca自动调用)会注册进去ojvm的信息,

    而没有安装ojvm组件的数据库,datapatch(dbca自动调用)只会注册ru的信息。

    另外的问题就是,如果看readme,依然会让你跑脚本....而且这次不分是否为custom database类型的..

    OJVMREADME.html说明中,新创建的库,需要再次执行脚本升级数据字典信息。

    说明如下:

    Post Installation Instructions for Databases Created or Upgraded after Installation of OJVM Update in the Oracle Home

    You must execute the steps in Postinstallation for any new database. There are no actions required for databases that have been upgraded.

    简单的翻译就是:您必须为任何新数据库执行安装后中的步骤。已升级的数据库不需要任何操作。

    同理,DB+GIREADME.html说明中,同样有如下说明:

    Patch Post-Installation Instructions for Databases Created or Upgraded after Installation of Patch in the Oracle Home

    You must execute the steps in Loading Modified SQL Files into the Database for any new or upgraded database.

    简单的翻译就是:对于任何新的或升级的数据库,您必须执行将Loading Modified SQL Files into the Database的步骤。

    这个readme说的就不准了。

  • 相关阅读:
    【Eolinker使用】接口测试--如何解决接口重定向
    ExtJS按钮
    Redis-消费模式
    Redis笔记教程
    C++中this指针的用法
    C — 对C语言的认识
    你还在迷茫什么
    2019-2020-1 20199324《Linux内核原理与分析》第四周作业
    2019-2020-1 20199324《Linux内核原理与分析》第三周作业
    2019-2020-1 20199324《Linux内核原理与分析》第二周作业
  • 原文地址:https://www.cnblogs.com/PiscesCanon/p/14953554.html
Copyright © 2011-2022 走看看