не может закинуть пользователя в оракул - PullRequest
0 голосов
/ 08 сентября 2010

Я пытаюсь удалить табличное пространство в Oracle 10g, используя мое приложение.

Немного о моем приложении. В моем приложении я могу создавать табличные пространства.

Теперь, что происходит в Oracle, когда вы создаете табличное пространство, автоматически создается новый пользователь и присоединяется к базе данных.

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

Когда я пытаюсь удалить пользователя, связанного с табличным пространством. Исключение выдается базой данных, которая является System.Data.OracleClient.OracleException

Подробности исключения: ORA - 01904 (не удается удалить пользователя, подключенного в данный момент)

Дело в том, что я закрыл все соединения. Довольно уверен в этом.

Тем не менее оракул выдает это исключение.

Есть предложения ???

Тем не менее он не может удалить пользователя и выдает исключение.

Ответы [ 5 ]

2 голосов
/ 08 сентября 2010

Может случиться, что вы закрыли приложения, но не завершили сеансы Oracle для этого пользователя. Войдите в систему как sysdba и запросите активные сеансы:

SQL> select sid, serial#, username from v$session;

       SID    SERIAL# USERNAME                      
---------- ---------- ------------------------------
       122       2557 SYS                   
       126       7878 SOME_USER                      

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

SQL> alter system kill session 'sid,serial#';
0 голосов
/ 09 сентября 2010

Пользователь НЕ создается автоматически при создании табличного пространства.

Пользователь получает назначенное табличное пространство по умолчанию. Они могут (или не могут) создавать объекты в этом табличном пространстве. Они могут (или не могут) создавать объекты и в других табличных пространствах.

Обычно вместо того, чтобы удалять пользователя, я бы выбрасывал объекты пользователя. Затем заблокируйте учетную запись, чтобы они не могли войти снова. Затем отмените все привилегии, которые у них есть.

При желании вы можете удалить «неиспользованных» пользователей через месяц или около того.

0 голосов
/ 08 сентября 2010

Пожалуйста, убедитесь, что пользователь, которого вы пытаетесь удалить, в данный момент не подключен. Я столкнулся с этой проблемой в прошлом году. Мой обходной путь должен был перезапустить базу данных. Как только база данных запущена, я удаляю пользователя.

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

Этот обходной путь (конечно) нельзя использовать в производственной базе данных.

0 голосов
/ 08 сентября 2010

Мы делаем следующее и работаем.

ALTER TABLESPACE "OUR_INDEX" OFFLINE NORMAL;
DROP TABLESPACE "OUR_INDEX" INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
0 голосов
/ 08 сентября 2010

Кажется, что ваш код ошибки: ORA-01940, а не ORA-01904, в котором говорится -

ORA-01940: невозможно удалить пользователя, который в данный момент вошел в систему

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

Действие: убедитесь, что пользователь вышел из системы, затем повторите команду.

Надеюсь, что приведенная ниже ссылка может вам помочь -

http://www.dba -oracle.com / t_ora_01940_cannot_drop_user.htm

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