2017-02-06 3 views
1

Новичок в Oracle. Я успешно установил Oracle DB на CentOS 6.8. Я создал две базы данных:SYSDBA не может удалить пользователя в Oracle 12.1.0.2

  1. ORCL
  2. AVDB

Есть некоторые пользователи, находящиеся в базе данных 'AVDB'. Я хочу отказаться от пользователя в базе данных AVDB. Но я получаю недостаточную ошибку привилегий, хотя я подключен как пользователь SYS AS SYSDBA. Я даже не могу создать пользователя, использующего пользователя sys.

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

[[email protected] ~]$ sqlplus sys as sysdba 

SQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 2 14:13:16 2017 

Copyright (c) 1982, 2014, Oracle. All rights reserved. 

Enter password: 

Connected to: 
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics, 
Oracle Database Vault and Real Application Testing options 

SQL> drop user avuser cascade; 
drop user avuser cascade 
* 
ERROR at line 1: 
ORA-01031: insufficient privileges 

SQL> create user test1 identified by secret; 
create user test1 identified by secret 
           * 
ERROR at line 1: 
ORA-01031: insufficient privileges 

SQL> disconnect 
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics, 
Oracle Database Vault and Real Application Testing options 
SQL> conn avuser 
Enter password: 
Connected. 
SQL> create user test1 identified by secret; 

User created. 
+2

Oracle Database Vault ограничивает sysdba выполнением определенных действий. Тем не менее, это действительно все, что я знаю о Oracle Database Vault ... Я подозреваю, что в базе данных Vault на этой базе данных может быть настройка правил, которая предотвращает создание/удаление пользователя для sysdba (хотя это просто догадка). Попробуйте документы Oracle Database Vault для 12c: https://docs.oracle.com/database/121/DVADM/dvintro.htm#DVADM001 –

+0

В этом была проблема. Я должен был сначала отключить хранилище, зарегистрировавшись как владелец базы данных. Только тогда пользователь может быть удален. Замечательные вещи. Благодаря! –

ответ

1

Во-первых, определить, если хранилище активен:

SQL> SELECT PARAMETER, VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault'; 

     PARAMETER 
     ---------------------------------------------------------------- 
     VALUE 
     ---------------------------------------------------------------- 
     Oracle Database Vault 
     TRUE 

Затем подключите в качестве владельца базы данных и отключить хранилище:

SQL> conn avuser 
     Enter password: 
     Connected. 
     SQL> EXEC DVSYS.DBMS_MACADM.DISABLE_DV; 

     PL/SQL procedure successfully completed. 

Connect, как SYSDBA и перезапустить базу данных:

SQL> conn sys as sysdba 
Enter password: 
Connected. 
SQL> SHUTDOWN IMMEDIATE 
Database closed. 
Database dismounted. 
ORACLE instance shut down. 
SQL> startup 
ORACLE instance started. 

уронить пользователя при подключении, как SYSDBA:

SQL> conn sys as sysdba 
    Enter password: 
    Connected. 
    SQL> drop user avuser cascade; 
    drop user avuser cascade 
    * 
    ERROR at line 1: 
    ORA-01940: cannot drop a user that is currently connected 

Если вы получите вышеуказанную ошибку, узнать активные сеансы пользователя были сброшены и убиты:

SQL> SELECT s.sid, s.serial#, s.status, p.spid FROM v$session s, v$process p WHERE s.username = 'AVUSER' AND p.addr(+) = s.paddr; 

       SID SERIAL# STATUS SPID 
     ---------- ---------- -------- ------------------------ 
       17  48252 INACTIVE 45579 

     SQL> ALTER SYSTEM KILL SESSION '17,48252'; 

     System altered. 

     SQL> drop user avuser cascade; 

     User dropped. 

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

+0

+1 Я рассмотрел вопрос о добавлении ответа вместо комментария, но поскольку ответ был бы просто слепым выстрелом в темноте о технике, о которой я ничего не знаю (кроме простого описания одной строки), это показалось плохим идеей ... –