【LinuxOracle】ORA-00031:标记要终⽌的会话解决
在PL/SQL操作了⼀条delete语句⽤于删除这张1.4亿条数据的表,执⾏了12个⼩时还没删完
(经DB指导,量级⼤的需要使⽤truncate table table_name 进⾏删除)
--查询当前进程
SELECT l.session_id sid,
s.serial#,
l.locked_mode 锁模式,
l.os_user_name 登录机器⽤户名,
s.machine 机器名,
o.object_name 被锁对象名,
s.logon_time 登录数据库时间
FROM v$locked_object l, all_objects o, v$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid
ORDER BY sid, s.serial#;
查询发下 SID为962的对象被锁了
尝试使⽤ alter system kill session 'SID,SERTAL'; 杀掉会话进程
alter system kill session '962,23413';
提⽰了 ORA-00031: 标记要终⽌的会话
经查:如果出现题⽬的错误,则说明在数据库级不能杀掉该死锁进程,需要到操作系统级来处理了。如下图所⽰:
①可以通过下列语句查询:
select a.spid,b.sid,b.serial#,b.username
from v processa,v session b
where a.addr=b.paddr
and b.status='KILLED';
②如果利⽤上⾯的命令杀死⼀个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在OS级再杀死相应的进程(线程),⾸先执⾏下⾯的语句获得进程(线程)号:
select b.spid,a.osuser,b.program
from v sessiona,v process b
where a.paddr=b.addr
and a.sid=962 --962就是上⾯的sid
[root@crb-db1 ~]# su - oracle --切换到oracle ⽤户
Last login: Thu Jun 10 10:59:03 CST 2021 on pts/0
[oracle@crb-db1 ~]$ ps -ef | grep smon --SMON(system monitor process)系统监控后台进程
--ps命令将某个进程显⽰出来
--grep命令是查
--中间的|是管道命令是指ps命令与grep同时执⾏
--grep命令是查,是⼀种强⼤的⽂本搜索⼯具,它能搜索⽂本,并把匹配的⾏打印出来。
--grep全称是Global Regular Expression Print,表⽰全局正则表达式版本,它的使⽤权限是所有⽤户。oracle10g程序异常终止
--select * from v$session where sid=962; 根据sid查addr
--select * from v$process where addr='0000000508DF6488' 查pid
UID :程序被该 UID 所拥有
PID :就是这个程序的 ID
PPID :则是其上级⽗程序的ID
C :CPU使⽤的资源百分⽐
STIME :系统启动时间
TTY :登⼊者的终端机位置
TIME :使⽤掉的CPU时间。
CMD :所下达的是什么指令
UID PID PPID C STIME TTY TIME CMD
oracle 1819 1779 0 12:59 pts/1 00:00:00 grep --color=auto smon
oracle 10125 1 0 2020 ? 00:15:06 ora_smon_orcl
[oracle@crb-db1 ~]$ ps -ef | grep 55754 --55754 即第②步根据SID查询出的spid
oracle 1821 1779 0 12:59 pts/1 00:00:00 grep --color=auto 55754
oracle 55754 1 1 Jun09 ? 00:16:26 oracleorcl (LOCAL=NO)
[oracle@crb-db1 ~]$ kill -9 55754
[oracle@crb-db1 ~]$
[oracle@crb-db1 ~]$ ^C
[oracle@crb-db1 ~]$ timed out waiting for input: auto-logout
[root@crb-db1 ~]# timed out waiting for input: auto-logout
Socket close.
Connection closed by foreign host.
成功解决
Processing math: 100%
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论