1、设置oracle用户的环境变量信息
oracle@OracleLinuxR9U5 \~\]$vim \~/.bash_profile ```bash # Set Oracle environment variables for Oracle 23c AI export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree export ORACLE_SID=FREE export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export TNS_ADMIN=$ORACLE_HOME/network/admin export NLS_LANG=SIMPLIFIED_CHINESE_CHINA.AL32UTF8 ``` ### 2. 创建 systemd 服务文件 为 Oracle 数据库和监听器分别创建 systemd 服务文件。 #### 2.1 数据库服务文件 创建文件 /etc/systemd/system/oracle-db.service: ```bash [root@OracleLinuxR9U5 dbhomeFree]# touch /etc/systemd/system/oracle-db.service [root@OracleLinuxR9U5 dbhomeFree]# vim /etc/systemd/system/oracle-db.service ``` ```bash [Unit] Description=Oracle Database 23c AI Instance After=network.target [Service] Type=forking User=oracle Group=oinstall Environment="ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree" Environment="ORACLE_SID=FREE" ExecStart=/opt/oracle/product/23ai/dbhomeFree/bin/dbstart $ORACLE_HOME ExecStop=/opt/oracle/product/23ai/dbhomeFree/bin/dbshut $ORACLE_HOME TimeoutSec=300 Restart=on-failure [Install] WantedBy=multi-user.target ``` ### 2.2 监听器服务文件 创建文件 /etc/systemd/system/oracle-lsnrctl.service: ```bash [root@OracleLinuxR9U5 dbhomeFree]# touch /etc/systemd/system/oracle-lsnrctl.service [root@OracleLinuxR9U5 dbhomeFree]# vim /etc/systemd/system/oracle-lsnrctl.service ``` ```bash [Unit] Description=Oracle Listener Control After=network.target [Service] Type=forking User=oracle Group=oinstall Environment="ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree" ExecStart=/opt/oracle/product/23ai/dbhomeFree/bin/lsnrctl start ExecStop=/opt/oracle/product/23ai/dbhomeFree/bin/lsnrctl stop TimeoutSec=300 Restart=on-failure [Install] WantedBy=multi-user.target ``` ### 3. 修改 dbstart 和 dbshut 脚本 确保 dbstart 和 dbshut 脚本能够正确识别 ORACLE_HOME 和 ORACLE_SID。通常不需要修改,但可以检查以下内容: 在 $ORACLE_HOME/bin/dbstart 和 $ORACLE_HOME/bin/dbshut 中,确保没有硬编码的 ORACLE_HOME 或 ORACLE_SID。 确保 /etc/oratab 文件中包含正确的实例信息,例如: ```bash [root@OracleLinuxR9U5 ~]#vim /etc/oratab ``` ```bash FREE:/opt/oracle/product/23ai/dbhomeFree:Y ``` ### 4. 重新加载 systemd 配置 ```bash 执行以下命令重新加载 systemd 配置并启用服务: [root@OracleLinuxR9U5 ~]#sudo systemctl daemon-reload [root@OracleLinuxR9U5 ~]#sudo systemctl enable oracle-db.service [root@OracleLinuxR9U5 ~]#sudo systemctl enable oracle-lsnrctl.service ``` ### 5. 测试服务 启动并检查服务状态: ```bash [root@OracleLinuxR9U5 ~]#sudo systemctl start oracle-db.service [root@OracleLinuxR9U5 ~]#sudo systemctl start oracle-lsnrctl.service [root@OracleLinuxR9U5 ~]#sudo systemctl status oracle-db.service [root@OracleLinuxR9U5 ~]#sudo systemctl status oracle-lsnrctl.service [root@OracleLinuxR9U5 ~]#sudo systemctl stop oracle-db.service [root@OracleLinuxR9U5 ~]#sudo systemctl stop oracle-lsnrctl.service ```