Autor Zpráva
Ulet
Profil *
Dobrý den,
řeším drobný problém v oracle kde mám tabulku all_tab_privs_made kde jsou uložené práva uživatelů co mohou dělat v ostatních tabulkách

příklad:
GRANTEE TABLE_NAME PRIVILEGE
UTIVATEL1 TABULKA1 UPDATE
UTIVATEL1 TABULKA1 INSERT
UTIVATEL1 TABULKA1 SELECT
UTIVATEL2 TABULKA1 UPDATE
UTIVATEL2 TABULKA1 INSERT

ta tabulka ma o neco vic sloupcu ale je to standart a predpokladam ze vecina z vas ji zna
no nicmene potrebuji zjistit rozdilne prava u dvou ruznych uzivatelu pro celou databazi
to znamena vypsat jen to kde je stejny nazev tabulky ale u jednoho z uzivatelu chybi / prebiva nejake pravo
v nasem pripade u uzivatele2 v tabulce1 chybi UPDATE na rozdil od uzivatele1 který ho tam má

idealni (ale staci jakykoli vypis kde budou tyto prava jakkoli rozliseny abych je mohl nejak porovnat) by byl vypis typu:
TABLE_NAME UPDATE_UZIVATEL1 INSERT_UZIVATEL1 DELETE_UZIVATEL1 UPDATE_UZIVATEL2 INSERT_UZIVATEL2 DELETE_UZIVATEL2
TABULKA1 ANO ANO ANO NE ANO ANO
TABULKA2 ANO ANO ANO ANO ANO ANO
Kajman
Profil
Možná něco jako
select nvl(p1.owner, p2.owner) owner,
       nvl(p1.table_name, p2.table_name) table_name,
       nvl(p1.privilege, p2.privilege) privilege,
       p1.grantable grantable1,
       p2.grantable grantable2
from   (select * from all_tab_privs_made where grantee = 'UZIV1') p1
full   join (select * from all_tab_privs_made where grantee = 'UZIV2') p2
on     p1.owner = p2.owner
       and p1.table_name = p2.table_name
       and p1.privilege = p2.privilege
where  nvl(p1.grantable, 'X') != nvl(p2.grantable, 'X')
order  by 1, 2, 3
Ulet
Profil *
Diky moc, to je presne to co potrebuju, muzeme uzavrit ;-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0