powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / запуск процедуры от разных пользователей
25 сообщений из 25, страница 1 из 1
запуск процедуры от разных пользователей
    #39994709
varlamovvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Есть ли возможность через PL/SQL запустить процедуру от имени разных пользователей?
USER нужеи именно тот, который коннектится: select USER from dual;
alter session set CURRENT_SCHEMA = my_new_schema; не годится
Видится вариант запуска экстернал джоба, где вызывается sqlplus.
Но может быть есть более простой вариант ( через DBMS_SCHEDULER, например ).
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994717
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
varlamovvp

alter session set CURRENT_SCHEMA = my_new_schema; не годится


Для грамотного совета нужно понять, почему этот вариант не годится, и зачем вообще менять текущую схему.
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994718
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему не годится -- понятно: смена схема не означает смены привилегий

Запускать -- ну, как и придумал, через DBMS_SCHEDULER с правами CREATE ANY JOB или по-старинке через dbms_ijob (но тут права нужны тоже некислые)
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994726
varlamovvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm,

необходимо потестить код, где внутри вызывается USER
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994730
varlamovvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

пробовал создать JOB в другой схеме. Почему-то при запуске Джоб запускался от имени создателя.
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994738
varlamovvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот пример теста. может что не так делаю
Код: 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.
drop table tTestUser;
create table tTestUser ( user_name varchar2(100), context_user_name varchar2(100), dt DATE default sysdate ); 
create or replace procedure pTestUser
is
  pragma autonomous_transaction;
  u1 varchar2(100); u2 varchar2(100);
begin
  u1 := sys_context('userenv','session_user');
  select user into u2 from dual;
  insert into tTestUser ( user_name, context_user_name ) values ( u2, u1 );
  commit;
end;
GRANT execute on pTestUser to public;
grant all on tTestUser to public;


DECLARE
  l_user     VARCHAR2(30) := upper('LoadTest0');
BEGIN
  DBMS_SCHEDULER.create_job(
    job_name   => l_user || '.' || DBMS_SCHEDULER.generate_job_name,
    job_type   => 'STORED_PROCEDURE',
    job_action => 'VV.pTestUser',
    enabled    => TRUE,
    auto_drop  => TRUE
  );
END;
/
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994739
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть создать синоним в схеме пользователя?
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994744
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров
или по-старинке через dbms_ijob (но тут права нужны тоже некислые)
Ещё где-то в 10.2 эта security hole была закрыта.
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994752
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
varlamovvp
dmdmdm,

необходимо потестить код, где внутри вызывается USER


1) выпросить пароль
2) если там простенький селект
на время тестирования заменить USER на константу/переменную/ф-цию
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare
 user varchar2(20) :='Stax'; 
 u varchar2(20);
begin
 u:=user;
 dbms_output.put_line(':= '||u);
 select user into u from dual;
 dbms_output.put_line('into '||u);
 select user into u from dual where user='Stax';
 dbms_output.put_line('where '||u);
end;  
SQL> /
:= Stax
into Stax
where Stax

PL/SQL procedure successfully completed.




.....
stax
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994753
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
Вячеслав Любомудров
или по-старинке через dbms_ijob (но тут права нужны тоже некислые)
Ещё где-то в 10.2 эта security hole была закрыта.
А это была дыра? Я думал, что так было задумано

По теме -- возможно, самое простое создать (и затем выполнить) процедуру в нужной схеме (с правами DEFINER) в которой вызывать создание задания :-)
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994755
varlamovvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

спасибо! кода слишком много, поэтому заменить не получится. Но, идея появилась, ага: создать в схеме функцию USER ( навряд ли SYS.user написано хоть где-то :)
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994760
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
varlamovvp

ага: создать в схеме функцию USER


имхо, не пустит

зы
не забудте об user во вюшках

.....
stax
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994769
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров
А это была дыра? Я думал, что так было задумано
10333182
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994777
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
varlamovvp

необходимо потестить код, где внутри вызывается USER


Т.е. ты доке не веришь. Ладно. Но похоже тебе недостаточно проверить вызов процедуры случайно выбранным пользователем - проверить всех поголовно .

SY.
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994789
varlamovvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

не то чтобы я доке не верю. Но не на 100% если честно

Ситуация такая: есть написанная не Ораклом, но на Оракле система, толстый клиент, где в зависимости от юзера, который коннектится, в таблицы залетают данные, и некоторые поля ( и где-то логика ) зависит от настроек пользователя в системе ( которые завязаны на Ораклового юзера, есть таблички специальные с настройками ). Мне надо проверить, как себя будет система вести при одновременной работе многих пользователей. Если я запущу несколько сессий от одного пользователя, то я , возможно, получу не совсем правильную картину нагрузки. Я хочу понять, смогу ли я смоделировать эту нагрузку через PL/SQL (мне так удобнее) или нет. Пользователей я насоздаю сам, поэтому пароли я буду знать все.
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994791
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
varlamovvpЯ хочу понять, смогу ли я смоделировать эту нагрузку через PL/SQL (мне так удобнее) или нет.

Сможешь. Просто запускай PL/SQL блок от разных пользователей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994921
varlamovvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

varlamovvpЯ хочу понять, смогу ли я смоделировать эту нагрузку через PL/SQL (мне так удобнее) или нет.

Сможешь. Просто запускай PL/SQL блок от разных пользователей.

Вот я и ищу варианты как это сделать :)
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39994924
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
varlamovvp

Вот я и ищу варианты как это сделать :)

sqlplus имя_пользователя/пароль

чисто из СУБД, наверное можно попытаться наплодить db link'ов сам на себя
(нужно проверять)

и еще 100500 вариантов
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39996880
varlamovvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал так:

Создал пакет в основной схеме, в котором есть процедура создания джобов( если надо несколько потоков ), которые сразу же запускаются на выполнение один раз. У каждого пользователя в схеме создан 1 джоб (одинаковый с одним и тем же именем), который дергает эту процедуру. В итоге джобы запускаются от имени юзера, кто их создал ( а создал их джоб в схеме юзера ). Ну а дальше уже эти джобы выполняют ( в цикле или разово ) тестовую процедуру. Процесс стартует так: цикл пробегатеся по всем пользователям (фильтр по имени) и запускает их джобы. Меняя 1 процедуру в пакете основного юзера можно запускать разные скрипты параллельно от разных пользователей.
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39996992
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
varlamovvp
Меняя 1 процедуру в пакете основного юзера можно запускать разные скрипты параллельно от разных пользователей.

Не упомянут существенный аспект, без которого "от имени" работать не будет.
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39996994
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
varlamovvp
Меняя 1 процедуру в пакете основного юзера можно запускать разные скрипты параллельно от разных пользователей.

Не упомянут существенный аспект, без которого "от имени" работать не будет.

authid current_user ?
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39996995
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
varlamovvp
Меняя 1 процедуру в пакете основного юзера можно запускать разные скрипты параллельно от разных пользователей.

Не упомянут существенный аспект, без которого "от имени" работать не будет.


ему надо шоб user возвращала нужное значение,
из под джоба вернет job owner

права наверное следующий нюанс

.....
stax
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39997000
varlamovvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

даже не job_owner, a job_creator.
Но я на всякий случай джобы в схемах юзеров тоже создаю.
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39997155
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
varlamovvp
Stax,

даже не job_owner, a job_creator.
Но я на всякий случай джобы в схемах юзеров тоже создаю.


да-да LOG_USER
лень было проверять, а память сбойнула

зы
если чесно, я их (owner, creator.) для джобов слабо различаю

интересно, если в словаре поменять LOG_USER на нужный, работа джоба нарушиться?


.....
stax
...
Рейтинг: 0 / 0
запуск процедуры от разных пользователей
    #39997162
dba123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
varlamovvp Ну а дальше уже эти джобы выполняют ( в цикле или разово ) тестовую процедуру
Еще интересно как он организовал возврат и обработку ошибок.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / запуск процедуры от разных пользователей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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