`
neeleon
  • 浏览: 184052 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle被锁表管理

阅读更多

 --Oracle被锁表管理
 select all_objects.object_name,
         S.SID,
         s.serial#,
         s.osuser,
         s.PROGRAM,
         s.machine,
         s.CLIENT_INFO
    from v$lock k, v$session s, ALL_OBJECTS
   where k.SID = s.SID
     and k.TYPE IN ('TX', 'TM')
     and k.id1 = all_objects.object_id;

--第二种办法    
 select o.object_name,
         l.session_id,
         s.serial#,
         s.program,
         s.username,
         s.command,
         s.machine,
         s.lockwait
    from v$locked_object l, all_objects o, v$session s
   where o.object_id = l.object_id
     and s.sid = l.session_id

--处理Oracle中杀不掉的锁    
    
         一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。

1.下面的语句用来查询哪些对象被锁:

select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;

2.下面的语句用来杀死一个进程:
alter system kill session '24,111'; (其中24,111分别是上面查询出的sid,serial#)

【注】以上两步,可以通过Oracle的管理控制台来执行。

3.如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=24 (24是上面的sid)

4.在OS上杀死这个进程(线程):
1)在unix上,用root身份执行命令:
#kill -9 12345(即第3步查询出的spid)
2)在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:
orakill sid thread
其中:
sid:表示要杀死的进程属于的实例名
thread:是要杀掉的线程号,即第3步查询出的spid。
例:c:>orakill orcl 12345

分享到:
评论

相关推荐

    Oracle的锁表与解锁

    本文将深入探讨Oracle中的锁机制,特别是如何锁表与解锁,以及相关的SQL查询语句,帮助数据库管理员和开发人员更好地理解和管理Oracle数据库的锁状态。 #### 锁的类型 在Oracle中,锁主要分为两种类型: 1. **TX...

    oracle中判断表是否被锁

    ### Oracle中判断表是否被锁及解锁方法 在Oracle数据库管理过程中,经常会出现表或行被锁定的情况,这可能会导致应用程序出现性能问题甚至挂起。因此,了解如何判断表是否被锁以及如何解锁是非常重要的技能。 ####...

    查看Oracle锁表

    如果发现某个表被错误地锁定了,可以通过以下命令来解锁: ```sql -- 示例解锁命令 ALTER SYSTEM KILL SESSION '68,10026'; ``` 其中: - **68**:会话SID。 - **10026**:会话序列号。 需要注意的是,在执行解锁...

    oracle锁表及解锁

    ### Oracle锁表与解锁详解 在Oracle数据库管理中,锁是一种关键机制,用于控制多个用户对数据资源的并发访问,防止数据冲突和不一致。本文将深入探讨Oracle中检查锁表的方法以及如何对表进行解锁。 #### Oracle锁...

    java调用Oracle的锁表命令

    本篇将详细讲解如何在Java中调用Oracle的锁表命令。 首先,Oracle数据库提供了多种锁类型,如共享锁(读锁)和独占锁(写锁),用于控制不同级别的并发访问。在Java中,我们通常通过JDBC(Java Database ...

    oracle锁表查询oracle锁表查询oracle锁表查询

    ### Oracle锁表查询详解 #### 一、Oracle锁机制简介 在Oracle数据库中,锁是一种重要的并发控制机制,用于管理多个用户对同一数据资源的访问。通过锁机制,Oracle能够确保数据的一致性和完整性,避免多用户操作时...

    oracle锁表解决

    ### Oracle锁表解决 在Oracle数据库管理中,锁表是一个常见的问题,特别是在高并发的应用场景下。当一个表被锁定时,其他用户或进程可能无法访问该表,从而导致应用程序出现延迟或者错误。因此,了解如何有效地解锁...

    oracle锁表处理

    ### Oracle锁表处理 在Oracle数据库管理中,锁机制是一种重要的资源管理手段,用于控制并发事务对数据资源的访问,防止多个用户同时修改相同的数据,从而确保数据的一致性和完整性。然而,在高并发环境下,锁的争用...

    ORACLE数据库锁表问题浅析.pdf

    ORACLE数据库锁表问题浅析 Oracle数据库锁机制是企业级数据库管理系统中一个非常重要的机制。锁机制的主要目的是为了保证数据的一致性和正确性,在多用户同时访问数据库时,避免数据的不一致和错误。Oracle数据库锁...

    Oracle锁和表分区

    Oracle数据库系统中,锁和表分区是两个关键的管理数据并发和优化性能的机制。首先,我们来深入了解锁的概念。 1. **锁定机制**:锁定是数据库管理系统中用于控制并发访问的一种方法,确保多用户环境下的数据完整性...

    oracle数据库锁表处理

    在Oracle数据库管理过程中,锁表是一种常见的现象,它通常发生在多用户并发访问同一数据对象时。锁表会导致其他用户无法访问该数据对象,从而影响系统的正常运行。本文将详细介绍如何处理Oracle数据库中的锁表问题。...

    oracle存储过程解锁

    ### 描述:“如果存储过程被锁住,可以使用这个存储过程解锁方法” #### 解析: 当遇到存储过程被锁定的情况时,通常可以通过查询`dba_ddl_locks`视图来查找锁定的详细信息。例如,要检查名为`prc_exec_day`的存储...

    Oracle分区表和锁的应用

    二、Oracle锁机制 1. **锁类型**: - **行级锁(ROW LOCK)**:锁定特定行,防止并发操作导致的数据不一致。 - **表级锁(TABLE LOCK)**:锁定整个表,适用于全表扫描或批量操作。 - **行级意向锁(INTENTION ...

    oracle数据库锁使用

    总之,Oracle数据库锁的使用是数据库管理中的重要一环,理解并合理运用这些锁可以帮助我们优化并发性能,防止数据冲突,并确保数据的正确性和一致性。在设计事务和处理并发操作时,应根据业务需求选择合适的锁类型,...

    ORACLE 如何查询被锁定表及如何解锁释放session

    当发现某个表被锁定且影响了数据库的正常运行时,可能需要解锁相应的会话。这通常发生在调试阶段或处理紧急情况时。 **解锁语法**: ```sql -- 通用格式 ALTER SYSTEM KILL SESSION 'sid,serial#'; -- 示例 ALTER...

    oracle查看谁锁表

    本文将详细介绍一种方法来查看Oracle数据库中表被谁锁定,并通过具体的SQL语句来演示这一过程。 #### 一、SQL语句解读 首先,我们来看一下用于查看锁定信息的SQL语句: ```sql SELECT "SYS"."V_$LOCKED_OBJECT"....

    Oracle的锁机制

    Oracle的锁机制是数据库管理系统中一个关键的组成部分,它的主要目标是确保在多用户环境下,数据的读一致性、完整性和并行性。Oracle提供了多种类型的锁来满足这些需求。 首先,按照是否独占,锁分为排它锁(X锁)...

Global site tag (gtag.js) - Google Analytics