Esecuzione di attività comuni relative ai log per le istanze database Oracle - Amazon Relational Database Service

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à comuni relative ai log per le istanze database Oracle

Di seguito, viene descritto come eseguire determinate attività DBA comuni relative all'accesso alle 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.

Per ulteriori informazioni, consulta File di log del database Oracle.

Impostazione accesso forzato

In modalità accesso forzato, Oracle registra tutte le modifiche nel database ad eccezione delle modifiche in spazi tabella temporanei e segmenti temporanei (le clausole NOLOGGING vengono ignorate). Per ulteriori informazioni, consulta Specificare la modalità FORCE LOGGING (ACCESSO FORZATO) nella documentazione Oracle.

Puoi usare la procedura in Amazon RDS per impostare il logging forzato rdsadmin.rdsadmin_util.force_logging. La procedura force_logging include i seguenti parametri.

Nome del parametro Tipo di dati Default Descrizione

p_enable

booleano

true

No

Imposta su true per impostare il database nella modalità accesso forzato, false per rimuovere il database dalla modalità accesso forzato.

L'esempio seguente imposta il database in modalità accesso forzato.

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

Impostazione di accesso supplementare

Se abiliti la registrazione supplementare, LogMiner dispone delle informazioni necessarie per supportare righe concatenate e tabelle raggruppate. Per ulteriori informazioni, consulta la pagina Accesso supplementare nella documentazione Oracle.

L'Oracle Database non abilita l'accesso supplementare come impostazione predefinita. Puoi usare la procedura in Amazon RDS per abilitare e disabilitare il logging supplementare rdsadmin.rdsadmin_util.alter_supplemental_logging. Per ulteriori informazioni sul modo in cui Amazon RDS gestisce la conservazione dei log delle modifiche archiviati per istanze database Oracle, consulta Conservazione dei log redo archiviati.

La procedura alter_supplemental_logging include i seguenti parametri.

Nome del parametro Tipo di dati Default Campo obbligatorio Descrizione

p_action

varchar2

'ADD' per aggiungere l'accesso supplementare, 'DROP' per rilasciare l'accesso supplementare.

p_type

varchar2

null

No

Tipo di accesso supplementare. I valori validi sono 'ALL', 'FOREIGN KEY', 'PRIMARY KEY', 'UNIQUE' o PROCEDURAL.

L'esempio seguente abilita l'accesso supplementare.

begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => 'ADD'); end; /

L'esempio seguente abilita l'accesso supplementare per tutte le colonne di lunghezza fissa massima.

begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => 'ADD', p_type => 'ALL'); end; /

L'esempio seguente abilita l'accesso supplementare per le colonne chiave primarie.

begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => 'ADD', p_type => 'PRIMARY KEY'); end; /

Cambio dei file di log online

Puoi usare la procedura in Amazon RDS per cambiare file di lo rdsadmin.rdsadmin_util.switch_logfile. La procedura switch_logfile non ha parametri.

L'esempio seguente cambia i file di log.

EXEC rdsadmin.rdsadmin_util.switch_logfile;

Aggiunta di log redo online

Un'istanza database Amazon RDS che esegue Oracle inizia con quattro log redo online, di 128 MB ciascuno. Puoi usare la procedura in Amazon RDS per aggiungere ulteriori log red rdsadmin.rdsadmin_util.add_logfile.

La procedura add_logfile include i seguenti parametri.

Nota

I parametri sono si escludono a vicenda.

Nome del parametro Tipo di dati Default Campo obbligatorio Descrizione

bytes

positivo

null

No

Le dimensioni del file di log in byte.

p_size

varchar2

Le dimensioni del file di log. Puoi specificare le dimensioni in kilobyte (K), megabyte (M) o gigabyte (G).

Il seguente comando aggiunge un file di log di 100 MB.

EXEC rdsadmin.rdsadmin_util.add_logfile(p_size => '100M');

Eliminazione di log redo online

Puoi utilizzare la procedura in Amazon RDS per rilasciare i log red rdsadmin.rdsadmin_util.drop_logfile. La procedura drop_logfile include i seguenti parametri.

Nome del parametro Tipo di dati Default Campo obbligatorio Descrizione

grp

positivo

Il numero di gruppo del log.

L'esempio seguente rilascia il log con il numero di gruppo 3.

EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 3);

Puoi solo rilasciare log che hanno uno stato di inutilizzato o inattivo. L'esempio seguente ottiene gli stati dei log.

SELECT GROUP#, STATUS FROM V$LOG; GROUP# STATUS ---------- ---------------- 1 CURRENT 2 INACTIVE 3 INACTIVE 4 UNUSED

Ridimensionamento di log redo online

Un'istanza database Amazon RDS che esegue Oracle inizia con quattro log redo online, di 128 MB ciascuno. L'esempio seguente visualizza come si possono utilizzare le procedure Amazon RDS per ridimensionare i log da 128 MB ciascuno a 512 MB ciascuno.

/* Query V$LOG to see the logs. */ /* You start with 4 logs of 128 MB each. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE /* Add four new logs that are each 512 MB */ EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); /* Query V$LOG to see the logs. */ /* Now there are 8 logs. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Drop each inactive log using the group number. */ EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 1); EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 3); EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 4); /* Query V$LOG to see the logs. */ /* Now there are 5 logs. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 CURRENT 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Switch logs so that group 2 is no longer current. */ EXEC rdsadmin.rdsadmin_util.switch_logfile; /* Query V$LOG to see the logs. */ /* Now one of the new logs is current. */ SQL>SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 ACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* If the status of log 2 is still "ACTIVE", issue a checkpoint to clear it to "INACTIVE". */ EXEC rdsadmin.rdsadmin_util.checkpoint; /* Query V$LOG to see the logs. */ /* Now the final original log is inactive. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 INACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED # Drop the final inactive log. EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 2); /* Query V$LOG to see the logs. */ /* Now there are four 512 MB logs. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED

Conservazione dei log redo archiviati

È possibile conservare i redo log archiviati localmente sull'istanza DB per utilizzarli con prodotti come Oracle (). LogMiner DBMS_LOGMNR Dopo aver conservato i redo log, è possibile utilizzarli per analizzarli. LogMiner Per ulteriori informazioni, vedere Using LogMiner to analysis redo log file nella documentazione Oracle.

Puoi usare la procedura in Amazon RDS per mantenere i log redo archiviat rdsadmin.rdsadmin_util.set_configuration. La procedura set_configuration include i seguenti parametri.

Nome del parametro Tipo di dati Default Campo obbligatorio Descrizione

name

varchar

Il nome della configurazione da aggiornare.

value

varchar

Il valore per la configurazione.

L'esempio seguente conserva 24 ore di log redo.

begin rdsadmin.rdsadmin_util.set_configuration( name => 'archivelog retention hours', value => '24'); end; / commit;
Nota

La conferma è necessaria per rendere effettiva la modifica.

Puoi utilizzare la procedura Amazon RDS per visualizzare quanto a lungo i log redo archiviati vengono conservati per l'istanza databas rdsadmin.rdsadmin_util.show_configuration.

L'esempio seguente mostra il tempo di conservazione dei log.

set serveroutput on EXEC rdsadmin.rdsadmin_util.show_configuration;

L'output indica l'impostazione corrente per archivelog retention hours. L'output seguente indica che i log redo vengono mantenuti per 48 ore.

NAME:archivelog retention hours VALUE:48 DESCRIPTION:ArchiveLog expiration specifies the duration in hours before archive/redo log files are automatically deleted.

Poiché i log redo archiviati vengono conservati nell'istanza database, assicurati che l'istanza database abbia abbastanza storage allocato per i log conservati. Per determinare quanto spazio l'istanza database ha utilizzato nelle ultime X ore, puoi eseguire la query seguente, sostituendo X con il numero di ore.

SELECT SUM(BLOCKS * BLOCK_SIZE) bytes FROM V$ARCHIVED_LOG WHERE FIRST_TIME >= SYSDATE-(X/24) AND DEST_ID=1;

I log di ripristino archiviati vengono generati solo se il tempo di conservazione del backup dell'istanza database è superiore a zero. Per impostazione predefinita, il tempo di conservazione del backup è maggiore di zero.

Alla scadenza del periodo di conservazione dei log archiviati, RDS per Oracle rimuove i log di ripristino archiviati dall'istanza database. Per supportare il ripristino dell'istanza del DB a un punto temporale specifico, Amazon RDS conserva i log di ripristino archiviati al di fuori dell'istanza database in base al tempo di conservazione del backup. Per modificare il tempo di conservazione del backup, consulta Modifica di un'istanza database Amazon RDS.

Nota

In alcuni casi, si potrebbe utilizzare JDBC su Linux per scaricare i log redo archiviati e riscontrare periodi di latenza e ripristini di connessione lunghi. In questi casi i problemi potrebbero dipendere dall'impostazione predefinita del generatore di numeri casuali nel client Java. Consigliamo di impostare i driver JDBC in modo che utilizzino un generatore di numero casuale senza blocchi.

Accesso ai log di ripristino online e archiviati

Potresti voler accedere ai tuoi redo log file online e archiviati per il mining con strumenti esterni come Attunity GoldenGate, Informatica e altri. Per accedere a questi file, effettuare le operazioni seguenti:

  1. Creare oggetti di directory che forniscono l'accesso di sola lettura ai percorsi fisici dei file.

    Uso di rdsadmin.rdsadmin_master_util.create_archivelog_dir e rdsadmin.rdsadmin_master_util.create_onlinelog_dir.

  2. Leggere i file utilizzando PL/SQL.

    È possibile leggere i file utilizzando PL/SQL. Per ulteriori informazioni sulla lettura di file dagli oggetti di directory, consulta Generazione di un elenco dei file in una directory di istanze database e Lettura dei file in una directory di istanze database.

L'accesso ai log delle transazioni è supportato per le versioni seguenti:

  • Oracle Database 21c

  • Oracle Database 19c

Il seguente codice crea delle directory che forniscono accesso di sola lettura ai file di log redo online e archiviati:

Importante

Questo codice revoca anche il privilegio DROP ANY DIRECTORY.

EXEC rdsadmin.rdsadmin_master_util.create_archivelog_dir; EXEC rdsadmin.rdsadmin_master_util.create_onlinelog_dir;

Il seguente codice rilascia directory per i file di log redo online e archiviati.

EXEC rdsadmin.rdsadmin_master_util.drop_archivelog_dir; EXEC rdsadmin.rdsadmin_master_util.drop_onlinelog_dir;

Il seguente codice concede e revoca il privilegio DROP ANY DIRECTORY.

EXEC rdsadmin.rdsadmin_master_util.revoke_drop_any_directory; EXEC rdsadmin.rdsadmin_master_util.grant_drop_any_directory;

Download dei log di ripristino archiviati da Simple Storage Service (Amazon S3)

È possibile scaricare i log di ripristino archiviati nell'istanza database utilizzando il pacchetto rdsadmin.rdsadmin_archive_log_download. Se i log di ripristino archiviati non sono più presenti nell'istanza database, sarà possibile scaricarli di nuovo da Simple Storage Service (Amazon S3). Quindi è possibile estrarre i log o utilizzarli per recuperare o replicare il database.

Nota

Non è possibile scaricare log redo archiviati sulle istanze di replica di lettura.

Download dei log di ripristino archiviati: passaggi di base

La disponibilità dei log di ripristino archiviati dipende dalle seguenti policy di conservazione:

  • Policy di conservazione dei backup: i log all'interno di questa politica sono disponibili in Simple Storage Service (Amazon S3). I log esterni a questa policy vengono rimossi.

  • Policy di conservazione dei log archiviati: i log all'interno di questa policy sono disponibili nell'istanza database. I log esterni a questa policy vengono rimossi.

Se i log non sono presenti nell'istanza ma sono protetti dal tempo di conservazione del backup, utilizza rdsadmin.rdsadmin_archive_log_download per scaricarli di nuovo. RDS per Oracle salva i log nella directory /rdsdbdata/log/arch nell'istanza database.

Download dei log di ripristino archiviati da Simple Storage Service (Amazon S3)
  1. Configura il periodo di conservazione per assicurarti che i log redo archiviati scaricati vengano mantenuti per la durata necessaria. Assicurati di COMMIT la modifica.

    RDS mantiene i log scaricati in base alla policy di conservazione dei log archiviati, a partire dal momento in cui i log sono stati scaricati. Per informazioni su come impostare la policy di conservazione, consulta Conservazione dei log redo archiviati.

  2. Attendere fino a 5 minuti per rendere effettiva la modifica della policy di conservazione dei log archiviati.

  3. Download dei log di ripristino archiviati da Simple Storage Service (Amazon S3) tramite rdsadmin.rdsadmin_archive_log_download.

    Per ulteriori informazioni, consulta Download di un singolo log di ripristino archiviato e Download di una serie di log di ripristino archiviati.

    Nota

    RDS controlla automaticamente lo spazio di archiviazione disponibile prima del download. Se i log richiesti consumano un'alta percentuale di spazio, viene visualizzato un avviso.

  4. Conferma che i log siano stati scaricati correttamente da Simple Storage Service (Amazon S3).

    È possibile visualizzare lo stato dell'attività di download in un file bdump. I file bdump hanno il percorso /rdsdbdata/log/trace/dbtask-task-id.log. Nel passaggio di download precedente, si esegue una istruzione SELECT che restituisce l'ID attività in un tipo di dati VARCHAR2. Per maggiori informazioni, consulta gli esempi simili in Monitoraggio dello stato di un file transfer.

Download di un singolo log di ripristino archiviato

Per scaricare un singolo log di ripristino archiviato nella directory /rdsdbdata/log/arch utilizza rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum. Questa procedura include i seguenti parametri.

Nome del parametro Tipo di dati Default Campo obbligatorio Descrizione

seqnum

numero

Il numero di sequenza del log di ripristino archiviato.

L'esempio seguente scarica il log con il numero di sequenza 20.

SELECT rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum(seqnum => 20) AS TASK_ID FROM DUAL;

Download di una serie di log di ripristino archiviati

Per scaricare un singolo log di ripristino archiviato nella directory /rdsdbdata/log/arch utilizza download_logs_in_seqnum_range. Il download è limitato a 300 registri per richiesta. La procedura download_logs_in_seqnum_range include i seguenti parametri.

Nome del parametro Tipo di dati Default Campo obbligatorio Descrizione

start_seq

numero

Il numero di sequenza iniziale per la serie.

end_seq

numero

Il numero di sequenza finale per la serie.

L'esempio seguente scarica il log dalla sequenza 50 a 100.

SELECT rdsadmin.rdsadmin_archive_log_download.download_logs_in_seqnum_range(start_seq => 50, end_seq => 100) AS TASK_ID FROM DUAL;