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