`
何时雨再来
  • 浏览: 2350 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

有关oracle数据的锁定问题

阅读更多
最近老是碰到数据库中的数据表被锁需要解锁的问题,弄了一番后,现在把方法贡献出来给大家,请大家多指教
1、select * from v$locked_object 查出被锁定的对象,其中object_id是对象的ID,session_id是被锁定对象有session ID;
2、select object_name, object_type from dba_objects where object_id = 刚才查出来的object_id;(根据v$locked_object里的object_id提出来的)
这样来查被锁定这个对象的名字,如果能确定是哪个TABLE被锁并且要解锁,则再执行
3、select sid, serial#, machine, program from v$session where sid =第1步中查出来的session_id;(是根据v$locked_object对应锁定记录的session_id找出来的) 然后
4、alter system kill session ‘sid,serial#’;用来杀死这个会话;
以上几个步骤即能解决对象被锁定问题。

另外附上锁定一个表的语句:
-----查锁
SQL> SELECT T2.USERNAME, T2.SID, T2.SERIAL#, T2.LOGON_TIME FROM V$LOCKED_OBJECT T1, V$SESSION T2 WHERE T1.SESSION_ID = T2.SID ORDER BY T2.LOGON_TIME;
-----解锁
SQL> ALTER SYSTEM KILL SESSION '10,382';

Oracle数据库表查看锁以及解锁SQL#
//查询被锁的表select A.sid, b.serial#,decode(A.type,    'MR', 'Media Recovery',    'RT','Redo Thread',    'UN','User Name',    'TX', 'Transaction',    'TM', 'DML',    'UL', 'PL/SQL User Lock',    'DX', 'Distributed Xaction',    'CF', 'Control File',    'IS', 'Instance State',    'FS', 'File Set',    'IR', 'Instance Recovery',    'ST', 'Disk Space Transaction',    'TS', 'Temp Segment',    'IV', 'Library Cache Invalida-tion',    'LS', 'Log Start or Switch',    'RW', 'Row Wait',    'SQ', 'Sequence Number',    'TE', 'Extend Table',    'TT', 'Temp Table',    'Unknown') LockType,c.object_name,b.username,b.osuser,decode(a.lmode,   0, 'None',            1, 'Null',            2, 'Row-S',            3, 'Row-X',            4, 'Share',            5, 'S/Row-X',            6, 'Exclusive', 'Unknown') LockMode,B.MACHINE,D.SPIDfrom v$lock a,v$session b,all_objects c,V$PROCESS Dwhere a.sid=b.sid and a.type in ('TM','TX')and c.object_id=a.id1AND B.PADDR=D.ADDR//用于解锁alter system kill session'SID,SERIAL#'
----------------------------------------------------------------------
oracle 解锁表步骤:
1:查看被锁的表


Sql代码 
1.SELECT A.OBJECT_NAME, A.STATUS, V.SESSION_ID  
2.  FROM ALL_OBJECTS A, V$LOCKED_OBJECT V  
3.WHERE A.OBJECT_ID = V.OBJECT_ID  
SELECT A.OBJECT_NAME, A.STATUS, V.SESSION_ID
  FROM ALL_OBJECTS A, V$LOCKED_OBJECT V
WHERE A.OBJECT_ID = V.OBJECT_ID
2:查看锁


Sql代码 
1.SELECT A.OBJECT_NAME, A.STATUS, V.SESSION_ID  
2.  FROM ALL_OBJECTS A, V$LOCKED_OBJECT V  
3.WHERE A.OBJECT_ID = V.OBJECT_ID  
SELECT A.OBJECT_NAME, A.STATUS, V.SESSION_ID
  FROM ALL_OBJECTS A, V$LOCKED_OBJECT V
WHERE A.OBJECT_ID = V.OBJECT_ID 2、杀死锁


Sql代码 
1.--alter system kill session 'sid,serial#';  
2.alter system kill session '156,87';--查看表大小
----------------------------------------------------------------------
经过测试,下面的两条sql语句能更好的完成锁定记录的查询与解锁问题
select sess.sid,
    sess.serial#,
    lo.oracle_username,
    lo.os_user_name,
    ao.object_name,
    lo.locked_mode
    from v$locked_object lo,
    dba_objects ao,
    v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;

---140      78        MSJL          PC2011031300NIM\Administrator   NC_DELIVETOSAOUT      3
---行id   锁标识      数据库用户         哪一台机器                 被锁表             锁模式


----解锁方式,将“行id”和“锁标识”赋给下面的语句即可解锁
alter system kill session '140,78';


----------------------------------------------------------------------
  • 大小: 44.6 KB
分享到:
评论

相关推荐

    SQLServer和Oracle防止数据锁定的比较 .txt

    本文将深入探讨SQL Server与Oracle这两种主流数据库系统如何有效避免数据锁定的问题,并通过具体实例进行分析。 #### 数据锁定概述 数据锁定通常发生在多用户环境下的数据库操作中。当多个用户尝试同时访问或修改...

    Oracle恢复误删除数据,解除锁定的等SQL语句

    在日常操作中,有时可能会发生误操作,如误删除数据或锁定问题,本篇文章将详细讲解如何在Oracle中恢复误删除数据以及解锁相关操作。 1. **恢复误删除数据** 当你不小心删除了数据库表中的数据时,Oracle提供了一...

    Oracle2Oracle数据同步

    Oracle到Oracle的数据同步是一个常见的需求,特别是在企业级应用中,为了保证多个数据库实例间的数据一致性,需要进行实时或定时的数据同步。在这个场景中,我们关注的是如何在两个不同的Oracle数据库之间实现数据表...

    Oracle数据字典参考

    ### Oracle 数据字典参考知识点详解 #### 一、Oracle 数据字典概述 Oracle 数据字典是存储关于数据库元数据信息的特殊集合,这些信息包括表、视图、索引、用户权限等。对于数据库管理员(DBA)以及开发人员来说,...

    Oracle和数据结构

    一、Oracle数据结构基础 1. 表(Table):表是Oracle数据库中最基本的数据存储单元,由一系列行(Records)和列(Columns)组成,用来存储特定类型的数据。每列都有一个数据类型,如NUMBER、VARCHAR2或DATE等。 2....

    oracle数据导入到Mysq库

    首先,我们来探讨Oracle数据导入到MySQL的原理。数据迁移通常涉及数据抽取、转换和加载(ETL)过程。在本例中,"oracle2mysql"工具可能通过以下步骤工作: 1. **数据抽取**:工具连接到Oracle数据库,通过SQL查询...

    oracle 数据源

    Oracle 数据源配置和锁机制详解 Oracle 数据源是指 Oracle 数据库管理系统中,用于存储和管理数据的来源。配置 Oracle 数据源需要了解 Oracle 数据库的基本概念和锁机制,避免锁机制对数据库的影响。 Oracle ...

    Oracle10g 数据仓库

    Oracle10g 数据仓库是Oracle公司推出的一款专为大规模数据存储、管理和分析设计的数据仓库解决方案。在Oracle Database 10g版本中,Oracle加强了其数据仓库的功能,以支持更高效、灵活的数据处理和决策支持。以下是...

    Oracle事务与锁定

    Oracle事务与锁定是数据库管理系统中的核心概念,它们对于确保数据的完整性和一致性至关重要。事务是数据库操作的基本单元,它封装了一系列的数据库操作,确保这些操作要么全部成功,要么全部失败,从而保持数据库的...

    解决Oracle system或用户被锁定问题

    ### 解决Oracle system或用户被锁定问题 在日常的数据库管理与维护工作中,经常会遇到Oracle系统用户或普通用户被锁定的问题。这种情况不仅会影响系统的正常使用,还可能导致数据丢失或业务中断等严重后果。本文将...

    SQL Server和Oracle数据锁定比较

    数据库并行访问,也就是两个或两以上用户同时访问同一数据,这也是数据库引擎如何设计和实现 适度反应所面临的最大问题。设计优良、性能卓越的数据库引擎可以轻松地同时为成千上万的用户服务。而“底气不足”的...

    oracle数据操作和控制语言详解

    本资源提供了 Oracle 数据操作和控制语言的详细解释,涵盖了 SQL 语言的四大类:数据查询语言 DQL,数据操纵语言 DML,数据定义语言 DDL,数据控制语言 DCL。文章着重介绍了 DML 和 DCL 两种语言在 Oracle 中的使用...

    Oracle删除表中的重复数据

    然而,在实际操作中,应根据具体场景和需求调整SQL语句,比如选择合适的去重依据列、处理可能出现的事务和锁定问题等,以确保数据操作的正确性和高效性。此外,对于大型表或高并发系统,可能还需要考虑更高级的性能...

    oracle修改锁定用户

    ### Oracle 修改锁定用户的知识点 在Oracle数据库管理过程中,经常需要对用户进行管理操作,比如解锁、锁定用户或者修改用户密码等。这些操作对于确保数据库的安全性和数据的一致性至关重要。根据给定的信息,我们...

    ODI如何通过logminer创新发展从oracle数据库中抽取增量数据.pdf

    Consistent 方式是专门解决这个问题的,它在处理父表前首先锁定主表和子表需要复制的记录,在增量数据复制时,插入主表和子表的新增量数据都会被本次抽取过程忽略,放在下次抽取时处理。 ODI 通过 LogMiner 技术...

    oracle数据库导入数据以及创建用户

    - 导入数据可能涉及锁定表,避免与其他用户操作冲突。 - 用户创建时要谨慎分配权限,避免权限过大导致安全风险。 - 定期审查和更新用户权限,以保持良好的数据库安全实践。 在实际操作中,可以参考给定的文档...

    解决Oracle 11g中scott用户默认被锁定的问题

    ### 解决Oracle 11g中scott用户默认被锁定的问题 #### 背景介绍 在使用Oracle数据库的过程中,用户经常会遇到系统预设的一些示例用户被锁定的情况,其中最为人熟知的就是`scott`用户。`scott`用户是在安装Oracle...

    mysql-oracle数据转换工具

    这时,“mysql-oracle数据转换工具”就显得尤为关键。 该工具的核心功能是实现数据的高效、准确转换,确保在两个不同数据库系统间的数据一致性。以下是一些关于MySQL和Oracle数据库以及数据转换的关键知识点: 1. ...

Global site tag (gtag.js) - Google Analytics