web-dev-qa-db-ja.com

PL / SQLはシステムとしてログインしている間は特権を付与できません

systemとしてログインしている場合でも、DBMS_LOB(ファイルを操作するために必要です)に対する実行権限を付与できません。私に何ができる? DBA ROLEを付与してもまったく効果がありません。

Error starting at line 7 in command:
grant execute on sys.DBMS_LOB TO PGADMIN
Error report:
SQL Error: ORA-01031:
01031. 00000 -  "insufficient privileges"

私はそれについて数時間頭を悩ませてきました。私の場合に機能するソリューションを誰かが提供してくれることを願っています。

2
Matt_DontKnow

SYSTEMは一般的なデータベースユーザー(HRやOEなど)です。

_DBMS_LOB_パッケージはSYSスキーマに属しているため、所有者(または_GRANT OPTION_を持つユーザー)のみが他のユーザーにオブジェクト特権を付与できます。したがって、SYSDBAユーザーを使用してSYSTEMとして接続すると、SYSスキーマに接続されます。

_SQL> conn system/Oracle
Connected.
SQL> show user
USER is "SYSTEM"
SQL> 

SQL> grant execute on dbms_lob to hr;
grant execute on dbms_lob to hr
                 *
ERROR at line 1:
ORA-01031: insufficient privileges


SQL> conn system/Oracle as sysdba
Connected.
SQL> 
SQL> show user
USER is "SYS"
SQL> grant execute on dbms_lob to hr;

Grant succeeded.

SQL> revoke execute on dbms_lob from hr;

Revoke succeeded.
_

[〜#〜]または[〜#〜]

_DBMS_LOB_のEXECUTEを_GRANT OPTION_のSYSTEMユーザーに付与し、次にユーザーSYSTEMユーザーにそのオブジェクトの権限を他のユーザーに付与することができます。

_SQL> conn / as sysdba
Connected.
SQL> grant execute on dbms_lob to system with grant option;

Grant succeeded.

SQL> conn system/Oracle
Connected.
SQL> grant execute on dbms_lob to hr;

Grant succeeded.

SQL>
_
3
JSapkota