Сообщение «ORA-01039
: недостаточные привилегии для базовых объектов представления» фактически означает, что у вас нет привилегий для доступа к BASE OBJECTS
, который использовался для построения представления, а не то, что у вас нет привилегий дляиспользуйте сам VIEW.
Например, если у вас есть это представление:
Create view tejash.V1 as select * from tejash.Table1
/
Grant all on tejash.V1 to ITpeople;
/
и если вы входите в систему как ITpeople, у вас есть права доступа к tejash.V1, но не кпрямой доступ к tejash.Table1.
Обычно IT-люди могут выбирать данные из представления, т.е. запускать SQL-код, подобный этому
Select * from tejash.V1
, вам не нужны привилегии для доступа к базовому объекту (например, к tejash. Таблица 1). Но в Oracle, если вы попытаетесь объяснить план того же SQL, вам потребуются привилегии для доступа к базовым объектам. Если у вас нет этого разрешения, вы обнаружите эту ошибку.
Демонстрация:
- Создание представления от пользователя TEJASH и предоставление избранных прав на просмотр дляпользователь T
SQL> CREATE VIEW V1 AS
2 SELECT
3 *
4 FROM
5 EMP;
View created.
SQL> GRANT SELECT ON V1 TO T;
Grant succeeded.
- Попытка выбрать на представлении, а также объяснить план на представлении (сбой) От пользователя T
SQL> SELECT * FROM TEJASH.V1;
ID NAME SALARY DEPT
---------- ---------- ---------- ----------
1 shubham 1000 comp
2 vijay 5000 civil
SQL> EXPLAIN PLAN FOR SELECT * FROM TEJASH.V1;
EXPLAIN PLAN FOR SELECT * FROM TEJASH.V1
*
ERROR at line 1:
ORA-01039: insufficient privileges on underlying objects of the view
- Предоставить выборочное предоставление таблицы также отот пользователя TEJASH к T
SQL> GRANT SELECT ON EMP TO T;
Grant succeeded.
- Выполнение плана объяснения от пользователя T теперь успешно завершено.
SQL> EXPLAIN PLAN FOR SELECT * FROM TEJASH.V1;
Explained.
Cheers !!