Gennaio 25, 2022

Come controllare Archivio Log Size

In questo post, io parlato dei seguenti 3 argomenti.

  1. Come definire la dimensione del log dell’archivio?
  2. Tutti i registri degli archivi hanno le stesse dimensioni?
  3. Come controllare la dimensione del registro dell’archivio?

A. Come definire la dimensione del log dell’archivio?

Prima di determinare la dimensione del log archiviato, è necessario sapere che i log archiviati derivano dalla commutazione dei log redo online. Il che significa che i log archiviati vengono ritirati e copiati i log redo online. In altre parole, non si sta determinando la dimensione del registro archiviato, in realtà si sta determinando la dimensione del registro redo online.

Define Mean Time To Recover (MTTR)

Ma ora la domanda è: Come impostare una dimensione corretta e ottimale per i log di ripristino online? C’è una risposta semplice per noi. Se il tuo database è Oracle 10g in poi, puoi ottenere un valore ottimale dalla configurazione dell’istanza corrente.

Innanzitutto, devi assicurarti che FAST_START_MTTR_TARGET sia stato impostato su un valore diverso da zero.

SQL> show parameter fast_start_mttr_target;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fast_start_mttr_target integer 1800

Controlla la dimensione ottimale del log Redo

Se hai impostato FAST_START_MTTR_TARGET, ovvero 1800 secondi in questo caso, quindi è possibile ottenere un valore di consulenza per l’ottimizzazione delle dimensioni del file di log da questa query.

SQL> select target_mttr, estimated_mttr, optimal_logfile_size from v$instance_recovery;
TARGET_MTTR ESTIMATED_MTTR OPTIMAL_LOGFILE_SIZE
----------- -------------- --------------------
146 21 1469

Come puoi vedere, la terza colonna OPTIMAL_LOGFILE_SIZE è la risposta. Oracle consiglia di impostare la dimensione del log redo su 1469 MB.

Successivamente, potremmo aver bisogno di ridimensionare redo logs per conformarci alle dimensioni consigliate.

B. Tutti i registri degli archivi hanno le stesse dimensioni?

Principalmente, i log archiviati hanno le stesse dimensioni, ma potrebbero essere influenzati dai seguenti fattori.

Rifare tutti i log definiti con la stessa dimensione?

Sebbene dovremmo definire tutti i gruppi di log redo e i membri della stessa dimensione, è possibile che dimensioni diverse tra i log redo siano definite in pochi database. Di solito, i registri redo più grandi vengono aggiunti dopo la creazione del database. Ecco perché abbiamo visto registri archiviati di dimensioni diverse.

Hai mai impostato l’intervallo di commutazione del registro?

Log switching può essere fatto ad un intervallo fisso impostando ARCHIVE_LAG_TARGET parametro di inizializzazione per aiutare a controllare la frequenza di archiviazione.

Se il parametro è impostato diverso dal valore predefinito (0, disabilitato), si verificherà un cambio di registro prima che i registri vengano riempiti. Tali registri di ripetizione prematuri rendono registri archiviati di dimensioni diverse.

Backup RMAN

Oltre all’impostazione dell’intervallo di commutazione del registro, l’esecuzione di un backup del database con i registri archiviati da RMAN attiverà la commutazione del registro. Ad esempio, ci piacerebbe avere un backup completo autonomo come questo:

RMAN> backup database plus archivelog;
Starting backup at 27-JUN-16
current log archived
...
Starting backup at 27-JUN-16
current log archived
...

Come puoi vedere, 2 log redo sono stati archiviati da RMAN, prima e dopo il backup completo. Sono più piccoli della dimensione definita.

C. Come controllare la dimensione del registro dell’archivio?

Ora, torniamo al nostro argomento principale, come controllare la dimensione del registro di archivio nel database?

Dimensione di ogni log archiviato

Per vedere la dimensione di ogni log archiviato, interroghiamo V ARCHIV ARCHIVED_LOG:

SQL> column name format a50;
SQL> column "Size (MB)" format 9999.999;
SQL> select sequence#, name, blocks*block_size/1024/1024 "Size (MB)" from v$archived_log where status = 'A' and standby_dest = 'NO' and completion_time > sysdate-1;
SEQUENCE# NAME Size (MB)
---------- -------------------------------------------------- ---------
175398 /oradata/FRA/ORCL/ARCH/ERPAPP1_1_175398.arc 1023.999
175399 /oradata/FRA/ORCL/ARCH/ERPAPP1_1_175399.arc 1023.999
175400 /oradata/FRA/ORCL/ARCH/ERPAPP1_1_175400.arc 749.232
175401 /oradata/FRA/ORCL/ARCH/ERPAPP1_1_175401.arc 43.875
175402 /oradata/FRA/ORCL/ARCH/ERPAPP1_1_175402.arc 727.369
175403 /oradata/FRA/ORCL/ARCH/ERPAPP1_1_175403.arc 6.957
175404 /oradata/FRA/ORCL/ARCH/ERPAPP1_1_175404.arc 1023.993
175405 /oradata/FRA/ORCL/ARCH/ERPAPP1_1_175405.arc 1023.999
...

La dimensione di ogni singolo registro di archivio può essere calcolata moltiplicando i BLOCCHI per colonna BLOCK_SIZE. Inoltre, abbiamo calcolato solo i log archiviati che vengono completati in 24 ore e disponibili nel database primario.

Come puoi vedere, NON tutti i log di archivio hanno le stesse dimensioni, la maggior parte dei log archiviati sono in 1024 MB (cioè 1 GB).

Dimensione di tutti i log archiviati

Tutti i file disponibili

Per vedere la dimensione complessiva dei log archiviati disponibili nel server di database primario, possiamo farlo:

SQL> sselect sum(blocks*block_size)/1024/1024/1024 "Total Size (GB)" from v$archived_log where status = 'A' and standby_dest = 'NO';
Total Size (GB)
---------------
436.632

Come possiamo vedere, abbiamo oltre 400GB di log archiviati, dovremmo eliminarli in modo più aggressivo da ora in poi.

Ultime 24 ore

Per riassumere tutte le dimensioni del registro archiviate disponibili nelle ultime 24 ore nel server di database primario, possiamo farlo:

SQL> column "Total Size (GB)" format 9999.999;
SQL> select sum(blocks*block_size)/1024/1024/1024 "Total Size (GB)" from v$archived_log where status = 'A' and standby_dest = 'NO' and completion_time > sysdate-1;
Total Size (GB)
---------------
101.828

Abbiamo aggiunto un filtro per limitare l’ambito temporale dei registri archiviati.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.