シノニムの作成とViewでの利用
複数のスキーマがあるのだが、マスタについては一箇所で管理するためにシノニムを使う。
まずDBA権限で接続し、シノニム作成のための権限を追加する
SQL> connect system/manager
接続されました
SQL> grant create synonym to test_user;権限付与が成功しました
シノニムが参照するオブジェクトのSELECT権限を追加する
※更新機能は不要なので、SELECTのみ
SQL> grant select on master_user.hogehoge_master to test_user;
権限付与が成功しました。
シノニムを作成する
SQL> connect test_user/test_user
接続されました
SQL> create synonym test_master for master_user.hogehoge_master;シノニムが作成されました。
確認。
SQL> select hoge_code from test_master;
HOGE
1111
シノニムに対してViewを作成することもできる。
SQL> create view test_master_view as select hoge_code from test_master;
ビューが作成されました。
SQL> select * from test_master_view;
HOGE
1111
ロールの中にシノニムの参照先をSELECTする権限を入れておいただけだと、シノニムは作成できるのだが、Viewを作成する際には権限が不足する。
作ったものの削除
SQL> drop view test_master_view;
ビューが削除されました。
SQL> drop synonym test_master;
シノニムが削除されました。
権限の変更
SQL> connect system/manager
接続されました
SQL> revoke select on master_user.hogehoge_master from test_user;取消しが成功しました。
SQL> grant select on master_user.hogehoge_master to test_role;
権限付与が成功しました。
SQL> connect test_user/test_user
接続されました
SQL> SELECT * FROM ROLE_TAB_PRIVS;ROLE OWNER TABLE_NAME COLUMN_NAME PRIVILEGE GRA
TEST_ROLE MASTER_USER HOGEHOGE_MASTER SELECT NO
新しい権限で作成してみる
SQL> create synonym test_master for master_user;
シノニムが作成されました。
SQL> create view test_master_view as select * from test_master;
create view test_master_view as select * from test_master
*
行1でエラーが発生しました。:
ORA-01031: 権限が不足しています。