web-dev-qa-db-ja.com

Oracleの別のスキーマにスキーマのすべての同義語に対する選択を許可

Oracleの1つのスキーマのすべてのシノニムとテーブルに別のスキーマに選択権限を付与するクエリを作成する必要があります。

例:

Adminスキーマにはすべてのテーブルがあります。 UserスキーマがAdminが所有するすべてのテーブルにアクセスする必要があります。だから私はUserにselect権限を与えたいです。このタスクを実行するクエリを作成するにはどうすればよいですか?

2
Swetha reddy

ここでは、すべてのテーブルとシノニムにグラントセレクトを生成するスクリプトを示しています。

select 'grant select on Admin.' || object_name || ' to User;' 
from user_objects 
where object_type in('TABLE','SYNONYM');

次に、これらの付与ステートメントを一度に実行するスクリプトを作成する必要があります。または、PL/SQLを使用することもできます。 SQLプロンプトで次のように入力します。

SQL> spool grant_statements.sql
SQL> set pagesize 0
SQL> set feedback off
SQL> set linesize 300
SQL> set trimout on
SQL> set trimspool on
SQL> select 'grant select on Admin.' || object_name || ' to User;' from user_objects where object_type in('TABLE','SYNONYM')
/
SQL> spool off

そして、それを実行できるスクリプトファイルを入手しました。
[〜#〜]または[〜#〜]
次のPL/SQLブロックを実行できます(管理者ユーザーとして実行)。

 BEGIN 
 FOR s IN(SELECT * 
 FROM user_objects where object_type in( 'TABLE'、 'SYNONYM'))
 LOOP 
 EXECUTE IMMEDIATE 「管理者に選択を許可してください。」 || s.object_name || 'to user'; 
 END LOOP; 
 END; 
1
JSapkota