如何在没有sys特权的情况下在oracle中创建别名

时间:2017-05-17 01:08:21

标签: sql oracle sqlplus

我试图为sh架构中的表创建别名,我选择了特权,我的架构是cs1761xx。我试图在这些表上选择特权,而不必在序言sh.xxxx之前。我该怎么做呢?我的模式是cs1761xx,我也不想创建新用户。

    SQL> create synonym customers1 for sh.customers;
    create synonym customers1 for sh.customers
    *
    ERROR at line 1:
    ORA-01031: insufficient privileges

2 个答案:

答案 0 :(得分:1)

如果您的DBA不会授予您创建同义词所需的权限,这是一个课程作业,指的是“别名”,而不是专门用于同义词,而您只需要查询表格......然后另一个选项是改为创建一个视图:

create view customers as select * from sh.customers;

当然,假设你有权利这样做。相反,它更像是“别名”的含义。 (你也可以插入,更新和删除,但需要一个替代触发器;但这似乎超出了范围。)

答案 1 :(得分:1)

使用alter session set current_schema = sh;以避免必须在模式名称前加上:

SQL> select count(*) from customers;
select count(*) from customers
                     *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> alter session set current_schema = sh;

Session altered.

SQL> select count(*) from customers;

  COUNT(*)
----------
         0

SQL>