/*怎么快速查找锁与锁等待
数据库的锁是比较耗费资源的,特别是发生锁等待的时候,我们必须找到发生等待的锁,有可能的话,杀掉该进程。
这个语句将查找到数据库中所有的DML语句产生的锁,还可以发现,任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。
可以通过alter system kill session ‘sid,serial#’来杀掉会话
*/
SELECT /*+ rule */ s.username,
decode(l.type,'TM','TABLE LOCK','TX','ROW LOCK',NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
FROM v$session s,v$lock l,dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND s.username is NOT NULL
--如果发生了锁等待,我们可能更想知道是谁锁了表而引起谁的等待,以下的语句可以查询到谁锁了表,而谁在等待。
SELECT /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username User_name,
o.owner,o.object_name,o.object_type,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
ORDER BY o.object_id,xidusn DESC
--以上查询结果是一个树状结构,如果有子节点,则表示有等待发生。如果想知道锁用了哪个回滚段,还可以关联到V$rollname,其中xidusn就是回滚段的USN
--[Q] 如何有效的删除一个大表(extent数很多的表)
-- [A] 一个有很多(100k)extent的表,如果只是简单地用drop table的话,会很大量消耗CPU(Oracle要对fet$、uet$数据字典进行操作),可能会用上几天的时间,较好的方法是分多次删除extent,以减轻这种消耗:
1. truncate table big-table reuse storage;
2. alter table big-table deallocate unused keep 2000m ( 原来大小的n-1/n);
3. alter table big-table deallocate unused keep 1500m ;
....
4. drop table big-table;
-----查找什么sql锁表
Select Event, Count(*) From V$session_Wait Group By Event;
Select Sid, Event
From V$session_Wait
Where Event In ('enqueue', 'latch free', 'db file sequential read', 'library cache lock', 'db file scattered read', '
buffer busy waits');
Select /*+ ordered */
--s.sid,
--s.serial#,
--s.LAST_CALL_ET,
--s.username,
--p.spid,
Sql.Sql_Text
--s.machine
From V$session s, V$process p, V$sqltext Sql
Where Sql.Address = s.Sql_Address And Sql.Hash_Value = s.Sql_Hash_Value And s.Sid = &Sid And s.Paddr = p.Addr And
s.Status = 'ACTIVE' And s.Username Is Not Null And s.Username In ('DEVELOP', 'NEVA2', 'UPTEL2H', 'UPTEL2L', 'GJ')
Order By s.Username, s.Sid, s.Serial#, Sql.Piece
Select * From v$locked_object
分享到:
相关推荐
在Oracle数据库管理中,"快速查找Oracle锁对象"是一个关键任务,特别是在处理并发事务和解决性能问题时。当多个用户或进程同时访问同一资源时,可能会出现锁冲突,导致某些事务等待,影响数据库的正常运行。了解如何...
"快速查出Oracle数据库中的锁等待" Oracle数据库中的锁等待是一种常见的问题,它会影响到系统的性能和可用性。锁等待的出现是由于系统对数据的一致性和安全性的保护机制,系统在对数据库中的数据进行操作时,会对...
1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>sqlplus SQL>connect internal SQL>startup SQL>quit b、关闭ORACLE系统 ...SQL*Plus: Release 9.2....
在Oracle数据库管理中,了解如何快速查出锁等待是至关重要的,特别是在大型系统中,因为锁机制用于确保数据一致性,防止并发操作导致的数据冲突。在Oracle中,有多种类型的锁,包括只读锁、排它锁和共享排它锁,分别...
4. **调整锁超时设置**:在Oracle参数文件中,可以调整`_row_lock_wait_timeout`参数,增加锁等待时间,避免过早触发错误。 总之,“由于对象被锁住无法编译处理”的问题虽然常见,但通过合理利用Oracle提供的工具...
当遇到阻塞问题时,可以利用dba_waiters和dba_blockers来查找并分析阻塞情况。数据字典锁在执行如创建表这样的操作时,会涉及到sys.tab$和sys.obj$等数据字典表的更新,这些活动都会反映在v$lock中。 LATCH,或称作...
如果闩锁不可用,将会等待一段时间,然后再次尝试获取闩锁。 Oracle数据库性能优化实务闩锁及闩锁优化是指在Oracle数据库中对性能的优化,以提高数据库的执行效率和稳定性。闩锁是一种机制,用于保护Oracle数据库的...
4. **实际应用**:例如,银行交易记录表可以根据交易日期进行范围分区,便于快速查找特定日期内的交易。 二、Oracle锁机制 1. **锁类型**: - **行级锁(ROW LOCK)**:锁定特定行,防止并发操作导致的数据不一致...
它们提供了一种快速查找数据的方法,通过创建索引,数据库可以更快地定位到表中的特定行。Oracle支持B树索引、位图索引、函数索引等多种类型的索引。选择合适的索引类型和策略对于优化查询性能至关重要,但也需要...
本文将详细解析标题为“多线程文件搜索工具 源代码”的项目,探讨如何利用多线程来实现快速的文件搜索,并针对描述中提到的“按暂停时卡死”的问题进行分析。 首先,我们要理解多线程的基本概念。在单线程程序中,...
3. **解锁**:业务逻辑执行完毕后释放锁,使其他等待的客户端可以继续尝试获取锁。 #### 四、Tedu五阶段Redis分布式锁详解 ##### 4.1 Redis锁命令:SETNX - **命令简介**:`SETNX key value` 是一个用于设置键值...
InnoDB存储引擎支持行级锁,包括共享锁(S锁)和独占锁(X锁),以及意向锁(IS锁和IX锁)。行级锁可以减少锁定的数据范围,提高并发性能。此外,InnoDB还提供了死锁检测和自动解决机制,以防止事务因等待对方释放...
数据库索引是指在数据库表中的一种数据结构,用于快速查找和检索数据。索引的设计原则有: * 唯一性:索引必须是唯一的,每个索引对应一个唯一的值。 * 最左前缀原则:在创建索引时,选择最左边的列作为索引列。 * ...
- **enq: IV - contention解释**:在Oracle数据库中,enq: IV - contention指的是内部表的互斥锁等待。这里的IV代表“internal variable”,表示对内部变量的锁定。当多个会话试图访问同一内部资源时,可能会发生...
- 使用 `grep mysql /var/log/messages` 查找与MySQL相关的错误记录。 3. **coredump 分析:** - **背景:**当MySQL进程异常终止时,可能会产生core dump文件。 - **作用:**通过对core dump文件的分析,可以...
MySQL使用B+树作为索引结构,因为它支持快速查询,由于数据排序和节点内元素数量较多,可以降低树的高度,提高查询效率,适合全表扫描和范围查找。 3. **锁**:锁是数据库管理系统中用于控制并发访问共享资源的机制...
在Windbg中,通过`~*kb`命令可以列出所有线程的堆栈信息,查找是否有大量线程处于等待锁的状态。一旦发现这种情况,就可以深入分析等待的锁和持有锁的线程,找出可能的死锁链。 对于死锁分析,关键在于理解...
快速排序是对冒泡排序的一种改进,利用了二分查找思想,但不是一种稳定的排序算法。 二、Redis锁 Redis锁是 Redis 中的一种机制,用于实现分布式锁。锁的实现可以使用incr、setNX、set等命令。incr命令可以用来...
4. **SKIP LOCKED** 子句:如果加上SKIP LOCKED,查询会跳过已经被锁定的行,继续查找未锁定的行,这样可以避免因等待被锁定的行而产生的阻塞。 以下是一些示例来展示如何使用这些选项: - `SELECT ... FOR UPDATE...