1. Usando le visualizzazioni `dba_sys_privs` e` dba_tab_privs`:
Queste visualizzazioni del dizionario dei dati forniscono informazioni complete sui privilegi di sistema e oggetti concessi agli utenti. `DBA_SYS_PRIVS` mostra i privilegi di sistema (ad esempio,` Crea table`, `Crea session`), mentre` dba_tab_privs` mostra i privilegi degli oggetti (ad esempio, `Select`,` Insert`, `Update` su tabelle specifiche).
* Per i privilegi di sistema:
`` `sql
Seleziona * da DBA_SYS_PRIVS WHERE BENEATE ='Nome utente';
`` `
Sostituisci `nome utente` con il nome utente reale.
* Per i privilegi degli oggetti:
`` `sql
Seleziona * da DBA_TAB_PRIVS WHERE BENNEGGIO ='nome utente';
`` `
Sostituisci `nome utente` con il nome utente reale. Questo mostrerà tutti i privilegi su tutti i tavoli. Puoi perfezionare questa query per esaminare tavoli specifici:
`` `sql
Seleziona * da DBA_TAB_PRIVS WHERE BENNEGGIO ='Username' e Table_name ='Table_Name';
`` `
Sostituisci `table_name` con il nome della tabella.
2. Usando le visualizzazioni `all_sys_privs` e` all_tab_privs`:
Queste viste forniscono informazioni sui privilegi che un utente * ha * direttamente o indirettamente attraverso ruoli. Ciò è utile per un utente che controlla i propri privilegi. Se ti connetti come utente, puoi utilizzare queste viste:
* Per i privilegi di sistema:
`` `sql
Seleziona * da all_sys_privs;
`` `
* Per i privilegi degli oggetti:
`` `sql
Seleziona * da all_tab_privs;
`` `
Puoi anche filtrare per nome utente come le visualizzazioni `dba_`.
3. Utilizzando le visualizzazioni `user_sys_privs` e` user_tab_privs`:
Queste visualizzazioni mostrano solo i privilegi concessi direttamente all'utente connesso. Non mostrano privilegi concessi attraverso ruoli. Utile per un utente che vede solo i propri privilegi diretti.
* Per i privilegi di sistema:
`` `sql
Seleziona * da user_sys_privs;
`` `
* Per i privilegi degli oggetti:
`` `sql
Seleziona * da user_tab_privs;
`` `
4. Usando la colonna `Role` nelle viste precedenti:
La colonna `Role` in` dba_sys_privs`, `dba_tab_privs`,` all_sys_privs`, `all_tab_privs` indica se il privilegio è concesso direttamente o attraverso un ruolo. Se viene concesso attraverso un ruolo, dovrai indagare sui privilegi concessi a quel ruolo. Puoi trovare informazioni sui ruoli utilizzando le visualizzazioni `dba_roles`,` all_roles` o `user_roles`, a seconda del livello di accesso.
5. Utilizzo di `Show User`:
Questo comando (in SQL*Plus o SQL Developer) mostrerà l'utente attualmente connesso. Questo non mostra direttamente i privilegi, ma è un punto di partenza per usare le viste sopra.
Considerazioni importanti:
* Ruoli del database: Gli utenti spesso ricevono privilegi indirettamente attraverso ruoli. È necessario esaminare i ruoli a cui appartiene un utente e i privilegi che hanno quei ruoli. Ciò richiede di query sulle visualizzazioni `dba_roles`,` all_roles` o `user_roles`.
* Privilegi a cascata attraverso i ruoli: I ruoli possono concedere privilegi ad altri ruoli. Questo può creare strutture di privilegio complesse.
* Livelli di accesso: Sono necessari i privilegi appropriati (ad es. `Seleziona qualsiasi dizionario`) per interrogare le viste del dizionario dei dati. Le visualizzazioni `dba_` richiedono generalmente il ruolo` dba`.
Ricorda di sostituire `nome utente` e` table_name` con il nome utente e il nome della tabella effettivo che ti interessa. Esegui sempre queste query con cautela, in particolare quelle che utilizzano le visualizzazioni `dba_`, poiché forniscono accesso a informazioni sensibili.
software © www.354353.com