Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выборка из представлений user_ из другой схемы. / 4 сообщений из 4, страница 1 из 1
13.06.2018, 16:46
    #39660390
spywares
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из представлений user_ из другой схемы.
Обновляли БД с 12.1 на 12.2 и столкнулись с интересной штуковиной.

view - представление в котором источником данных выступает представление user_scheduler_job_run_details
user1 - владелец view
role - роль которой дано право выборки из view
user2 - тот кому выдана role

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
create or replace view v_job_log as
select
  a.job_name,
  a.status,
  a.actual_start_date,
  a.run_duration,
  a.additional_info
from user_scheduler_job_run_details a



Oracle 12.1.
Код: plsql
1.
2.
3.
4.
connect user2;
set role ROLE;
alter session set current_schema=USER1
select * from v_job_log;


В выборке данные присутствуют

Oracle 12.2.
То же самое.
В выборке данных нет.
----------------------------

Как вижу я, оно и не должно работать, т.к... . Но работает на 12.1.
Подскажите пожалуйста, то и где мы упускаем?
...
Рейтинг: 0 / 0
13.06.2018, 17:33
    #39660422
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из представлений user_ из другой схемы.
View, role тут ни при чем. Дело в user_scheduler_job_run_details:

Код: 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.
SQL> select banner from v$version
  2  /

BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
CORE    12.1.0.2.0      Production
TNS for 64-bit Windows: Version 12.1.0.2.0 - Production
NLSRTL Version 12.1.0.2.0 - Production

SQL> select count(*) from user_scheduler_job_run_details
  2  /

  COUNT(*)
----------
         0

SQL> alter session set current_schema=sys
  2  /

Session altered.

SQL> select count(*) from user_scheduler_job_run_details
  2  /

  COUNT(*)
----------
      1199

SQL> 



Если ты посмотришь определение user_scheduler_job_run_details в 12.1 то заметишь что в нем, по сравнению с 11.2 с какого-то перепугу изменини:

Код: plsql
1.
AND e.owner = SYS_CONTEXT('USERENV','CURRENT_USER'))


на:

Код: plsql
1.
AND e.owner = SYS_CONTEXT('USERENV','CURRENT_SCHEMA'))


и получили дыру безопасности. B 12.2 врнули на место.

SY.
...
Рейтинг: 0 / 0
13.06.2018, 17:34
    #39660424
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из представлений user_ из другой схемы.
...
Рейтинг: 0 / 0
14.06.2018, 09:40
    #39660615
spywares
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из представлений user_ из другой схемы.
SY , Elic Благодарю.

P.S. Смотрел в код этой вьюхи, но видно из за большого кол-ва открытых окон, дважды посмотрел в код 12.2. Поэтому и был уверен, что работать оно не должно.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выборка из представлений user_ из другой схемы. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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