昨天的时候,发现几个表被锁住了,
我用
select s.sid,s.machine,o.object_name,l.oracle_username,l.locked_mode,
'ALTER SYSTEM KILL SESSION '''||s.sid||', '||s.serial#||''';' Command
from v$locked_object l,v$session s,all_objects o
where l.session_id=s.sid and l.object_id=o.object_id;
这条语句查了一下,sid显示是478,机器名是A001。
我看了一下session里,sid为478的session状态是inactive,从locks里(pl/sql)里也看到未锁任何表。然后我就在session里,右键,kill,kill完了以后,过了一会儿,session里就没有sid为478的记录了。
但我用上面的SQL语句查,这几个表还是被锁着的,sid还是显示为478。我想,有可能sessoin被kill后,要等一段时间才会把锁的表释放掉,因此我就又等了二十分钟,结果SQL语句执行出来,还是被锁,对这些表进行增删改操作也还是不行。
我到服务器上,执行alter system kill session 要。sid 478, s.serial#12345,告诉我说是sid为478的session已经不存在了。这几张表很关键,直接影响现场操作,因此我当时只好重启服务器了。我用的数据库是10.2.0.1.0,哪位大虾指点一下呀,以后碰到这种情况,怎么样才能把这些锁的表释放出来呀?
我用
select s.sid,s.machine,o.object_name,l.oracle_username,l.locked_mode,
'ALTER SYSTEM KILL SESSION '''||s.sid||', '||s.serial#||''';' Command
from v$locked_object l,v$session s,all_objects o
where l.session_id=s.sid and l.object_id=o.object_id;
这条语句查了一下,sid显示是478,机器名是A001。
我看了一下session里,sid为478的session状态是inactive,从locks里(pl/sql)里也看到未锁任何表。然后我就在session里,右键,kill,kill完了以后,过了一会儿,session里就没有sid为478的记录了。
但我用上面的SQL语句查,这几个表还是被锁着的,sid还是显示为478。我想,有可能sessoin被kill后,要等一段时间才会把锁的表释放掉,因此我就又等了二十分钟,结果SQL语句执行出来,还是被锁,对这些表进行增删改操作也还是不行。
我到服务器上,执行alter system kill session 要。sid 478, s.serial#12345,告诉我说是sid为478的session已经不存在了。这几张表很关键,直接影响现场操作,因此我当时只好重启服务器了。我用的数据库是10.2.0.1.0,哪位大虾指点一下呀,以后碰到这种情况,怎么样才能把这些锁的表释放出来呀?
解决方案 »
- oracle 用expdp导出数据时使用exclude方法报错100分求大神解救
- Oracle安装
- ora-06512,ora-04088错误
- Oracle存储过程捕获异常
- imp问题,在线等.急
- 请大家帮忙:我在Oracle9i建库的时候到46%的时候就会出现错误,错误提示为:ORA-12571:TNS:包写入程序失败,请大虾指教!
- 丢了SYSDBA身份的SYSTEM密码后,有办法挽回吗?
- 怎样在程序中得到oracle查询出来的结果?
- 请问怎样查看数据库中哪些表是分区表?
- 这段代码有错吗大家帮看看
- 不显示删除回复显示所有回复显示星级回复显示得分回复 关于dbms_session.set_context无权限调用的问题,解决此问题50元RMB
- 如何让这条语句用上索引?
acc.table_name,
acc.CONSTRAINT_NAME,
acc.COLUMN_NAME,
acc.POSITION,
'No Index' Problem
from dba_cons_columns acc, dba_constraints ac
where ac.CONSTRAINT_NAME = acc.CONSTRAINT_NAME
and ac.CONSTRAINT_TYPE = 'R'
and acc.OWNER = 'NBGL' --这里是你的用户名
and not exists (select 'TRUE'
from dba_ind_columns b
where b.TABLE_OWNER = acc.OWNER
and b.TABLE_NAME = acc.TABLE_NAME
and b.COLUMN_NAME = acc.COLUMN_NAME
and b.COLUMN_POSITION = acc.POSITION)
order by acc.OWNER, acc.CONSTRAINT_NAME, acc.COLUMN_NAME, acc.POSITION
a.sid,
'is blocking',
(select username FROM v$session WHERE sid=b.sid) blockee,
b.sid
FROM v$lock a, v$lock b
WHERE a.block = 1
AND b.request > 0
AND a.id1 = b.id1
AND a.id2 = b.id2
/杀死这些session就ok了
这些被锁的表没有使用任何外键,也没有建任何的bitmap索引的。
在os层面已经没有对应的process了,怎么kill哇?