Как удалить пользователя оракула, начинающегося с двоеточия (:) - PullRequest
3 голосов
/ 04 марта 2010

Я использовал impdp и имел опечатку - теперь у меня есть имя пользователя, начинающееся с двоеточия (:) - например, my_schema.

Как я могу удалить этого пользователя? Я перепробовал все, что мог, чтобы избежать этого, но ничто не помогает.

Редактировать: Чтобы уточнить - я знаю, как удалить пользователя. У меня проблемы с преодолением проблемы со спецсимволами.

Ответы [ 4 ]

4 голосов
/ 04 марта 2010

Вы пытались заключить его в двойные кавычки? * 1001 например *

drop user ":my_schema";

Когда вы делаете это, важен случай: ": myschema" или ": MYSCHEMA" или что-то среднее?

2 голосов
/ 26 мая 2011

Кажется, вы можете сделать это с помощью динамического SQL:

begin
    execute immediate 'create user ":MY_SCHEMA" identified by xxx';
end;
/

PL/SQL procedure successfully completed.

select username, account_status from dba_users where username = ':MY_SCHEMA';

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
:MY_SCHEMA                     OPEN

begin
    execute immediate 'drop user ":MY_SCHEMA"';
end;
/

PL/SQL procedure successfully completed.

select username, account_status from dba_users where username = ':MY_SCHEMA';

no rows selected
1 голос
/ 26 мая 2011

Мне так и не удалось сделать, пришлось восстанавливать из резервных копий.

0 голосов
/ 04 марта 2010

Вы можете использовать:

drop user :my_schema;

или

drop user :my_schema cascade;

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

drop table x cascade constraints; etc. 

Единственная проблема в том, что вы все потеряете и должны начать все сначала.Если в вашей базе данных есть сценарий, вам просто нужно повторно запустить сценарий, чтобы перезагрузить его.

...