研讨linux下C/C++,GTK,Shell,Oracle

(原创)解决ORACLE数据库中被锁的进程

上一篇 / 下一篇  2007-12-12 19:17:15 / 个人分类:Oracle

                                  解决ORACLE数据库中被锁的进程Linux宝库%E2r@|~9Z&b4J

最近开发遇到一个问题,由于数据量比较大,所以执行一条SQL语句可能死住,数据库忙的话,就会将当前的数据库进程锁住,而就执行这样的一条SQL语句就死住,select * from ac20,这个表里面的数据量达到了2亿3千万条数据,所以,写存储过程的时候,就是尽量避开这个表,通过别的方式去取相应的数据.Linux宝库MLfAC;{&BI

好了,怎么去解决被锁住的数据库进程?如果在WINDOWS下的可以打开PL/SQL,简单的方法就是在TOOLS菜单中打开SESSION,就可以看到你登录在你所在的数据库服务器所有SESSION,但这样只能看到各个数据库进程所在的状态,但看不到由于什么原因导致被锁。Linux宝库'o ^/[0[6Vc#d

下面通过下列的命令去完成,这些命令同时也适用于LINUX系统下的ORACLE,由于本人现在的操作系统是WINDOWS,暂时就在WINDOWS下去完成吧!

he\^-e']0

注:所有的操作都是一个ORACLE客户端,开发也不可能在数据库服务器上开发。只要你具有杀数据库进程的一个权限就OK了。Linux宝库Yc8M|(g

一)select * from v$session ;

3k3x8S[RUVI0

可以看到所有当前的SESSIONLinux宝库_.PB'_3L

二)select * from v$lock;

"mz6C v_+y9N0

显示当前被锁的数据库进程Linux宝库'C(}9H4r1^ y%P(y2@`

例如:我们看一下下面的一条被锁的数据库进程。Linux宝库 Nqmq#t.f

SELECT * FROM V$LOCK  WHERE SID IN (SELECT SID  FROM V$SESSION WHERE USERNAME='TJCS' ) ;

!c6]b!s:fg1Vo0

 Linux宝库?@0b0Pq

ADDR             KADDR           SID  TYPE     ID1        ID2      LMODE    REQUEST      CTIME      BLOCK

4AF3w2}-l T T0

---------------- ---------------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------

_HFe2? _Dj n?0

07000002044C2730 07000002044C2750    86   TX      188231     3714          0          4          173912          0

)rmZE.m G1|LT0

三)       select * from dba_objects where object_id = ‘a’;Linux宝库5t'yw{ZM

其中:a 代表从第二步中得到的一个ID1Linux宝库5Dx3Q%r R

select * from dba_objects where object_id = '188231';Linux宝库 dZ-_ v3l

 

K q-h@or3k N.|T0

OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED  LAST_DDL_TIME TIMESTAMP           STATUS  TEMPORARY GENERATED SECONDARY

zA hZq![U5D |0

------------------------------ -------------------------------------------------------------------------------- ------------------------------ ---------- -------------- ------------------- ----------- ------------- ------------------- ------- --------- --------- ---------Linux宝库w:j7gFO&h+dw

TJCS  RC01_1_1   188231    188231  TABLE   2007-11-26  2007-12-6 9:1 2007-12-06:09:17:38 VALID   N     N      N

dc P$Tb$P,s!m0

我们可以看出,是操作表RC_01_1_1这个表出的问题。Linux宝库(q#w R rR@

四)       现在让我们来把改进程杀掉。Linux宝库9ZvQ'b K5vj

Alter system kill session ‘a,b’

t&f A7Rn v0

其中:a,代表select * from v$session 得到的SID;b则为SERIAL#

;]#S,HyMr0

Select * from v$session where sid=’ 86’;

M/Z9nphJr0

SADDR                             SID     SERIAL#   AUDSID  ………..Linux宝库7n2E)l-E1b0~%L Q$M

――――――――――――――――――――――――――――――Linux宝库wSJ2Y/Vx q@

070000020237C6D0         86       4307       4453119   ………Linux宝库6L%?B'sVg0R

Alter system kill session ‘86, 4307’;Linux宝库6oDj:a+~*wu

提示已被杀除。。。Linux宝库p-{}oz~.Q

上述方法可以找到相应的原因所导致和相应的解决办法。

}8@I4{)V pfR0

 

v%M)r)q!E-Q1J#ss I Ch?Z0

更多原创文章欢迎访问俺的博客总站:Linux宝库"K!~'M r%r&W

http://westsoftware.blog.163.com

Emt`YuCO0

 Linux宝库*w.Q!r%d%HG


TAG: Oracle SQL 进程 数据库 ORACLE 语句

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

westsoftware

westsoftware

本博客与某些软件公司没有任何关系,纯属个人博客。

日历

« 2008-08-29  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 3732
  • 日志数: 8
  • 图片数: 1
  • 建立时间: 2007-03-27
  • 更新时间: 2008-06-03

RSS订阅

Open Toolbar