Autor | Zpráva | ||
---|---|---|---|
Ulet Profil * |
#1 · Zasláno: 2. 10. 2012, 16:27:36
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 |
#2 · Zasláno: 2. 10. 2012, 17:10:29
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 * |
#3 · Zasláno: 2. 10. 2012, 17:51:40
Diky moc, to je presne to co potrebuju, muzeme uzavrit ;-)
|
||
Časová prodleva: 12 let
|
0