十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
解决办法:
专注于为中小企业提供网站制作、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业平昌免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
重启
SQL shutdown abort
SQL startup
重启解决不了,检查日志是否能够切换
SQL alter system switch logfile;
3. 如果日志无法切换,检查是否开归档,一般日志无法切换都是由于开归档,归档默认在快速恢复区,快速恢复区满了造成。
使用RMAN删除归档日志,清理快速恢复区空间
rman target /
RMAN delete archivelog all;
我根据我遇到的相同问题整理的解决方法
问题场景:
在更新或插入等DML操作中,因网络中断或忘记提交,导致相同记录再次执行时感知为长时间无法执行成功。
解决方法:
一、code处理
1.再次执行相同记录的语句;
2.查询被阻塞的会话
SELECT l.session_id,o.owner,o.object_name, machine, s.sid, s.serial#,s.blocking_session
FROM v$locked_object l, dba_objects o, v$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid
AND s.blocking_session is not null;
3.根据被阻塞会话查找原会话信息
SELECT l.session_id, o.owner, o.object_name, machine, s.sid, s.serial#,s.sid||','||s.serial# kill_session
FROM v$locked_object l, dba_objects o, v$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid
AND s.sid = 759;
SELECT s.sid, s.serial#,s.sid||','||s.serial# kill_session FROM v$session s WHERE sid = 759;
4.杀死原会话
alter system kill session '759,18523';
二、PLSQL处理
原理与code处理一样,先找到现有会话,然后反推阻塞会话,最后将其杀死
1.查询被阻塞的会话,找到Blocking session
2.根据Blocking session查找原会话信息,直接点击kill杀会话
首先你要知道表锁住了是不是正常锁?因为任何DML语句都会对表加锁。
你要先查一下是那个会话那个sql锁住了表,有可能这是正常业务需求,不建议随便KILL
session,如果这个锁表是正常业务你把session
kill掉了会影响业务的。
建议先查原因再做决定。
(1)锁表查询的代码有以下的形式:
select
count(*)
from
v$locked_object;
select
*
from
v$locked_object;
(2)查看哪个表被锁
select
b.owner,b.object_name,a.session_id,a.locked_mode
from
v$locked_object
a,dba_objects
b
where
b.object_id
=
a.object_id;
(3)查看是哪个session引起的
select
b.username,b.sid,b.serial#,logon_time
from
v$locked_object
a,v$session
b
where
a.session_id
=
b.sid
order
by
b.logon_time;
(4)查看是哪个sql引起的
select
b.username,b.sid,b.serial#,c.*
from
v$locked_object
a,v$session
b,v$sql
c
where
a.session_id
=
b.sid
and
b.SQL_ID
=
c.sql_id
and
c.sql_id
=
''
order
by
b.logon_time;
(5)杀掉对应进程
执行命令:alter
system
kill
session'1025,41';
其中1025为sid,41为serial#.