场景

oracle数据库突然宕机了,需要去服务器启动数据库。

解决方案

错误尝试

以前没弄过,先来波错误操作:

systemctl restart oracle; # 惯性操作。 提示Failed to restart oracle.service: Unit not found.
rpm -qa oracle ; # 还是没找到
yum list installed | grep oracle ; # 还是没找到

再来波错误尝试:

sqlplus / as sysdba;  # 提示 -bash: sqlplus: command not found

正确过程

向dba请教,才知道要切换到oracle用户,走起:

cat /etc/passwd ;   # 查看用户文件,找到oracle用户
su - oracle # 切换到oracle用户
sqlplus / as sysdba # sysdba身份登录
startup # 启动

大功告成了么? 看看端口:

netstat -nltp | grep 1521  #

端口居然没打开,原来是还要启动监听,继续:

exit  # 退出oracle命令行
cd $ORACLE_HOME/bin # 进入oracle/bin目录
lsnrctl start # 启动监听

查看端口,已打开,完成。

如果关机呢

cat /etc/passwd ;   # 查看用户文件,找到oracle用户
su - oracle # 切换到oracle用户
sqlplus / as sysdba # sysdba身份登录
shutdown immediate # 立刻关闭
然后用start重启即可。 过程中不用操作监听器,因为我netstat看了下,1521是一直开启的。
lsnrctl stop # 关闭监听器

shutdown immediate 没反应

方案一:shutdown abort

# 慎用,即使正在运行中的sql也会被终止。
shutdown abort
一般会很快返回 ORACLE instance shut down. 表示已经停止了。

方案二:
kill 掉oracle进程。