需要に付与された特別な権限

シーン:自分自身を作成するために、表HZQユーザーは、ユーザーがHZQテーブルの許可されたユーザのリストを実行できるようにする必要が付与権限を持つことができません。

CREATE  OR  REPLACE  TRIGGER TR_TABLE_GRANTをGRANT  ON  データベース
 DECLAREの
 v_ownerのVARCHAR30 )。
 v_table_nameのVARCHAR30 )。
 v_oper_userのVARCHAR30 )。
BEGIN 
    v_ownerを:= SYS.DICTIONARY_OBJ_OWNER。
    v_table_name:= SYS.DICTIONARY_OBJ_NAME。
    v_oper_user:= ora_login_user。
 IF(v_owner =  ' HZQ '  v_oper_user ない ' DBADMIN '' A ' ))
   THEN 
    RAISE_APPLICATION_ERROR(- 20001 ' 上ノー付与特権' || v_owner || ' ' || v_table_name || ' !!! ' );
  END IF ;  
END ;
/ 

結果は

自己创建的表不能授权
SQL > CONN hzq / hzq 
接続されています。
SQL >  作成し 、テーブル T1(IDのINTを)。

表に作成しました。
SQL >  助成 選択  hzq.t1 bは、
付与 選択  hzq.t1 するbの
                     * 
行でERROR 1 
ORA - 00604を:エラーが再帰的SQLので起こったレベル 1 
ORA - 20001:いいえ付与権限ON HZQ.T1 !!! 
ORA - 06512:行で11 
現在、許可されたユーザだけであるSYSのできる

注意がDBA権限を持っているDBADMIN 
SQL > CONN DBADMIN / 渡して
接続されています。
SQL >  付与 SELECT  ONの hzq.t1をするC; 

グラントは...成功した
場合でも、ユーザーsysをパーミッション付与するものではありません
SQL > CONN /  AS SYSDBA 
接続されています。
SQL >  付与 SELECT  ONの hzq.t1をするB;
 付与 SELECT  ONの hzq.t1をしますB
                     * 
ラインでERROR 1 
ORA - 00604:エラーが再帰このSQLで発生したレベル 1 
ORA - 20001:いいえグラントの特権ON HZQ.T1 !!! 
ORA - 06512:行で11 

になりましたカスケードhzq.t1に付与することがDBADMIN 、テーブルには、ユーザーがアクセス権を付与することができ、ユーザが許可hzqトリガーを付与することを可能にする
SQLを>  与える SELECT  オン hzq.t1をする C  付与 オプションを

許可が成功しました。.. 

SQL >  付与 SELECT 上の hzq.t1  付与 オプション

グラントは成功しました。
SQL > CONN C / C 
接続されています。
SQL >  助成金は、 選択  hzq.t1 するDBADMIN。
許可 の選択  hzq.t1 DBADMIN
                     * 
ラインでERROR 1 
ORA - 00604:エラーが再帰的SQLのでは発生していないレベル 1 
ORA - 20001:いいえ付与権限をHZQ.T1 !!! 
ORA - 06512:行で11 


SQL > CONN A / 
接続されています。
SQL > 助成金は、選択 hzq.t1 するDBADMIN。グラントは成功しました。   

 

おすすめ

転載: www.cnblogs.com/houzhiqing/p/10975266.html