加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 百科 > 正文

oracle – 删除表分区,避免错误ORA-00054

发布时间:2021-01-26 06:43:07 所属栏目:百科 来源:网络整理
导读:在这种情况下我需要你的意见.我会尝试解释这个场景.我有一个 Windows服务,定期将数据存储在Oracle数据库中.存储此数据的表按日期(间隔日期范围分区)进行分区.该数据库还有一个dbms_scheduler作业,除其他操作外,还截断并删除旧分区. 这种方法已经工作了一段

在这种情况下我需要你的意见.我会尝试解释这个场景.我有一个 Windows服务,定期将数据存储在Oracle数据库中.存储此数据的表按日期(间隔日期范围分区)进行分区.该数据库还有一个dbms_scheduler作业,除其他操作外,还截断并删除旧分区.

这种方法已经工作了一段时间,但最近我有一个ORA-00054错误.经过一些调查后,错误通过以下步骤重现:

>打开一个sqlplus会话,禁用自动提交,并在中插入数据
分区表,不提交更改;
>打开另一个sqlplus会话并截断/删除旧分区(DDL
如果我没有记错的话,操作会自动提交.我们
然后会得到ORA-00054错误.

有一些值得提及的限制:

>我没有DBA访问数据库;
>这是一个遗留应用程序,完整的重构不是
可行;

那么,在您看来,有没有办法删除这些旧分区,没有遇到ORA-00054错误而没有DBA干预的风险?我可以删除数据,但每天都会增加空分区的数量.

提前谢谢了.

解决方法

此错误表示某人(或某事)正在处理您尝试删除的分区中的数据.也就是说,在分区级别授予锁定.如果没有人使用分区,你的工作可能会丢弃它.

现在你说这是一个遗留应用程序,你不想或不能重构它.很公平.但是,如果你有一个进程正在切换其他进程正在使用的数据,那么显然有些不对.我不同意@tbone建议只是循环,直到锁被释放:你不能只是摆脱有人正在使用的数据,以确定他们为什么仍在使用他们显然不应该使用的数据.

因此,第一步是找出锁定会话正在做什么.为什么他们仍在修改您的后台工作要退休的数据?这是一个script which will help you establish which session has the lock.

除非您“没有DBA访问数据库”.嗯,这是一个卷曲的.基本上这不是一个没有DBA访问就可以解决的问题.

您似乎有几个问题需要处理.不幸的是,他们是政治和建筑而不是技术,我们没有太多可以帮助你进一步.

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读