Oracle数据库虽然支持并发性方面表现出色,但在复杂的生产环境中,还是可能出现表被锁定的情况,这时一般都是客户端反应缓慢,甚至感觉系统处于停滞状态。我们可以通过检查一些视图来判断可能的锁定情况:
一些性能方面的告警信息通过dba_outstanding_alerts表都能查到,被锁定的表如果长期得不到释放,在这里也能查到相关session的sid和serial#。
select * from dba_outstanding_alerts
v$locked_object视图可以看到当前被锁定的对象,只有那些一直存在的session才有可能是被锁定的,因此不能简单匆忙的下结论,尤其是在RAC环境中,必须查看各个节点以发现相关的session在哪里。
select * from v$locked_object
有时候也可以根据对象名来查看锁的信息:
select sid,id1,type from v$lock where id1=(select object_id from dba_objects where object_name=upper('mytablename'));
找到了引起锁定的session,就可以找到对应的sid和serial#
select saddr,sid,serial#,paddr,username,status from v$session where sid=772
从而可以杀死这个session:
SQL> alter system kill session '772,9044';
System altered.
可以查询Oracle数据库的进程和操作系统进程之间的关联:
select spid, osuser, s.program from v$session s,v$process p
where s.paddr=p.addr and s.sid=772
有时候一些进程要在操作系统杀死,这时可以用kill -9 pid的命令:
SQL> alter system kill session '1034,3545'
2 /
alter system kill session '1034,3545'
*
ERROR at line 1:
ORA-00031: session marked for kill
SQL> select spid, osuser, s.program from v$session s,v$process p
2 where s.paddr=p.addr and s.sid=1034
3 /
SPID OSUSER
------------ ------------------------------
PROGRAM
------------------------------------------------
303424 oracle
oracledv@p5a2 (TNS V1-V3)
DB1@/home/oracle>su - root
p5a1@/#kill -9 303424
p5a1@/#ps -ef|grep 303424
root 574442 376852 0 23:06:09 pts/1 0:00 grep 303424
数据库对象锁定引起的阻塞是比较麻烦的事情,处理的时候一定要小心谨慎。
转自:http://www.banping.com/2009/05/21/oracle_table_lock/
分享到:
相关推荐
### ora-01033: Oracle Initialization or Shutdown in Progress 解决方法 #### 一、问题背景及原因 **标题**: “ora-01033: Oracle initialization or shutdown in progress 解决方法” **描述**: “ora-01033: ...
5. **绑定变量**:为了提高性能和安全性,DBD::Oracle 支持绑定变量,这意味着SQL语句中的某些部分可以被占位符替代,然后在运行时动态赋值。 6. **异常处理**:当数据库操作出现错误时,DBD::Oracle 能够捕获并...
Oracle 数据库用户锁定解决方案在 Linux 下的操作记录 Oracle 数据库用户锁定是指用户账户被锁定,无法登录数据库的情况。这种情况可能是由于用户密码输入错误次数超过限制,或者是数据库管理员对用户账户进行了...
oracle 用户被锁定解锁方法
《成功之路:Oracle 11g学习笔记》共24章,主要介绍了Oracle安装、干净卸载Oracle、数据库启动关闭、Oracle网络配置等相关内容。在介绍Oracle系统管理的知识以后,将介绍与开发相关的内容(如PL/SQL基础知识、存储过程...
6. **分区**:Oracle的分区功能允许大表被分割成多个逻辑部分,每个部分独立管理和操作,提高了查询效率和管理灵活性。 7. **备份与恢复**:Oracle提供了多种备份策略,如物理备份、逻辑备份、RMAN(恢复管理器)...
oci.dll文件作为一个动态链接库(Dynamic Link Library),在Windows环境中运行时被应用程序加载,以实现对Oracle数据库的调用。它包含了执行SQL语句、处理结果集、处理游标、管理事务、以及与Oracle服务器进行各种...
第三章 ORACLE SQL 单行函数 第四章 从多表中查询数据 第五章 用组函数合计数据 第六章 子查询 第七章 操纵数据 第八章 创建和管理表 第九章 内置约束 第十章 创建视图 第十一章 其他数据库对象 第十二章 控制用户...
在Oracle数据库管理过程中,经常会出现表或行被锁定的情况,这可能会导致应用程序出现性能问题甚至挂起。因此,了解如何判断表是否被锁以及如何解锁是非常重要的技能。 #### 一、判断表是否被锁 1. **SQL查询语句*...
- 分析表统计信息:帮助Oracle优化器做出更好的决策。 7. **软件配置调整**: - **参数调优**:调整各种初始化参数,如DB_CACHE_SIZE、LOG_BUFFER等。 - **操作系统配置**:优化OS级别的设置,比如文件系统缓存...
"oracle死锁表后处理" oracle死锁表后处理是指在oracle数据库中处理死锁表的各种方法和技巧。oracle死锁表后处理是数据库管理员和开发人员需要掌握的重要技能,旨在解决oracle数据库中出现的死锁问题,确保数据的...
ora-00031:session marked for kill处理oracle中杀不掉的锁一些ORACLE中的进程被杀掉后,状态被置为”killed”,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那...
Oracle 内部培训资料:Oracle 10g 培训材料(18个PPT) 如下: Oracle_数据库_10g性能概述.ppt Oracle_数据库_10g极大提高可用性和网格计算能力.ppt Oracle_数据库_10g的备份与恢复特性-恢复管理器与闪回查询技术....
当发现某个表被锁定且影响了数据库的正常运行时,可能需要解锁相应的会话。这通常发生在调试阶段或处理紧急情况时。 **解锁语法**: ```sql -- 通用格式 ALTER SYSTEM KILL SESSION 'sid,serial#'; -- 示例 ALTER...
7. **并发控制与事务处理**:分析Oracle的多版本并发控制(MVCC)机制,探讨锁定、死锁、事务的提交和回滚策略,以及并发性能的影响因素。 8. **安全性**:讨论Oracle的安全管理,包括用户权限、角色、审计、网络...
2. **行级锁定**:与SQL Server类似,Oracle也支持行级锁定,但在某些情况下,Oracle会自动升级为更高的锁定级别(如表级锁定)以提高并发控制效率。 3. **快照隔离级别**:Oracle引入了快照隔离级别,使得读取操作...
### Oracle锁表处理 在Oracle数据库管理中,锁机制是一种重要的资源管理手段,用于控制并发事务对数据资源的访问,防止多个用户同时修改相同的数据,从而确保数据的一致性和完整性。然而,在高并发环境下,锁的争用...
错误描述:oracle远程连接服务器出现 ORA-12170 TNS:连接超时 错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: ...
### Oracle数据库锁表处理 在Oracle数据库管理过程中,锁表是一种常见的现象,它通常发生在多用户并发访问同一数据对象时。锁表会导致其他用户无法访问该数据对象,从而影响系统的正常运行。本文将详细介绍如何处理...
本文将详细介绍Oracle系统用户及普通用户被锁定后的解决办法,并提供一些实用的技巧,帮助读者有效应对这类问题。 #### 一、Oracle System用户被锁定的解决方案 当Oracle system用户被锁定时,通常可以采取以下...