Oracle登录触发器应用

项目使用一个新建的用户开发应用,但应用的SQL语句中没有写SCHEMA的名字。
项目上线后这个用户权限太大,能够创建和修改表和结构和数据,因此新建了一个查询用户,使用后发现原有的程序因为没有SCHEMA的名字无法正常运行。为了不对已经完工的程序、视图、存储过程等做大范围的修改,在登录后将用户当前的SCHEMA进行了修改。

创建查询用户

GRANT CONNECT TO USERA;
GRANT SELECT ANY TABLE TO USERA;
GRANT EXECUTE ANY PROCEDURE TO USERA;

更改登录后的SCHEMA

create or replace trigger set_default_schema
after logon on DATABASE
begin
   IF (SYS_CONTEXT ('USERENV', 'SESSION_USER') = 'USERA')
   THEN
     EXECUTE IMMEDIATE 'alter session set current_schema=USERB';
   END IF;
end;

Comments are closed.