Esegui SQL Tracing su Autonomous Database

Utilizza SQL Tracing per identificare l'origine di un carico di lavoro eccessivo del database, ad esempio un'istruzione SQL ad alto carico nell'applicazione.

Configurare SQL Tracing su Autonomous Database

Mostra i passi per configurare il trace SQL in Autonomous Database.

Nota

Se si abilita SQL Tracing, le prestazioni dell'applicazione per la sessione potrebbero peggiorare mentre è abilitata la raccolta di trace. Questo impatto negativo sulle prestazioni è previsto a causa del sovraccarico della raccolta e del salvataggio dei dati di traccia.

Per configurare il database per il trace SQL, effettuare le operazioni riportate di seguito.

  1. Creare un bucket per memorizzare i file di trace nello storage degli oggetti cloud.

    Per salvare i file di trace SQL, il bucket può trovarsi in qualsiasi area di memorizzazione degli oggetti cloud supportata da Autonomous Database.

    Ad esempio, per creare un bucket in Oracle Cloud Infrastructure Object Storage, effettuare le operazioni riportate di seguito.

    1. Aprire la console di Oracle Cloud Infrastructure.
    2. Selezionare Memoria dal menu.
    3. In Storage, selezionare Storage degli oggetti e storage di archivio.
    4. Fare clic su Crea bucket.
    5. Nella pagina Crea bucket, immettere il Nome bucket e fare clic su Crea.

    Se si utilizza Oracle Cloud Infrastructure Object Storage, tenere presente che i file di trace SQL sono supportati solo con i bucket creati nel livello di storage standard, assicurarsi di selezionare Standard come livello di storage quando si crea il bucket. Per informazioni sul livello di storage degli oggetti standard, consulta la panoramica dello storage degli oggetti.

  2. Creare una credenziale per l'account di storage degli oggetti cloud utilizzando DBMS_CLOUD.CREATE_CREDENTIAL.

    Ad esempio:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@example.com', 
        password => 'password'
    );
    END;
    /

    Per Oracle Cloud Infrastructure, username è il nome utente di Oracle Cloud Infrastructure. password è il token di autenticazione di Oracle Cloud Infrastructure. Per ulteriori informazioni, vedere Utilizzo dei token di autenticazione.

    Per i dettagli sui parametri e sui relativi valori, a seconda dello storage degli oggetti cloud, vedere Procedura CREATE_CREDENTIAL.

  3. Impostare i parametri di inizializzazione per specificare l'URL di storage degli oggetti cloud per un bucket per i file di trace SQL e per specificare le credenziali per accedere allo storage degli oggetti cloud.
    1. Impostare la proprietà del database DEFAULT_LOGGING_BUCKET per specificare il bucket di log nello storage degli oggetti cloud.

      Ad esempio, se crei il bucket con Oracle Cloud Infrastructure Object Storage:

      SET DEFINE OFF;
      ALTER DATABASE PROPERTY SET 
         DEFAULT_LOGGING_BUCKET = 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucket_name/o/';

      Dove namespace-string è lo spazio di nomi di Oracle Cloud Infrastructure Object Storage e bucket_name è il nome del bucket creato in precedenza. Per ulteriori informazioni, vedere Informazioni sugli spazi di nomi dello storage degli oggetti.

      Per un elenco di aree, consulta la sezione relativa alle aree e ai domini di disponibilità.

      L'area di memorizzazione degli oggetti cloud utilizzata per i file di trace SQL può essere qualsiasi area di memorizzazione degli oggetti cloud supportata da Autonomous Database.

    2. Impostare la proprietà del database DEFAULT_CREDENTIAL sulla credenziale creata nel passo 2.

      È necessario includere il nome dello schema con la credenziale. In questo esempio lo schema è "ADMIN".

      Ad esempio:

      ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'ADMIN.DEF_CRED_NAME';

Abilita SQL Tracing su Autonomous Database

Mostra i passi per abilitare il trace SQL per la sessione del database.

Nota

Se si abilita SQL Tracing, le prestazioni dell'applicazione per la sessione potrebbero peggiorare mentre la raccolta di trace è abilitata. Questo impatto negativo sulle prestazioni è previsto a causa del sovraccarico della raccolta e del salvataggio dei dati di traccia.

Prima di abilitare il trace SQL, è necessario configurare il database per salvare i file di trace SQL. Per ulteriori informazioni, vedere Configura SQL Tracing su Autonomous Database.

Per abilitare il trace SQL, effettuare le operazioni riportate di seguito.

  1. (Facoltativo) Impostare un identificativo client per l'applicazione. Questo passo è facoltativo ma consigliato. SQL Tracing utilizza l'identificativo client come componente del nome del file di trace quando il file di trace viene scritto nell'area di memorizzazione degli oggetti cloud.

    Ad esempio:

    BEGIN
      DBMS_SESSION.SET_IDENTIFIER('sqlt_test');
    END;
    /
  2. (Opzionale) Impostare un nome di modulo per l'applicazione. Questo passo è facoltativo ma consigliato. SQL Tracing utilizza il nome del modulo come componente del nome del file di trace quando il file di trace viene scritto nell'area di memorizzazione degli oggetti cloud.

    Ad esempio:

    BEGIN
      DBMS_APPLICATION_INFO.SET_MODULE('modname', null);
    END;
    /
  3. Abilitare la funzione SQL Trace.
    ALTER SESSION SET SQL_TRACE = TRUE;
  4. Eseguire il carico di lavoro.

    Questo passo implica l'esecuzione dell'intera applicazione o di parti specifiche dell'applicazione. Durante l'esecuzione del carico di lavoro nella sessione del database, vengono raccolti i dati di trace SQL.

  5. Disabilita trace SQL.

    Quando si disabilita il trace SQL, i dati raccolti per la sessione vengono scritti in una tabella della sessione e in un file di trace nel bucket configurato quando si imposta il trace SQL. Per i dettagli, vedere Disabilita SQL Tracing su Autonomous Database.

Disabilita SQL Tracing su Autonomous Database

Mostra i passi per disabilitare il trace SQL in Autonomous Database.

Per disabilitare il trace SQL, effettuare le operazioni riportate di seguito.

  1. Disabilitare la funzione SQL Trace.
    ALTER SESSION SET SQL_TRACE = FALSE;
  2. (Facoltativo) In base alle esigenze dell'ambiente in uso, potrebbe essere necessario reimpostare la proprietà del database DEFAULT_LOGGING_BUCKET per cancellare il valore del bucket di log nello storage degli oggetti cloud.

    Ad esempio:

    ALTER DATABASE PROPERTY SET DEFAULT_LOGGING_BUCKET = '';

Quando si disabilita il trace SQL, i dati di trace raccolti durante l'esecuzione della sessione con il trace abilitato vengono copiati in una tabella e inviati a un file di trace nell'area di memorizzazione degli oggetti cloud. Sono disponibili due opzioni per visualizzare i dati di trace:

Visualizza file di trace salvato nell'area di memorizzazione degli oggetti cloud in Autonomous Database

Descrive la denominazione dei file di output per i file di trace SQL e mostra i comandi per utilizzare TKPROF per organizzare e visualizzare i dati dei file di trace.

I dati dei file di trace SQL vengono utilizzati per analizzare le prestazioni dell'applicazione in Autonomous Database. Quando si disabilita SQL Trace nella sessione del database, i dati vengono scritti nel bucket dell'area di memorizzazione degli oggetti cloud configurato con DEFAULT_LOGGING_BUCKET.

La funzione SQL Trace scrive i dati di trace raccolti nella sessione nell'area di memorizzazione degli oggetti cloud nel seguente formato:

default_logging_bucket/sqltrace/clientID/moduleName/sqltrace_numID1_numID2.trc

Di seguito sono riportati i componenti del nome file.

  • default_logging_bucket: è il valore della proprietà del database DEFAULT_LOGGING_BUCKET. Per ulteriori informazioni, vedere Configura SQL Tracing su Autonomous Database.

  • clientID: è l'identificativo del client. Per ulteriori informazioni, vedere Abilita SQL Tracing su Autonomous Database.

  • moduleName: è il nome del modulo. Per ulteriori informazioni, vedere Abilita SQL Tracing su Autonomous Database.

  • numID1_numID2: sono due identificatori forniti dalla funzionalità SQL Trace. I valori numerici numID1 e numID2 distinguono in modo univoco ogni nome file di trace dalle altre sessioni utilizzando il trace e la creazione di file di trace nello stesso bucket nello storage degli oggetti cloud.

    Quando il servizio di database supporta il parallelismo e una sessione esegue una query parallela, la funzione SQL Trace può produrre più file di trace con valori numID1 e numID2 diversi.

Nota

Quando il trace SQL è abilitato e disabilitato più volte all'interno della stessa sessione, ogni iterazione di trace genera un file di trace separato nell'area di memorizzazione degli oggetti cloud. Per evitare di sovrascrivere i trace precedenti generati nella sessione, i file generati successivamente seguono la stessa convenzione di denominazione e aggiungono un suffisso numerico al nome del file di trace. Questo suffisso numerico inizia con il numero 1 ed è incrementato di 1 per ogni iterazione di trace in seguito.

Ad esempio, quando si imposta l'identificativo client su "sql_test" e il nome del modulo su "modname", viene generato un esempio di nome file di trace:

sqltrace/sqlt_test/modname/sqltrace_5415_56432.trc

È possibile eseguire TKPROF per tradurre il file di trace in un file di output leggibile.

  1. Copiare il file di trace dall'area di memorizzazione degli oggetti nel sistema locale.
  2. Passare alla directory in cui viene salvato il file di trace.
  3. Eseguire la utility TKPROF dal prompt del sistema operativo utilizzando la sintassi seguente:
    tkprof filename1 filename2 [waits=yes|no] [sort=option] [print=n]
        [aggregate=yes|no] [insert=filename3] [sys=yes|no] [table=schema.table]
        [explain=user/password] [record=filename4] [width=n]
    

    I file di input e di output sono gli unici argomenti richiesti.

  4. Per visualizzare la Guida in linea, richiamare TKPROF senza argomenti.

Per informazioni sull'uso della utility TKPROF, vedere "Tools for End-to-End Application Tracing" in Oracle Database SQL Tuning Guide.

Visualizza i dati di trace nella vista SESSION_CLOUD_TRACE su Autonomous Database

Quando si abilita SQL Tracing, le stesse informazioni di trace salvate nel file di trace nell'area di memorizzazione degli oggetti cloud sono disponibili nella vista SESSION_CLOUD_TRACE nella sessione in cui è stato abilitato il trace.

Mentre ci si trova ancora nella sessione del database, è possibile visualizzare i dati di trace SQL nella vista SESSION_CLOUD_TRACE. La vista SESSION_CLOUD_TRACE include due colonne: ROW_NUMBER e TRACE:

DESC SESSION_CLOUD_TRACE

Name       Null? Type
---------- ----- ------------------------------
ROW_NUMBER       NUMBER
TRACE            VARCHAR2(32767)

ROW_NUMBER specifica l'ordinamento per i dati di trace trovati nella colonna TRACE. Ogni riga di output di trace scritta in un file di trace diventa una riga nella tabella ed è disponibile nella colonna TRACE.

Dopo aver disabilitato il trace SQL per la sessione, è possibile eseguire le query nella vista SESSION_CLOUD_TRACE.

Ad esempio:

SELECT trace FROM SESSION_CLOUD_TRACE ORDER BY row_number;

I dati in SESSION_CLOUD_TRACE persistono per tutta la durata della sessione. Dopo il logout o la chiusura della sessione, i dati non sono più disponibili.

Se SQL Trace è abilitato e disabilitato più volte all'interno della stessa sessione, SESSION_CLOUD_TRACE mostra cumulativamente i dati di trace per tutte le iterazioni. Pertanto, la riabilitazione del trace in una sessione dopo la disabilitazione precedente del trace non rimuove i dati di trace prodotti dall'iterazione precedente.