Seorang pengguna dalam database Oracle hanya memiliki hak istimewa yang Anda berikan. Jadi, Anda dapat membuat pengguna hanya-baca dengan tidak memberikan hak istimewa lainnya.
Saat Anda membuat pengguna
CREATE USER ro_user
IDENTIFIED BY ro_user
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
pengguna bahkan tidak memiliki izin untuk masuk ke database. Anda dapat memberikan itu
GRANT CREATE SESSION to ro_user
dan kemudian Anda dapat memberikan hak baca apa pun yang Anda inginkan. Misalnya, jika Anda ingin RO_USER
untuk dapat menanyakan SCHEMA_NAME.TABLE_NAME
, Anda akan melakukan sesuatu seperti
GRANT SELECT ON schema_name.table_name TO ro_user
Namun, umumnya, Anda lebih baik membuat peran, dan memberikan hak istimewa objek ke peran tersebut sehingga Anda kemudian dapat memberikan peran tersebut kepada pengguna yang berbeda. Sesuatu seperti
Buat peran
CREATE ROLE ro_role;
Berikan peran akses SELECT pada setiap tabel dalam skema tertentu
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;
Dan kemudian berikan peran tersebut kepada pengguna
GRANT ro_role TO ro_user;