|
|
|
Выполнение DDL оператора в пакете от имени другого пользователя
|
|||
|---|---|---|---|
|
#18+
Добрый день. subj У меня база разделена на несколько схем для оптимизации. Хочу написать пакет который при заведении нового пользователя дает права на нужные объекты. Но права может раздавать только владелец. Хотелось бы иметь такой сценарий: клиент конектится под своим именем и запускает мой пакет я в пакете от имени владельцев схем раздаю ему необходимые права. У меня только одна идея дать владельцу какой нибудь схемы возможность раздавать права необходимым объектам из других схем. Но мне такой подход не нравится созданием ненужных зависимостей. Как решают подобные проблемы профессионалы ? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2003, 11:52 |
|
||
|
Выполнение DDL оператора в пакете от имени другого пользователя
|
|||
|---|---|---|---|
|
#18+
В 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2003, 12:08 |
|
||
|
Выполнение DDL оператора в пакете от имени другого пользователя
|
|||
|---|---|---|---|
|
#18+
решается использованием динамического SQL из хранимых процедур, т.к. sql будет выполняться с правами владельца процедуры например: создаем процедуру в той схеме, на объекты которой надо дать права Код: plaintext 1. 2. 3. 4. 5. 6. теперь вызовом этой процедуры user2 может раздавать объектные привилегии от имени user1 другим пользователям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2003, 12:13 |
|
||
|
Выполнение DDL оператора в пакете от имени другого пользователя
|
|||
|---|---|---|---|
|
#18+
RE Denis Popov Забыл сказать у меня Oracle 8i Re D_A Спасибо это как раз то что я искал. Но есть маленькое но (очень неприятное). Как быть с объектами из схем SYS например DBMS_PIPE, различные представления и т.д. ? Создавать пакет в схеме SYS вроде бы некрасиво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2003, 12:41 |
|
||
|
Выполнение DDL оператора в пакете от имени другого пользователя
|
|||
|---|---|---|---|
|
#18+
для объектов SYS-а, как вариант, можно написать обертки в рабочей схеме и давать права на них: Код: plaintext 1. 2. 3. 4. 5. или все-таки дать эти привилегии с grant option пользователю раздающему привилегии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2003, 13:45 |
|
||
|
Выполнение DDL оператора в пакете от имени другого пользователя
|
|||
|---|---|---|---|
|
#18+
Vozmozno bolee prostim resheniem budet sozdanie paketa i prosto zapuskom ego s pravami tekucheko usera. Код: plaintext 1. 2. 3. 4. 5. i paket vipolnyaetsya s pravamy CURRENT_USER Код: plaintext 1. 2. 3. 4. 5. i paket vipolnyaetsya s pravamy OWNER (sozdatelya) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2003, 18:53 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32101448&tid=1991924]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
384ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 639ms |

| 0 / 0 |
