sql >> Database teknologi >  >> RDS >> Oracle

Oracle:Skrivebeskyttet adgang til skemaet for en anden bruger?

Hvis du har kontrol over den måde, din applikation forbinder på (f.eks. en initialiseringserklæring for din forbindelsespulje), er alt, hvad du skal gøre, at køre:

ALTER SESSION SET CURRENT_SCHEMA = PRODUCTS;

Fra det tidspunkt og fremefter (i løbet af sessionens levetid) vil der blive søgt efter ethvert ukvalificeret objektnavn i PRODUCTS skema.

Alle tilskud givet til PRODUCTS_READONLY vil være i kraft. Sessionen kører under legitimationsoplysninger (og sikkerhedsbegrænsninger) for den oprindelige bruger, der blev brugt til at logge ind.

Hvis du ikke kan ændre den måde, forbindelsen etableres eller initialiseres på, bør en logon-trigger også opnå dette:

create or replace trigger logon_trg
  after logon on database
begin
    if (user = 'PRODUCTS_READONLY') then
      execute immediate 'alter session set current_schema = products';
    end if;
exception
  when others then null; -- prevent a login failure due to an exception
end logon_trg;
/

Bemærk, at det er afgørende at fange enhver undtagelse, fordi ellers vil en potentiel fejl i den udførte SQL effektivt logge alle ud af databasen. Så brug det med omtanke, og test det godt, før du sætter det i produktion.



  1. org.hibernate.tool.schema.spi.CommandAcceptanceException:Kan ikke udføre kommandoen

  2. NHibernate-kortlægning for Oracle INTERVAL DAG TIL ANDEN datatype

  3. Debezium flush timeout og OutOfMemoryError fejl med MySQL

  4. Flere OG betingelser MySQL