ORA-00054: ресурс занят и получен с указанным значением NOWAIT или истекло время ожидания, исключение java.sql.SQLException
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 [измените имя таблицы UKIADATA на UKIADATA_temp]; ORA-00054: ресурс занят и получен с указанным значением NOWAIT или истекло время ожидания; вложенное исключение: java.sql.SQLException: ORA-00054: ресурс занят и получен с указанным значением NOWAIT или истекло время ожидания,
В дополнение к этому вы можете помочь мне, как я могу вставить операторы коммита в этот кусок кода.
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#'