`

解决ORACLE数据库中被锁的进程

阅读更多

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

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

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

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

一)select * from v$session ;

可以看到所有当前的SESSION

二)select * from v$lock;

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

例如:我们看一下下面的一条被锁的数据库进程。

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

 

ADDR             KADDR           SID  TYPE     ID1        ID2      LMODE    REQUEST      CTIME      BLOCK

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

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

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

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

select * from dba_objects where object_id = '188231';

 

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

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

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

我们可以看出,是操作表RC_01_1_1这个表出的问题。

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

Alter system kill session ‘a,b’

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

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

SADDR                             SID     SERIAL#   AUDSID  ………..

――――――――――――――――――――――――――――――

070000020237C6D0         86       4307       4453119   ………

Alter system kill session ‘86, 4307’;

提示已被杀除。。。

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

分享到:
评论

相关推荐

    oracle 检测数据库是否有对象被锁的脚本

    在Oracle数据库管理中,了解如何检测对象被锁的情况至关重要,因为锁定可能会导致数据一致性问题,影响系统的正常运行。本文将详细介绍如何使用提供的脚本`ckobject_lock.sh`和`ckobject_lock.sql`来监控和检测...

    oracle数据库中的锁机制

    ### Oracle数据库中的锁机制 #### 引言 在Oracle数据库中,锁机制是确保数据一致性和并发控制的关键组件。本文将深入探讨Oracle数据库中的锁如何工作,以及它们在多用户环境中如何防止数据冲突,保障事务的正确...

    如何解决Oracle杀死死锁进程

    Oracle 杀死死锁进程是数据库管理员经常遇到的问题,本文将介绍解决 Oracle 杀死死锁进程的方法。 在 Oracle 中,死锁是指两个或多个会话在等待对方释放资源,从而导致互相阻塞的情况。死锁可能会导致数据库性能...

    Oracle数据库精讲之数据库管理_ Oracle数据库管理视频

    2. 提供oracle数据库dba日常管理方法。 3. 掌握oracle数据库体系机构,为oracle优化奠定基础。 三、适合人群: 1.有意从事oracle 数据库工作,担任dba角色的人员; 2. Oracle数据库设计、开发和备份等管理人员; ...

    Oracle数据库体系结构( 中文详细版)

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其强大的功能和稳定性使其在企业级应用中占据了重要地位。本文将详细解析Oracle数据库的体系结构,帮助读者深入理解其内部工作原理。 Oracle数据库的...

    ORACLE数据库 ORACLE数据库

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,由美国甲骨文公司(Oracle Corporation)开发和维护。Oracle数据库以其高效、稳定和强大的功能在金融、电信、医疗、政府等多个领域得到广泛应用。本篇...

    oracle数据库日志查看方法

    后台进程日志是Oracle数据库中最常见的错误日志之一,可以通过以下方式获取其位置: ```sql SHOW PARAMETER BACKGROUND_DUMP_DEST; ``` 该命令会显示后台进程日志文件的默认位置。例如,在安装目录`oracle\admin\...

    Oracle数据库试题100题(附答案)

    服务器进程是Oracle数据库中负责处理用户进程请求的重要组件。Oracle数据库的逻辑结构包括表空间、段、区和数据块,其中表空间是数据库中的一个逻辑存储单元,段是表空间中分配的逻辑存储区域,区是段中分配的一系列...

    Oracle 数据库多语言入库问题的解决方案

    Oracle 数据库多语言入库问题的解决方案是针对企业在国际化进程中遇到的多国语言信息存储难题,尤其是在使用Oracle数据库时,由于字符集的不兼容性导致非中文语言数据入库时出现乱码。Oracle数据库作为全球广泛使用...

    oracle数据库所有进程官方文档

    在Oracle数据库中, backgrounds 进程可以分为两类:一类是实例进程,另一类是特性进程。实例进程是指在数据库实例中运行的进程,例如ABMR和ACFS进程。特性进程是指特定于某个特性的进程,例如ACMS和APnn进程。 在...

    Oracle数据库资料大全

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,由美国甲骨文公司(Oracle Corporation)开发和维护。Oracle数据库以其高效、稳定和强大的功能在金融、电信、医疗、政府等多个领域得到广泛应用。本...

    怎样快速查出Oracle_数据库中的锁等待

    "快速查出Oracle数据库中的锁等待" Oracle数据库中的锁等待是一种常见的问题,它会影响到系统的性能和可用性。锁等待的出现是由于系统对数据的一致...通过这种方法,可以快速查出Oracle数据库中的锁等待,并解决问题。

    ORACLE 数据库构架图

    下面将详细解析Oracle数据库架构中的主要组件及其作用。 1. **实例(Instance)**:Oracle数据库实例是由运行在操作系统上的内存结构(如数据缓冲区高速缓存、重做日志缓冲区和共享池)和后台进程组成的。当Oracle...

    Oracle数据库日常运维及应急故障处理手册

    Oracle数据库作为一款高性能的大型关系数据库管理系统,广泛应用于各行业的关键业务中。随着业务规模的扩大和数据量的增长,数据库运维和故障应急处理变得尤为重要。本文档即为Oracle数据库的日常运维及应急故障处理...

    oracle 数据库日常维护手册

    Oracle 数据库是一种关系型数据库管理系统,广泛应用于企业级应用中。为了确保 Oracle 数据库的稳定运行,需要进行日常维护。以下是 Oracle 数据库日常维护手册中的一些重要知识点: 检查数据库基本状况 在日常...

    ORACLe数据库管理员教程

    在Oracle数据库中,进程也扮演着重要角色。用户进程代表数据库用户执行任务,服务器进程处理用户请求,后台进程则负责数据库的后台操作,如写入数据文件、检查点等。 Oracle数据库管理员还需要熟悉诸如SQL*DBA、SQL...

    Oracle数据库完全卸载干净工具

    这个工具的主要目标是自动化Oracle数据库的卸载流程,确保所有相关的配置文件、数据文件、日志文件以及注册表项都被正确清理。以下是该工具可能包含的一些关键功能和步骤: 1. **检测Oracle组件**:工具首先会扫描...

    如何监控Oracle数据库中长时间运行的进程.pdf

    本文将详细介绍两种监控Oracle数据库中长时间运行进程的方法。 首先,我们关注的是Oracle 8及以后版本引入的动态视图`V$SESSION_LONGOPS`。这个视图用于跟踪执行时间超过6秒的操作,包括全表扫描、并行查询、RMAN...

    oracle数据库、表空间及数据文件之间的关系

    在Oracle数据库管理系统的架构中,数据库、表空间与数据文件之间存在着紧密的联系。理解这些组件之间的相互作用对于有效地管理和维护Oracle数据库至关重要。 #### 一、Oracle数据库简介 Oracle数据库是甲骨文公司...

    oracle数据库_实例_用户_表空间之间的关系

    Oracle 实例(Oracle Instance)是一组后台进程(Backguound Processes)和内存结构(Memory Structures)组成的实体。一个数据库可以有多个实例,每个实例都可以有不同的配置和参数设置。 用户 用户是在实例下...

Global site tag (gtag.js) - Google Analytics