Oracle服务管理需区分数据库实例(核心服务)和监听器(网络访问组件),以下是CentOS下的具体操作命令:
启动数据库实例:
切换至oracle用户(Oracle服务需用该用户运行),通过sqlplus工具执行启动命令:
su - oracle
sqlplus / as sysdba
SQL> startup;
若需强制启动(如数据库处于挂起状态),可使用startup force;。
停止数据库实例:
同样通过sqlplus执行停止命令,优先使用shutdown immediate(正常关闭,等待事务提交):
sqlplus / as sysdba
SQL> shutdown immediate;
紧急情况下可使用shutdown abort(强制关闭,可能导致数据不一致)。
重启数据库实例:
结合停止与启动命令,或直接使用shutdown immediate后startup。
启动监听器:
监听器负责接收客户端连接请求,启动命令:
lsnrctl start
启动后可通过lsnrctl status查看监听状态(需显示“READY”)。
停止监听器:
lsnrctl stop
若Oracle安装时创建了systemd服务文件(如oracle.service),可通过以下命令管理:
systemctl start oracle
systemctl stop oracle
systemctl restart oracle
systemctl enable oracle
systemctl status oracle
若系统使用SysV init,可通过/etc/init.d/oracle脚本管理:
service oracle start
service oracle stop
service oracle restart
管理后需确认服务是否正常运行,常用检查方法:
通过ps命令查看进程:
确认Oracle关键进程是否存在(如pmon、dbw0、lgwr):
ps -ef | grep ora_ | grep -v grep
正常应包含以下进程(以实例名CKDB为例):
ora_pmon_CKDB(进程监控)、ora_dbw0_CKDB(数据文件写入)、ora_lgwr_CKDB(日志文件写入)。
通过sqlplus查看实例状态:
登录sqlplus后执行:
SQL> select instance_name, status, database_status from v$instance;
结果应显示:STATUS='OPEN'(实例已打开)、DATABASE_STATUS='ACTIVE'(数据库处于活动状态)。
执行以下命令查看监听是否正常:
lsnrctl status
正常应显示“Services Summary”中包含数据库实例(如orcl),且状态为“READY”。
查看警告日志(alert_SID.log)是否有错误:
tail -n 100 /data/oracle/admin/CKDB/bdump/alert_CKDB.log | grep -i error
日志路径可通过lsnrctl status或sqlplus查询(show parameter background_dump_dest)。
为避免服务器重启后Oracle服务未启动,需配置开机自启:
/usr/lib/systemd/system/oracle.service):[Unit]
Description=Oracle Database Service
After=network.target
[Service]
Type=forking
User=oracle
Group=oinstall
ExecStart=/u01/app/oracle/product/19c/bin/dbstart $ORACLE_HOME
ExecStop=/u01/app/oracle/product/19c/bin/dbshut $ORACLE_HOME
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable oracle
编辑/etc/oratab文件,将实例对应的N改为Y(允许自动启动):
vi /etc/oratab
修改前:orcl:/u01/app/oracle/product/19c:N
修改后:orcl:/u01/app/oracle/product/19c:Y
将Oracle启动脚本加入chkconfig:
chkconfig --add oracle
chkconfig oracle on
oracle用户身份执行,避免权限不足导致失败。ORACLE_SID(实例名),如:export ORACLE_SID=CKDB
alert_SID.log和系统日志(/var/log/messages)定位问题。cp /usr/lib/systemd/system/oracle.service /usr/lib/systemd/system/oracle.service.bak)。通过以上步骤,可完成CentOS上Oracle服务的日常管理、状态检查及开机自启设置,确保数据库稳定运行。