powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ACCESSIBLE BY для EXECUTE IMMEDIATE
4 сообщений из 4, страница 1 из 1
ACCESSIBLE BY для EXECUTE IMMEDIATE
    #39604369
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Есть такая проблема: хотелось бы реализовать "белые списки" для выполнения процедур, но проблема в том, что процедуры вызываются через динамический SQL. Даже если процедура из белого списка, из которой выполняется EXECUTE IMMEDIATE, все равно выдает ошибку "PLS-00904: insufficient privilege to access object...". Может кто-то сталкивался с этим. возможно ли вобще? Чтоб было ясней: процедура А вызывает процедуру Б через динамический SQL. Процедура А есть в "белых списках" процедуры Б.
...
Рейтинг: 0 / 0
ACCESSIBLE BY для EXECUTE IMMEDIATE
    #39604380
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
ACCESSIBLE BY для EXECUTE IMMEDIATE
    #39604387
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,
Печально. Спасибо
...
Рейтинг: 0 / 0
ACCESSIBLE BY для EXECUTE IMMEDIATE
    #39604422
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ACCESSIBLE BY для EXECUTE IMMEDIATE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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