Oracle предоставляет привилегию пользователю A пользователю B - PullRequest
0 голосов
/ 03 октября 2018

    I create user A and B with system admin
    -- CREATE USER1 SQL
    CREATE USER USERA IDENTIFIED BY 123456 ;
    GRANT CREATE SESSION TO USERA;
    CREATE USER USERB IDENTIFIED BY 123456 ;
    GRANT CREATE SESSION TO USERB;

    and set Privileges to USERA
    -- SYSTEM PRIVILEGES USERA
    GRANT CREATE TABLE TO USERA;
    GRANT DELETE ANY TABLE TO USERA;
    GRANT GRANT ANY PRIVILEGE TO USERA;

    and create table by USERA

    CREATE TABLE tableA 
    (ID VARCHAR2(5)
    , DATA VARCHAR2(20) );

    and create Privileges to USERB by USERA set select tableA
    GRANT SELECT ON tableA to USERB;

    but USERB can't select tableA 
    ERROR:ORA-00942: table or view does not exist

    How do I solve the problem?

1 Ответ

0 голосов
/ 03 октября 2018

Если вы не укажете владельца таблицы, Oracle предположит, что владельцем является текущий пользователь.

select * from usera.tablea;

Чтобы избежать этой проблемы, обычно рекомендуется создать локальный синоним (принадлежитuserb):

create synonym userb.tablea for usera.tablea;

Теперь пользователь может запросить таблицу:

select * from tablea;
...