2017-02-06 11 views
1

初心者にユーザーを削除することはできません。 CentOS 6.8にOracle DBを正常にインストールしました。 'AVDB' データベースに存在する一部のユーザーがありますSYSDBAは、OracleでOracle 12.1.0.2

  1. ORCL
  2. AVDB

:私は2つのデータベースを作成しました。私はAVDBデータベースにユーザーをドロップします。 SYSDBAユーザーとして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について知っていることはすべて...そのデータベースのDatabase Vaultには、sysdbaの作成/削除のユーザーを禁止するルール設定があると思われます(ただし、これは単なる推測です)。 12cは、Oracle Database Vaultのドキュメントをお試しください: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. 
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私はコメントの代わりに答えを加えることを考えましたが、私が何も知らない技術について暗闇の中で盲目的に行われただけだったので(単純な1行の説明を除いて)、それは悪い考えのようでした... –