Отбрасывание TABLESPACE и USER, когда таблицы LOCKS отключены - PullRequest
2 голосов
/ 05 июля 2011

Ниже приведены операторы, которые я запускаю для удаления и воссоздания USER и TABLESPACE на моем локальном компьютере в oracle.

DROP TABLESPACE X INCLUDING CONTENTS AND DATAFILES ;
DROP USER X CASCADE;
CREATE TABLESPACE X DATAFILE '$ORACLE_PATH/X.dbf' SIZE 128M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;
CREATE USER X IDENTIFIED BY xxxxxxx DEFAULT TABLESPACE X TEMPORARY TABLESPACE temp;
GRANT exp_full_database TO X;
GRANT CONNECT,RESOURCE,DBA TO X;

Недавно мы добавили условие для отключения блокировки таблицы в этом TABLESPACE ивышеприведенная команда DROP теперь выдает:

Error report:
SQL Error: ORA-00604: error occurred at recursive SQL level 1
ORA-00069: cannot acquire lock -- table locks disabled for TABLE
00604. 00000 -  "error occurred at recursive SQL level %s"

Кто-нибудь знает способ УБРАТЬ ПОЛЬЗОВАТЕЛЯ и TABLESPACE без включения LOCKs или лучшего способа воссоздания локального TABLESPACE и USER с отключенными блокировками?

Приветствия

1 Ответ

4 голосов
/ 05 июля 2011

Цель команды DISABLE TABLE LOCK - предотвратить DDL. Если бы вы могли отбросить стол без повторного включения блокировки стола, для меня это было бы ошибкой.

В вашем случае вам нужно будет включить блокировки таблиц с помощью такого скрипта:

BEGIN
   FOR cc IN (SELECT owner, table_name
                FROM all_tables
               WHERE tablespace_name = :x
                 AND table_lock = 'DISABLED') LOOP
      EXECUTE IMMEDIATE 'ALTER TABLE "' || cc.owner || '"."' || 
                         cc.table_name || '" ENABLE TABLE LOCK';
   END LOOP;
END;

К сожалению, выполнение может занять очень много времени или даже неожиданный сбой :

Внимание : База данных Oracle ожидает, пока активные транзакции DML в база данных была завершена до блокировки стол. Иногда в результате задержка значительная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...