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

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

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

                                  解决ORACLE数据库中被锁的进程Linux宝库 e0kg*g2A{-CW8L

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

eZ8~^M D/|$_.V0

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

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

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

一)select * from v$session ;Linux宝库K'Bky0@u? S L

可以看到所有当前的SESSIONLinux宝库 g-p7};R qL'z@|}

二)select * from v$lock;

vU5tq0}i2h0

显示当前被锁的数据库进程

`4[1f#B5U0

例如:我们看一下下面的一条被锁的数据库进程。Linux宝库'q-`P$G;Tm$X

SELECT * FROM V$LOCK  WHERE SID IN (SELECT SID  FROM V$SESSION WHERE USERNAME='TJCS' ) ;Linux宝库_4_f f4OeoIk

 Linux宝库;P3IW4g*o7se2v

ADDR             KADDR           SID  TYPE     ID1        ID2      LMODE    REQUEST      CTIME      BLOCK

VLmP w]I8b8r0

---------------- ---------------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------Linux宝库~ O(UA;~ smB.A%P

07000002044C2730 07000002044C2750    86   TX      188231     3714          0          4          173912          0Linux宝库{$V.] I%uQ$b5AV/m

三)       select * from dba_objects where object_id = ‘a’;

V7_D!mDa:Gcr0

其中:a 代表从第二步中得到的一个ID1

{;Fq n0V N0

select * from dba_objects where object_id = '188231';Linux宝库z@wZ*F,gt ~.e

 

#ce8b(\H Zt A0

OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED  LAST_DDL_TIME TIMESTAMP           STATUS  TEMPORARY GENERATED SECONDARYLinux宝库6K0r%X v!J

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

I'J6n!{ z@)D*t&~0

TJCS  RC01_1_1   188231    188231  TABLE   2007-11-26  2007-12-6 9:1 2007-12-06:09:17:38 VALID   N     N      NLinux宝库0_4Z9M @w'q'n

我们可以看出,是操作表RC_01_1_1这个表出的问题。Linux宝库#m0V?6O{v\'c2XX

四)       现在让我们来把改进程杀掉。

Hh/I#V4\n2E)za0

Alter system kill session ‘a,b’Linux宝库3U.rY q|Ym;cr*E

其中:a,代表select * from v$session 得到的SID;b则为SERIAL#Linux宝库`o#q|:NU-| v-|

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

#w0[(r DCh"[b0

SADDR                             SID     SERIAL#   AUDSID  ………..Linux宝库 |RU7C ?Y'b1g

――――――――――――――――――――――――――――――Linux宝库/`&pCp,eU7e

070000020237C6D0         86       4307       4453119   ………Linux宝库9p'D%wCb'Z:RI

Alter system kill session ‘86, 4307’;

{NtJX`vdQj1Ul0

提示已被杀除。。。

a'Tg:gS-F0jP0

上述方法可以找到相应的原因所导致和相应的解决办法。Linux宝库{;ZBs,iP

 Linux宝库P R5q ITS ui ?

更多原创文章欢迎访问俺的博客总站:Linux宝库 T-B/DE*~'r6? MI N5c?

http://westsoftware.blog.163.com

'dg'U} D0

 Linux宝库g&Yz#b2xe#r


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

 

评分:0

我来说两句

显示全部

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

westsoftware

westsoftware

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

数据统计

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

RSS订阅

Open Toolbar