Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ? / 19 сообщений из 19, страница 1 из 1
13.09.2018, 20:19
    #39702329
Правильный Вася
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Вот есть вьюха ALL_TAB_PRIVS. Вроде бы всё можно достать из неё.

Но есть одна тонкость. Если 2 объекта разного типа имеют одинаковое название, то их привилегии отделить не получается.
Например, SEQUENCE и JAVA SOURCE на приложенной картинке. Одинаковые названия, grantor и grantee, схема - всё.

Хорошо, если для таких различных типов объектов можно догадаться, что SELECT не относится к JAVA SOURCE. Но ведь может оказаться PROCEDURE и JAVA SOURCE, у них список доступных привилегий идентичен.

Как их разделить? Ведь в 11.2 в этой вьюхе нет поля TYPE.
...
Рейтинг: 0 / 0
14.09.2018, 04:27
    #39702379
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Теоретически такое возможно, но, видимо, не актуально

Если очень накаляет -- сделать свою вьюху
...
Рейтинг: 0 / 0
14.09.2018, 07:41
    #39702388
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Правильный ВасяЕсли 2 объекта разного типа имеют одинаковое названиеRTFM Within a namespace, no two objects can have the same name (FAQ)
...
Рейтинг: 0 / 0
14.09.2018, 08:06
    #39702392
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
На самом деле, введение столбца TYPE не сильно улучшило ситуацию
Например в 11.2.0.3
Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
tst> select count(count(*)), sum(count(*))
  2  from dba_tab_privs
  3  group by grantee, owner, table_name, grantor, privilege
  4  having count(*) > 1
  5  /

COUNT(COUNT(*)) SUM(COUNT(*))
--------------- -------------
             25            60

tst> with duplicate_grants as (
  2     select grantee, owner, table_name, grantor, privilege
  3     from dba_tab_privs
  4     group by grantee, owner, table_name, grantor, privilege
  5     having count(*) > 1
  6  )
  7  select owner, object_name, object_type, subobject_name
  8  from dba_objects
  9  where (owner, object_name) in (select owner, table_name from duplicate_grants)
 10  order by 1, 2, 3, 4
 11  /

OWNER      OBJECT_NAME                    OBJECT_TYPE         SUBOBJECT_NAME
---------- ------------------------------ ------------------- ------------------------------
SYS        ALERT_TYPE                     TYPE                $VSN_1
SYS        ALERT_TYPE                     TYPE                $VSN_2
SYS        ALERT_TYPE                     TYPE
SYS        AQ$_DESCRIPTOR                 TYPE                $VSN_1
SYS        AQ$_DESCRIPTOR                 TYPE                $VSN_2
SYS        AQ$_DESCRIPTOR                 TYPE                $VSN_3
SYS        AQ$_DESCRIPTOR                 TYPE
SYS        AQ$_REG_INFO                   TYPE                $VSN_1
SYS        AQ$_REG_INFO                   TYPE                $VSN_2
SYS        AQ$_REG_INFO                   TYPE                $VSN_3
SYS        AQ$_REG_INFO                   TYPE
SYS        AQ$_REG_INFO                   TYPE BODY
SYS        AQ$_REG_INFO_LIST              TYPE                $VSN_1
SYS        AQ$_REG_INFO_LIST              TYPE                $VSN_2
SYS        AQ$_REG_INFO_LIST              TYPE                $VSN_3
SYS        AQ$_REG_INFO_LIST              TYPE
SYS        AQ$_SUBSCRIBER                 TYPE                $VSN_1
SYS        AQ$_SUBSCRIBER                 TYPE
SYS        AQ$_SUBSCRIBER_T               TYPE                $VSN_1
SYS        AQ$_SUBSCRIBER_T               TYPE
SYS        AWRDRPT_TEXT_TYPE              TYPE                $VSN_1
SYS        AWRDRPT_TEXT_TYPE              TYPE
SYS        AWRDRPT_TEXT_TYPE_TABLE        TYPE                $VSN_1
SYS        AWRDRPT_TEXT_TYPE_TABLE        TYPE
SYS        AWRRPT_HTML_TYPE               TYPE                $VSN_1
SYS        AWRRPT_HTML_TYPE               TYPE
SYS        AWRRPT_HTML_TYPE_TABLE         TYPE                $VSN_1
SYS        AWRRPT_HTML_TYPE_TABLE         TYPE
SYS        CHNF$_REG_INFO                 TYPE                $VSN_1
SYS        CHNF$_REG_INFO                 TYPE
SYS        CHNF$_REG_INFO                 TYPE BODY
SYS        LCR$_ROW_LIST                  TYPE                $VSN_1
SYS        LCR$_ROW_LIST                  TYPE
SYS        LCR$_ROW_UNIT                  TYPE                $VSN_1
SYS        LCR$_ROW_UNIT                  TYPE
SYS        LCR$_ROW_UNIT                  TYPE BODY
SYS        MSG_PROP_T                     TYPE                $VSN_1
SYS        MSG_PROP_T                     TYPE
SYS        ODCICOLINFO                    TYPE                $VSN_1
SYS        ODCICOLINFO                    TYPE
SYS        ODCICOLINFOLIST                TYPE                $VSN_1
SYS        ODCICOLINFOLIST                TYPE
SYS        ODCICOLINFOLIST2               TYPE                $VSN_1
SYS        ODCICOLINFOLIST2               TYPE
SYS        ODCIEXTTABLEINFO               TYPE                $VSN_1
SYS        ODCIEXTTABLEINFO               TYPE
SYS        ODCIFUNCCALLINFO               TYPE                $VSN_1
SYS        ODCIFUNCCALLINFO               TYPE
SYS        ODCIINDEXCTX                   TYPE                $VSN_1
SYS        ODCIINDEXCTX                   TYPE                $VSN_2
SYS        ODCIINDEXCTX                   TYPE                $VSN_3
SYS        ODCIINDEXCTX                   TYPE
SYS        ODCIINDEXINFO                  TYPE                $VSN_1
SYS        ODCIINDEXINFO                  TYPE                $VSN_2
SYS        ODCIINDEXINFO                  TYPE
SYS        ODCIPARTINFO                   TYPE                $VSN_1
SYS        ODCIPARTINFO                   TYPE
SYS        ODCIQUERYINFO                  TYPE                $VSN_1
SYS        ODCIQUERYINFO                  TYPE
SYS        SCHEDULER$_EVENT_INFO          TYPE                $VSN_1
SYS        SCHEDULER$_EVENT_INFO          TYPE
SYS        SCHEDULER$_EVENT_INFO          TYPE BODY
SYS        XMLGENFORMATTYPE               TYPE                $VSN_1
SYS        XMLGENFORMATTYPE               TYPE
SYS        XMLGENFORMATTYPE               TYPE BODY

65 rows selected.

В 12 [у меня] такого не наблюдается
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> select count(count(*)), sum(count(*))
  2  from dba_tab_privs
  3  group by grantee, owner, table_name, grantor, privilege
  4  having count(*) > 1
  5  /

COUNT(COUNT(*)) SUM(COUNT(*))
--------------- -------------
              0

Но тут я не в курсе -- либо не хранятся права на старые версии типов, либо их просто нет
...
Рейтинг: 0 / 0
14.09.2018, 08:11
    #39702393
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
ElicПравильный ВасяЕсли 2 объекта разного типа имеют одинаковое названиеRTFM Within a namespace, no two objects can have the same name (FAQ) JAVA [RE]SOURCE в другом пространстве имен
Код: 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.
SQL> select owner, table_name from dba_tab_privs where type like 'JAVA%'
  2  and table_name not like '%/%'
  3  /

OWNER                TABLE_NAME
-------------------- ------------------------------
SYS                  OracleXML
SYS                  OracleXMLStore
SYS                  AQAPI_BUILT_BY_JDK_VERSION_6

SQL> create function AQAPI_BUILT_BY_JDK_VERSION_6 return number as begin return 0; end;
  2  /

Function created.

SQL> grant execute on AQAPI_BUILT_BY_JDK_VERSION_6 to public;

Grant succeeded.

SQL> select grantee, owner, privilege, type from dba_tab_privs where table_name='AQAPI_BUILT_BY_JDK_VERSION_6';

GRANTEE              OWNER                PRIVILEGE                                TYPE
-------------------- -------------------- ---------------------------------------- ------------------------
PUBLIC               SYS                  EXECUTE                                  JAVA RESOURCE
PUBLIC               SYS                  EXECUTE                                  FUNCTION

...
Рейтинг: 0 / 0
14.09.2018, 08:16
    #39702394
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Вячеслав ЛюбомудровJAVA [RE]SOURCE в другом пространстве именЭто как бы намекает, накуя козе баян.
...
Рейтинг: 0 / 0
14.09.2018, 08:17
    #39702395
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Ну, я тоже против жабы в БД
Но почему-то меня никто не слушает
...
Рейтинг: 0 / 0
15.09.2018, 13:57
    #39702932
Правильный Вася
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Ну не только JAVA [RE]SOURCE в другом пространстве имен. В 11.2 еще и MINING MODEL.

Вы против них тоже? ;-)

Понятно, что глупо одинаково называть разные объекты, но запрета нет, значит, всегда найдутся те, кто именно так и сделает по закону Мерфи.
...
Рейтинг: 0 / 0
15.09.2018, 14:58
    #39702953
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Правильный ВасяПонятно, что глупо одинаково называть разные объекты, но запрета нет, значит, всегда найдутся те, кто именно так и сделает по закону Мерфи.

Ну тебя ведь услышали и в 12C добавили TYPE так в чем вопрос?

SY.
...
Рейтинг: 0 / 0
15.09.2018, 16:24
    #39702966
Правильный Вася
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
SY,

дык, вопрос-то по 11.2.
Я думал, может, что-то проглядел и есть какой-то способ разделить-таки корректно привилегии от разных объектов с одинаковыми именами.
...
Рейтинг: 0 / 0
15.09.2018, 19:16
    #39702996
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Правильный ВасяЯ думал, может, что-то проглядел и есть какой-то способ разделить-таки корректно привилегии от разных объектов с одинаковыми именами.

Самый лучший способ это стандарты, например у нас в конторе есть ODAC (Oracle Database Architecture Committee) которая кроме всего прочего устанавливает стандарты наименования. Так-что используй скажем префикс SEQ_ /суффикс _SEQ для последовательностей и JS_/_JS для java source.

SY.
...
Рейтинг: 0 / 0
16.09.2018, 05:12
    #39703027
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
SYПравильный ВасяПонятно, что глупо одинаково называть разные объекты, но запрета нет, значит, всегда найдутся те, кто именно так и сделает по закону Мерфи.

Ну тебя ведь услышали и в 12C добавили TYPE так в чем вопрос?

SY.TYPE мало помогает, надо OBJECT_ID
...
Рейтинг: 0 / 0
16.09.2018, 14:26
    #39703088
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Вячеслав ЛюбомудровTYPE мало помогает, надо OBJECT_ID

Если ты о типах, то на дубли просто не нужно обращать внимание. Каждый раз когда тип эволюционирует Oracle создает новый object_id с тем-же object_name но разным subobject_name но логически это тот-же обьект (тот-же тип) и существующие гранты автоматом перейдут и на новый object_id (ведь GRANT/REVOKE на уровне эволюций типа не поддерживаются ) создав ничего не значащий дубль в XXX_TAB_PRIVS. Но соглашусь Oracle мог-бы и почистить за собой. Ведь если грант дается впeрвые то он дается не на все а только на последнюю эволюцию:


Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
SQL> create or replace
  2    type x_type
  3      as object(
  4                x number
  5               )
  6  /

Type created.

SQL> alter type x_type
  2    add attribute(
  3                  y number
  4                 )
  5  /

Type altered.

SQL> alter type x_type
  2    add attribute(
  3                  z number
  4                 )
  5  /

Type altered.

SQL> select  object_name,
  2          subobject_name,
  3          object_type
  4    from  dba_objects
  5    where owner = 'SCOTT'
  6      and object_name = 'X_TYPE'
  7  /

OBJECT_NAME SUBOBJECT_NAME OBJECT_TYPE
----------- -------------- -----------
X_TYPE      $VSN_1         TYPE
X_TYPE      $VSN_2         TYPE
X_TYPE                     TYPE

SQL> grant execute on x_type to u1
  2  /

Grant succeeded.

SQL> select  table_name,
  2          type,
  3          privilege
  4    from  dba_tab_privs
  5    where owner = 'SCOTT'
  6      and table_name = 'X_TYPE'
  7  /

TABLE_NAME TYPE PRIVILEGE
---------- ---- ---------
X_TYPE     TYPE EXECUTE

SQL> 




SY.
...
Рейтинг: 0 / 0
16.09.2018, 14:35
    #39703091
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Спасибо, я это знаю
И сразу обратил на это внимание, если ты не заметил
И считаю, что нет смысла оправдывать явно неправильные решения
...
Рейтинг: 0 / 0
16.09.2018, 14:47
    #39703093
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Вячеслав ЛюбомудровИ считаю, что нет смысла оправдывать явно неправильные решения

Вячеслав,

Я и не оправдывал: "Но соглашусь Oracle мог-бы и почистить за собой".

SY.
...
Рейтинг: 0 / 0
16.09.2018, 15:35
    #39703107
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Я, наверное, косноязычный

Вопрос не в том,чтоб "подчищать за собой"
Вопрос в том, что право на EXECUTE для ODCIINDEXCTX присутствует 4 раза
Введение поля TYPE только подтверждает, что право на объект ODCIINDEXCTX типа TYPE присутствует 4 раза
...
Рейтинг: 0 / 0
16.09.2018, 16:01
    #39703110
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Вячеслав,

Так было всегда. Отсутствие/наличие дублей и их количеcтво зависит от числа эволюций типа после выдачи гранта. Например 10G:

Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
SQL> select  banner
  2    from  v$version
  3  /

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
CORE    10.2.0.5.0      Production
TNS for 64-bit Windows: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 - Production

SQL> create or replace
  2    type x_type
  3      as object(
  4                x number
  5               )
  6  /

Type created.

SQL> alter type x_type
  2    add attribute(
  3                  y number
  4                 )
  5  /

Type altered.

SQL> alter type x_type
  2    add attribute(
  3                  z number
  4                 )
  5  /

Type altered.

SQL> grant execute on x_type to u1
  2  /

Grant succeeded.

SQL> select  object_id
  2    from  dba_objects
  3    where owner = 'SCOTT'
  4      and object_name = 'X_TYPE'
  5  /

 OBJECT_ID
----------
     97216
     97217
     97218

SQL> select  table_name,
  2          privilege
  3    from  dba_tab_privs
  4    where owner = 'SCOTT'
  5      and table_name = 'X_TYPE'
  6  /

TABLE_NAME PRIVILEGE
---------- ---------
X_TYPE     EXECUTE

SQL> drop type x_type
  2  /

Type dropped.

SQL> create or replace
  2    type x_type
  3      as object(
  4                x number
  5               )
  6  /

Type created.

SQL> alter type x_type
  2    add attribute(
  3                  y number
  4                 )
  5  /

Type altered.

SQL> grant execute on x_type to u1
  2  /

Grant succeeded.

SQL> alter type x_type
  2    add attribute(
  3                  z number
  4                 )
  5  /

Type altered.

SQL> select  object_id
  2    from  dba_objects
  3    where owner = 'SCOTT'
  4      and object_name = 'X_TYPE'
  5  /

 OBJECT_ID
----------
     97219
     97220
     97221

SQL> select  table_name,
  2          privilege
  3    from  dba_tab_privs
  4    where owner = 'SCOTT'
  5      and table_name = 'X_TYPE'
  6  /

TABLE_NAME PRIVILEGE
---------- ---------
X_TYPE     EXECUTE
X_TYPE     EXECUTE

SQL> drop type x_type
  2  /

Type dropped.

SQL> create or replace
  2    type x_type
  3      as object(
  4                x number
  5               )
  6  /

Type created.

SQL> grant execute on x_type to u1
  2  /

Grant succeeded.

SQL> alter type x_type
  2    add attribute(
  3                  y number
  4                 )
  5  /

Type altered.

SQL> alter type x_type
  2    add attribute(
  3                  z number
  4                 )
  5  /

Type altered.

SQL> select  object_id
  2    from  dba_objects
  3    where owner = 'SCOTT'
  4      and object_name = 'X_TYPE'
  5  /

 OBJECT_ID
----------
     97222
     97223
     97224

SQL> select  table_name,
  2          privilege
  3    from  dba_tab_privs
  4    where owner = 'SCOTT'
  5      and table_name = 'X_TYPE'
  6  /

TABLE_NAME PRIVILEGE
---------- ---------
X_TYPE     EXECUTE
X_TYPE     EXECUTE
X_TYPE     EXECUTE

SQL> 



SY.
...
Рейтинг: 0 / 0
16.09.2018, 16:09
    #39703111
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Ты тоже бухаешь?
Я же и говорю, что добавление столбца TYPE не совсем решает проблему -- уж лучше добавьте OBJECT_ID, а клиент сам разберется
...
Рейтинг: 0 / 0
16.09.2018, 16:32
    #39703112
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ?
Вячеслав ЛюбомудровТы тоже бухаешь?
Я же и говорю, что добавление столбца TYPE не совсем решает проблему -- уж лучше добавьте OBJECT_ID, а клиент сам разберется

А зачем? Ведь все это эволюции одного и того-же типа и с точки зрения привилегий у grantee либо есть привилегия на тип либо нет. Поэтому я и говорил - XXX_TAB_PRIVS должен показывать привилегию на тип только один раз (в 12C хотя-бы тупо добавить DISTINCT).

SY.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как узнать список прав на объекты для конкретного grantee в Ora 11.2 ? / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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