怎样在SQLLDR失败后,把SQLLDR锁定表释放?

quiettown 2009-09-05 03:45:58
建立一双机系统,在主机上进行SQLLDR时,系统SHUTDOWN。备机启动后,向同一表中LOAD数据时报错:

SQL*Loader-951: Error calling once/load initialization
ORA-00604: error occurred at recursive SQL level 1
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

很明显sqlldr使用了direct=true,造成锁表。

sqlldr user/passwd@dbtns DIRECT=TRUE SKIP_UNUSABLE_INDEXES=TRUE SKIP_INDEX_MAINTENANCE=FALSE control=test.ctl

不想使用alter system kill session方式来处理。

请问有没有oracle系统维护过程能够实现清理死掉会话,我们想在双机切换时,即对数据库中会话进行处理。又或者有其它途径,希望不吝赐教,不胜感谢!
...全文
668 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
quiettown 2009-09-08
  • 打赏
  • 举报
回复
虽然没有满意的答案,感谢关注的兄弟
quiettown 2009-09-07
  • 打赏
  • 举报
回复
这个和双机其实没有太大关系,重点是将锁表的死去SESSION清除掉。。。
ckc 2009-09-07
  • 打赏
  • 举报
回复
什么样的双机?rac还是ha这样的?
quiettown 2009-09-07
  • 打赏
  • 举报
回复
顶下。。。
quiettown 2009-09-05
  • 打赏
  • 举报
回复
楼上兄弟,系统都挂了,你让俄上哪儿ROLLBACK去?实际上,使用CTRL+C做测试时,SESSION也是可以得到释放的,只是OS SHUTDOWN时,这个SESSION会挂在数据库中。
PMON进程可以清理类似数据垃圾,但触发条件是什么?
可以考虑KILL SESSION,但在数据库如何判断客户端已断开?
观察LOAD过程中时的SESSION的状态也是一会ACTIVE, 一会INACTIVE的,不能以SESSION的STATUS做为正在LOAD判断依据。
oraclemch 2009-09-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 quiettown 的回复:]
建立一双机系统,在主机上进行SQLLDR时,系统SHUTDOWN。备机启动后,向同一表中LOAD数据时报错:

SQL*Loader-951: Error calling once/load initialization
ORA-00604: error occurred at recursive SQL level 1
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

很明显sqlldr使用了direct=true,造成锁表。

sqlldr user/passwd@dbtns DIRECT=TRUE SKIP_UNUSABLE_INDEXES=TRUE SKIP_INDEX_MAINTENANCE=FALSE control=test.ctl

不想使用alter system kill session方式来处理。

请问有没有oracle系统维护过程能够实现清理死掉会话,我们想在双机切换时,即对数据库中会话进行处理。又或者有其它途径,希望不吝赐教,不胜感谢!
[/Quote]

你rollback就好了。不会思索了!
Dave 2009-09-05
  • 打赏
  • 举报
回复
解锁:
1.事务处理完,自动解锁
2.kill session,楼主这样情况估计只能kill session了.
用Toad里的session Brower 来kill session还是比较方便的.


SQL> select 'alter system kill session '''||sid||','||serial#||''';' from v$session where sid in (select sid from v$lock where block = 1);
'ALTER SYSTEM KILL SESSION'''||SID||','||SERIAL#||''';'

我们可以在切换之后手动的用SQL来检查检查有没有死锁,如果有,kill 就可以了..


至于楼主的意思:在双机切换时,自动对数据库中会话进行处理, 个人认为实现有难度,数据库如何去判断在哪些session是死锁的? 这个还是需要人工的介入.. 期待其他答案..

数据名称:337个城市智慧健康养老DID数据(2017-2025) 数据范围:31省 数据来源:工信部 数据注意:智慧健康养老是以智能硬件、数字化服务平台为载体,融合物联网、大数据、云计算、AI 等信息技术,围绕老年人健康管护、日常养老两大需求形成的新型产业与服务体系;核心是把健康管理、安全监护、生活照料、医疗康复、精神慰藉打通,实现医养结合、居家 - 社区 - 机构一体化,缓解老龄化与护理人力缺口压力 数据指标:city、year、treat Python 数据分析完整实操流程 整体分为 6 大步骤:数据读取 → 数据清洗(最耗时)→ 描述性统计探索 → 可视化分析 → 深度挖掘(相关性、分组、回归等)→ 结果导出 常用工具库: 数据读写、格处理:pandas 数值计算:numpy 绘图可视化:matplotlib、seaborn 高级统计 / 机器学习:scipy、scikit-learn 我国智慧健康养老产业持续深化落地,各地依托数字技术、智能终端、大数据平台,逐步构建起机构、社区、居家三位一体的智慧养老服务体系,数字化赋能养老服务转型升级成效持续显现。 全国多地持续推进智慧养老院建设、居家养老智能设备布设、养老服务数字化平台搭建,逐步实现养老服务精准化、监管智能化、供给多元化。 各地积极探索养老数据资源化利用、医养智慧融合、适老科技产品落地应用,形成了一批可复制、可推广的城市智慧养老发展模式。

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧