DDL di creazione UTENZA, RUOLI e PRIVILEGI

.

Query per generare la DDL di creazione UTENZA, RUOLI e PRIVILEGI

Con l’articolo DDL di creazione UTENZA, RUOLI e PRIVILEGI, forniamo una serie di statement, con i quali possiamo estrarre il codice di creazione di un UTENTE.

Inoltre è possibile estrapolare i ruoli, i privilegi di sistema e sugli oggetti, e la quota sul tablespace di default di un determinato UTENTE.

In fase di un allineamento dati è fondamentale estrarre l’utenza dell’ambiente di test, poichè la password potrebbe essere diversa rispetto allo stessa SCHEMA presente in ambiente di produzione.
A fronte di questo tipo di attività, nell’ambiente di test, dobbiamo salvarci la DDL di crezione dell’utente che dobbiamo importare e successivamente (ma possiamo farne anche a meno poichè riportati dall’import), possiamo salvarci anche i RUOLI e i PRIVILEGI associati all’utente.

Quindi, le operazioni che dovremo eseguire saranno, salvataggio dello SCHEMA con il package DBMS_METADATA.GET_DDL come indicato nell’articolo in calce.
Successivo DROP dello SCHEMA in sempre in ambiente di test e infine ricreato con la DDL salvata in precedenza.


Statement per estrapolare il codice di creazione UTENZA, RUOLI e PRIVILEGI:

--DDL Utente - grant

set head off
set pages 1000
set long 9999999
undef user
select dbms_metadata.get_ddl('USER',username) || '/' usercreate from dba_users where USERNAME = upper('&user')

--GRANT Utente
SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT',upper('&&user')) FROM DUAL;
SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT',upper('&&user')) FROM DUAL;
SELECT DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT',upper('&&user')) FROM DUAL;
SELECT DBMS_METADATA.GET_GRANTED_DDL('TABLESPACE_QUOTA',upper('&&user')) FROM DUAL; /

Per visionare le mie guide sui Comandi CRS clicca qui!
A questo LINK, invece, troverai le query SQL

Resta aggiornato sulle nostre attività entrando a far parte della nostra community:
Facebook
Youtube
Linkedin

Query PRIVILEGI UTENTE replicati

.

Con l’articolo Query PRIVILEGI UTENTE replicati, possiamo recuperare tutti i RUOLI,
i PRIVILEGI di sistema e i PRIVILEGI sugli oggetti di un UTENTE e costruire il comando di GRANT assegnandoli ad un altro UTENTE.

Quando viene creato un utente nel database Oracle, se non vengono assegnati ruoli o privilegi, l’utente non potrà fare nulla.

Un utente per potersi collegare occorre al database deve avere assegnato o il ruolo CONNECT o il privilegio CREATE SESSION.

Qual’è la differenza tra RUOLO o PRIVILEGIO?

Un RUOLO è un contenitore di privilegi. Noi possiamo creare un RUOLO adhoc per un determinato tipo di utenza e all’interno possiamo assegnare i PRIVILEGI per poter fare le operazioni per cui è autorizzato l’utente.

Invece di assegnare numerosi PRIVILEGI all’utente, assegnamo numerosi PRIVILEGI a un RUOLO e successivamente assegnamo un RUOLO all’utente.

Oltre ai PRIVILEGI DI SISTEMA esistono i PRIVILEGI SUGLI OGGETTI, che determinano la specifica operazione DML (INSERT, UPDATE, DELETE…) che può effettuare un utente con gli oggetti di un altro utente.

Nel caso in cui volessimo assegnare gli stessi RUOLI o PRIVILEGI di un utente, possiamo procedere con le seguenti query dinamiche.


Query dinamica per assegnare Ruoli di un utente:

select 'grant ' ||granted_role || ' to &userid' ||
decode(admin_option, 'NO', ';', 'YES', ' with admin option;') "ROLE"
from dba_role_privs
where grantee = '&userid';

Query PRIVILEGI UTENTE replicati

Statement per assegnare Privilegi sugli oggetti di un utente:

select 'grant '||privilege||' on '||owner||'.'||table_name||' to '||grantee||';' 
from dba_tab_privs where grantor = '&userid';


Query dinamica per assegnare Privilegi di un utente:

select 'grant ' || privilege || ' to &quserid' ||
decode(admin_option, 'NO', ';', 'YES', ' with admin option;') "PRIV"
from dba_sys_privs
where grantee = '&userid';

Per visionare le mie guide sui Comandi CRS clicca qui!
A questo LINK, invece, troverai le query SQL

Resta aggiornato sulle nostre attività entrando a far parte della nostra community:
Facebook
Youtube
Linkedin

Query PRIVILEGI sugli OGGETTI UTENTE Oracle

.

Con l’articolo Query PRIVILEGI sugli OGGETTI UTENTE Oracle, vediamo i PRIVILEGI sugli OGGETTI assegnati a un determinato UTENTE.

Nel database Oracle sono presenti 2 tipi di privilegi, privilegi di sistema e i privilegi sugli oggetti.

I privilegi di sistema permettono di eseguire determinate operazioni nel database come accedere al database o poter creare o cancellare oggetti.

I privilegi sugli oggetti permettono di poter eseguire determinate operazione DML (Data Manipulation Language – ossia INSERT UPDATE o DELETE) per un set di oggetti anche di altri schema.

Inoltre selezioniamo:
l’owner della tabella, la tabella, il privilegio e l’utente a cui è stato assegnato l’utente.

I campi selezionati sono:

OWNER – Proprietario dell’oggetto
TABLE_NAME – Nome della tabella
PRIVILEGE – Privilegio nell’oggetto
GRANTEE – Nome dell’utente a cui è stato concesso il privilegio.

Queste informazioni vengono estrapolate dalla tabella DBA_TAB_PRIVS.

Infine, filtriamo le informazioni per utente a cui gli è stato concesso
il privilegio.

Query per visualizzare i PRIVILEGI sugli OGGETTI assegnati a un UTENTE:

set lines 200
col privilege for a20
col grantee for a20
col owner for a20
select owner OWN_TABLE,table_name,privilege, GRANTEE OWN_PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE ='&USERID';

Per visionare le mie guide sui Comandi CRS clicca qui!
A questo LINK, invece, troverai le query SQL

Resta aggiornato sulle nostre attività entrando a far parte della nostra community (mi raccomando, metti il like alle nostre pagine, entriamo in contatto e resta aggiornato su ogni nostra nuova guida!):
Facebook
Youtube
Linkedin

Per chi ancora non lo avesse fatto, consigliamo di salvare tra i propri bookmark questo sito, così da avere sempre a portata di mano le nostre soluzioni ai problemi più comuni su database, in particolar modo, database oracle.

Query PRIVILEGI di SISTEMA UTENTE

.

Con l’articolo Query PRIVILEGI di SISTEMA UTENTE, abbiamo la possibilità di gestire i permessi di sicurezza con le operazioni che può effettuare un determinato utente sugli oggetti di un altro SCHEMA.

Come già descritto nell’articolo Query PRIVILEGI sugli OGGETTI UTENTE Oracle, nel database Oracle, per garantire la sicurezza e l’integrità dei dati, sono presenti 2 principali tipi di PRIVILEGI da poter assegnare agli utenti per poter effettuare operazioni DDL (Data Definition Language) e DML (Data Manipulation Language):

I PRIVILEGI di SISTEMA – visibili dalla vista DBA_SYS_PRIVS
I PRIVILEGI sugli OGGETTI – visibili dalla vista DBA_TAB_PRIVS

Inoltre nell’articolo Query PRIVILEGI di SISTEMA UTENTE presentiamo la query che permette la gestione dei PRIVILEGI di SISTEMA di un determinato UTENTE.

I principali PRIVILEGI DI SISTEMA assegnati a un determinato utente sono:

grant CREATE SESSION to user;
CREATE TABLE
UNLIMITED TABLESPACE
e cosi via…

I campi selezionati dalla query sono i seguenti:

GRANTEE – L’utente proprietario del privilegio.
PRIVILEGE – Il privilegio di sistema.

Infine recuperiamo le informazioni dalla tabella DBA_SYS_PRIVS e filtriamo la ricerca per GRANTEE, ossia utente assegnatario.

Di seguito la query:

set lines 200
col grantee for a20
col privilege for a70
select grantee,privilege from dba_sys_privs where grantee ='&USERID';

Quindi, per visionare le mie guide sui Comandi CRS clicca qui!
A questo LINK, invece, troverai le query SQL

Resta aggiornato sulle nostre attività entrando a far parte della nostra community:
Facebook
Youtube
Linkedin

Query RUOLI UTENTE Oracle

.

La query nell’articolo Query RUOLI UTENTE Oracle, ci permette di individuare i RUOLI assegnati a un determinato utente del database Oracle selezionando GRANTEE,
ossia l’utente che riceve il ruolo e GRANTED_ROLE il quale identifica il nome del ruolo.

Un RUOLO è un contenitore di PRIVILEGI e puo essere riempito con i comandi classici di GRANT RESOURCE TO ruolo. L’assegnazione avviene come se fosse un utente.
Possiamo creare un RUOLO vuoto, e assegnargli i PRIVILEGI che più si addicono al profilo dell’utente che dobbiamo gestire.

Quindi, per identificare i RUOLI assegnati ad un utente prendiamo la Query di seguito.

Attenzione: nel caso in cui vogliamo verificare i privilegi che fanno parte di un ruolo,
dobbiamo eseguire la query Privilegi di un utente,
sostituendo USERID (il nome dell’utente) con GRANTED_ROLE (Il nome del ruolo).

Ruoli di un utente:

set lines 200
col GRANTED_ROLE for a40
col grantee for a30
select grantee,granted_role from dba_role_privs where grantee='&USERID';

Per visionare le mie guide sui Comandi CRS clicca qui!
A questo LINK, invece, troverai le query SQL

Resta aggiornato sulle nostre attività entrando a far parte della nostra community (mi raccomando, metti il like alle nostre pagine, entriamo in contatto e resta aggiornato su ogni nostra nuova guida!):
Facebook
Youtube
Linkedin

Per chi ancora non lo avesse fatto, consigliamo di salvare tra i propri bookmark in questo sito, così da avere sempre a portata di mano le nsotre soluzioni ai problemi più comuni su database, in particolar modo, database oracle.

Assegnazione quota DEFAULT_TABLESPACE

.

La query nell’articolo Assegnazione quota DEFAULT_TABLESPACE, ha lo scopo di creare il comando, attraverso una query dinamica, di assegnare la quota di un utente sul proprio default_tablespace, prendendo in considerazione la quota assegnata di un utente già presente sul database.

Ogni utente che viene creato nel database ha il proprio tablespace di default, il quale è utilizzato come area per la creazione degli oggetti, nel caso in cui il TABLESPACE di destinazione non viene dichiarato.
Oltre al TBSP di default, abbiamo la possibilità di scrivere anche su altri tablespace, ma a condizione della quota utente impostata o in fase di creazione, o successivamente con lo statement fornito in fondo all’articolo.

Ogni utente dovrebbe avere una quota di scrittura impostata sul proprio TBSP di riferimento. Tuttavia, dalle mia esperienza decennale sui database Oracle, i DBA che impostano la Quota di qualche MB sul TBSP di default sono veramente pochi.

La clausola che viene impostata nella maggior parte dei DB Oracle è UNLIMITED.

Con il privilegio UNLIMITED possiamo scrivere senza preoccuparci di terminare la quota.

Ma, nel caso in cui dovessimo impostare una quota standard in cui l’azienda proprietaria del database si basa, la query di seguito farà al caso nostro.

Basta eseguire la query e fornire il nome dell’utente da cui vogliamo copiare la quota nel momento in cui ci viene richiesto.

Creazione comando assegnazione quota utente DEFAULT_TABLESPACE:

select 'alter user &userid quota '||
decode(max_bytes, -1, 'unlimited',
ceil(max_bytes / 1024 / 1024) || 'M') ||
' on ' || tablespace_name || ';'
from dba_ts_quotas
where username = '&userid';

Per visionare le mie guide sui Comandi CRS clicca qui!
A questo LINK, invece, troverai le query SQL

Resta aggiornato sulle nostre attività entrando a far parte della nostra community:
Facebook
Youtube
Linkedin

Query stato password utente Oracle

.


L’articolo Query stato password utente Oracle, permette di vedere lo stato della password di un account del database Oracle.

Quando viene creato un account Oracle, se un profile specifico viene omesso dal comando di CREATE, Oracle assegna il PROFILO di default all’utente creato.

Il PROFILE di DEFAULT ha diversi parametri di configurazione risorse e password, di quest’ultimo scadenza della password ossia dopo quanti giorni scade e dopo quanti errori consecutivi sbagli la password per accedere al database Oracle.


Sull’articolo query stato password utente oracle, la visualizzazione della scadenza della password, è possibile grazie alla selezione dei campi:

USERNAME – Nome degli SCHEMA del database.
ACCOUNT_STATUS – Status dell’account se LOCKED o EXPIRED
PROFILE – Profilo associato all’utente dove sono assegnate la quantità di risorse macchina e gestione della password di un utente.
CREATED – Data di creazione dell’utente.
GRANTED_ROLE – Il nome del ruolo associato.

Queste informazioni sono state estrapolate dalle viste DBA_USERS e DBA_ROLE_PRIVS unite dalla JOIN username=grantee.

Query per visualizzare lo stato delle password degli account di un database Oracle, il PROFILO e i RUOLI associati

set lines 300
set pages 999
col user for a15
col ACCOUNT_STATUS for a20
col PROFILE for a25
col granted_role for a35
select distinct username, account_status, profile, created, granted_role
from dba_users, dba_role_privs where username=grantee
order by 1;

Per visionare le mie guide sui Comandi CRS clicca qui!
A questo LINK, invece, troverai le query SQL

Resta aggiornato sulle nostre attività entrando a far parte della nostra community:
Facebook
Youtube
Linkedin

Wordpress Social Share Plugin powered by Ultimatelysocial