详解Oracle 21c 中的只读Oracle主⽬录特性 (ROOH)




  • 1. 只读Oracle主⽬录特性(ROOH)介绍

    当我们安装完成Oracle Database 21c 数据库软件后,发现ORACLE_BASE⽬录中出现了dbs和
    homes⽬录,其实这是只读Oracle主⽬录特性(ROOH)特性所带来的变化。如下所示

    只读Oracle主⽬录特性(ROOH)是在 Oracle Database 18c 中引⼊的,从 Oracle Database21c 开始,该特性是安装Oracle数据库软件后的唯⼀默认配置。在只读 Oracle 主⽬录配置模式下,数据库运⾏时所有需要写⼊的⽂件都会移出ORACLE_HOME,如:实例相关⽂件,⽹络配置⽂件,运⾏时⽣成的⽇志⽂件等。留在ORACLE_HOME ⽬录中的Oracle软件部分在运⾏时是只读的。简单来说,通过只读Oracle主⽬录的特性,可以将数据库运⾏⽂件和数据库配置⽂件分开,这样我们就可以很轻松的替换数据库运⾏⽂件了。⽐如使⽤“Golden Image”镜像来分发oracle软件,达到快速部署和升级的⽬的。
    ROOH特性的收益如下:
    • ⽆需延⻓停机时间即可⽆缝修补和更新 Oracle 数据库⼆进制⽂件。
    • 简化修补和⼤规模部署,因为只需更新⼀个映像即可将补丁分发到多台服务器。
    • 通过实现安装和配置的分离来简化配置。

    2. 原理介绍

    在 Oracle Database 21c 之前,默认的 ORACLE_HOME 布局将 ORACLE_HOME、ORACLE_BASE_HOME 和 ORACLE_BASE_CONFIG 组合到⼀个位置。从 Oracle Database 21c开始,唯⼀可⽤的配置是只读 ORACLE_HOME,其中 ORACLE_BASE_HOME 和ORACLE_BASE_CONFIG 与 ORACLE_HOME 分开放置。

    这三个变量的所代表的含义为:
    • ORACLE_HOME:Oracle数据库软件所在主⽬录;
    • ORACLE_BASE_HOME:特定于⽤户的⽂件,特定于实例的⽂件和⽇志⽂件等,如:
    network/admin,network/trace,network/log;
    • ORACLE_BASE_CONFIG:实例相关配置⽂件所在⽬录,如dbs⽬录;
    在⾮ROOH配置模式下,这三个变量所指向的路径都和ORACLE_HOME⼀致。在ROOH模式下,ORACLE_HOME,ORACLE_BASE_HOMEORACLE_BASE_CONFIG变量所指向的路径不在⼀致,各⾃配置了不同的路径,也就是分开配置。orabasetab ⽂件⽤于定义只读ORACLE_HOME特性的相关基本⽬录。该⽂件中所配置的⽬录是基于 $ORACLE_HOME 、 ORACLE_BASE 、 O R A C L E _ B A S E _ H O M E 和ORACLE_BASE_CONFIG 相应路径⽽得出的。

    打印 ORACLE_BASE_HOME 的路径, 可以运⾏ $ORACLE_HOME/bin⽬录中的 orabasehome 命令:

     
     

    打印 ORACLE_BASE_CONFIG 的路径, 可以运⾏$ORACLE_HOME/bin⽬录中的orabaseconfig 命令:

     

    3. 关于orabasetab⽂件的解释

    orabasetab ⽂件位于 $ORACLE_HOME/install/orabasetab 中。要确定 ORACLE_HOME 是否为只读,请检查 orabasetab ⽂件是否存在。 orabasetab ⽂件还定义了 Oracle 主⽬录的ORACLE_BASE 和 HOME_NAME。 HOME_NAME 是 ORACLE_HOME 的内部名称。orabasetab ⽂件中以 $ORACLE_HOME 开头的最后⼀⾏定义了 $ORACLE_HOME 的⽬录。最后⼀⾏由四个字段组成,每个字段由冒号分隔符 ( : ) 分隔。
    第⼀个字段:匹配当前的 $ORACLE_HOME。
    第⼆个字段:定义当前 ORACLE_HOME 的 ORACLE_BASE。
    第三个字段:定义 HOME_NAME,它⽤于在只读 ORACLE_HOME 中构建
    ORACLE_BASE_HOME 路径。 在只读 ORACLE_HOME 中,ORACLE_BASE_HOME 路径为ORACLE_BASE/homes/HOME_NAME,ORACLE_BASE_CONFIG 与 ORACLE_BASE 相同。
    第四个字段:启⽤只读 ORACLE_HOME 则显示 Y,关闭只读ORACLE_HOME则显示 N。

    4、只读Oracle主⽬录和读写Oracle主⽬录的对⽐

    此示例显示了⼀个符合最佳灵活架构的 Oracle 数据库安装,适⽤于⽤户 oracle, 具有 ORACLE HOME、ORACLE BASE、ORACLE_ BASE_HOME 和ORACLE_BASE_CONFIG 逻辑位置。数据库⽂件挂载在 /u01 ,HOME_NAME 是 OraDB21Home1。

    此示例还显示了与读/写 Oracle 主⽬录相⽐,只读 Oracle 主⽬录中配置⽂件、⽇志⽂件和其他⽬录的 Oracle 数据库软件定义路径的更改。

    Table 1-1 只读Oracle主⽬录⽂件路径和读写Oracle主⽬录⽂件路径对比

    5. 配置只读Oracle主⽬录

    如果是Oracle Database 21c之前的版本,需要⼿动开启只读Oracle主⽬录的功能,在此记录⼀下开启流程:
    第⼀步:安装数据库软件,安装时需要选择“Set Up Software Only”;
    第⼆步:运⾏roohctl 脚本

    [oracle@sdedu ~]$ cd /u01/app/oracle/product/19.3.0/dbhome_1/bin
    [oracle@sdedu ~]$ ./roohctl -enable

    如果是RAC可以使⽤下⾯命令

    $ roohctl –enable –nodelist comma_separated_list_of_nodes

    输出样例

    [oracle@sdedu bin]$ ./roohctl -enable
    Enabling Read-Only Oracle home.
    Update orabasetab file to enable Read-Only Oracle home.
    Orabasetab file has been updated successfully.
    Create bootstrap directories for Read-Only Oracle home.
    Bootstrap directories have been created successfully.
    Bootstrap files have been processed successfully.
    Read-Only Oracle home has been enabled successfully.
    Check the log file /opt/oracle/cfgtoollogs/roohctl/roohctl-180801AM110219.log.

    第三步:运⾏DBCA创建数据库

    $ ./dbca ==> Create a Non-CDB or CDB

    第四步:检查只读Oracle主⽬录开启情况

     

    1. $ ls -l $ORACLE_BASE/homes
    drwxr-x---. 7 oracle oinstall 4096 Aug 1 11:02 OraHome1
    2. $ cat $ORACLE_HOME/install/orabasetab (Most definitive way)
    #orabasetab file is used to track Oracle Home associated with Oracle Base
    /opt/oracle/product/18c/dbhome_1:/opt/oracle:OraHome1:Y:
    3. $ $ORACLE_HOME/bin/orabasehome
    /opt/oracle/homes/OraHome1
    4. Windows : Registry Key Entry as below
    HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB12Home1/ORACLE_HOME_READONLY:Y

    当Oracle主⽬录被启⽤/转换为只读主⽬录时,在此过程中会创建某些⽬录。它们被称为只读主⽬录的引导⽬录。这可以通过检查在$ORACLE_BASE/cfgtoollogs/roohctl/roohctl-.log 下创建的⽇志⽂件来确定。

    %ORACLEBASE%/
    %ORACLEBASE%/homes
    %ORABASECONFIG%/
    %ORABASECONFIG%/ÛS%
    %ORABASEHOME%/
    %ORABASEHOME%/rdbms
    %ORABASEHOME%/rdbms/log
    %ORABASEHOME%/rdbms/audit
    %ORABASEHOME%/ÛS%
    %ORABASEHOME%/network
    %ORABASEHOME%/network/admin
    %ORABASEHOME%/network/trace
    %ORABASEHOME%/network/log
    %ORABASEHOME%/assistants
    %ORABASEHOME%/assistants/dbca
    %ORABASEHOME%/assistants/dbca/templates
    %ORABASEHOME%/install

    6. 参考⽂档

    Configuring Oracle Homes
    https://docs.oracle.com/en/database/oracle/oracle-database/21/ladbi/
    configuring-read-only-oracle-homes.html#GUID-906DA159-AC83-4ACCA8A6-5B4A39EB72E1
    Enabling a Read-Only Oracle Home
    https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/
    enabling-read-only-oracle-home.html#GUID-7B2FA40E-8FBA-4494-934AA284532AF70

     

    Speak Your Mind

    *