扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
如果想正常关闭,那么最好是:先手动断开所有数据库连接(外部链接,比如访问等),关闭监听(防止再次产生外部链接),然后杀掉所有正在执行的数据库进程(数据库内部的一些,比如正在执行的执行计划等,主进程别杀啊),然后关闭外围服务,最后再用immediate关闭数据库。这样能快一些,而且相对而言数据库会正常,不会因为断开外部链接,等待进程结束等问题等待时间超长。,当然也只是快一些而已,如果数据库很大,那么还是会很慢。
站在用户的角度思考问题,与客户深入沟通,找到三亚网站设计与三亚网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、成都做网站、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网络空间、企业邮箱。业务覆盖三亚地区。
其他的shutdown abort,也是一个关闭数据库的方法,不过oracle本身也不推荐,因为每次abort后数据库可能会有这样那样的问题。
再baoli一些的,就是直接关机器,关电源了。
1. 在V$ACCESS视图中找到要停止进程的SID:
SELECT SID FROM V$ACCESS WHERE NAME='存储过程名称';
2. 在V$SESSION视图中查找到查出SID和SERIAL#
SELECT SID,SERIAL#,FROM V$SESSION WHERE SID='刚才查到的SID'。
3.杀掉查找出来的进程
alter system kill session 'SID,SERIAL#' immediate;
解释:进程都有唯一的进程id(SID)和序列号(SERIAL#),之后通过kill命令即可强制停止进程。
在服务中关闭:
OracleOracle_homeTNSListener 对应于数据库的监听程序
OracleServiceSID 对应于数据库的例程
OracleDBConsoleSID 对应于Oracle Enterprise Manager(OEM)
其中,Oracle_home表示Oracle主目录,如Oracle11g_home1;SID表示Oracle系统标识符,如OracleServiceMAG01的MAG01。
比较好的启动顺序是:OracleOracle_homeTNSListener,OracleServiceSID,OracleDBConsoleSID。
关闭时次序相反。
下面给出了自己写的已经排好顺序的启动和停止服务的两个批处理文件:
//启动Oracle
Start Oracle.bat
@echo off
echo 确定要启动Oracle 11g服务吗?
pause
net start OracleOraDb11g_home1TNSListener
net start OracleServiceMAG01
net start OracleDBConsolemag01
echo 启动Oracle 11g服务完成,请确认有没有错误发生。
Pause
//关闭Oracle
Stop Oracle.bat
@echo off
echo 确定要停止Oracle 11g 服务吗?
pause
net stop OracleDBConsolemag01
net stop OracleServiceMAG01
net stop OracleOraDb11g_home1TNSListener
echo 停止Oracle 11g服务完成,请确认有没有错误发生。
Pause
select * from v$access a where object like '存储过程名%' --存储过程名为大写字母
select * from v$session where sid=74 --74为上一个查询得到的SID值,可能是多个,这里找到他们对应的serial#值
alter system kill session '74,118' --参数为'sid,serial#',用于停止这个回话,同时也终止了存储过程
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流