没有办法不停止实例。当然可以使用oradebug suspand进程,但是一个循环之后,肯定还要停在那里。可以考虑先将table置于nologging状态,可以生成较少的redo,不过做完操作后需要全备。
公司专注于为企业提供成都做网站、成都网站设计、微信公众号开发、电子商务商城网站建设,小程序设计,软件定制网站制作等一站式互联网企业服务。凭借多年丰富的经验,我们会仔细了解各客户的需求而做出多方面的分析、设计、整合,为客户设计出具风格及创意性的商业解决方案,成都创新互联公司更提供一系列网站制作和网站推广的服务。
存储过程卡死了,一般是好几个人同时编译导致的,同时往一个表插数据等操作就会锁死此表。
select a.SID,a.SERIAL#,a.USERNAME
from sys.v_$session a,sys.dba_objects b,v$locked_object c
where b.object_id = c.OBJECT_ID
and a.SID = c.SESSION_ID
and b.object_name = '表名';
用上面 的语句找到存储过程中主要用插入表的sid 和SERIAL#
然后用下面的语句杀掉。
alter system kill session 'sid ,SERIAL#';
如果杀不掉的话,等所有人释放,或者从启服务。
试试用系统管理员登录Oracle Enterprise Manager Console,干掉存储过程的session看可以不
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#',用于停止这个回话,同时也终止了存储过程