2012-03-26 6 views
1

Oracleデータベースを初めて使用しています。私はsysユーザーとして接続している場合、私はユーザーとして接続すると、Oracleデータベースのdba_users情報が収集されます

select * from dba_users;

行うことができていることがわかりません。しかし、私はconn [email protected]を行っていると、私はもはやそれを行うことができます。私はORA-00942: table or view does not exist

select * from sys.dba_users;

はどちらか動作していないというエラーを取得します。

非sysユーザーとして接続した後で、これがなぜ、どのように実行できるのかを教えてくださいselect * from dba_users;

また、disconnectは完全に切断されます。 sqlplusで現在のユーザーを「終了」してsysに戻すことは可能ですか?もしそうなら、それを行う方法は?

+0

がhttp://stackoverflow.com/questions/205736/oracle-get-listを参照してください。 user/all/dbaテーブルに関する議論のための-of-all-tables接続を切断します。 "change session set current_schema = 'newUser'"コマンドがありますが、それはユーザーまたは権限を変更しません。修飾されていない名前に使用するデフォルトのスキーマを指定するだけです。 – Glenn

答えて

4

OracleのDBA_ *ビューには、所有権に関係なくデータベース内のすべてのオブジェクトに関する情報が含まれています。管理者アカウントのみがデフォルトでこれらのビューにアクセスできます。これはセキュリティ上の理由から行われます。 「通常の」ユーザーがこれらのビューにアクセスするには、ビュー単位で直接アクセスするか、SELECT ANY TABLE(推奨しません)などのシステム権限を使用してグローバルにアクセス権を付与する必要があります。ユーザーが実際に必要とする実際のDBA_ビューへのアクセスを許可する方がよい。通常、ALL_ビューは一般的なユーザーに必要なすべての情報を提供します。

CONNECT sys/pw as sysdba 

EDIT:現在のユーザセッションを終了し、別のユーザーとして接続し、CONNECTコマンドを使用し

オブジェクトの

所有者は、他のユーザへのオブジェクトのいずれかへのアクセスを許可することができまたはユーザーSYSとして実行GRANT command:

GRANT SELECT ON dba_users TO nonsys; 

経由役割、これはユーザーNONSYSに表示DBA_USERSへの選択アクセスを許可します。

助成が行われた後、ユーザーNONSYSがSELECT文を経由して、このビューから選択することができるようになります:

SELECT * FROM dba_users; 
+0

特定のユーザ 'nonsys'に対して' dba_users'のアクセス権を与え、実際にアクセスする方法を教えてください。どうもありがとう! –

関連する問題