Oracleの1つのスキーマのすべてのシノニムとテーブルに別のスキーマに選択権限を付与するクエリを作成する必要があります。
Admin
スキーマにはすべてのテーブルがあります。 User
スキーマがAdmin
が所有するすべてのテーブルにアクセスする必要があります。だから私はUser
にselect権限を与えたいです。このタスクを実行するクエリを作成するにはどうすればよいですか?
ここでは、すべてのテーブルとシノニムにグラントセレクトを生成するスクリプトを示しています。
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;