Chinaunix首页 | 论坛 | 博客
  • 博客访问: 423500
  • 博文数量: 148
  • 博客积分: 3191
  • 博客等级: 中校
  • 技术积分: 1232
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-11 15:25
文章分类

全部博文(148)

文章存档

2011年(148)

我的朋友

分类: Oracle

2011-08-19 10:49:38

1、查询被锁的语句,解锁

2、删除基本表数据时间过长分析

 

 

1、查询被锁的语句,解锁

查询锁

SELECT /*+ rule */ s.username,

decode(l.type,'TM','TABLE LOCK',

'TX','ROW LOCK',

NULL) LOCK_LEVEL,

o.owner,o.object_name,o.object_type,

s. s.terminal,s.machine,s.program,s.osuser

FROM v$session s,v$lock l,dba_objects o

WHERE l.sid = s.sid

AND l.id1 = o.object_id(+)

AND s.username is NOT NULL

 

清除锁(其中1900SID,5768serial#

Alter system kill session '1900,5768'

其中

Aowner, object_name需要开发部门确认,防止删除错误;

Bterminal,machine记住,有时由于程序设计上一些问题,解锁后,又有用户登录上锁住,需要去现场找到机器,并重启才行

Csid,serial#用于解锁

Dprogram可以查出是什么程序导致锁,平时需记录这些程序

 

 

2、删除基本表数据时间过长分析

运行以下语句删除数据,先确认在此表用户下运行

delete from t_zj_apply_basic where substr(delecode,1,1) in ('8','9')

   and delecode not in ('93801','93802')

   and substr(delecode,1,3)>'898' and substr(delecode,1,3)<'998'

  

发现删除时间很久,我们查询下符合删除数据有多少条

   select count(*) from t_zj_apply_basic where substr(delecode,1,1) in ('8','9')

   and delecode not in ('93801','93802')

   and substr(delecode,1,3)>'898' and substr(delecode,1,3)<'998'

 

查询要删除数据的基本表数据量

   select count(*) from t_zj_apply_basic

 

在看看表t_zj_apply_basic是否与其他表相关联过于多

关联视图过多,并且视图嵌套复杂(多层嵌套),在删除数据时候,视图也要相应更改,造成时间消耗大

desc newzj.t_zj_apply_basic

阅读(597) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~