在oracle 中schema与用户是一一对应的关系,当建立一个用户默认会为建立一个与用户名相同的schema。如今系统中有部分表在用户A下,业务需求建立用户B可以查询A用户建立的表;登陆B用户发现表不存在,因而网上找了一番,最终有一下方案解决:sql
方案一:session
B用户查询时带上A用户的schema,例:oracle
select * from A.table
方案二:code
临时修改当前用户的schema,执行下面SQL事件
alter session set current_schema= A(schema); select * from table;
方案三:io
after log on事件上作触发器执行上面的语句table
create or replace trigger set_default_schema after logon on B.schema begin execute immediate 'alter session set current_schema=A(schema)';