Oracleデータベースのユーザーには、付与した権限のみがあります。したがって、他の権限を付与しないだけで、読み取り専用ユーザーを作成できます。
ユーザーを作成するとき
CREATE USER ro_user
IDENTIFIED BY ro_user
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
ユーザーには、データベースにログインする権限すらありません。あなたはそれを許可することができます
GRANT CREATE SESSION to ro_user
次に、必要な読み取り権限を付与することができます。たとえば、RO_USER
が必要な場合 SCHEMA_NAME.TABLE_NAME
をクエリできるようにする 、あなたは次のようなことをします
GRANT SELECT ON schema_name.table_name TO ro_user
ただし、一般的には、役割を作成し、オブジェクト特権を役割に付与して、さまざまなユーザーに役割を付与できるようにすることをお勧めします。のようなもの
役割を作成する
CREATE ROLE ro_role;
特定のスキーマ内のすべてのテーブルに対するSELECTアクセスをロールに付与します
BEGIN
FOR x IN (SELECT * FROM dba_tables WHERE owner='SCHEMA_NAME')
LOOP
EXECUTE IMMEDIATE 'GRANT SELECT ON schema_name.' || x.table_name ||
' TO ro_role';
END LOOP;
END;
次に、ユーザーに役割を付与します
GRANT ro_role TO ro_user;