

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

# Oracle SQLT
<a name="Oracle.Options.SQLT"></a>

Amazon RDS supporta Oracle SQLTXPLAIN (SQLT) attraverso l'utilizzo dell'opzione SQLT. È possibile utilizzare SQLT con qualsiasi edizione di Oracle Database 19c e successive.

L'istruzione `EXPLAIN PLAN` di Oracle può stabilire il piano di esecuzione di un'istruzione SQL. Può verificare se l'ottimizzatore di Oracle sceglie un determinato piano di esecuzione, come un loop nidificato. Consente inoltre di comprendere le decisioni dell'ottimizzatore, ad esempio il motivo della scelta di loop nidificati rispetto a un hash join. Pertanto, `EXPLAIN PLAN` aiuta a comprendere le prestazioni dell'istruzione.

SQLT è un'utilità di Oracle che produce un rapporto. Tale rapporto include statistiche e metadati degli oggetti, parametri di inizializzazione correlati all'ottimizzatore e altre informazioni che possono essere utilizzate da un amministratore del database per modificare un'istruzione SQL e migliorarne le prestazioni. SQLT produce un rapporto HTML con collegamenti ipertestuali a tutte le relative sezioni.

A differenza dei rapporti di Automatic Workload Repository o Statspack, SQLT agisce sulle singole istruzioni SQL. SQLT è una raccolta di file SQL, PL/SQL e SQL\$1Plus che consente di raccogliere, archiviare e visualizzare i dati delle prestazioni. 

Di seguito sono indicate le versioni Oracle supportate per ogni versione di SQLT.


****  

| Versione SQLT | Oracle Database 21c | Oracle Database 19c | 
| --- | --- | --- | 
|  2018-07-25.v1  |  Supportato  |  Supportato  | 
|  2018-03-31.v1  |  Non supportato  |  Non supportato  | 
|  2016-04-29.v1  |  Non supportato  |  Non supportato  | 

Per il download e le istruzioni per l'accesso di SQLT:
+ Accedere all'account My Oracle Support e aprire i documenti seguenti:
+ Per scaricare SQLT: [Document 215187.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=215187.1)
+ Per istruzioni per l'utilizzo di SQLT: [Document 1614107.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1614107.1)
+ Per le domande frequenti su SQLT: [Document 1454160.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1454160.1)
+ Per informazioni sulla lettura dell'output di SQLT: [Document 1456176.1](https://support.oracle.com/epmos/main/downloadattachmentprocessor?parent=DOCUMENT&sourceId=1456176.1&attachid=1456176.1:58&clickstream=yes)
+ Per l'interpretazione del report principale: [Documento 1922234.1](https://support.oracle.com/epmos/faces/DocumentDisplay?parent=DOCUMENT&sourceId=215187.1&id=1922234.1)

Amazon RDS non supporta i seguenti metodi SQLT: 
+ `XPLORE` 
+ `XHUME` 

## Prerequisiti di SQLT
<a name="Oracle.Options.SQLT.PreReqs"></a>

Di seguito sono indicati i prerequisiti per l'utilizzo di SQLT:
+ Devi rimuovere gli utenti e ruoli richiesti da SQLT, se esistenti.

  L'opzione SQLT crea i seguenti utenti e ruoli in un'istanza database: 
  + `SQLTXPLAIN`Utente 
  + `SQLTXADMIN`Utente 
  + `SQLT_USER_ROLE`Ruolo 

  Se nell'istanza database sono presenti uno o più di tali utenti o ruoli, accedi all'istanza database con un client SQL ed eliminali con le seguenti istruzioni:

  ```
  DROP USER SQLTXPLAIN CASCADE;
  DROP USER SQLTXADMIN CASCADE;   
  DROP ROLE SQLT_USER_ROLE CASCADE;
  ```
+ Devi rimuovere gli spazi tabelle richiesti da SQLT, se esistenti.

  L'opzione SQLT crea i seguenti spazi tabelle in un'istanza database: 
  + `RDS_SQLT_TS`
  + `RDS_TEMP_SQLT_TS`

  Se nell'istanza database sono presenti tali spazi tabelle, accedi all'istanza database con un client SQL ed eliminali con le seguenti istruzioni:

## Impostazioni dell'opzione SQLT
<a name="Oracle.Options.SQLT.Options"></a>

 SQLT può essere utilizzata con caratteristiche con licenza fornite da Oracle Tuning Pack e da Oracle Diagnostics Pack. Oracle Tuning Pack include SQL Tuning Advisor, mentre Oracle Diagnostics Pack include Automatic Workload Repository. Le impostazioni SQLT consentono di abilitare o disabilitare l'accesso a tali caratteristiche da SQLT. 

Amazon RDS supporta le seguenti impostazioni per l'opzione SQLT. 


****  

| Impostazione opzioni | Valori validi | Valore predefinito | Descrizione | 
| --- | --- | --- | --- | 
|  `LICENSE_PACK`  |  `T`, `D`, `N`  |  `N`   |  Gli Oracle Management Pack a cui desideri accedere con SQLT. Immetti uno dei seguenti valori: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/Oracle.Options.SQLT.html)  Amazon RDS non fornisce licenze per i seguenti Oracle Management Pack. Se specifichi che desideri utilizzare un pacchetto non incluso nell'istanza database, puoi utilizzare SQLT con tale istanza database. Tuttavia, SQLT non sarà in grado di accedere al pacchetto e il rapporto SQLT non includerà i relativi dati. Ad esempio, se specifichi `T`, ma l'istanza database non include Oracle Tuning Pack, SQLT opererà sull'istanza database, ma il rapporto generato non includerà i dati relativi a Oracle Tuning Pack.   | 
|  `VERSION`  |  `2016-04-29.v1` `2018-03-31.v1` `2018-07-25.v1`  |  `2016-04-29.v1`   |  Versione di SQLT da installare.  Per Oracle Database 19c e 21c, l'unica versione supportata è `2018-07-25.v1`. Questa è la versione predefinita per queste versioni.   | 

## Aggiunta dell'opzione SQLT
<a name="Oracle.Options.SQLT.Add"></a>

Di seguito è riportato il processo generale per aggiungere l'opzione SQLT a un'istanza database: 

1. Creare un nuovo gruppo di opzioni oppure copiare o modificare un gruppo di opzioni esistente.

1. Aggiungere l'opzione SQLT al gruppo di opzioni.

1. Associare il gruppo di opzioni a questa istanza database.

Una volta aggiunta l'opzione SQLT, non appena il gruppo di opzioni sarà attivo, anche SQLT sarà attivo. 

**Per aggiungere l'opzione SQLT a un'istanza database**

1. Determinare il gruppo di opzioni che si vuole usare. È possibile creare un nuovo gruppo di opzioni oppure usare un gruppo di opzioni esistente. Se si desidera usare un gruppo di opzioni esistente, puoi passare alla fase successiva. In caso contrario, creare un gruppo di opzioni database personalizzato con le seguenti impostazioni: 

   1. Per **Engine (Motore)**, scegliere l'edizione di Oracle da utilizzare. L'opzione SQLT è supportata in tutte le edizioni. 

   1. In **Major engine version (Versione principale del motore)**, scegliere la versione dell'istanza database. 

   Per ulteriori informazioni, consulta [Creazione di un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create). 

1. Aggiungere l'opzione **SQLT** al gruppo di opzioni. Per ulteriori informazioni sull'aggiunta di opzioni, consulta [Aggiunta di un'opzione a un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption). 

1. Applicare il gruppo di opzioni a un'istanza database nuova o esistente: 
   + Per una nuova istanza database, si applica il gruppo di opzioni quando viene avviata l'istanza. Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md). 

      
   + Per un'istanza database esistente, viene applicato il gruppo di opzioni modificando l'istanza e collegando il nuovo gruppo di opzioni. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md). 

1. (Opzionale) Verificare l'installazione SQLT in ciascuna istanza database dell'opzione SQLT. 

   1. Utilizzare un client SQL per effettuare la connessione all'istanza database come utente master.

      Per informazioni sulla connessione a un'istanza database Oracle con un client SQL, consulta [Connessione all'istanza database Oracle](USER_ConnectToOracleInstance.md).

   1. Eseguire la seguente query:

      ```
      SELECT sqltxplain.sqlt$a.get_param('tool_version') sqlt_version FROM DUAL;                        
      ```

      La query restituisce la versione corrente dell'opzione SQLT in Amazon RDS. `12.1.160429` è un esempio di versione di SQLT disponibile in Amazon RDS.

1. Modificare le password degli utenti creati dall'opzione SQLT.

   1. Utilizzare un client SQL per effettuare la connessione all'istanza database come utente master.

   1. Eseguire la seguente istruzione SQL per modificare la password dell'utente `SQLTXADMIN`:

      ```
      ALTER USER SQLTXADMIN IDENTIFIED BY new_password ACCOUNT UNLOCK;                         
      ```
**Nota**  
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

   1. Eseguire la seguente istruzione SQL per modificare la password dell'utente `SQLTXPLAIN`:

      ```
      ALTER USER SQLTXPLAIN IDENTIFIED BY new_password ACCOUNT UNLOCK;                         
      ```
**Nota**  
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

**Nota**  
Per aggiornare SQLT, dovrai disinstallare la versione precedente di SQLT e installare quella nuova. Pertanto, durante l'aggiornamento di SQLT, tutti i metadati SQLT potrebbero andare perduti. Anche l'aggiornamento di una versione principale di un database la disinstallazione e la reinstallazione di SQLT. Un esempio di aggiornamento di una versione principale è quello da Oracle Database 19c a Oracle Database 21c.

## Uso di SQLT
<a name="Oracle.Options.SQLT.Using"></a>

SQLT funziona con l'utilità Oracle SQL\$1Plus. 

**Per utilizzare SQLT**

1.  Scaricare il file .zip di SQLT da [Document 215187.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=215187.1) nel sito My Oracle Support. 
**Nota**  
Non è possibile scaricare SQLT 12.1.160429 dal sito My Oracle Support. Oracle ha dichiarato obsoleta questa versione precedente.

1.  Decomprimere il file .zip di SQLT. 

1.  Dal prompt dei comandi, portarsi sulla directory `sqlt/run` del file system. 

1.  Dal prompt dei comandi, aprire SQL\$1Plus ed effettuare la connessione all'istanza database come utente master. 

   Per informazioni sulla connessione a un'istanza database Oracle con SQL\$1Plus, consulta [Connessione all'istanza database Oracle](USER_ConnectToOracleInstance.md).

1.  Ottenere l'ID SQL di un'istruzione SQL: 

   ```
   SELECT SQL_ID FROM V$SQL WHERE SQL_TEXT='sql_statement';                               
   ```

   L'output è simile a quello riportato di seguito: 

   ```
   SQL_ID
   -------------
   chvsmttqjzjkn
   ```

1. Analizzare un'istruzione SQL con SQLT: 

   ```
   START sqltxtract.sql sql_id sqltxplain_user_password                    
   ```

   Ad esempio, per l'ID SQL `chvsmttqjzjkn`, immettere quanto segue:

   ```
   START sqltxtract.sql chvsmttqjzjkn sqltxplain_user_password                    
   ```

   SQLT genera un rapporto e le risorse correlate come un file. zip nella directory in cui è stato eseguito il comando SQLT.

1.  (Opzionale) Per consentire agli utenti dell'applicazione di diagnosticare le istruzioni SQL con SQLT, concedere `SQLT_USER_ROLE` a ciascun utente con la seguente istruzione: 

   ```
   GRANT SQLT_USER_ROLE TO application_user_name;                
   ```
**Nota**  
Oracle sconsiglia l'esecuzione di SQLT con l'utente `SYS` o con utenti che dispongono del ruolo `DBA`. La best practice prevede l'esecuzione della diagnostica SQLT con l'account dell'utente dell'applicazione, concedendo `SQLT_USER_ROLE` a tale utente.

## Aggiornamento dell'opzione SQLT
<a name="Oracle.Options.SQLT.Upgrading"></a>

Con Amazon RDS for Oracle puoi aggiornare l'opzione SQLT dalla versione attuale a una versione successiva. Per aggiornare l'opzione SQLT, completa le fasi 1–3 in [Uso di SQLT](#Oracle.Options.SQLT.Using) per la nuova versione di SQLT. Inoltre, se hai concesso privilegi per la versione precedente di SQLT nella fase 7 di questa sezione, assegnali di nuovo per la nuova versione di SQLT. 

L'aggiornamento dell'opzione SQLT causa la perdita dei metadati della versione precedente di SQLT. Lo schema e gli oggetti correlati della versione di SQLT precedente vengono eliminati e viene installata la versione più recente. Per ulteriori informazioni sulle modifiche nella versione più recente di SQLT, consulta il [Documento 1614201.1](https://support.oracle.com/epmos/faces/DocumentDisplay?parent=DOCUMENT&sourceId=215187.1&id=1614201.1) nel sito My Oracle Support.

**Nota**  
I downgrade di versione non sono supportati.

## Modifica delle impostazioni SQLT
<a name="Oracle.Options.SQLT.ModifySettings"></a>

Dopo avere abilitato SQLT, puoi modificare le impostazioni `LICENSE_PACK` e `VERSION` dell'opzione.

Per ulteriori informazioni su come modificare le impostazioni dell'opzione, consulta [Modifica di un'impostazione di un'opzione](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption). Per ulteriori informazioni su ciascuna impostazione, consulta [Impostazioni dell'opzione SQLT](#Oracle.Options.SQLT.Options). 

## Rimozione dell'opzione SQLT
<a name="Oracle.Options.SQLT.Remove"></a>

Puoi rimuovere SQLT da un'istanza database. 

Per rimuovere SQLT da un'istanza database, esegui una delle seguenti procedure: 
+ Per rimuovere SQLT da più istanze database, rimuovi l'opzione SQLT dal gruppo di opzioni a cui appartengono le istanze database. Questa modifica coinvolge tutte le istanze database che usano il gruppo di opzioni. Per ulteriori informazioni, consulta [Rimozione di un'opzione da un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption). 

   
+ Per rimuovere SQLT da una singola istanza database, modifica l'istanza database e specifica un gruppo di opzioni diverso che non comprenda l'opzione SQLT. È possibile specificare il gruppo di opzioni predefinito (vuoto) o un gruppo di opzioni personalizzato diverso. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md). 