问题描述
嗨,汤姆,
每当我有疑问时,我都会关注您的帖子。我几乎每次都能找到解决我问题的方法。你的帖子很有帮助。我最近偶然发现了一个问题,并试图找到解决方案。因此写信给你。下面是描述。
昨天甚至更新了一张表
1.首先我更新我的表,但没有提交或回滚Update employee set id=1 where id=2;
2.我查过了v$locked_object我能够看到该表的条目。我复制了会话id。
3.使用该会话id,我可以在v$lock表,但有3个条目,一个条目为我的类型TM的锁定对象,还有两个其他条目与AE和TX。
4.使用这个会话id我调查了v$session并复制了sql id,并在v$sql。但是sql是 “从v $ session中选择 *,其中sid = 37”。不是我第一次执行的更新语句。
5.然后我检查v$sqlarea并搜索了文中的update语句。并得到了sql id
6.使用该sql id我再次在v $ session中搜索但没有条目再次
It will be great help if you can explain this and how to check entry in v$session as i wanted to check row_wait_row# and using this wanted to get row id of the same using dbms_rowid.rowid_create
你能解释一下吗?提前谢谢你。
塔努斯里
每当我有疑问时,我都会关注您的帖子。我几乎每次都能找到解决我问题的方法。你的帖子很有帮助。我最近偶然发现了一个问题,并试图找到解决方案。因此写信给你。下面是描述。
昨天甚至更新了一张表
1.首先我更新我的表,但没有提交或回滚Update employee set id=1 where id=2;
2.我查过了v$locked_object我能够看到该表的条目。我复制了会话id。
3.使用该会话id,我可以在v$lock表,但有3个条目,一个条目为我的类型TM的锁定对象,还有两个其他条目与AE和TX。
4.使用这个会话id我调查了v$session并复制了sql id,并在v$sql。但是sql是 “从v $ session中选择 *,其中sid = 37”。不是我第一次执行的更新语句。
5.然后我检查v$sqlarea并搜索了文中的update语句。并得到了sql id
6.使用该sql id我再次在v $ session中搜索但没有条目再次
It will be great help if you can explain this and how to check entry in v$session as i wanted to check row_wait_row# and using this wanted to get row id of the same using dbms_rowid.rowid_create
你能解释一下吗?提前谢谢你。
塔努斯里
专家解答
* 当 * 我运行SQL时,它在V $ SESSION中显示为SQL_ID。
例如
会话1: 从my_big_table中选择计数 (*)
会话2: 从v $ 会话中选择sql_id,其中sid = [会话1]
你会看到正在运行的SQL的SQL_ID。
但是,当查询 (或它正在执行的任何命令) * 完成 * 时,V $ SESSION中的SQL_ID列将为null,因为它现在没有运行任何内容。(或者它可能是一个全新的SQL_ID,因为它已移至运行其他内容)。
But *while* another session is waiting, you can what it is *trying* to get from V$SESSION, 例如
第1场会议:
第二场:
然后我可以看看第二个会话被卡住了
但是我不确定您所说的 “删除rowid” 是什么意思。因为即使您从上面的4列中列出了rowid,也无法删除它-因为您也会被阻止。您需要杀死会话 * 持有 * 锁。
例如
会话1: 从my_big_table中选择计数 (*)
会话2: 从v $ 会话中选择sql_id,其中sid = [会话1]
你会看到正在运行的SQL的SQL_ID。
但是,当查询 (或它正在执行的任何命令) * 完成 * 时,V $ SESSION中的SQL_ID列将为null,因为它现在没有运行任何内容。(或者它可能是一个全新的SQL_ID,因为它已移至运行其他内容)。
But *while* another session is waiting, you can what it is *trying* to get from V$SESSION, 例如
第1场会议:
SQL> create table t as select * from dual; Table created. SQL> delete from t; 1 row deleted.复制
第二场:
SQL> delete from t; [stuck]复制
然后我可以看看第二个会话被卡住了
SQL> select * from v$session where sid = 127 2 @pr ============================== SADDR : 00007FFCD2C230F8 SID : 127 SERIAL# : 25696 AUDSID : 1127778 PADDR : 00007FFCD25F2DA0 USER# : 107 USERNAME : MCDONAC COMMAND : 7 OWNERID : 2147483644 TADDR : 00007FFCC8AD3B60 LOCKWAIT : 00007FFCCD0D10F0 STATUS : ACTIVE SERVER : DEDICATED SCHEMA# : 107 SCHEMANAME : MCDONAC OSUSER : GTX\hamcdc PROCESS : 25868:16988 MACHINE : WORKGROUP\GTX PORT : 60424 TERMINAL : GTX PROGRAM : sqlplus.exe TYPE : USER SQL_ADDRESS : 00007FFCAD302680 SQL_HASH_VALUE : 1063131497 SQL_ID : 1hws8f0zpw6b9 SQL_CHILD_NUMBER : 0 SQL_EXEC_START : 11-JUN-20 SQL_EXEC_ID : 16777217 PREV_SQL_ADDR : 00007FFCA6E19D18 PREV_HASH_VALUE : 3928840931 PREV_SQL_ID : 0qq0c4bp2uqr3 PREV_CHILD_NUMBER : 0 PREV_EXEC_START : 11-JUN-20 PREV_EXEC_ID : 16777230 PLSQL_ENTRY_OBJECT_ID : PLSQL_ENTRY_SUBPROGRAM_ID : PLSQL_OBJECT_ID : PLSQL_SUBPROGRAM_ID : MODULE : SQL*Plus MODULE_HASH : 3669949024 ACTION : ACTION_HASH : 0 CLIENT_INFO : FIXED_TABLE_SEQUENCE : 386777 ===>> ROW_WAIT_OBJ# : 91121 ===>> ROW_WAIT_FILE# : 64 ===>> ROW_WAIT_BLOCK# : 59299 ===>> ROW_WAIT_ROW# : 0 TOP_LEVEL_CALL# : 94 LOGON_TIME : 11-JUN-20 LAST_CALL_ET : 21 PDML_ENABLED : NO FAILOVER_TYPE : NONE FAILOVER_METHOD : NONE FAILED_OVER : NO RESOURCE_CONSUMER_GROUP : OTHER_GROUPS PDML_STATUS : DISABLED PDDL_STATUS : ENABLED PQ_STATUS : ENABLED CURRENT_QUEUE_DURATION : 0 CLIENT_IDENTIFIER : BLOCKING_SESSION_STATUS : VALID BLOCKING_INSTANCE : 1 BLOCKING_SESSION : 369 FINAL_BLOCKING_SESSION_STATUS : VALID FINAL_BLOCKING_INSTANCE : 1 FINAL_BLOCKING_SESSION : 369 SEQ# : 57 EVENT# : 307 EVENT : enq: TX - row lock contention P1TEXT : name|mode P1 : 1415053318 P1RAW : 0000000054580006 P2TEXT : usn<<16 | slot P2 : 524301 P2RAW : 000000000008000D P3TEXT : sequence P3 : 19170 P3RAW : 0000000000004AE2 WAIT_CLASS_ID : 4217450380 WAIT_CLASS# : 1 WAIT_CLASS : Application WAIT_TIME : 0 SECONDS_IN_WAIT : 22 STATE : WAITING WAIT_TIME_MICRO : 21772035 TIME_REMAINING_MICRO : -1 TIME_SINCE_LAST_WAIT_MICRO : 0 SERVICE_NAME : pdb1 SQL_TRACE : DISABLED SQL_TRACE_WAITS : FALSE SQL_TRACE_BINDS : FALSE SQL_TRACE_PLAN_STATS : FIRST EXEC SESSION_EDITION_ID : 134 CREATOR_ADDR : 00007FFCD25F2DA0 CREATOR_SERIAL# : 92 ECID : SQL_TRANSLATION_PROFILE_ID : 0 PGA_TUNABLE_MEM : 0 SHARD_DDL_STATUS : DISABLED CON_ID : 3 EXTERNAL_NAME : GTX\hamcdc PLSQL_DEBUGGER_CONNECTED : FALSE PL/SQL procedure successfully completed.复制
但是我不确定您所说的 “删除rowid” 是什么意思。因为即使您从上面的4列中列出了rowid,也无法删除它-因为您也会被阻止。您需要杀死会话 * 持有 * 锁。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
561次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
482次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
457次阅读
2025-04-01 11:08:44
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
452次阅读
2025-04-08 09:12:48
墨天轮个人数说知识点合集
JiekeXu
451次阅读
2025-04-01 15:56:03
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
442次阅读
2025-04-22 00:20:37
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
420次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
417次阅读
2025-04-22 00:13:51
Oracle 19c RAC更换IP实战,运维必看!
szrsu
397次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
371次阅读
2025-04-17 17:02:24