05.10.2010 15:50
LexaP
 
Добрый день
Есть желание запускать некоторые SQL'ные вещи, работающие с базой Супермага.
И есть желание ограничить пользователей запускать эти вещи согласно должностным ролям в Супермаге.
Но возникает проблема с назначанием должностной роли после входа в Oracle, т.к. все должностные роли создаются запароленными и, соотвественно, предложения вида
begin dbms_session.set_role('"Admins"'); end;
выдают ошибку ORA-01979 missing or invalid password for role 'Admins'

Существует ли в Супермаге какая-нибудь стандартная процедура, позволяющая вне клиента Супермага выдать должностную роль для сессии пользователя? Или может быть есть другой способ?
05.10.2010 16:04
John Doe
 
Я как-то ковырялся и, насколько помню, пароль был открытым текстом в dbinit.exe
06.10.2010 10:57
LexaP
 
Цитата:
John Doe Я как-то ковырялся и, насколько помню, пароль был открытым текстом в dbinit.exe
Предложенным способом пароль не нашёл
Ковырянием в пакетах выяснил, что пароль для должностной роли равен времени создания должности из smofficelog в формате YYYYMMDDHH24MISS плюс-минус 2 секунды
10.10.2010 21:48
OlegON
 
А чем закончилось? Каким образом роль выдаете, если точного пароля нет?
11.10.2010 07:50
LexaP
 
т.к. количество должностных ролей, который надо было выдать довольно ограничено (до 10) и всё происходит в одной базе, то решилось тупым перебором второго столбца из селекта
select principal, min(to_char(eventtime,'yyyymmddhh24miss')) pass from supermag.smofficelog group by principal
11.10.2010 07:58
LexaP
 
также возможен следующий вариант:
1. создаём свою роль
2. выдаём свой роли право на выполнение SQL'ной вещи
3. выдаём свою роль должностной роли
4. в SQL'ной вещи активируем свою роль: dbms_session.set_role('своя роль);

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.