Ein Benutzer in einer Oracle-Datenbank hat nur die Berechtigungen, die Sie gewähren. Sie können also einen schreibgeschützten Benutzer erstellen, indem Sie einfach keine anderen Berechtigungen gewähren.
Wenn Sie einen Benutzer erstellen
CREATE USER ro_user
IDENTIFIED BY ro_user
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
Der Benutzer hat nicht einmal die Berechtigung, sich bei der Datenbank anzumelden. Sie können das gewähren
GRANT CREATE SESSION to ro_user
und dann können Sie die gewünschten Leserechte erteilen. Zum Beispiel, wenn Sie RO_USER
möchten um SCHEMA_NAME.TABLE_NAME
abfragen zu können , würden Sie so etwas tun wie
GRANT SELECT ON schema_name.table_name TO ro_user
Im Allgemeinen ist es jedoch besser, eine Rolle zu erstellen und der Rolle die Objektberechtigungen zuzuweisen, damit Sie die Rolle dann verschiedenen Benutzern zuweisen können. So etwas wie
Erstellen Sie die Rolle
CREATE ROLE ro_role;
Gewähren Sie der Rolle SELECT Zugriff auf jede Tabelle in einem bestimmten Schema
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;
Weisen Sie dann dem Benutzer die Rolle zu
GRANT ro_role TO ro_user;