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

推荐订阅源

T
Tailwind CSS Blog
C
CERT Recently Published Vulnerability Notes
P
Proofpoint News Feed
Vercel News
Vercel News
博客园 - 三生石上(FineUI控件)
IT之家
IT之家
Help Net Security
Help Net Security
月光博客
月光博客
N
News and Events Feed by Topic
Cloudbric
Cloudbric
博客园 - 司徒正美
L
LangChain Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tenable Blog
The Register - Security
The Register - Security
The Hacker News
The Hacker News
I
InfoQ
The Last Watchdog
The Last Watchdog
MyScale Blog
MyScale Blog
Schneier on Security
Schneier on Security
WordPress大学
WordPress大学
小众软件
小众软件
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
宝玉的分享
宝玉的分享
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
K
Kaspersky official blog
L
LINUX DO - 热门话题
N
News | PayPal Newsroom
F
Fortinet All Blogs
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Security @ Cisco Blogs
Recorded Future
Recorded Future
大猫的无限游戏
大猫的无限游戏
H
Help Net Security
Google Online Security Blog
Google Online Security Blog
S
Schneier on Security
C
Cisco Blogs
N
News and Events Feed by Topic
V2EX - 技术
V2EX - 技术
Latest news
Latest news
PCI Perspectives
PCI Perspectives
T
The Blog of Author Tim Ferriss
P
Palo Alto Networks Blog
T
Tor Project blog
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Webroot Blog
Webroot Blog
Attack and Defense Labs
Attack and Defense Labs
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org

博客园 - 土炮不一样

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;