访问表而不指定模式名称

时间:2014-02-18 07:13:07

标签: sql oracle plsql oracle11g oracle-sqldeveloper

我有一个名为GBO_ARC_SCHEMA的模式,其中有一个名为TEST_EMP的表, 我有两个用户说USER_AUSER_B

首先,我连接到USER_A并触发查询

select count(*)from TEST_EMP;

count
-----
20

之后我以USER_b连接并触发查询,但是它发出错误,表示表或视图没有退出

select count(*)from TEST_EMP;

但如果我使用scma.object name,则允许我查询如下

select count(*)from GBO_ARC_SCHEMA.TEST_EMP;

但根据我的要求,我不想指定架构名称。

有人能帮助我吗?

3 个答案:

答案 0 :(得分:12)

如果您希望所有用户能够从表格中进行选择而不符合模式名称,则需要创建公共同义词

create public synonym TEST_EMP for GBO_ARC_SCHEMA.TEST_EMP;

如果您只希望user_b省略架构名称,则需要创建一个私有同义词 WITHIN user_b的架构(以user_b身份登录)

create synonym TEST_EMP for GBO_ARC_SCHEMA.TEST_EMP;

如果您坚持不使用同义词,那么在登录后,请执行

alter session set current_schema = GBO_ARC_SCHEMA;

答案 1 :(得分:0)

在您正在使用的登录的服务器角色上,只需取消选中sysadmin和serveradmin角色即可。 那应该解决它

答案 2 :(得分:-1)

对于具有相同问题的Postgres用户

ALTER ROLE <YOUR_USERNAME> SET search_path TO GBO_ARC_SCHEMA;