

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Concedere privilegi SELECT o EXECUTE agli oggetti SYS
<a name="Appendix.Oracle.CommonDBATasks.TransferPrivileges"></a>

Solitamente si trasferiscono i privilegi utilizzando ruoli che possono contenere molti oggetti. Puoi concedere privilegi a un singolo oggetto utilizzando la procedura in Amazon RDS `rdsadmin.rdsadmin_util.grant_sys_object`. La procedura concede solo i privilegi già concessi all'utente master tramite un ruolo o una concessione diretta. 

La procedura `grant_sys_object` include i seguenti parametri. 

**Importante**  
Per tutti i valori dei parametri, utilizzare maiuscole a meno che non sia stato creato l'utente con un identificatore con distinzione tra maiuscole e minuscole. Ad esempio, se esegui `CREATE USER myuser` o `CREATE USER MYUSER`, il dizionario dati memorizza `MYUSER`. Tuttavia, se si utilizzano virgolette doppie in `CREATE USER "MyUser"`, il dizionario dati memorizza `MyUser`.


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `p_obj_name`  |  varchar2  |  —  |  Sì  |  Il nome dell'oggetto per il quale concedere privilegi. L'oggetto può essere una directory, funzione, pacchetto, procedura, sequenza, tabella o visualizzazione. I nomi degli oggetti devono essere scritti allo stesso modo in cui appaiono in `DBA_OBJECTS`. La maggior parte degli oggetti di sistema è scritta in maiuscolo, quindi consigliamo di provare prima il maiuscolo.   | 
|  `p_grantee`  |  varchar2  |  —  |  Sì  |  Il nome dell'oggetto al quale concedere privilegi. L'oggetto può essere uno schema o un ruolo.   | 
|  `p_privilege`  |  varchar2  |  null  |  Sì  |  —  | 
|  `p_grant_option`  |  booleano  |  false  |  No  |  Impostato su `true` per utilizzare l'opzione concessione.  | 

L'esempio seguente concede certi privilegi su un oggetto denominato `V_$SESSION` a un utente denominato `USER1`.

```
begin
    rdsadmin.rdsadmin_util.grant_sys_object(
        p_obj_name  => 'V_$SESSION',
        p_grantee   => 'USER1',
        p_privilege => 'SELECT');
end;
/
```

L'esempio seguente concede certi privilegi su un oggetto denominato `V_$SESSION` a un utente denominato `USER1` con l'opzione concessione.

```
begin
    rdsadmin.rdsadmin_util.grant_sys_object(
        p_obj_name     => 'V_$SESSION',
        p_grantee      => 'USER1',
        p_privilege    => 'SELECT',
        p_grant_option => true);
end;
/
```

Per poter concedere privilegi per un oggetto, quei privilegi devono essere concessi all'account direttamente con l'opzione concessione o tramite un ruolo concesso utilizzando `with admin option`. Nel caso più comune, potresti voler concedere `SELECT` a una visualizzazione DBA concessa al ruolo `SELECT_CATALOG_ROLE`. Se quel ruolo non è già concesso direttamente all'utente utilizzando `with admin option`, non sarai in grado di trasferire il privilegio. Se disponi del privilegio DBA, puoi concedere il ruolo direttamente a un altro utente. 

L'esempio seguente concede `SELECT_CATALOG_ROLE` e `EXECUTE_CATALOG_ROLE` a `USER1`. Siccome `with admin option` viene utilizzato, `USER1` può ora garantire l'accesso agli oggetti SYS che sono stati concessi a `SELECT_CATALOG_ROLE`. 

```
GRANT SELECT_CATALOG_ROLE TO USER1 WITH ADMIN OPTION; 
GRANT EXECUTE_CATALOG_ROLE to USER1 WITH ADMIN OPTION;
```

Gli oggetti già concessi a `PUBLIC` non devono essere concessi nuovamente. Se utilizzi la procedura `grant_sys_object` per concedere nuovamente l'accesso, la chiamata di procedura va a buon fine. 