返回顶部
首页 > 资讯 > 数据库 >Oracle锁表故障处理一例
  • 480
分享到

Oracle锁表故障处理一例

2024-04-02 19:04:59 480人浏览 八月长安
摘要

一次开发人员直接在数据库服务器上做delete table操作系统,由时在上班高峰运行,造成长时间执行无反应,进而把sqlPLUS客户端关闭掉,再次运行删除语句,造成数据库运行缓慢。  

一次开发人员直接在数据库服务器上做delete table操作系统,由时在上班高峰运行,造成长时间执行无反应,进而把sqlPLUS客户端关闭掉,再次运行删除语句,造成数据库运行缓慢。  
询问操作过程知道了是由表造成,最终处理;本文只是模拟锁表处理过程,下次遇到相同问题可以快速处理。

1. 查看数据库的等待事件

如果不清楚原因,可以通过先通过等待事件进行分析。

SQL> select sid,EVENT from v$session_wait where wait_class<>'Idle';

       SID EVENT  
---------- ----------------------------------------------------------------    
       158 SQL*Net message to client    
       159 enq: TX - row lock contention    
SQL>

 

2. 查看数据库是否有锁

SQL> select * from v$lock where block=1;

 

3. 查询lock锁, 看谁锁谁

说明:BLOCK为1的行,表示资源由它锁定。REQUEST表示需要这个锁。

SQL> SELECT sid, id1, id2, lmode, block,request, type    
FROM V$LOCK    
WHERE id1 IN (SELECT id1 FROM V$LOCK WHERE lmode = 0)    
ORDER BY id1, request;

       SID        ID1        ID2      LMODE      BLOCK    REQUEST TY  
---------- ---------- ---------- ---------- ---------- ---------- --    
       153     655397        308          6          1          0 TX    
       157     655397        308          0          0          6 TX

 

4. 查询锁表的SID,Serial#,用户、开始时间,然后就可以杀掉该进程了。

SQL> select t1.sid,t1.serial#,t1.username,t1.loGon_time from v$session t1,v$locked_object t2 where t1.sid = t2.session_id order by t1.logon_time ;

       SID    SERIAL# USERNAME                       LOGON_TIME  
---------- ---------- ------------------------------ -------------------    
       153         12 ABC                            2014-11-17 09:19:33    
       157        106 ABC                            2014-11-17 09:54:24

 

5. 可以进一步查询出SID,SPID等信息

SQL> select s.username, s.osuser, s.sid, s.serial#, p.spid, s.program,s.STATUS 
from v$session s,v$process p 
where s.paddr = p.addr and s.username is not null; 

USERNAME                       OSUSER                                SID    SERIAL# SPID         PROGRAM                                          STATUS  
------------------------------ ------------------------------ ---------- ---------- ------------ ------------------------------------------------ --------    
ABC                            oracle                                153         12 4290         sqlplus@oradb (TNS V1-V3)                        INACTIVE    
SYS                            oracle                                150         12 4417         sqlplus@oradb (TNS V1-V3)                        ACTIVE    
ABC                            oracle                                157        119 4830         sqlplus@oradb (TNS V1-V3)                        ACTIVE

要么在oracle进行杀掉,以及在操作系统下杀掉,对于status为killed的语句,应用通过操作系统kill命令才能最终最快杀掉。

alter system kill session  '153,12';  
alter system kill session  '157,119';

或操作系统中

kill -9 4290  
kill -9 4830

 

6.  查询被锁的表的SID及相关资源

说明:出被锁的表及SQL,还是要结合上面的查询进行手工处理, 也可以通过SID找到SQL语句。

set pagesize 999;  
set linesize 200;    
col PROGRAM for a25;    
col TERMINAL for a10;

SQL> select s.status,s.sid,s.serial#,p.spid, 
       s.last_call_et as exec_seconds,t.sql_text as curr_sql 
from gv$session s,v$process p,v$instance i,v$lock k, v$sqltext t 
where s.paddr = p.addr 
and s.type != 'BACKGROUND' 
and s.lockwait = k.kaddr 
and s.sql_hash_value = t.hash_value 
and s.username is not null; 
STATUS          SID    SERIAL# SPID         EXEC_SECONDS CURR_SQL    
-------- ---------- ---------- ------------ ------------ ----------------------------------------------------------------    
ACTIVE          159         28 4072                 1285 update test_lock set name='aa4' where id = 1

SQL>

您可能感兴趣的文档:

--结束END--

本文标题: Oracle锁表故障处理一例

本文链接: https://lsjlt.com/news/41405.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle锁表故障处理一例
    一次开发人员直接在数据库服务器上做delete table操作系统,由时在上班高峰运行,造成长时间执行无反应,进而把SQLPLUS客户端关闭掉,再次运行删除语句,造成数据库运行缓慢。  ...
    99+
    2024-04-02
  • Oracle 查看锁表情况并处理锁表
    / locked *query locked object and analyse reason,kill it */ select 'alter system kill se...
    99+
    2024-04-02
  • 【故障处理】一次RAC故障处理过程
    【故障处理】一次RAC故障处理过程1.1  故障环境介绍 项目source dbdb 类型2节点RACdb version11.2.0.1.0db 存储ASMOS版本及kernel版本RHEL 6...
    99+
    2024-04-02
  • Oracle锁表故障排除实用指南
    Oracle 锁表故障排除实用指南 在使用Oracle数据库时,经常会遇到表被锁定导致无法访问或修改数据的情况,这给数据库的正常运行和业务操作带来了一定的影响。本文将针对Oracle数...
    99+
    2024-03-10
    - oracle - 锁表 - 故障 sql语句
  • oracle处理锁表基本操作
    查询锁表 select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session...
    99+
    2024-04-02
  • oracle锁表问题怎么处理
    本篇内容介绍了“oracle锁表问题怎么处理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • 解决Oracle模拟事务提交、表锁,处理表锁问题
    目录oracle模拟事务提交、表锁,处理表锁问题1.查看AutoCommit2.手动提交事务流程2.1 终端一 尚未commit2.2 终端二 查询2.3 终端一 commit2.4 终端二 查询3.模拟表锁3.1 在终...
    99+
    2024-04-02
  • Oracle--OEM与常见故障处理
    OEM简介OEM是采用直观而且方便的图像化界面来控制和管理ORACLE数据库的工具集,它包含大量对DBA有用的工具。在oracle中,数据库管理和操作都可以使用OEM来完成,如创建用户和角色,权限分配,创...
    99+
    2024-04-02
  • ORACLE 12C ORA-00312 redo故障处理
    一、描述DB版本:12.1.0.2system版本:7.0 二、处理过程1、报错,数据库启动就实例就会异常终止 ORA-00312: online log 3 thread 1: '+DATADG/ORCL...
    99+
    2024-04-02
  • Oracle(OEM与常见故障处理)
    一、OEM知识点 1、OEM简介OEM是采用直观而且方便的图像化界面来控制和管理ORACLE数据库的工具集,它包含大量对DBA有用的工具。在oracle中,数据库管理和操作都可以使用OEM来完成,如创建用户...
    99+
    2024-04-02
  • 怎么处理Oracle 10g RAC故障
    这篇文章主要介绍“怎么处理Oracle 10g RAC故障”,在日常操作中,相信很多人在怎么处理Oracle 10g RAC故障问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • [故障处理]Oracle 11g图形安装出现故障
    系统环境:OEL6.5_x86数据库版本:Oracle 11g 11.2.0.3.0一、[故障现象]        ...
    99+
    2024-04-02
  • Oracle数据库表被锁定如何处理?
    Oracle数据库表被锁定是数据库管理中常见的问题,在进行数据操作时可能会遇到各种锁定情况,如行级锁、表级锁等。本文将详细介绍Oracle数据库表被锁定的处理方法,并提供相关的代码示例...
    99+
    2024-03-11
    oracle 解锁 处理 sql语句
  • ORACLE死锁(ORA-00060)故障排查的一般性手法
    ORACLE死锁(ORA-00060)故障排查的一般性手法       【背景】 今晨巡检发现SAP PRD产生一个死锁: Sun Ju...
    99+
    2024-04-02
  • Oracle中表被锁的原因及处理方法
    Oracle中表被锁的原因及处理方法 在Oracle数据库中,表被锁是一种常见的现象,而造成表被锁的原因也有很多种。本文将探讨一些常见的表被锁的原因,并提供一些处理方法以及相关的代码示...
    99+
    2024-03-03
    处理方法 锁定原因 oracle表 sql语句
  • oracle数据库故障cannot allocate new log一例
    数据库出现如下的报错分析:当数据库切换日志时,所有private strand都必须刷新到当前日志,然后才能继续。此信息表示我们在尝试切换时,还没有完全将所有 redo信息写入到日志中。这有点类似于“che...
    99+
    2024-04-02
  • MySQL SLAVE故障一例
    有一个slave的端口是3306,我想再创建一个slave,端口为3307 通过冷备份的方式,把3306停机cp,也修改了my.cnf里的server_id等参数,但是启动的时候报错,如下: ...
    99+
    2024-04-02
  • 怎么处理Oracle ORA-03113 ORA-600故障
    本篇内容介绍了“怎么处理Oracle ORA-03113 ORA-600故障”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读...
    99+
    2024-04-02
  • Oracle 一些表空间问题的处理
    一,SYSAUX 表空间不足 SYSAUX 表空间做为 SYSTEM 表空间的辅助表空间,主要存放 EM 相关的内容以及表统计信息,AWR快照,审计信息等,而如果 SYSAUX 表空间在默认条件下你如果不做...
    99+
    2024-04-02
  • Oracle故障处理Rman-06207&Rman-06214的方法
    1、在给客户系统巡检时通过rman维护日志发现有rman维护日志报错: RMAN-06207: WARNING: 3 objects could not be deleted for DISK channel(s) du...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作