原因
- 在oracle 中schema与用户是一一对应的关系
- A用户默认访问的是Aschema下的表
- 业务需求建立用户A可以查询B用户建立的表;会报错:表和视图不存在
- 以下是解决方法
方案一:改写SQL
select * from A.table
方案二:手动指定current_schema
alter session set current_schema=B;
select * from table;
方案三:触发器
create or replace trigger {triggername}
after logon on A.schema
begin
execute immediate 'alter session set current_schema=B';
方案四:增加同义词
# 用管理账号执行
grant create synonym to A
# 用A账号执行
CREATE SYNONYM TEST FOR B.TEST;
....
#把所有的表和视图都加上
总结
- 方法1.有改造成本。业务改造基本不可能
- 方法2.有小量改造成本,一本适合运维用
- 方法3.不推荐
- 只留下方法4.无业务改造成本。
>> Home