CftClub.ru
Клуб специалистов ЦФТ-Банк

SYS_CONTEXT("..._RIGHTS",".....") - как

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеПн Июл 21, 2014 15:59   SYS_CONTEXT(»..._RIGHTS»,».....») - как Ответить с цитатой
Полезность: Нет оценки
Здравствуйте.
Есть пользователь РОБОТ - из-под навигатора представление под ним открывается - как надо.
Но вот при выполнении из-под того же РОБОТ в Джобе - возникли проблемы с инициализацией контекста:
Код:
SYS_CONTEXT("ибсо_RIGHTS",".....")  is null

Условие стоит в части WHERE представления - естественно, представление работает неожиданно (в Джобе).

У нас 2-хзвенка.
Словарь\Системные справочники\Параметры\
SYS_CONTEXT = 1
RIGHTS_CONTEXT = 1

Можно как-то легально инициализировать контекст 'ибсо_RIGHTS' для пользователя при запуске в Джобе?
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеВт Июл 22, 2014 08:04    Ответить с цитатой
Полезность: Нет оценки
т.е. в джобе вызывается операция у которой в теле есть селект по представлению ?
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеВт Июл 22, 2014 08:23    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
т.е. в джобе вызывается операция у которой в теле есть селект по представлению ?

Совершенно верно.
У операции стоит опция 'Расширенный синтаксис'.
К представлению доступ идет через %rowtype
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеСр Июл 23, 2014 05:14    Ответить с цитатой
Полезность: Нет оценки
Damir пишет:
.
К представлению доступ идет через %rowtype


Ну так напрашивается - убрать этот %rowtype, зачем он если вы из навигатора можете в него заходить ?

p.s. Джоб обычный или текстовый ?
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеСр Июл 23, 2014 06:10   Re: SYS_CONTEXT(»..._RIGHTS»,».....») - Ответить с цитатой
Полезность: 1
Damir пишет:

Есть пользователь РОБОТ - из-под навигатора представление под ним открывается - как надо.
Но вот при выполнении из-под того же РОБОТ в Джобе - возникли проблемы с инициализацией контекста:
Код:
SYS_CONTEXT("ибсо_RIGHTS",".....")  is null

Условие стоит в части WHERE представления - естественно, представление работает неожиданно (в Джобе).

Использовать в джобе селект по представлению с проверкой доступа плохая практика.

Damir пишет:

Можно как-то легально инициализировать контекст 'ибсо_RIGHTS' для пользователя при запуске в Джобе?


executor.set_system_context
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеСр Июл 23, 2014 07:32   Re: SYS_CONTEXT(»..._RIGHTS»,».....») - Ответить с цитатой
Полезность: Нет оценки
devor пишет:

executor.set_system_context

Во...такое вот помогло :
Код:
executor.set_system_context(true, true, false);

Еще вопрос: переполнение контекста 'Ибсо_RIGHTS' не может выстрелить?
Т.е. на контекст ограничение, вроде как, 4K - если ТБП+вьшек много (всякого мусора неиспользуемого), то все это будет в контексте 'Ибсо_RIGHTS'.



devor пишет:

Использовать в джобе селект по представлению с проверкой доступа плохая практика.


К сожалению, Архитекторы ИБСО дали мне не очень богатый выбор:
- Либо переписывать в теле операции логику запроса (которая хранится во вьюшке). А это ошибкоопасно - в 1 месте поправил, в другом забыл.
- Либо попасть в список тех, кто использет 'плохую практику'

Кстати, привет архитекторам! Smile
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеСр Июл 23, 2014 09:13   Re: SYS_CONTEXT(»..._RIGHTS»,».....») - Ответить с цитатой
Полезность: Нет оценки
Damir пишет:

Еще вопрос: переполнение контекста 'Ибсо_RIGHTS' не может выстрелить?
Т.е. на контекст ограничение, вроде как, 4K - если ТБП+вьшек много (всякого мусора неиспользуемого), то все это будет в контексте 'Ибсо_RIGHTS'.

4К - это ограничение на размер конкретного значения, а не на количество.

Damir пишет:

К сожалению, Архитекторы ИБСО дали мне не очень богатый выбор:
- Либо переписывать в теле операции логику запроса (которая хранится во вьюшке). А это ошибкоопасно - в 1 месте поправил, в другом забыл.
- Либо попасть в список тех, кто использет 'плохую практику'


Достаточно к представлению сделать расширение и взвести флаг "Не использовать контекст доступа".
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеСр Июл 23, 2014 09:46   Re: SYS_CONTEXT(»..._RIGHTS»,».....») - Ответить с цитатой
Полезность: Нет оценки
devor пишет:
Damir пишет:

devor пишет:

Использовать в джобе селект по представлению с проверкой доступа плохая практика.


К сожалению, Архитекторы ИБСО дали мне не очень богатый выбор:
- Либо переписывать в теле операции логику запроса (которая хранится во вьюшке). А это ошибкоопасно - в 1 месте поправил, в другом забыл.
- Либо попасть в список тех, кто использет 'плохую практику'


Достаточно к представлению сделать расширение и взвести флаг "Не использовать контекст доступа".

И получим с чего начали:
devor пишет:

Использовать в джобе селект по представлению с проверкой доступа плохая практика.

Только проверка доступа в случае {взвести флаг "Не использовать контекст доступа"} делаетя Не через контекст.
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеСр Июл 23, 2014 10:52   Re: SYS_CONTEXT(»..._RIGHTS»,».....») - Ответить с цитатой
Полезность: Нет оценки
Damir пишет:
devor пишет:


Достаточно к представлению сделать расширение и взвести флаг "Не использовать контекст доступа".

И получим с чего начали:
devor пишет:

Использовать в джобе селект по представлению с проверкой доступа плохая практика.

Только проверка доступа в случае {взвести флаг "Не использовать контекст доступа"} делаетя Не через контекст.


Без контекста права проверяются селектами к таблицам доступа - это нормально.
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеЧт Июл 24, 2014 05:48   Re: SYS_CONTEXT(»..._RIGHTS»,».....») - Ответить с цитатой
Полезность: Нет оценки
devor - спасибо, от Вас аж целых 2 работающих решения проблемы.

Проблема понятна, пути решения - тоже понятны, тема закрыта.
Сухой остаток (вдруг кто-то по форуму будет искать)

Пролема:
В Джобах запущенных из-под [не владелец схемы] представления vw_crit_... (если вдруг используются в теле операции через %rowtype) возвращают пустой датасет. Происходит это из-за того, что не инициализируется контекст прав 'Ибсо_Rights'
Варианты решения:
- Запускать джобы из-под [владелец схемы]
тогда контекст прав инициализировать не нужно
- Самостоятельно инициализировать контекст прав:
Код:
executor.set_sys_context(true, true, false)

Работает, но заполненный контекст отъедает какое-то количество памяти у серверного процесса.
- У представления, которое используется в теле операции выставить опцию 'Не использовать контекст'. Если представление дистрибутивное - сделать расширение и в расширении выставить опцию 'Не использовать контекст'.
при таком подходе можно 'проморгать' факт использования представления в теле операции.
- решение из разряда 'Не делай так': не делай джобы, джобы не запускай из-под [не владелец схемы], не используй представления vw_crit_ в теле операций.

Пожелание: хотелось бы, чтобы была возможность пользователю [не владелец схемы] дать права админа (чтобы инициализировался в контексте признак 'админ'). Удобно по пользователю идентифицировать происходящий процесс - т.е. запускать Джобы не из-под [владелец схемы].
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеЧт Июл 24, 2014 07:06   Re: SYS_CONTEXT(»..._RIGHTS»,».....») - Ответить с цитатой
Полезность: Нет оценки
Damir пишет:

Пожелание: хотелось бы, чтобы была возможность пользователю [не владелец схемы] дать права админа (чтобы инициализировался в контексте признак 'админ'). Удобно по пользователю идентифицировать происходящий процесс - т.е. запускать Джобы не из-под [владелец схемы].

Включи пользователя в группу доступа "ADMIN_GRP"
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеЧт Июл 24, 2014 09:19   Re: SYS_CONTEXT(»..._RIGHTS»,».....») - Ответить с цитатой
Полезность: Нет оценки
devor пишет:
Damir пишет:

Пожелание: хотелось бы, чтобы была возможность пользователю [не владелец схемы] дать права админа (чтобы инициализировался в контексте признак 'админ'). Удобно по пользователю идентифицировать происходящий процесс - т.е. запускать Джобы не из-под [владелец схемы].

Включи пользователя в группу доступа "ADMIN_GRP"


Вкючил - не помогло,в том-то и беда.
На нашей схеме ADMIN_GRP не работает - выставлено:
SYS_CONTEXT('COMP_OPTIONS','ADMIN_GRP_ENABLED.U') = '0'
А как включить фичу - я не знаю.
Поддержка, кстати, на этот вопрос не ответила.
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеЧт Июл 24, 2014 12:32   Re: SYS_CONTEXT(»..._RIGHTS»,».....») - Ответить с цитатой
Полезность: Нет оценки
Damir пишет:
devor пишет:
Damir пишет:

Пожелание: хотелось бы, чтобы была возможность пользователю [не владелец схемы] дать права админа (чтобы инициализировался в контексте признак 'админ'). Удобно по пользователю идентифицировать происходящий процесс - т.е. запускать Джобы не из-под [владелец схемы].

Включи пользователя в группу доступа "ADMIN_GRP"


Вкючил - не помогло,в том-то и беда.
На нашей схеме ADMIN_GRP не работает - выставлено:
SYS_CONTEXT('COMP_OPTIONS','ADMIN_GRP_ENABLED.U') = '0'
А как включить фичу - я не знаю.
Поддержка, кстати, на этот вопрос не ответила.


Это ограничение из лицензии, можно увидеть через Администратор дистрибутива под названием "Наличие административной группы".
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru