【问题标题】:ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired, exception is java.sql.SQLExceptionORA-00054: 资源繁忙并获取指定了 NOWAIT 或超时过期,异常是 java.sql.SQLException
【发布时间】:2018-03-16 13:57:13
【问题描述】:
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: resource busy and acquire with NOWAIT specified or timeout expired,

除此之外,您能帮我如何在这段代码中插入提交语句。

【问题讨论】:

    标签: spring oracle jdbctemplate alter autocommit


    【解决方案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#'
    

    【讨论】:

    • 解决方案是什么,如何在更改数据库表之前关闭代码中的会话
    猜你喜欢
    • 2011-06-18
    • 2012-10-09
    • 2013-10-04
    • 2011-03-05
    • 2016-03-28
    • 2023-01-30
    • 2011-07-02
    • 2022-10-24
    相关资源
    最近更新 更多