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: 権限が不足しています。