102-Oracle root.sh-oraInst.loc-oratab清单和自启动

每次安装完Oracle实例或是集群后,GI是在主节点先先运行脚本,第二个节点再运行脚本,DB安装后每个节点,都要用root用户运行root.sh脚本。那么运行这些脚本的原因和功能是什么,脚本创建服务后,在reboot或是实例startup过程中是否还需要继续读取,步骤是什么

功能点:

​root.sh:安装后的关键脚本,负责环境初始化、配置文件(oraInst.loc/oratab)的创建和系统服务集成。

​oraInst.loc:作为Oracle软件的“注册表”,确保安装工具能正确管理多产品环境。

​oratab:实现数据库实例的自动化生命周期管理,是DBA运维的核心配置文件。

三者共同构成Oracle环境的基础管理框架,任何配置错误都可能导致系统无法正常运行。

读取顺序:

​实例启动时不读取/etc/oraInst.loc​:该文件仅用于软件安装和配置管理

​实例启动间接依赖/etc/oratab​:通过dbstart脚本控制启动流程

​之后就是数据库启动进程,取参数文件 → 控制文件 → 数据文件/日志文件,启动实例

一、安装后必须运行的脚本:root.sh

功能和技术原理
在安装Oracle Grid Infrastructure和Database后,必须运行root.sh脚本(以root权限执行)。该脚本完成以下关键任务:
环境初始化和权限设置
  • 创建必要的操作系统目录结构
  • 设置Oracle软件目录的所有权和权限(chown/chmod)
  • 修复关键文件的SELinux上下文(在启用SELinux的系统上)
集群资源配置(Grid Infrastructure专用) -如果有安装集群,单实例无
# 初始化集群守护进程
$GRID_HOME/bin/ohasd start
# 创建OCR和Voting Disk资源
$GRID_HOME/bin/crsctl add ocr /dev/asm/ocr
$GRID_HOME/bin/crsctl add css votedisk /dev/asm/vote
配置文件管理
  • 创建或更新/etc/oraInst.loc文件
  • 在/etc/oratab中添加或更新数据库实例条目
  • 为RAC环境配置节点间通信
系统服务集成
  • 创建Systemd服务单元或init.d脚本
  • 注册Oracle Restart服务(单节点)或集群服务(RAC)
中央清单注册
  • 将新安装的软件注册到Oracle中央清单(oraInventory)
  • 更新库存依赖关系

二、脚本与oraInst.loc、oratab的关系

oraInst.loc处理
  • 首次安装时创建/etc/oraInst.loc
  • 后续安装时更新现有文件
  • 从$ORACLE_HOME/install/params.ini读取参数写入文件
oratab处理
  • 添加新数据库实例条目(格式:SID:ORACLE_HOME:AUTO)
  • 修改现有实例的ORACLE_HOME路径(升级时)
  • 移除已删除实例的条目
权限修复
  • 确保oraInst.loc和oratab有正确的所有权(root:oinstall)
  • 设置安全权限(640)
不执行root.sh的后果​:
  • 数据库实例无法自动启动
  • OPatch和DBCA工具无法识别安装
  • 集群资源无法管理
  • 后续补丁安装失败

三、oraInst.loc文件的功能与技术原理

文件结构和位置
# 标准格式
inventory_loc=/u01/app/oraInventory
inst_group=oinstall

# 位置:
/etc/oraInst.loc
核心功能
中央清单定位器
  • 指向Oracle中央清单目录(通常为/u01/app/oraInventory)
  • 存储所有Oracle产品的安装元数据
权限控制网关
  • 指定有权修改清单的操作系统组(通常为oinstall)
  • 控制哪些用户可以修改Oracle配置
安装协调器
  • 使多个Oracle产品(RDBMS, GI, Client)共享同一清单
  • 维护产品间的依赖关系
技术原理
目录结构
/u01/app/oraInventory
├── ContentsXML  # 包含inventory.xml
├── logs         # 安装日志
└── backups      # 清单备份

inventory.xml示例​ 

--XML
<HOME NAME="OraDB19Home" LOC="/u01/app/oracle/product/19c/dbhome_1" TYPE="O">
  <NODE_LIST>
    <NODE NAME="oracle-server1"/>
  </NODE_LIST>
</HOME>
工具交互机制
  • OUI(安装程序)​​:读取oraInst.loc → 更新inventory.xml
  • OPatch(补丁工具)​​:检查目标ORACLE_HOME是否在清单中注册
  • DBCA(数据库助手)​​:验证软件完整性
多产品协同

 

注意事项
文件完整性
  • 删除会导致后续安装失败
  • 损坏需从备份恢复或手动重建
权限安全
# 推荐权限
chown root:oinstall /etc/oraInst.loc
chmod 640 /etc/oraInst.loc
跨节点同步
  • RAC环境中需确保所有节点文件一致
  • 节点添加/删除时需手动更新

三、oratab文件的功能与技术原理

文件结构和位置
# 标准格式
ORCL:/u01/app/oracle/product/19c/dbhome_1:Y
+ASM:/u01/app/grid/19c:N

# 位置:
/etc/oratab
核心功能
实例注册表
  • 记录所有数据库实例的SID和ORACLE_HOME
  • 标记实例是否应自动启动(AUTO=Y/N)
启停控制中心
  • dbstart/dbshut脚本的配置文件
  • 控制实例的生命周期管理
多实例协调器
  • 支持单服务器运行多个独立实例
  • 支持RAC节点管理本地实例
技术原理
dbstart脚本工作逻辑

 

while read line; do
  if [ "Y" = $(echo $line | cut -d: -f3) ]; then
    ORACLE_SID=$(echo $line | cut -d: -f1)
    ORACLE_HOME=$(echo $line | cut -d: -f2)
    $ORACLE_HOME/bin/sqlplus / as sysdba <<EOF
      startup
      exit
EOF
  fi
done < /etc/oratab

与系统服务集成​

# Systemd服务示例
[Unit]
Description=Oracle DB auto-start
After=dbora.service

[Service]
Type=oneshot
ExecStart=/u01/app/oracle/product/19c/dbhome_1/bin/dbstart /u01/app/oracle/product/19c/dbhome_1
工具交互
  • DBCA​:创建/删除数据库时自动更新oratab
  • RMAN​:通过SID定位目标数据库
  • srvctl​:验证本地实例配置
注意事项
文件维护
  • 升级时需手动更新ORACLE_HOME路径
  • 实例删除后应移除对应条目
RAC环境特殊处理
# RAC节点配置示例
PRODCDB1:/u01/app/oracle/product/19c/dbhome_1:Y
PRODCDB2:/u01/app/oracle/product/19c/dbhome_1:Y
故障排查
  • 实例无法启动时检查:
    • AUTO标志是否为Y
    • ORACLE_HOME路径是否正确
    • 文件权限(推荐640)
 使用体验

​组件​

​核心功能​

​依赖关系​

​关键影响​

​root.sh​

完成安装后配置

创建/更新oraInst.loc和oratab

未执行导致功能不可用

​oraInst.loc​

中央清单定位和权限控制

OUI/OPatch/DBCA的基础

损坏导致安装/升级失败

​oratab​

实例注册和生命周期管理

dbstart/dbshut的配置源

错误配置导致实例无法自动启动

全链路工作流程​: 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值