惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News | PayPal Newsroom
I
InfoQ
小众软件
小众软件
T
The Blog of Author Tim Ferriss
WordPress大学
WordPress大学
V
V2EX
G
Google Developers Blog
罗磊的独立博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
N
Netflix TechBlog - Medium
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
IT之家
IT之家
J
Java Code Geeks
L
LangChain Blog
D
DataBreaches.Net
F
Fortinet All Blogs
B
Blog
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
Google DeepMind News
Google DeepMind News
Engineering at Meta
Engineering at Meta
P
Privacy & Cybersecurity Law Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
K
Kaspersky official blog
博客园 - 【当耐特】
T
Tenable Blog
AWS News Blog
AWS News Blog
V
Visual Studio Blog
T
Tor Project blog
阮一峰的网络日志
阮一峰的网络日志
H
Heimdal Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
S
Secure Thoughts
Security Archives - TechRepublic
Security Archives - TechRepublic
I
Intezer
Attack and Defense Labs
Attack and Defense Labs
Webroot Blog
Webroot Blog
Latest news
Latest news
TaoSecurity Blog
TaoSecurity Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Know Your Adversary
Know Your Adversary
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
Threatpost
SecWiki News
SecWiki News
S
Security Affairs
H
Help Net Security

博客园 - 土炮不一样

IT需求统筹与任务管理流程(需求-任务分解-任务分配-交付测试) 数据库主备与MHA架构对比 【转】中国信通院《低代码产业发展研究报告(2025年)》核心解读 Mybase高级记事本 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 WPS Excel 中统计每种任务类型的不同完成状态数量并生成图表 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 项目管理-​​IT需求何时需要当作项目来做? 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 【MES专家之路】——各个击破 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 Excel 自动换行后批量设置单元格上下边距 博文阅读密码验证 - 博客园
Oracle数据库- 11g 查询并终止锁定会话临时表的会话
土炮不一样 · 2025-05-22 · via 博客园 - 土炮不一样

在Oracle 11g中,要查询并终止锁定会话临时表(ON COMMIT PRESERVE ROWS)的会话,请按照以下步骤操作:

1. 查询锁定会话临时表的会话

方法1:使用VLOCK和VSESSION视图

SELECT l.sid, s.serial#, s.username, s.osuser, 
       s.machine, s.program, s.module, s.action,
       l.type, l.lmode, l.request, l.block
FROM v$lock l
JOIN v$session s ON l.sid = s.sid
WHERE l.type = 'TO'  -- TO表示临时对象锁
AND l.id1 IN (
    SELECT object_id 
    FROM dba_objects 
    WHERE object_name = UPPER('您的表名') 
    AND owner = UPPER('表所有者')
    AND temporary = 'Y'
);

方法2:使用V$ACCESS视图(适用于11g)

SELECT s.sid, s.serial#, s.username, s.status,
       s.machine, s.program, s.logon_time
FROM v$access a
JOIN v$session s ON a.sid = s.sid
WHERE a.object = UPPER('您的表名')
AND a.owner = UPPER('表所有者');

2. 终止锁定会话

找到锁定会话的SID和SERIAL#后,使用以下命令终止会话:

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

3. 验证锁是否已释放

SELECT * FROM v$lock 
WHERE type = 'TO' 
AND id1 IN (
    SELECT object_id 
    FROM dba_objects 
    WHERE object_name = UPPER('您的表名') 
    AND owner = UPPER('表所有者')
);

4. 如果仍有问题,可尝试强制清理

ALTER SYSTEM CHECKPOINT;
ALTER SYSTEM FLUSH SHARED_POOL;

5. 特殊情况处理(如果会话无法终止)

如果会话无法正常终止,可以尝试以下方法:

  1. 在操作系统层面终止进程(需要DBA权限):
SELECT s.sid, s.serial#, p.spid, s.osuser, s.program
FROM v$session s, v$process p
WHERE s.paddr = p.addr
AND s.sid = [问题会话的SID];

然后使用操作系统命令:

kill -9 [SPID]

注意事项

  1. 在Oracle 11g中,会话临时表的锁会在会话结束时自动释放
  2. 终止会话前,确保该会话没有正在执行重要事务
  3. 如果应用使用连接池,可能需要重启应用服务才能完全释放所有锁
  4. 建议在非业务高峰期执行这些操作

预防措施

  1. 为临时表使用单独的表空间
  2. 设置合理的会话超时参数(如PROFILE中的IDLE_TIME)
  3. 定期监控长时间运行的会话:
SELECT sid, serial#, username, program, status, 
       last_call_et/3600 as hours_active
FROM v$session
WHERE type = 'USER'
ORDER BY last_call_et DESC;