ORA-00054:资源繁忙并且使用NOWAIT指定或超时过期获取,异常是java.sql.SQLException

时间:2017-10-05 03:16:27

标签: spring oracle jdbctemplate alter autocommit

jdbcTemplate.execute("alter table UKIADATA rename to UKIADATA_temp");

jdbcTemplate.execute("alter table UKIADATA_2 rename to UKIADATA");

jdbcTemplate.execute("alter table UKIADATA_temp rename to UKIADATA_2");

logger.info("Tables swapped.");

我收到错误SQL [alter table UKIADATA rename to UKIADATA_temp]; ORA-00054:资源繁忙并在指定NOWAIT或超时过期时获取 ;嵌套异常是java.sql.SQLException:ORA-00054:资源繁忙并且在指定NOWAIT或超时过期时获取,

除此之外,您可以帮助我如何在这段代码中插入commit语句。

1 个答案:

答案 0 :(得分:1)

目前,您尝试重命名的表被另一个会话占用(读取,插入数据,更新,删除)。为了使您的请求在没有此错误的情况下运行,您必须关闭其他会话或停止访问此表。 DDL操作不需要修复,它们只需要修复插入,更新,删除命令。 任何DDL命令也会在开始工作之前提交数据。 此SQL将确定哪些会话阻止该表。 以下SQL将强制终止这些会话。

select s.sid, s.serial#
from v$locked_object l, dba_objects o, v$session s
where  o.object_name in('UKIADATA','UKIADATA_2')  and 
l.object_id = o.object_id and l.session_id = s.sid 

alter system kill session 'sid,serial#'