ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener

本文介绍如何编辑Oracle的dbstart与dbshut文件,以实现通过dbstart脚本启动标记为Y的实例,并提供了具体的修改步骤及注意事项。
 

编辑dbstart与dbshut文件

  • vim $ORACLE_HOME/bin/dbstart
    ORACLE_HOME_LISTENER=$1替换为ORACLE_HOME_LISTENER=$ORACLE_HOME
  • vim $ORACLE_HOME/bin/dbstart
    ORACLE_HOME_LISTENER=$1替换为ORACLE_HOME_LISTENER=$ORACLE_HOME

注意事项

dbstart启动的是/etc/oratab中标记为Y的实例,因此要想通过dbstart启动oracle实例,就需要在/etc/oratab文件中将第三个字段的值改为Y

 

 

转载于:https://www.cnblogs.com/yldf/p/7978704.html

<think>好的,我现在需要帮助用户解决Oracle在Linux系统下的开机自启配置问题。用户提到ORACLE_HOME是/opt/oracle/product/11.2.0/dbhome_1,并且希望知道oracle.service文件的位置以及完整的配置流程。首先,我需要回顾之前提供的配置流程,并结合用户这次的具体环境变量进行调整。 首先,用户之前的回答中已经提到了服务文件的位置是/etc/systemd/system/oracle.service,这个路径是标准的systemd服务文件存放位置,所以应该保持不变。接下来需要调整的是服务文件中的ORACLE_HOME路径,用户现在指定的是更具体的路径,即/opt/oracle/product/11.2.0/dbhome_1,因此需要确保在服务文件的Environment变量和ExecStart、ExecStop命令中使用这个新路径。 然后,用户引用了几个站内的引用,其中提到了安装Oracle时可能遇到的错误,比如ins_emagent.mk的目标错误、共享库加载问题、监听器配置问题等。这些引用可能涉及到环境变量设置、库文件路径配置以及监听器文件的正确性。因此,在配置开机自启时,需要确保这些潜在问题已经解决,否则即使服务配置正确,启动时仍可能失败。 接下来,我需要检查用户提供的引用内容,看看是否有需要特别注意的地方。例如,引用[2]提到libclntsh.so.11.1找不到的问题,这通常是因为LD_LIBRARY_PATH环境变量没有正确设置,包含ORACLE_HOME/lib目录。因此,在配置服务文件时,必须确保环境变量正确导出,或者在服务文件中显式设置这些变量。 另外,引用[3]和[5]涉及到监听器配置文件listener.ora的位置和配置,用户需要确保该文件存在于正确的路径下,即$ORACLE_HOME/network/admin/listener.ora。在启动过程中,如果监听器无法启动,可能会导致服务启动失败,因此需要确认监听器配置正确,并且在dbstart脚本中正确引用ORACLE_HOME。 用户之前的问题中已经提到需要修改dbstart脚本中的ORACLE_HOME_LISTNER变量,这里需要再次确认,当ORACLE_HOME路径改变后,这个变量是否也需要相应调整。例如,原路径是/opt/oracle,现在改为/opt/oracle/product/11.2.0/dbhome_1,所以需要修改dbstart脚本中的对应行,确保ORACLE_HOME_LISTNER=$ORACLE_HOME。 此外,用户引用的错误中还包括OC4J_DBConsole的问题(引用[4]),这可能与数据库控制台配置有关,但在开机自启配置中可能不直接相关,不过如果用户启用了EM(Enterprise Manager),则需要确保相关服务也正确配置。不过根据用户当前的问题,主要关注的是数据库实例和监听器的自启,因此可能暂时不需要处理这部分。 现在,结合这些信息,我需要调整之前的配置流程,将ORACLE_HOME替换为新的路径,并确保所有相关脚本和环境变量都正确指向该路径。同时,需要再次强调环境变量的设置,尤其是在服务文件中显式定义ORACLE_HOME和LD_LIBRARY_PATH,以避免共享库找不到的问题。 最后,用户可能需要验证配置的正确性,包括检查服务状态、监听器状态以及日志信息,确保没有遗留问题。此外,用户提供的引用中的错误解决方案可以作为故障排查的参考,帮助用户解决可能出现的启动问题。</think>#### Oracle 11.2 开机自启配置(基于 `ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1`) --- ##### 一、服务文件路径与核心配置 **服务文件位置**: `/etc/systemd/system/oracle.service` (需手动创建,适用于 **Oracle 11g R2**) --- ##### 二、完整配置流程(适配 11.2.0 版本) ###### 1. 创建 systemd 服务文件(需 root 权限) ```bash sudo vi /etc/systemd/system/oracle.service ``` ###### 2. 编写服务文件内容(关键参数) ```ini [Unit] Description=Oracle 11g Database Service After=network.target [Service] Type=forking Environment="ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1" Environment="LD_LIBRARY_PATH=$ORACLE_HOME/lib" ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOME ExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOME User=oracle Group=oinstall Restart=on-failure [Install] WantedBy=multi-user.target ``` **关键配置说明**: - `Environment="LD_LIBRARY_PATH=..."`:显式声明库路径,规避 *libclntsh.so.11.1* 报错[^2] - `Type=forking`:强制指定 Oracle 以守护进程模式启动[^1] ###### 3. 配置 Oracle 用户环境变量 ```bash su - oracle vi ~/.bash_profile # 添加以下内容 ``` ```bash export ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH ``` **生效配置**: ```bash source ~/.bash_profile ``` ###### 4. 修改 dbstart 脚本(解决监听器启动问题) ```bash cd /opt/oracle/product/11.2.0/dbhome_1/bin sudo vi dbstart ``` **修改关键变量**: ```bash # 原内容 ORACLE_HOME_LISTNER=$1 # 修改为 ORACLE_HOME_LISTNER=$ORACLE_HOME ``` (确保监听器使用正确的 `ORACLE_HOME` 路径[^3][^5]) ###### 5. 验证监听器配置 检查监听器配置文件路径: ```bash ls $ORACLE_HOME/network/admin/listener.ora ``` **预期输出**: `/opt/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora` ###### 6. 设置开机自启 ```bash sudo systemctl daemon-reload sudo systemctl enable oracle.service sudo systemctl start oracle.service ``` --- ##### 三、关键验证步骤 1. **服务状态检查**: ```bash systemctl status oracle.service | grep -E "Loaded|Active" ``` **预期输出**: ``` Loaded: loaded (/etc/systemd/system/oracle.service; enabled) Active: active (running) ``` 2. **监听器状态验证**: ```bash lsnrctl status ``` **预期输出**: ``` LISTENER status: READY ``` 3. **数据库连接测试**: ```bash sqlplus / as sysdba ``` **预期行为**:成功进入 SQL*Plus 命令行[^2] --- ##### 四、故障排查指南 | 常见问题 | 解决方案 | |------------------------------|--------------------------------------------------------------------------| | **dbstart 脚本报错** | 检查 `dbstart` 中 `ORACLE_HOME_LISTNER` 是否指向 `/opt/oracle/product/11.2.0/dbhome_1`[^3] | | **libclntsh.so.11.1 缺失** | 确认 `LD_LIBRARY_PATH` 包含 `$ORACLE_HOME/lib`,并在服务文件中显式声明[^2] | | **监听器未启动** | 检查 `$ORACLE_HOME/network/admin/listener.ora` 文件是否存在且配置正确[^5] | --- ##### 五、高级注意事项 1. **多实例支持**: 若存在多实例,需为每个实例创建独立服务文件(如 `oracle_ORCL.service`),并修改 `ORACLE_SID` 参数。 2. **日志定向**: 在 `oracle.service` 中添加日志输出配置: ```ini StandardOutput=journal StandardError=journal ``` --- #### 相关问题 1. 如何通过 `journalctl` 查看 Oracle 11g 的详细启动日志? 2. 在 Oracle 11g 中如何手动重建损坏的监听器配置? 3. 如何验证 `LD_LIBRARY_PATH` 是否在 systemd 服务中正确加载? [^1]: `Type=forking` 确保 Oracle 以守护进程模式运行,需配合 `dbstart` 返回正确的进程号 [^2]: 引用[2]显示,缺失 `LD_LIBRARY_PATH` 会导致共享库加载失败,必须显式声明 [^3]: 根据引用[3][5],监听器配置文件路径必须与 `ORACLE_HOME` 严格匹配 [^5]: 引用[5]强调 `listener.ora` 文件应位于 `$ORACLE_HOME/network/admin/`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值