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.
Argomenti
- Impostazione accesso forzato
- Impostazione di accesso supplementare
- Cambio dei file di log online
- Aggiunta di log redo online
- Eliminazione di log redo online
- Ridimensionamento di log redo online
- Conservazione dei log redo archiviati
- Accesso ai log di ripristino online e archiviati
- Download dei log di ripristino archiviati da Simple Storage Service (Amazon S3)
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)
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 | Sì | Descrizione |
---|---|---|---|---|
|
booleano |
true |
No |
Imposta su |
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
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 |
---|---|---|---|---|
|
varchar2 |
— |
Sì |
|
|
varchar2 |
null |
No |
Tipo di accesso supplementare. I valori validi sono |
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 |
---|---|---|---|---|
|
positivo |
null |
No |
Le dimensioni del file di log in byte. |
|
varchar2 |
— |
Sì |
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 |
---|---|---|---|---|
|
positivo |
— |
Sì |
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
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 |
---|---|---|---|---|
|
varchar |
— |
Sì |
Il nome della configurazione da aggiornare. |
|
varchar |
— |
Sì |
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:
-
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
erdsadmin.rdsadmin_master_util.create_onlinelog_dir
. -
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)
-
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.
-
Attendere fino a 5 minuti per rendere effettiva la modifica della policy di conservazione dei log archiviati.
-
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.
-
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-
. Nel passaggio di download precedente, si esegue una istruzionetask-id
.logSELECT
che restituisce l'ID attività in un tipo di datiVARCHAR2
. 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 |
---|---|---|---|---|
|
numero |
— |
Sì |
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 |
---|---|---|---|---|
|
numero |
— |
Sì |
Il numero di sequenza iniziale per la serie. |
|
numero |
— |
Sì |
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;