A-speed

每个人都是🏆
  新随笔  :: 管理

oracle 启动设置配置

Posted on 2026-03-17 14:19  a-speed  阅读(3)  评论(0)    收藏  举报

第一步:修改 /etc/oratab 文件

这是 Oracle 自带的服务管理脚本(dbstart)读取配置的关键文件。

  1. 使用 root 用户编辑文件:
    vi /etc/oratab
  1. 找到对应数据库实例的行。格式通常为:
    ORACLE_SID:ORACLE_HOME:N

     *例如:*

    orcl:/u01/app/oracle/product/19.3.0/dbhome_1:N
  1. 将最后的 N (No) 改为 Y (Yes),表示允许开机启动。
    orcl:/u01/app/oracle/product/19.3.0/dbhome_1:Y
  1. 保存并退出 (:wq)。

第二步:创建 systemd 服务文件

我们需要创建一个服务单元文件,让 systemd 来管理 Oracle 数据库和监听器。

  1. 创建服务文件:
    vi /etc/systemd/system/oracle-rdbms.service
  1. 写入以下内容(注意:请务必修改 UserGroupORACLE_HOME 和 ORACLE_SID 为您的实际配置):
 
    [Unit]
    Description=Oracle Database Service
    # 依赖网络和远程文件系统(如NFS),确保网络就绪后再启动
    After=network-online.target remote-fs.target
    Wants=network-online.target

    [Service]
    Type=forking
    # 运行 Oracle 的操作系统用户
    User=oracle
    Group=oinstall
    
    # 定义环境变量(请根据实际路径修改)
    Environment="ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1"
    Environment="ORACLE_SID=orcl"
    Environment="PATH=/usr/local/bin:$ORACLE_HOME/bin:$PATH"
    Environment="LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH"

    # 启动命令:使用 dbstart 启动所有在 oratab 中标记为 Y 的实例和监听器
    # 参数 $ORACLE_HOME
    ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.3.0/dbhome_1
    # 停止命令:使用 dbshut 停止
    ExecStop=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbshut /u01/app/oracle/product/19.3.0/dbhome_1

    # 重启策略:如果服务意外退出,不自动重启(避免数据损坏风险,数据库通常有自我保护机制)
    Restart=no

    # 安全加固设置(可选,防止服务获得过多权限)
    # PrivateTmp=yes

    [Install]
    # 设置为多用户模式下启动
    WantedBy=multi-user.target
  1. 保存并退出。

第三步:重载 systemd 并启用服务

  1. 通知 systemd 重新加载配置文件:
    systemctl daemon-reload
  1. 设置开机自启动:
    systemctl enable oracle-rdbms.service
  1. 手动启动服务以测试配置是否正确:
    systemctl start oracle-rdbms.service

      注意:如果启动失败,请查看日志 journalctl -xe 或检查路径权限。

  1. 检查服务状态:
    systemctl status oracle-rdbms.service

第四步:验证自启动

最稳妥的验证方式是重启操作系统:

reboot

重启后,以 root 用户登录,检查服务状态和数据库进程:

# 检查 systemd 服务状态
systemctl status oracle-rdbm
# 检查 Oracle 进程是否存在
ps -ef | grep smon
# 或者切换到 oracle 用户查询
su - oracle -c "sqlplus / as sysdba"