2

ソースSQLを変更するときに、Oracleビューがすべての許可を失うのは正常ですか?SQL Developerと関係がある場合は、SQLDeveloperを使用しています。

4

1 に答える 1

7

まず第一に、あなたは「助成金」を持っていません-「助成金」は操作です。あなたには「役割」と「特権」があります。

次に、ビュー自体にはロールも特権もありません。スキーマにはあります。基本的に、自己記述型コマンドは次のとおりgrant select on view_1 to schema_1です。

第3に、ビューを作成または置換しても、スキーマの特権が失われることはありません。簡単なサンプルを次に示します。

11:03:07 @> conn system/sys@oars_sandbox                                                                                                                            
Connected.                                                                                                                                                          
11:03:15 SYSTEM@oars_sandbox> create user test1 identified by test1;                                                                                                

User created.                                                                                                                                                       

11:03:39 SYSTEM@oars_sandbox> create user test2 identified by test2;                                                                                                

User created.                                                                                                                                                       

11:03:48 SYSTEM@oars_sandbox> create view test1.view1 as select * from dual;                                                                                        

View created.                                                                                                                                                       

11:04:03 SYSTEM@oars_sandbox> grant select on test1.view1 to test2;                                                                                                 

Grant succeeded.                                                                                                                                                    

11:04:15 SYSTEM@oars_sandbox> select grantee, owner, table_name, privilege, grantor from dba_tab_privs where grantee = 'TEST2';                                     

GRANTEE                        OWNER                          TABLE_NAME                     PRIVILEGE                                GRANTOR                       
------------------------------ ------------------------------ ------------------------------ ---------------------------------------- ------------------------------
TEST2                          TEST1                          VIEW1                          SELECT                                   TEST1                         

11:05:13 SYSTEM@oars_sandbox> create or replace view test1.view1 as select * from dual;                                                                             

View created.                                                                                                                                                       

11:05:24 SYSTEM@oars_sandbox> select grantee, owner, table_name, privilege, grantor from dba_tab_privs where grantee = 'TEST2';                                     

GRANTEE                        OWNER                          TABLE_NAME                     PRIVILEGE                                GRANTOR                       
------------------------------ ------------------------------ ------------------------------ ---------------------------------------- ------------------------------
TEST2                          TEST1                          VIEW1                          SELECT                                   TEST1                         

drop viewただし、SQL開発者が。の代わりに最初に呼び出す可能性は十分にありcreate or replaceます。この場合、特権は自動的に削除されます。

11:05:26 SYSTEM@oars_sandbox> drop view test1.view1;                                                                            

View dropped.                                                                                                                   

11:10:21 SYSTEM@oars_sandbox> select grantee, owner, table_name, privilege, grantor from dba_tab_privs where grantee = 'TEST2'; 

no rows selected                                                                                                                

11:10:24 SYSTEM@oars_sandbox> create or replace view test1.view1 as select * from dual;                                         

View created.                                                                                                                   

11:10:26 SYSTEM@oars_sandbox> select grantee, owner, table_name, privilege, grantor from dba_tab_privs where grantee = 'TEST2'; 

no rows selected                                                                                                                
于 2012-10-30T03:12:52.360 に答える