Oracle 読み取り専用ユーザー(READ ONLY)の作成
とあるユーザに対して、読み取り専用でユーザーを作成したのでメモ。
- 書き込み兼読み取りユーザー・・
TEST - 読み取りユーザー・・
TEST_READONLY
TESTユーザーの読み取り専用ユーザーTEST_READONLYを作成する。
すでにTESTユーザーには複数のテーブルが存在している。
1.ユーザー作成
create user TEST_READONLY identified by TEST_READONLY;
2.権限付与(セッションとselect権限)
grant create session to TEST_READONLY; grant select any table to TEST_READONLY;
3.TESTユーザーがオーナーのテーブルのシノニムを作成
CREATE SYNONYM TEST_READONLY.TEST_TABLE FOR TEST.TEST_TABLE;
↓の様にdba_tablesを使用してcreate synonymを作成したら楽。
select 'CREATE SYNONYM TEST_READONLY.' || TABLE_NAME || ' FOR ' || OWNER || '.' || TABLE_NAME || ';' as SYNOTEX from dba_tables where OWNER = 'TEST'; SYNOTEX -------------------------------------------------------------------------------- CREATE SYNONYM TEST_READONLY.BB FOR TEST.BB; CREATE SYNONYM TEST_READONLY.HOGE FOR TEST.HOGE; CREATE SYNONYM TEST_READONLY.HOGEI FOR TEST.HOGEI; CREATE SYNONYM TEST_READONLY.III FOR TEST.III; CREATE SYNONYM TEST_READONLY.SEQTEST FOR TEST.SEQTEST; CREATE SYNONYM TEST_READONLY.LALA FOR TEST.LALA; CREATE SYNONYM TEST_READONLY.LA FOR TEST.LA; CREATE SYNONYM TEST_READONLY.SH FOR TEST.SH;
これでTEST_READONLYユーザからTESTユーザーのテーブルにアクセスする際にオーナー名を指定せずにアクセスすることが可能。
読み取り可
TEST_READONLY>select * from HOGE;
ID T
---------- ----------
100000 5
10001 5
書き込み不可
TEST_READONLY>insert into HOGE values (1000,1000);
insert into HOGE values (1000,1000)
*
行1でエラーが発生しました。:
ORA-01031: 権限が不足しています。