ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
ユーザが使用できないパッケージの一覧を取得 ( No.7 )
日時: 2008/07/03 10:50
名前: lightbox



まず、SELECT ANY DICTIONARY システム権限が必要なので、
以下の SQL であるかどうか確かめます

select PRIVILEGE 
 from USER_SYS_PRIVS

 union

select PRIVILEGE 
 from ROLE_SYS_PRIVS 

 order by PRIVILEGE
もし無かったら、SQLPlus で、SYS でログインするか、ローカルで以下のようにします
sqlplus / as sysdba
※ 実行している Windows ユーザが ORA_DBA グループに所属している必要があります そして、grant で SELECT ANY DICTIONARY 権限を付与します
grant 
	SELECT ANY DICTIONARY
to ORACLEのユーザ
そして以下の SQL を実行すると、実行権限の無いパッケージの一覧を取得できます
select distinct
	DBA_TAB_PRIVS.OWNER,
	DBA_TAB_PRIVS.TABLE_NAME

from 
	DBA_TAB_PRIVS
	left outer join ALL_TAB_PRIVS
	on
	   DBA_TAB_PRIVS.TABLE_NAME = ALL_TAB_PRIVS.TABLE_NAME
	left outer join DBA_OBJECTS
	on
	   DBA_TAB_PRIVS.OWNER = DBA_OBJECTS.OWNER
	   and DBA_TAB_PRIVS.TABLE_NAME = DBA_OBJECTS.OBJECT_NAME

where
	DBA_TAB_PRIVS.PRIVILEGE = 'EXECUTE'
	and ALL_TAB_PRIVS.TABLE_NAME is NULL
	and DBA_OBJECTS.OBJECT_TYPE = 'PACKAGE'

order by DBA_TAB_PRIVS.TABLE_NAME
そして、使用可能にするには、再び grant で権限を付与します。 ( 以下は実際の例です )
grant execute on sys.utl_file to lightbox;
また、実行できるオブジェクトの一覧は以下で取得して下さい
select * from ALL_TAB_PRIVS where PRIVILEGE = 'EXECUTE'