CentOS 上 Oracle 数据库的启动与开机自启配置
一、准备与环境检查
su - oracleecho $ORACLE_HOME、echo $ORACLE_SID、which sqlpluslsnrctl status(未运行则 lsnrctl start)sqlplus / as sysdba 后执行 startup(如需关闭用 shutdown immediate)二、手动启动与停止步骤
lsnrctl startsqlplus / as sysdbastartup(关闭用 shutdown immediate)emctl start dbconsoleemctl stop dbconsolelsnrctl status 应看到监听地址与端口(如 TCP:1521)select status from v$instance; 应返回 OPEN。三、配置开机自启动(推荐 systemd 方式)
sudo vi /etc/orataborcl:/u01/app/oracle/product/19.0.0/dbhome_1:Ysudo vi /usr/lib/systemd/system/oracle.service[Unit]
Description=Oracle Database Service
After=network.target
[Service]
Type=forking
User=oracle
Group=oinstall
Environment="ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1"
Environment="ORACLE_SID=orcl"
ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart $ORACLE_HOME
ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut $ORACLE_HOME
TimeoutSec=300
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reloadsudo systemctl enable oracle.servicesudo systemctl start oracle.service、sudo systemctl status oracle.servicedbstart/dbshut 时,需确保 /etc/oratab 中对应实例第三字段为 Y,否则不会随服务启动。dbstart 默认行为或按下一节修改脚本使其一并启动监听。四、可选优化与常见问题
$ORACLE_HOME/bin/dbstart 与 $ORACLE_HOME/bin/dbshutORACLE_HOME_LISTNER=$1 修改为 ORACLE_HOME_LISTNER=$ORACLE_HOME/etc/init.d/oracle 中封装 dbstart/dbshut 与 lsnrctl 调用,设置可执行:chmod +x /etc/init.d/oraclechkconfig --add oracle、chkconfig oracle onln -s /etc/init.d/oracle /etc/rc0.d/K01oracle、ln -s /etc/init.d/oracle /etc/rc6.d/K01oracle$ORACLE_HOME/network/admin/listener.ora、tnsnames.oraLISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
)
)
lsnrctl stop → lsnrctl start(或 lsnrctl reload)并 lsnrctl status 验证。firewall-cmd --add-port=1521/tcp --permanent && firewall-cmd --reload