All_directoriesにディレクトリがありますが、それに関連付けられているアクセス許可、つまり、どのアクセス許可が付与されているかを調べる必要がありますか?
これにより、ディレクトリに付与されたロール、ユーザー、およびパーミッションが得られます。
SELECT *
FROM all_tab_privs
WHERE table_name = 'your_directory'; --> needs to be upper case
はい、IS ;-) PL/SQLオブジェクトとその実行権限も含まれるため、そのビューのより良い名前は「ALL_OBJECT_PRIVS」のようなものです。
以下を使用して、すべてのディレクトリのすべての権限を確認できます。
SELECT *
from all_tab_privs
where table_name in
(select directory_name
from dba_directories);
以下は、あなたがしたことや何かをバックアップする必要がある場合に特権を付与するSQL文を提供します
select 'Grant '||privilege||' on directory '||table_schema||'.'||table_name||' to '||grantee
from all_tab_privs
where table_name in (select directory_name from dba_directories);
どのOracleユーザーがディレクトリを使用して読み書きできるのか、またはOracle Directory Objectと基礎となるオペレーティングシステムディレクトリ間の権限の相関関係を意味するのかどうかはわかりませんでした。
DCookieはフェンスのOracle側をカバーしているので、次は here で見つかったOracleドキュメントから取られています。
ディレクトリに付与された権限は、オペレーティングシステムディレクトリに定義された権限とは無関係に作成され、この2つは正確に一致する場合と一致しない場合があります。たとえば、サンプルユーザーhrにディレクトリオブジェクトのREAD権限が付与されているが、対応するオペレーティングシステムディレクトリにOracle DatabaseプロセスのREAD権限が定義されていない場合、エラーが発生します。
Oracle 11g R2(少なくとも11.2.02)では、datapump_dir_objsという名前のビューがあります。
SELECT * FROM datapump_dir_objs;
ビューには、ディレクトリオブジェクトのNAME
、PATH
、および現在接続しているユーザーのREAD
およびWRITE
権限が表示されます。ただし、現在のユーザーが読み取りまたは書き込みを許可されていないディレクトリオブジェクトは表示されません。