确保我们能够访问oracle数据库包含两部分,一个是oracle实例,一个是监听,两个同时开启,我们才能正常的使用数据库,因此我们在关闭和启动oracle服务时,也需要同时操作实例和监听
查看
ps -ef|grep oracle
启动监听
su - oracle
lsnrctl start #启动监听,oracle下要有相应的环境变量
启动实例
sqlplus / as sysdba
startup
关闭监听
lsnrctl stop
关闭实例
sqlplus / as sysdba
shutdown immediate
直接使用shutdown immediate虽然是服务器主动断开连接但还是很慢,所以可以使用以下的步骤来:
1、关监听
ps aux |grep "LOCAL=NO" |awk '{printf "%s/n", $2}' |xargs kill -9
LOCAL=NO:非本地连接,即网络连接。它是通过Listener 连接到服务器的。客户端的应用通过客户端的监听向服务器的监听发送请求,服务器的监听接收后,在与数据库连接,执行相关操作,在把结果返回给客户端。这是通过监听的流程。 所以在客户端需要配置监听,即配置tnsnames.ora。
LOCAL=YES:本地连接。 本地连接不走监听,所以在服务监听没有启动的情况下,通过本地的sqlplus 还是可以连上数据库的。
2、断session
就是上面的kill -9
3、shutdown immediate
关闭后重启报错ORA-01012: not logged on
shutdown abort
这个方式很危险,还是推荐上面的查出oracle进程后手动去kill掉
原因:
shutdown immediate是一种安全的数据库关闭方式
但是注意,如果数据库系统繁忙,当前有大量事务执行(甚至是大事务正在处理),那么使用此选项关闭数据库也可能需要大量时间