场景
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进程。