powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выполнение DDL оператора в пакете от имени другого пользователя
6 сообщений из 6, страница 1 из 1
Выполнение DDL оператора в пакете от имени другого пользователя
    #32101448
ramasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
subj
У меня база разделена на несколько схем для оптимизации.
Хочу написать пакет который при заведении нового пользователя дает права
на нужные объекты. Но права может раздавать только владелец.
Хотелось бы иметь такой сценарий: клиент конектится под своим именем и запускает мой пакет я в пакете от имени владельцев схем раздаю ему необходимые права.
У меня только одна идея дать владельцу какой нибудь схемы возможность раздавать права необходимым объектам из других схем. Но мне такой подход не нравится созданием ненужных зависимостей.

Как решают подобные проблемы профессионалы ?

Спасибо.
...
Рейтинг: 0 / 0
Выполнение DDL оператора в пакете от имени другого пользователя
    #32101460
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Oracle 9i на эту тему появилась специальная привилегия, называется GRANT ANY OBJECT PRIVILEGE:
"New system privilege, GRANT ANY OBJECT PRIVILEGE, allows users to grant and revoke privileges on objects on behalf of the object's owner to simplify the installation process."
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96531/ch5_edit.htm#82900
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96521/privs.htm#21605
...
Рейтинг: 0 / 0
Выполнение DDL оператора в пакете от имени другого пользователя
    #32101467
D_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
D_A
Гость
решается использованием динамического SQL из хранимых процедур,
т.к. sql будет выполняться с правами владельца процедуры

например:

создаем процедуру в той схеме, на объекты которой надо дать права
Код: plaintext
1.
2.
3.
4.
5.
6.
create or replace procedure user1.do_grant(p_grant varchar2, p_object varchar2, p_grantee varchar2) is
begin
  execute immediate 'grant '||p_grant||' '|| on '||p_object||' to '||grantee ;
end;
/
grant execute on do_grant to user2;

теперь вызовом этой процедуры user2 может раздавать объектные привилегии от имени user1 другим пользователям
...
Рейтинг: 0 / 0
Выполнение DDL оператора в пакете от имени другого пользователя
    #32101497
ramasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RE Denis Popov
Забыл сказать у меня Oracle 8i

Re D_A
Спасибо это как раз то что я искал. Но есть маленькое но (очень неприятное).
Как быть с объектами из схем SYS например DBMS_PIPE, различные представления и т.д. ? Создавать пакет в схеме SYS вроде бы некрасиво.
...
Рейтинг: 0 / 0
Выполнение DDL оператора в пакете от имени другого пользователя
    #32101560
D_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
D_A
Гость
для объектов SYS-а, как вариант, можно написать обертки в рабочей схеме и давать права на них:
Код: plaintext
1.
2.
3.
4.
5.
create or replace view user1.v$session 
  as 
    select * from sys.v_$session;

grant select on user1.v$session to user2;

или все-таки дать эти привилегии с grant option пользователю раздающему привилегии
...
Рейтинг: 0 / 0
Выполнение DDL оператора в пакете от имени другого пользователя
    #32101873
ShgGena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vozmozno bolee prostim resheniem budet sozdanie paketa i prosto zapuskom ego
s pravami tekucheko usera.

Код: plaintext
1.
2.
3.
4.
5.
Create or replace package aaaaaa
AUTHID CURRENT_USER
...
end;
/

i paket vipolnyaetsya s pravamy CURRENT_USER

Код: plaintext
1.
2.
3.
4.
5.
Create or replace package aaaaaa
AUTHID DEFINER
...
end;
/

i paket vipolnyaetsya s pravamy OWNER (sozdatelya)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выполнение DDL оператора в пакете от имени другого пользователя
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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