共计 4392 个字符,预计需要花费 11 分钟才能阅读完成。
1. 只读 Oracle 主⽬录个性(ROOH)介绍
当咱们装置实现 Oracle Database 21c 数据库软件后,发现 ORACLE_BASE ⽬录中呈现了 dbs 和
homes ⽬录,其实这是只读 Oracle 主⽬录个性(ROOH)个性所带来的变动。如下所示
只读 Oracle 主⽬录个性(ROOH)是在 Oracle Database 18c 中引⼊的,从 Oracle Database
21c 开始,该个性是装置 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@ss21c ~]$ export ORACLE_HOME=/u01/app/oracle/product/21.0.0/dbhome_1
[oracle@ss21c ~]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@ss21c ~]$ orabasehome
/u01/app/oracle/homes/OraDB21Home1
[oracle@ss21c ~]$
打印 ORACLE_BASE_CONFIG 的门路, 能够运⾏ $ORACLE_HOME/bin ⽬录中的 orabaseconfig 命令:
[oracle@ss21c ~]$ export ORACLE_HOME=/u01/app/oracle/product/21.0.0/dbhome_1
[oracle@ss21c ~]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@ss21c ~]$ orabaseconfig
/u01/app/oracle
[oracle@ss21c ~]$
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/da…
configuring-read-only-oracle-homes.html#GUID-906DA159-AC83-4ACCA8A6-5B4A39EB72E1
Enabling a Read-Only Oracle Home
https://docs.oracle.com/en/da…
enabling-read-only-oracle-home.html#GUID-7B2FA40E-8FBA-4494-934AA284532AF70