oracle table_privileges values - PullRequest
       6

oracle table_privileges values

6 голосов
/ 13 января 2012

enter image description here

Кто-нибудь знает значения, которые приведены в table_privileges? Я уже выяснил, что означает «А». Но я не выяснил, что означает "S". Я думаю, что это не задокументировано. Это как-то связано с привилегиями обновления для определенных столбцов.

Ответы [ 2 ]

5 голосов
/ 13 января 2012

Извините, но, заметив ответ , который @JustinCave дал на этот самый вопрос еще в 2005 году, я должен опубликовать его.

Из справочной документации по SQL наtable_privileges

http://download -west.oracle.com / docs / cd / B10501_01 / server.920 / a96536 / ch2486.htm # 1318903

"TABLE_PRIVILEGES содержит информациюдля грантов для объектов, для которых пользователь является грантодателем, грантополучателем или владельцем, или грантополучатель PUBLIC. Это представление включено для совместимости с Oracle версии 6. Oracle Corporation рекомендует не использовать это представление. "

Учитывая, что Oracle рекомендует не использовать это представление, я настоятельно рекомендую вместо этого использовать представление DBA_TAB_PRIVS.Информация там должна быть немного проще для расшифровки.

4 голосов
/ 13 января 2012

Вам не хватает того, что мы можем предоставить UPDATE для подмножества столбцов таблицы.

Прежде всего, давайте просто предоставим SELECT для таблицы. Значение UPDATE_PRIV равно N, для Нет :

SQL> grant select on t23 to mr_x;

Grant succeeded.


SQL> select select_priv, update_priv 
  2  from table_privileges
  3  where table_name = 'T23'
  4  /

S U
- -
Y N

SQL>

Теперь, если я предоставлю UPDATE для одного столбца, значением UPDATE_PRIV будет 'S', предположительно для Some :

SQL> grant update (col2) on t23 to mr_x
  2  /

Grant succeeded.

SQL> select select_priv, update_priv 
  2  from table_privileges
  3  where table_name = 'T23'
  4  /

S U
- -
Y S

SQL>

Наконец, я предоставляю UPDATE для всей таблицы, значение UPDATE_PRIV равно 'A', для All :

SQL> grant update  on t23 to mr_x
  2  /

Grant succeeded.

SQL> select select_priv, update_priv 
  2  from table_privileges
  3  where table_name = 'T23'
  4  /

S U
- -
Y A

SQL> 
...