2017-12-19 40 views
0

Oracle 12cデータベースがあります。 C## user1にsysdbaを付与したいと思います。 ここにユーザーテーブルがあります。 enter image description hereORA-65175:SYSDBA権限をルートにローカルに付与できません。

このコマンドを実行すると、エラーが発生する可能性があります。

grant sysdba to c##user1 container=current 

Error report - 
SQL Error: ORA-65175: cannot grant SYSDBA privilege locally in the root 
65175. 00000 - "cannot grant SYSDBA privilege locally in the root" 
*Cause: An attempt was made to grant SYSDBA privilege locally in the root 
      of a multitenant container database (CDB). 
*Action: While connected to the root, SYSDBA privilege can only be granted 
      commonly. 

このコマンドを実行すると、C## user1の2人のユーザーを取得できます。私はC## USER1にSYSDBAを付与することができますどのように

grant sysdba to c##user1 container=all 

enter image description here

。 ありがとうございます。 Plsは私を助けます。

答えて

2

コンテナまたはルートレベルでsysdbaにC## user1を付与しようとしていますか?これは、Container is logically separate from the rest of the CDBのように12C内の重要な区別です。 CON_IDの列には、各ユーザーの所在地が示されます。Con_ID=0は、行がCDB全体に関連していることを意味します。CON_ID=1は、その行がルートに関係することを意味します。

現在、2つの「C## user1」ユーザーがあります.1つはすべてのコンテナに存在する共通ユーザー(CON_ID=0)で、もう1人はルートに固有のローカルユーザーです。

CDB全体でSYSDBA特権を持つ1人の "C## user1"ユーザーが既に存在しています。その場合、ルートに接続してローカルの "C## user1"ユーザーを削除できます。そのルートだけにSYSDBA特権を持つローカルユーザーが必要だった場合は、 "C## user1"の一般ユーザーを削除し、ルートに接続してそこのローカルユーザーにsysdbaを付与することをお勧めします。

私がリンクしている記事は"Overview of the Multitenant Architecture"と題されていますが、いずれにしても決断を下す前にレビューをすることをお勧めします。

+0

私はC## user1(conId = 1)を使用していただきありがとうございます。ora01031エラーが発生しました。不十分なpriviledge sys.dbms_sessionです;;;;;そして、C#user1(conId = 0)のテーブルまたはビューが見つからない場合はどうすればいいですか?これを修正する方法は? –

+1

"C## user1(conId = 1)"はSYSDBA権限のないローカル・ユーザーです。したがって、DBMS_SESSIONのような多くのシステム・レベルのプロシージャをコールすることはできません。一般的な "C## user1(conId = 0)"ユーザーに接続すると、ルートではなくCDBのコンテナにログインします。 "ALTER SESSION SET CONTAINER = CDB $ ROOT"を発行するまで、またはrootの名前が何であっても、ルート内のテーブルを見ることはできません。 – solllodolllo

関連する問題