Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ACCESSIBLE BY для EXECUTE IMMEDIATE / 4 сообщений из 4, страница 1 из 1
19.02.2018, 16:41
    #39604369
Lemkoleg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ACCESSIBLE BY для EXECUTE IMMEDIATE
Добрый день. Есть такая проблема: хотелось бы реализовать "белые списки" для выполнения процедур, но проблема в том, что процедуры вызываются через динамический SQL. Даже если процедура из белого списка, из которой выполняется EXECUTE IMMEDIATE, все равно выдает ошибку "PLS-00904: insufficient privilege to access object...". Может кто-то сталкивался с этим. возможно ли вобще? Чтоб было ясней: процедура А вызывает процедуру Б через динамический SQL. Процедура А есть в "белых списках" процедуры Б.
...
Рейтинг: 0 / 0
19.02.2018, 17:16
    #39604380
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ACCESSIBLE BY для EXECUTE IMMEDIATE
Lemkolegхотелось бы реализовать "белые списки" для выполнения процедур, но проблема в том, что процедуры вызываются через динамический SQLRTFM ACCESSIBLE BY Clause: Usage Notes (FAQ)
Database PL/SQL Language ReferenceThe ACCESSIBLE BY clause allows access only when the call is direct. The check will fail if the access is through static SQL, DBMS_SQL, or dynamic SQL.
...
Рейтинг: 0 / 0
19.02.2018, 17:30
    #39604387
Lemkoleg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ACCESSIBLE BY для EXECUTE IMMEDIATE
Elic,
Печально. Спасибо
...
Рейтинг: 0 / 0
19.02.2018, 19:35
    #39604422
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ACCESSIBLE BY для EXECUTE IMMEDIATE
LemkolegПечально.

До кучи. Мы не можем выполнить задачу ссылающуюся на accessible unit в сессии accessor'a:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
SQL> create or replace
  2    procedure p1
  3      is
  4      begin
  5          insert
  6            into tbl
  7            values('P1');
  8  end;
  9  /

Procedure created.

SQL> begin
  2      dbms_scheduler.create_job(
  3                                job_name   => 'JOB_XX',
  4                                job_type   => 'PLSQL_BLOCK',
  5                                job_action => 'begin p1; end;',
  6                                enabled    => FALSE
  7                               );
  8  end;
  9  /

PL/SQL procedure successfully completed.

SQL> create or replace
  2    procedure p3
  3      is
  4      begin
  5          dbms_scheduler.run_job(
  6                                 job_name   => 'JOB_XX',
  7                                 use_current_session => TRUE
  8                                );
  9  end;
 10  /

Procedure created.

SQL> exec p3

PL/SQL procedure successfully completed.

SQL> create or replace
  2    procedure p3
  3      is
  4      begin
  5          dbms_scheduler.run_job(
  6                                 job_name   => 'JOB_XX',
  7                                 use_current_session => FALSE
  8                                );
  9  end;
 10  /

Procedure created.

SQL> exec p3

PL/SQL procedure successfully completed.

SQL> create or replace
  2    procedure p1
  3      accessible by(
  4                    procedure p3
  5                   )
  6      is
  7      begin
  8          insert
  9            into tbl
 10            values('P1');
 11  end;
 12  /

Procedure created.

SQL> create or replace
  2    procedure p3
  3      is
  4      begin
  5          dbms_scheduler.run_job(
  6                                 job_name   => 'JOB_XX',
  7                                 use_current_session => TRUE
  8                                );
  9  end;
 10  /

Procedure created.

SQL> exec p3
BEGIN p3; END;

*
ERROR at line 1:
ORA-06550: line 1, column 763:
PLS-00904: insufficient privilege to access object P1
ORA-06512: at "SYS.DBMS_ISCHED", line 238
ORA-06512: at "SYS.DBMS_SCHEDULER", line 568
ORA-06512: at "SCOTT.P3", line 4
ORA-06512: at line 1


SQL> create or replace
  2    procedure p3
  3      is
  4      begin
  5          dbms_scheduler.run_job(
  6                                 job_name   => 'JOB_XX',
  7                                 use_current_session => FALSE
  8                                );
  9  end;
 10  /

Procedure created.

SQL> exec p3

PL/SQL procedure successfully completed.

SQL>



SY.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ACCESSIBLE BY для EXECUTE IMMEDIATE / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]