

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à.

# Esecuzione di attività di sistema comuni per le istanze database Oracle
<a name="Appendix.Oracle.CommonDBATasks.System"></a>

Di seguito, viene descritto come eseguire determinate attività DBA comuni relative al sistema nelle istanze database Amazon RDS che eseguono Oracle. Per fornire un'esperienza di servizio gestito, Amazon RDS non fornisce accesso shell alle istanze database e limita l'accesso a certe procedure e tabelle di sistema che richiedono privilegi avanzati. 

**Topics**
+ [

# Disconnessione di una sessione
](Appendix.Oracle.CommonDBATasks.DisconnectingSession.md)
+ [

# Terminazione di una sessione
](Appendix.Oracle.CommonDBATasks.KillingSession.md)
+ [

# Annullamento di una istruzione SQL in una sessione
](Appendix.Oracle.CommonDBATasks.CancellingSQL.md)
+ [

# Abilitazione e disabilitazione delle sessioni limitate
](Appendix.Oracle.CommonDBATasks.RestrictedSession.md)
+ [

# Scaricamento del pool condiviso
](Appendix.Oracle.CommonDBATasks.FlushingSharedPool.md)
+ [

# Concedere privilegi SELECT o EXECUTE agli oggetti SYS
](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md)
+ [

# Revoca del privilegio SELECT o EXECUTE in oggetti SYS
](Appendix.Oracle.CommonDBATasks.RevokePrivileges.md)
+ [

# Gestione delle viste RDS\$1X\$1 per le istanze database Oracle
](Appendix.Oracle.CommonDBATasks.X-dollar.md)
+ [

# Concessione di privilegi a utenti non-master
](Appendix.Oracle.CommonDBATasks.PermissionsNonMasters.md)
+ [

# Creazione delle funzionalità personalizzate per verificare le password
](Appendix.Oracle.CommonDBATasks.CustomPassword.md)
+ [

## Impostazione di un server DNS personalizzato
](#Appendix.Oracle.CommonDBATasks.CustomDNS)
+ [

# Impostazione e annullamento dell'impostazione degli eventi diagnostici di sistema
](Appendix.Oracle.CommonDBATasks.SystemEvents.md)

# Disconnessione di una sessione
<a name="Appendix.Oracle.CommonDBATasks.DisconnectingSession"></a>

Puoi usare la procedura in Amazon RDS per disconnettere la sessione corrente terminando il processo server dedicato `rdsadmin.rdsadmin_util.disconnect`. La procedura `disconnect` include i seguenti parametri. 


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `sid`  |  numero  |  —  |  Sì  |  L'identificatore di sessione.  | 
|  `serial`  |  numero  |  —  |  Sì  |  Il numero di serie della sessione.  | 
|  `method`  |  varchar  |  “IMMEDIATO”  |  No  |  I valori validi sono `'IMMEDIATE'` e `'POST_TRANSACTION'`.  | 

L'esempio seguente disconnette una sessione.

```
begin
    rdsadmin.rdsadmin_util.disconnect(
        sid    => sid, 
        serial => serial_number);
end;
/
```

Per ottenere l'identificatore di sessione e il numero di serie di sessione, eseguire una query sulla visualizzazione `V$SESSION`. L'esempio seguente ottiene tutte le sessioni per l'utente `AWSUSER`.

```
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';
```

Il database deve essere aperto per utilizzare questo metodo. Per ulteriori informazioni sulla disconnessione di una sessione, consulta [ALTER SYSTEM](http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_2014.htm#SQLRF53166) nella documentazione di Oracle. 

# Terminazione di una sessione
<a name="Appendix.Oracle.CommonDBATasks.KillingSession"></a>

Per terminare una sessione, utilizzare la procedura Amazon RDS `rdsadmin.rdsadmin_util.kill`. La procedura `kill` include i seguenti parametri.


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `sid`  |  numero  |  —  |  Sì  |  L'identificatore di sessione.  | 
|  `serial`  |  numero  |  —  |  Sì  |  Il numero di serie della sessione.  | 
|  `method`  |  varchar  |  null  |  No  |  I valori validi sono `'IMMEDIATE'` e `'PROCESS'`. Se specifichi `IMMEDIATE`, ottieni lo stesso effetto dell'istruzione riportata di seguito: <pre>ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE</pre> Se specifichi `PROCESS`, vengono terminati i processi associati a una sessione. Specifica `PROCESS` solo se la terminazione della sessione con `IMMEDIATE` non riesce.  | 

Per ottenere l'identificatore di sessione e il numero di serie di sessione, eseguire una query sulla visualizzazione `V$SESSION`. L'esempio seguente ottiene tutte le sessioni per l'utente *AWSUSER*.

```
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';
```

Nell'esempio seguente viene terminata una sessione.

```
BEGIN
    rdsadmin.rdsadmin_util.kill(
        sid    => sid, 
        serial => serial_number,
        method => 'IMMEDIATE');
END;
/
```

Nell'esempio seguente vengono terminati i processi associati a una sessione.

```
BEGIN
    rdsadmin.rdsadmin_util.kill(
        sid    => sid, 
        serial => serial_number,
        method => 'PROCESS');
END;
/
```

# Annullamento di una istruzione SQL in una sessione
<a name="Appendix.Oracle.CommonDBATasks.CancellingSQL"></a>

Per annullare un'istruzione SQL in una sessione, puoi utilizzare la procedura in Amazon RDS `rdsadmin.rdsadmin_util.cancel`.

**Nota**  
Questa procedura è supportata per Oracle Database 19c (19.0.0) e per tutte le versioni principali e secondarie di RDS for Oracle.

La procedura `cancel` include i seguenti parametri. 


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `sid`  |  numero  |  —  |  Sì  |  L'identificatore di sessione.  | 
|  `serial`  |  numero  |  —  |  Sì  |  Il numero di serie della sessione.  | 
|  `sql_id`  |  varchar2  |  null  |  No  |  L'identificatore SQL nell'istruzione SQL.   | 

L'esempio seguente annulla un'istruzione SQL in una sessione.

```
begin
    rdsadmin.rdsadmin_util.cancel(
        sid    => sid, 
        serial => serial_number,
        sql_id => sql_id);
end;
/
```

Per ottenere l'identificatore di sessione, il numero di serie di sessione e l'identificativo SQL di un'istruzione SQL, eseguire una query sulla visualizzazione `V$SESSION`. L'esempio seguente ottiene tutte le sessioni e gli identificativi SQL per l'utente `AWSUSER`.

```
select SID, SERIAL#, SQL_ID, STATUS from V$SESSION where USERNAME = 'AWSUSER';
```

# Abilitazione e disabilitazione delle sessioni limitate
<a name="Appendix.Oracle.CommonDBATasks.RestrictedSession"></a>

Puoi usare la procedura in Amazon RDS per abilitare e disabilitare sessioni limitate `rdsadmin.rdsadmin_util.restricted_session`. La procedura `restricted_session` include i seguenti parametri. 


****  

| Nome del parametro | Tipo di dati | Default | Sì | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `p_enable`  |  booleano  |  true  |  No  |  Impostato su `true` per abilitare le sessioni limitate, su `false` per disabilitare le sessioni limitate.   | 

L'esempio seguente mostra come abilitare e disabilitare le sessioni limitate. 

```
/* Verify that the database is currently unrestricted. */

SELECT LOGINS FROM V$INSTANCE;
 
LOGINS
-------
ALLOWED

/* Enable restricted sessions */

EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => true);
 

/* Verify that the database is now restricted. */

SELECT LOGINS FROM V$INSTANCE;
 
LOGINS
----------
RESTRICTED
 

/* Disable restricted sessions */

EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => false);
 

/* Verify that the database is now unrestricted again. */

SELECT LOGINS FROM V$INSTANCE;
 
LOGINS
-------
ALLOWED
```

# Scaricamento del pool condiviso
<a name="Appendix.Oracle.CommonDBATasks.FlushingSharedPool"></a>

Puoi usare la procedura in Amazon RDS per scaricare il pool condiviso `rdsadmin.rdsadmin_util.flush_shared_pool`. La procedura `flush_shared_pool` non ha parametri. 

L'esempio seguente scarica il pool condiviso.

```
EXEC rdsadmin.rdsadmin_util.flush_shared_pool;
```

## Scaricamento della cache del buffer
<a name="Appendix.Oracle.CommonDBATasks.FlushingBufferCache"></a>

Puoi usare la procedura in Amazon RDS per scaricare la cache del buffe `rdsadmin.rdsadmin_util.flush_buffer_cache`. La procedura `flush_buffer_cache` non ha parametri. 

L'esempio seguente scarica la cache del buffer.

```
EXEC rdsadmin.rdsadmin_util.flush_buffer_cache;
```

## Scaricamento della cache smart flash del database
<a name="Appendix.Oracle.CommonDBATasks.flushing-shared-pool"></a>

Per scaricare la cache smart flash del database, utilizza la procedura Amazon RDS `rdsadmin.rdsadmin_util.flush_flash_cache`. La procedura `flush_flash_cache` non ha parametri. Nell'esempio seguente viene scaricata la cache smart flash del database.

```
EXEC rdsadmin.rdsadmin_util.flush_flash_cache;
```

Per ulteriori informazioni sull'utilizzo della cache smart flash del database con RDS per Oracle, consulta [Archiviazione di dati temporanei in un archivio dell'istanza RDS per Oracle](CHAP_Oracle.advanced-features.instance-store.md).

# 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. 

# Revoca del privilegio SELECT o EXECUTE in oggetti SYS
<a name="Appendix.Oracle.CommonDBATasks.RevokePrivileges"></a>

Puoi revocare privilegi in un singolo oggetto usando la procedura in Amazon RDS `rdsadmin.rdsadmin_util.revoke_sys_object`. La procedura revoca solo i privilegi che l'account master è già stato concesso tramite un ruolo o una concessione diretta. 

La procedura `revoke_sys_object` include i seguenti parametri. 


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `p_obj_name`  |  varchar2  |  —  |  Sì  |  Il nome dell'oggetto per il quale revocare 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 sono scritti in maiuscolo, quindi consigliamo di provare prima il maiuscolo.   | 
|  `p_revokee`  |  varchar2  |  —  |  Sì  |  Il nome dell'oggetto per il quale revocare privilegi. L'oggetto può essere uno schema o un ruolo.   | 
|  `p_privilege`  |  varchar2  |  null  |  Sì  |  —  | 

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

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

# Gestione delle viste RDS\$1X\$1 per le istanze database Oracle
<a name="Appendix.Oracle.CommonDBATasks.X-dollar"></a>

Potrebbe essere necessario accedere alle tabelle fisse `SYS.X$`, accessibili solo da `SYS`. Per creare viste `SYS.RDS_X$` sulle tabelle `X$` idonee, utilizza le procedure incluse nel pacchetto `rdsadmin.rdsadmin_util`. All’utente master viene automaticamente concesso il privilegio `SELECT … WITH GRANT OPTION` sulle viste `RDS_X$`. 

Le procedure `rdsadmin.rdsadmin_util` sono disponibili nei seguenti casi:
+ Istanze database esistenti che non sono mai state aggiornate e utilizzano le seguenti release:
  + `21.0.0.0.ru-2023-10.rur-2023-10.r1` e versioni successive alla 21c
  + `19.0.0.0.ru-2023-10.rur-2023-10.r1` e versioni successive alla 19c
+ Qualsiasi nuova istanza database che crei
+ Qualsiasi istanza database esistente che hai aggiornato

**Importante**  
Internamente, il pacchetto `rdsadmin.rdsadmin_util` crea viste sulle tabelle `X$`. Le tabelle `X$` sono oggetti di sistema interni che non sono descritti nella documentazione di Oracle Database. Si consiglia di testare viste specifici nel database non di produzione e creare viste nel database di produzione solo sotto la guida del supporto Oracle.

## Elenca le tabelle fisse X\$1 idonee per l’uso nelle viste RDS\$1X\$1
<a name="Appendix.Oracle.CommonDBATasks.list-allowed-X-dollar"></a>

Per elencare le tabelle X\$1 idonee all’uso nelle viste `RDS_X$`, utilizza la procedura RDS `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views`. Questa procedura non accetta parametri. Le seguenti istruzioni elencano tutte le tabelle `X$` idonee (output di esempio incluso).

```
SQL> SET SERVEROUTPUT ON
SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_allowed_sys_x$_views);

'X$BH'
'X$K2GTE'
'X$KCBWBPD'
'X$KCBWDS'
'X$KGLLK'
'X$KGLOB'
'X$KGLPN'
'X$KSLHOT'
'X$KSMSP'
'X$KSPPCV'
'X$KSPPI'
'X$KSPPSV'
'X$KSQEQ'
'X$KSQRS'
'X$KTUXE'
'X$KQRFP'
```

L’elenco delle tabelle `X$` idonee può cambiare nel corso del tempo. Per assicurarti che l’elenco delle tabelle fisse `X$` idonee sia aggiornato, esegui di nuovo `list_allowed_sys_x$_views` periodicamente.

## Creazione di viste SYS.RDS\$1X\$1
<a name="Appendix.Oracle.CommonDBATasks.create-X-dollar"></a>

Per creare una vista `RDS_X$` su una tabella `X$` idonea, utilizza la procedura RDS `rdsadmin.rdsadmin_util.create_sys_x$_view`. Puoi creare viste solo per le tabelle elencate nell’output di `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views`. La procedura `create_sys_x$_view` include i seguenti parametri.


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `p_x$_tbl`  |  varchar2  |  Null  |  Sì  |  Un nome tabella `X$` valido. Il valore deve essere una delle tabelle `X$` segnalati da `list_allowed_sys_x$_views`.  | 
|  `p_force_creation`  |  Boolean  | FALSE |  No  |  Un valore che indica se forzare la creazione di una vista `RDS_X$` già esistente per una tabella `X$`. Per impostazione predefinita, RDS non crea una vista se questa esiste già. Per forzare la creazione, imposta questo parametro su `TRUE`.  | 

Il seguente esempio crea una vista `SYS.RDS_X$KGLOB` sulla tabella `X$KGLOB`. Il formato per il nome della vista è `RDS_X$tablename`.

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$KGLOB');

PL/SQL procedure successfully completed.
```

La seguente query sul dizionario di dati elenca la vista `SYS.RDS_X$KGLOB` e ne mostra lo stato. All’utente master viene automaticamente concesso il privilegio `SELECT ... WITH GRANT OPTION` su questa vista.

```
SQL> SET SERVEROUTPUT ON
SQL> COL OWNER FORMAT A30 
SQL> COL OBJECT_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT OWNER, OBJECT_NAME, STATUS 
FROM DBA_OBJECTS 
WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB';

OWNER                          OBJECT_NAME                    STATUS
------------------------------ ------------------------------ ------------------------------
SYS                            RDS_X$KGLOB                    VALID
```

**Importante**  
Non è garantito che le tabelle `X$` restino invariate prima e dopo l’esecuzione di un aggiornamento. RDS per Oracle elimina e ricrea le viste `RDS_X$` sulle tabelle `X$` durante un aggiornamento del motore. Quindi concede il privilegio `SELECT ... WITH GRANT OPTION` all’utente master. Dopo un aggiornamento, concedi i privilegi agli utenti del database secondo necessità sulle viste `RDS_X$` corrispondenti.

## Elenco delle viste SYS.RDS\$1X\$1
<a name="Appendix.Oracle.CommonDBATasks.list-created-X-dollar"></a>

Per elencare le viste `RDS_X$` esistenti, utilizza la procedura RDS `rdsadmin.rdsadmin_util.list_created_sys_x$_views`. La procedura elenca solo le viste create dalla procedura `create_sys_x$_view`. L’esempio seguente elenca le tabelle `X$` con le viste `RDS_X$` corrispondenti (output di esempio incluso).

```
SQL> SET SERVEROUTPUT ON
SQL> COL XD_TBL_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_created_sys_x$_views);

XD_TBL_NAME                    STATUS
------------------------------ ------------------------------
X$BH                           VALID
X$K2GTE                        VALID
X$KCBWBPD                      VALID

3 rows selected.
```

## Eliminazione delle viste RDS\$1X\$1
<a name="Appendix.Oracle.CommonDBATasks.drop-X-dollar"></a>

Per eliminare una vista `SYS.RDS_X$`, utilizza la procedura RDS `rdsadmin.rdsadmin_util.drop_sys_x$_view`. Puoi impostare solo le viste elencate nell’output di `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views`. La procedura `drop_sys_x$_view` accetta il seguente parametro.


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `p_x$_tbl`  |  varchar2  |  Null  |  Sì  |  Un nome della tabella fissa `X$` valido. Il valore deve essere una delle tabelle fisse `X$` riportate da `list_created_sys_x$_views`.  | 

L’esempio seguente elimina la vista `RDS_X$KGLOB` creata nella tabella `X$KGLOB`.

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.drop_sys_x$_view('X$KGLOB');

PL/SQL procedure successfully completed.
```

L’esempio seguente mostra che la vista `SYS.RDS_X$KGLOB` è stata eliminata (incluso l’output di esempio).

```
SQL> SET SERVEROUTPUT ON
SQL> COL OWNER FORMAT A30 
SQL> COL OBJECT_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT OWNER, OBJECT_NAME, STATUS 
FROM DBA_OBJECTS 
WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB';

no rows selected
```

# Concessione di privilegi a utenti non-master
<a name="Appendix.Oracle.CommonDBATasks.PermissionsNonMasters"></a>

È possibile concedere privilegi per molti oggetti nello schema `SYS` utilizzando il ruolo `SELECT_CATALOG_ROLE`. Il ruolo `SELECT_CATALOG_ROLE` offre agli utenti privilegi `SELECT` per visualizzazioni del dizionario dati. L'esempio seguente concede il ruolo `SELECT_CATALOG_ROLE` a un utente denominato `user1`. 

```
GRANT SELECT_CATALOG_ROLE TO user1;
```

È possibile concedere privilegi `EXECUTE` per molti oggetti nello schema `SYS` utilizzando il ruolo `EXECUTE_CATALOG_ROLE`. Il ruolo `EXECUTE_CATALOG_ROLE` offre agli utenti privilegi `EXECUTE` per pacchetti e procedure nel dizionario dati. L'esempio seguente concede il ruolo `EXECUTE_CATALOG_ROLE` a un utente denominato *user1*. 

```
GRANT EXECUTE_CATALOG_ROLE TO user1;
```

L'esempio seguente ottiene le autorizzazioni che permettono i ruoli `SELECT_CATALOG_ROLE` e `EXECUTE_CATALOG_ROLE`. 

```
  SELECT * 
    FROM ROLE_TAB_PRIVS  
   WHERE ROLE IN ('SELECT_CATALOG_ROLE','EXECUTE_CATALOG_ROLE') 
ORDER BY ROLE, TABLE_NAME ASC;
```

L'esempio seguente crea un utente non-master denominato `user1`, concede il privilegio `CREATE SESSION` e il privilegio `SELECT` in un database denominato *sh.sales*.

```
CREATE USER user1 IDENTIFIED BY PASSWORD;
GRANT CREATE SESSION TO user1;
GRANT SELECT ON sh.sales TO user1;
```

# Creazione delle funzionalità personalizzate per verificare le password
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword"></a>

Puoi creare una funzionalità di verifica della password personalizzata in due modi:
+ Se desideri utilizzare la verifica standard e archiviare la funzione nello schema `SYS`, utilizza la procedura `create_verify_function`. 
+ Se desideri utilizzare la verifica personalizzata p desideri archiviare la funzione nello schema `SYS`, utilizza la procedura `create_passthrough_verify_fcn`. 

# La procedura create\$1verify\$1function
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword.Standard"></a>

Puoi creare una funzione personalizzata per verificare le password usando la procedura in Amazon RDS `rdsadmin.rdsadmin_password_verify.create_verify_function`. La procedura `create_verify_function` è supportata per tutte le versioni di RDS per Oracle.

La procedura `create_verify_function` include i seguenti parametri. 


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `p_verify_function_name`  |  varchar2  |  —  |  Sì  |  Il nome per la funzionalità personalizzata. La funzionalità viene creata per te nello schema SYS. Assegni questa funzione a profili di utente.   | 
|  `p_min_length`  |  numero  |  8  |  No  |  Il numero minimo di caratteri necessari.  | 
|  `p_max_length`  |  numero  |  256  |  No  |  Il numero massimo di caratteri permessi.  | 
|  `p_min_letters`  |  numero  |  1  |  No  |  Il numero minimo di lettere necessarie.  | 
|  `p_min_uppercase`  |  numero  |  0  |  No  |  Il numero minimo di lettere maiuscole necessarie.  | 
|  `p_min_lowercase`  |  numero  |  0  |  No  |  Il numero minimo di lettere minuscole necessarie.  | 
|  `p_min_digits`  |  numero  |  1  |  No  |  Il numero minimo di cifre necessarie.  | 
|  `p_min_special`  |  numero  |  0  |  No  |  Il numero minimo di caratteri speciali necessari.  | 
|  `p_min_different_chars`  |  numero  |  3  |  No  |  Il numero minimo di caratteri diversi necessari tra la password vecchia e quella nuova.  | 
|  `p_disallow_username`  |  booleano  |  true  |  No  |  Impostato su `true` per non consentire il nome utente nella password.  | 
|  `p_disallow_reverse`  |  booleano  |  true  |  No  |  Impostato su `true` per non consentire l'inversione del nome utente nella password.  | 
|  `p_disallow_db_name`  |  booleano  |  true  |  No  |  Impostato su `true` per non consentire il database o il nome del server nella password.  | 
|  `p_disallow_simple_strings`  |  booleano  |  true  |  No  |  Impostato su `true` per non consentire stringhe semplici come password.  | 
|  `p_disallow_whitespace`  |  booleano  |  false  |  No  |  Impostato su `true` per non consentire gli spazi vuoti nella password.  | 
|  `p_disallow_at_sign`  |  booleano  |  false  |  No  |  Impostare su `true` per non consentire il carattere @ nella password.  | 

Puoi creare funzionalità multiple di verifica della password.

Ci sono limitazioni riguardo al nome della funzionalità personalizzata. La funzione personalizzata non può avere lo stesso nome di un oggetto di sistema esistente. La lunghezza del nome non può superare i 30 caratteri. Inoltre, il nome deve includere una delle seguenti stringhe: `PASSWORD`, `VERIFY`, `COMPLEXITY`, `ENFORCE` o `STRENGTH`. 

L'esempio seguente crea una funzionalità denominata `CUSTOM_PASSWORD_FUNCTION`. La funzionalità richiede una password che includa almeno 12 caratteri, 2 caratteri maiuscoli, 1 cifra, 1 carattere speciale e che non consenta il carattere @. 

```
begin
    rdsadmin.rdsadmin_password_verify.create_verify_function(
        p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', 
        p_min_length           => 12, 
        p_min_uppercase        => 2, 
        p_min_digits           => 1, 
        p_min_special          => 1,
        p_disallow_at_sign     => true);
end;
/
```

Per vedere il testo della funzionalità di verifica, eseguire una query a `DBA_SOURCE`. L'esempio seguente ottiene il testo da una funzionalità di password personalizzata denominata `CUSTOM_PASSWORD_FUNCTION`. 

```
COL TEXT FORMAT a150

  SELECT TEXT 
    FROM DBA_SOURCE 
   WHERE OWNER = 'SYS' 
     AND NAME = 'CUSTOM_PASSWORD_FUNCTION' 
ORDER BY LINE;
```

Per associare la funzionalità di verifica con un profilo utente, utilizza `ALTER PROFILE`. L'esempio seguente associa una PL/SQL funzione di verifica `CUSTOM_PASSWORD_FUNCTION` denominata al profilo `DEFAULT` utente. `PASSWORD_VERIFY_FUNCTION`è il nome della risorsa del profilo Oracle. 

```
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;
```

Per vedere quali profili utente sono associati a quali funzioni di verifica, interroga`DBA_PROFILES`. L'esempio seguente ottiene i profili che sono associati alla funzionalità di verifica personalizzata denominata `CUSTOM_PASSWORD_FUNCTION`. 

```
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION' AND LIMIT = 'CUSTOM_PASSWORD_FUNCTION';


PROFILE                    RESOURCE_NAME                     RESOURCE  LIMIT
-------------------------  --------------------------------  --------  ------------------------
DEFAULT                    PASSWORD_VERIFY_FUNCTION          PASSWORD  CUSTOM_PASSWORD_FUNCTION
```

L'esempio seguente ottiene tutti i profili e la funzionalità di verifica della password alla quale sono associati. 

```
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION';

PROFILE                    RESOURCE_NAME                     RESOURCE  LIMIT
-------------------------  --------------------------------  --------  ------------------------
DEFAULT                    PASSWORD_VERIFY_FUNCTION          PASSWORD  CUSTOM_PASSWORD_FUNCTION
RDSADMIN                   PASSWORD_VERIFY_FUNCTION          PASSWORD  NULL
```

# La procedura create\$1passthrough\$1verify\$1fcn
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword.Custom"></a>

La procedura `create_passthrough_verify_fcn` è supportata per tutte le versioni di RDS per Oracle.

Puoi creare una funzione personalizzata per verificare le password usando la procedura in Amazon RDS `rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn`. La procedura `create_passthrough_verify_fcn` include i seguenti parametri. 


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `p_verify_function_name`  |  varchar2  |  —  |  Sì  |  Il nome per la funzionalità di verifica personalizzata. Questa è una funzionalità wrapper creata per te nello schema SYS e non contiene nessuna logica di verifica. Assegni questa funzione a profili di utente.   | 
|  `p_target_owner`  |  varchar2  |  —  |  Sì  |  Il proprietario dello schema per la funzionalità di verifica personalizzata.  | 
|  `p_target_function_name`  |  varchar2  |  —  |  Sì  |  Il nome della funzionalità personalizzata esistente che contiene una logica di verifica. La funzionalità personalizzata deve restituire un booleano. La funzionalità deve restituire `true` se la password è valida e `false` se la password non è valida.   | 

L'esempio seguente crea una funzionalità di verifica della password che utilizza la logica dalla funzionalità denominata `PASSWORD_LOGIC_EXTRA_STRONG`. 

```
begin
    rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn(
        p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', 
        p_target_owner         => 'TEST_USER',
        p_target_function_name => 'PASSWORD_LOGIC_EXTRA_STRONG');
end;
/
```

Per associare la funzionalità di verifica con un profilo utente, utilizza `alter profile`. L'esempio seguente associa la funzionalità di verifica con un profilo utente `DEFAULT`. 

```
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;
```

## Impostazione di un server DNS personalizzato
<a name="Appendix.Oracle.CommonDBATasks.CustomDNS"></a>

Amazon RDS supporta l'accesso di rete in uscita sull'istanza database che esegue Oracle. Per ulteriori informazioni sull'accesso di rete in uscita, inclusi i prerequisiti, consulta [Configurazione dell'accesso UTL\$1HTTP utilizzando certificati e un portafoglio Oracle](Oracle.Concepts.ONA.md). 

Amazon RDS Oracle permette la risoluzione Domain Name Service (DNS) da un server DNS personalizzato di proprietà del cliente. È possibile risolvere solo nomi di dominio completamente qualificati dall'istanza database Amazon RDS tramite il server DNS personalizzato. 

Dopo aver impostato il server dei nomi DNS personalizzato, ci vogliono circa 30 minuti per propagare le modifiche all'istanza database. Dopo che le modifiche vengono propagate all'istanza database, tutto il traffico di rete in uscita che richiede una ricerca DNS esegue una query al server DNS tramite la porta 53. 

Per impostare un server DNS personalizzato per l'istanza database Amazon RDS for Oracle, procedi come segue: 
+ Dal set di opzioni DHCP collegate al Virtual Private Cloud (VPC), imposta l'opzione `domain-name-servers` sull'indirizzo IP del server dei nomi DNS. Per ulteriori informazioni, consulta la pagina relativa ai [Set di opzioni DHCP](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html). 
**Nota**  
L'opzione `domain-name-servers` accetta fino a quattro valori, ma l'istanza database Amazon RDS usa solo il primo valore. 
+ Assicurati che il server DNS possa risolvere tutte le query di ricerca, compresi i nomi DNS pubblici, i nomi DNS privati Amazon EC2 e i nomi DNS specifici per i clienti. Se il traffico di rete in uscita contiene ricerche DNS che il server DNS non può gestire, il server DNS deve avere fornitori DNS upstream appropriati configurati. 
+ Configura il server DNS per produrre risposte UDP (User Datagram Protocol) di 512 byte o meno. 
+ Configura il server DNS per produrre risposte TCP (Transmission Control Protocol) di 1024 byte o meno. 
+ Configura il server DNS per consentire il traffico in entrata dalle istanze database Amazon RDS tramite la porta 53. Se il server DNS si trova in un Amazon VPC, il VPC deve avere un gruppo di sicurezza che contiene regole in entrata che permettono traffico UDP e TCP tramite la porta 53. Se il server DNS non si trova in un Amazon VPC, deve avere una whitelist firewall appropriata per permettere traffico in entrata UDP e TCP tramite la porta 53.

  Per ulteriori informazioni, consulta [Gruppi di sicurezza per il VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) e [Aggiunta e rimozione di regole](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#AddRemoveRules). 
+ Configura il VPC dell'istanza database Amazon RDS per permettere traffico in uscita tramite la porta 53. Il VPC deve avere un gruppo di sicurezza che contiene regole in uscita che permettono traffico UDP e TCP tramite la porta 53. 

  Per ulteriori informazioni, consulta [Gruppi di sicurezza per il VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) e [Aggiunta e rimozione di regole](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#AddRemoveRules). 
+ Il percorso di routing tra l'istanza database Amazon RDS e il server DNS deve essere configurata correttamente per consentire traffico DNS. 
  + Se l'istanza database Amazon RDS e il server DNS non si trovano nello stesso VPC, una connessione peer deve essere configurata tra loro. Per ulteriori informazioni, consulta [Che cos'è il VPC in peering?](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html) 

# Impostazione e annullamento dell'impostazione degli eventi diagnostici di sistema
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents"></a>

Per impostare e annullare l'impostazione degli eventi diagnostici a livello di sessione, è possibile utilizzare l'istruzione Oracle SQL `ALTER SESSION SET EVENTS`. Tuttavia, per impostare gli eventi a livello di sistema non è possibile utilizzare Oracle SQL. Utilizzare invece le procedure evento di sistema nel pacchetto `rdsadmin.rdsadmin_util`. Le procedure evento di sistema sono disponibili nelle seguenti versioni del motore:
+ Tutte le versioni di Oracle Database 21c
+ 19.0.0.0.ru-2020-10.rur-2020-10.r1 e versioni successive di Oracle Database 19c

  Per ulteriori informazioni, consulta [Versione 19.0.0.0.ru-2020-10.rur-2020-10.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2020-10.rur-2020-10.r1) nelle *Note di rilascio di Amazon RDS per Oracle*.

**Importante**  
Internamente, il pacchetto `rdsadmin.rdsadmin_util` imposta gli eventi utilizzando l'istruzione `ALTER SYSTEM SET EVENTS`. Questa istruzione `ALTER SYSTEM` non è documentata nella documentazione di Oracle Database. Alcuni eventi di diagnostica del sistema possono generare grandi quantità di informazioni di traccia, causare contese o influire sulla disponibilità del database. Si consiglia di testare eventi diagnostici specifici nel database non di produzione e impostare gli eventi nel database di produzione solo sotto la guida del supporto Oracle.

## Elenco degli eventi diagnostici di sistema consentiti
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.listing"></a>

Per elencare gli eventi di sistema che è possibile impostare, attenersi alla Amazon RDS procedura `rdsadmin.rdsadmin_util.list_allowed_system_events`. Questa procedura non accetta parametri.

Nell'esempio seguente sono elencati tutti gli eventi di sistema che è possibile impostare.

```
SET SERVEROUTPUT ON
EXEC rdsadmin.rdsadmin_util.list_allowed_system_events;
```

Nell'output di esempio seguente sono elencati i numeri degli eventi e le relative descrizioni. Utilizzare le Amazon RDS procedure `set_system_event` per impostare questi eventi e `unset_system_event` per disimpostarli.

```
604   - error occurred at recursive SQL level
942   - table or view does not exist
1401  - inserted value too large for column
1403  - no data found
1410  - invalid ROWID
1422  - exact fetch returns more than requested number of rows
1426  - numeric overflow
1427  - single-row subquery returns more than one row
1476  - divisor is equal to zero
1483  - invalid length for DATE or NUMBER bind variable
1489  - result of string concatenation is too long
1652  - unable to extend temp segment by  in tablespace
1858  - a non-numeric character was found where a numeric was expected
4031  - unable to allocate  bytes of shared memory ("","","","")
6502  - PL/SQL: numeric or value error
10027 - Specify Deadlock Trace Information to be Dumped
10046 - enable SQL statement timing
10053 - CBO Enable optimizer trace
10173 - Dynamic Sampling time-out error
10442 - enable trace of kst for ORA-01555 diagnostics
12008 - error in materialized view refresh path
12012 - error on auto execute of job
12504 - TNS:listener was not given the SERVICE_NAME in CONNECT_DATA
14400 - inserted partition key does not map to any partition
31693 - Table data object  failed to load/unload and is being skipped due to error:
```

**Nota**  
L'elenco degli eventi di sistema consentiti può cambiare nel tempo. Per assicurarti di avere l'elenco degli eventi idonei più recente, usa `rdsadmin.rdsadmin_util.list_allowed_system_events`.

## Impostazione degli eventi di diagnostica del sistema
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.setting"></a>

Per impostare un evento di sistema, usa la Amazon RDS procedura `rdsadmin.rdsadmin_util.set_system_event`. È possibile impostare solo gli eventi elencati nell'output di `rdsadmin.rdsadmin_util.list_allowed_system_events`. La procedura `set_system_event` include i seguenti parametri.


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `p_event`  |  numero  |  —  |  Sì  |  Il numero dell'evento di sistema. Il valore deve essere uno dei numeri degli eventi segnalati da `list_allowed_system_events`.  | 
|  `p_level`  |  numero  |  —  |  Sì  |  Il livello dell'evento. Per le descrizioni dei valori di livello diversi, consulta la documentazione di Oracle Database o Oracle Support.  | 

La procedura `set_system_event` costruisce ed esegue le istruzioni `ALTER SYSTEM SET EVENTS` richieste secondo i seguenti principi:
+ Il tipo di evento (`context` o `errorstack`) viene determinato automaticamente.
+ Un'istruzione nel modulo `ALTER SYSTEM SET EVENTS 'event LEVEL event_level'` imposta gli eventi di contesto. Questa notazione è equivalente a `ALTER SYSTEM SET EVENTS 'event TRACE NAME CONTEXT FOREVER, LEVEL event_level'`.
+ Un'istruzione nel modulo `ALTER SYSTEM SET EVENTS 'event ERRORSTACK (event_level)'` imposta gli eventi stack di errore. Questa notazione è equivalente a `ALTER SYSTEM SET EVENTS 'event TRACE NAME ERRORSTACK LEVEL event_level'`.

Nell'esempio seguente viene impostato l'evento 942 al livello 3 e l'evento 10442 al livello 10. L'output di esempio è incluso.

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(942,3);
Setting system event 942 with: alter system set events '942 errorstack (3)'

PL/SQL procedure successfully completed.

SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(10442,10);
Setting system event 10442 with: alter system set events '10442 level 10'

PL/SQL procedure successfully completed.
```

## Elenco degli eventi diagnostici di sistema impostati
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.listing-set"></a>

Per elencare gli eventi di sistema correntemente impostati, utilizza la Amazon RDS procedura `rdsadmin.rdsadmin_util.list_set_system_events`. Questa procedura segnala solo gli eventi impostati a livello di sistema da `set_system_event`.

Nell'esempio seguente vengono elencati gli eventi di sistema attivi.

```
SET SERVEROUTPUT ON
EXEC rdsadmin.rdsadmin_util.list_set_system_events;
```

Nell'output di esempio seguente viene illustrato l'elenco degli eventi, il tipo di evento, il livello in cui gli eventi sono attualmente impostati e l'ora in cui è stato impostato l'evento.

```
942 errorstack (3) - set at 2020-11-03 11:42:27
10442 level 10 - set at 2020-11-03 11:42:41

PL/SQL procedure successfully completed.
```

## Annullamento dell'impostazione degli eventi diagnostici del sistema
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.unsetting"></a>

Per annullare l'impostazione di un evento di sistema, attenersi alla Amazon RDS procedura `rdsadmin.rdsadmin_util.unset_system_event`. È possibile annullare solo gli eventi elencati nell'output di `rdsadmin.rdsadmin_util.list_allowed_system_events`. La procedura `unset_system_event` accetta il seguente parametro.


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `p_event`  |  numero  |  —  |  Sì  |  Il numero dell'evento di sistema. Il valore deve essere uno dei numeri degli eventi segnalati da `list_allowed_system_events`.  | 

Nell'esempio seguente vengono disimpostati gli eventi 942 e 10442. L'output di esempio è incluso.

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(942);
Unsetting system event 942 with: alter system set events '942 off'

PL/SQL procedure successfully completed.

SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(10442);
Unsetting system event 10442 with: alter system set events '10442 off'

PL/SQL procedure successfully completed.
```