усечь таблицу. Ошибка Msg = sqlcode -668 sqlerrmc=7

#db2 #dbeaver

#db2 #dbeaver

Вопрос:

Я пытаюсь запустить этот запрос DB2 на DBEAVER:

TRUNCATE table departments immediate

но я получил эту ошибку:

DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016, SQLERRMC=7;DB2INST1.DEPARTMENTS, DRIVER=4.19.49

(это происходит как раз тогда, когда я запускаю его на DBEVAER (внешний канал) на локальном, он работает хорошо.

помочь кому-нибудь?

Комментарии:

1. ORA-02000 не является кодом ошибки Db2.

Ответ №1:

Код sqlcode -668 с sqlerrmc=7 (это 7 — «код причины») означает:

Операция SQL0668N не разрешена по коду причины «» в таблице»».

и код причины 7 означает:

Таблица находится в состоянии ожидания реорганизации. Это может произойти после инструкции ALTER TABLE, содержащей операцию, рекомендованную для реорганизации.

Если ваш идентификатор пользователя имеет правильные разрешения, попробуйте:

 reorg table db2inst1.departments   

если у вас есть доступ из командной строки к Db2 или из приложения jdbc, такого как DBeaver call admin_cmd ('reorg table db2inst1.departments') .

Но реорганизация завершится неудачно, если у вашей учетной записи отсутствуют разрешения или если синтаксис не разрешен в вашей версии Db2-сервера, и в этом случае вы должны попросить администратора базы данных выполнить работу за вас или стать пользователем db2inst1 и запустить реорганизацию.

Когда реорганизация завершится без ошибок, повторите попытку усечения таблицы.

Комментарии:

1. Есть ли запрос, который «отменяет» таблицу реорганизации? похоже, что он застрял в запросе таблицы реорганизации (который я выполнял ранее) и из-за этого не может завершить операцию усечения.

2. Невозможно вывести таблицу из состояния ожидания реорганизации с помощью онлайн-(на месте) реорганизации. Необходимо использовать автономную (классическую) реорганизацию. call admin_cmd ('reorg table db2inst1.departments') .