Не удалось запустить план объяснения в Oracle SQL Developer - PullRequest
0 голосов
/ 08 ноября 2019

SQL:

EXPLAIN PLAN FOR SELECT * FROM table1

Необходимо предоставить привилегию:

GRANT ALL ON sys.plan_table TO dbAccount

Это приводит к следующей ошибке

Ошибка SQL: ORA-01039: 01039. 00000 - «Недостаточные привилегии для базовых объектов представления» * Причина: Попытка объяснить план для представления других людей без необходимых привилегий для базовых объектов представления. * Действие: Получить необходимые привилегии или не выполнять оскорбительную операцию.

1 Ответ

0 голосов
/ 08 ноября 2019

Сообщение «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 !!

...