hur man kontrollerar Arkivloggstorlek
i det här inlägget kommer jag att prata om följande 3 ämnen.
- Hur definierar jag Arkivloggstorlek?
- är alla Arkivloggar lika stora?
- Hur kontrollerar jag Arkivloggens storlek?
A. Hur definierar jag Arkivloggstorlek?
innan du bestämmer Arkiverad loggstorlek måste du veta att arkiverade loggar härrör från byte av online-loggar. Vilket innebär att arkiverade loggar går i pension och kopieras online-loggar. Med andra ord bestämmer du inte Arkiverad loggstorlek, i själva verket bestämmer du online-loggstorlek.
definiera Mean Time To Recover (MTTR)
men nu är frågan: hur man ställer in en korrekt och optimal storlek för online-gör om loggar? Det finns ett enkelt svar för oss. Om din databas är Oracle 10g framåt kan du få ett optimalt värde från aktuell instanskonfiguration.
först måste du se till att FAST_START_MTTR_TARGET har ställts in till ett annat värde än noll.
SQL> show parameter fast_start_mttr_target;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fast_start_mttr_target integer 1800
kontrollera Optimal gör om loggstorlek
om du har ställt in FAST_START_MTTR_TARGET, dvs. 1800 sekunder i det här fallet kan du få ett rådgivande värde för att optimera loggfilstorleken med den här frågan.
SQL> select target_mttr, estimated_mttr, optimal_logfile_size from v$instance_recovery;
TARGET_MTTR ESTIMATED_MTTR OPTIMAL_LOGFILE_SIZE
----------- -------------- --------------------
146 21 1469
som du kan se är den tredje kolumnen OPTIMAL_LOGFILE_SIZE svaret. Oracle rekommenderar att du ställer in loggstorleken på 1469 MB.
Nästa, vi kan behöva ändra storlek gör loggar för att överensstämma med den rekommenderade storleken.
B. är alla Arkivloggar lika stora?
oftast har arkiverade loggar samma storlek, men de kan påverkas av följande faktorer.
gör alla gör loggar definieras som samma storlek?
även om vi bör definiera alla redo log grupper och medlemmar som samma storlek, kan du se olika storlekar bland redo loggar definieras i några databaser. Vanligtvis läggs de större gör om loggarna efter skapandet av databasen. Det är därför vi såg olika storlek arkiverade loggar.
har du någonsin ställt in loggväxlingsintervall?
Log växling kan göras med ett fast intervall genom att ställa ARCHIVE_LAG_TARGET initiering parameter för att hjälpa dig att styra arkivfrekvensen.
om parametern är inställd annan än standardvärdet (0, inaktiverad), kommer en del loggbyte att ske innan du gör om loggar fylls. Sådana för tidiga redo loggar gör olika storlek arkiverade loggar.
rman Backup
förutom att ställa in loggväxlingsintervall, kommer en databasbackup med arkiverade loggar av RMAN att utlösa loggbyte. Till exempel vill vi ha en fristående fullständig säkerhetskopia så här:
RMAN> backup database plus archivelog;
Starting backup at 27-JUN-16
current log archived
...
Starting backup at 27-JUN-16
current log archived
...
som du kan se arkiverades 2 redo-loggar av RMAN, före och efter den fullständiga säkerhetskopian. De är mindre än definierad storlek.
C. Hur kontrollerar jag Arkivloggens storlek?
låt oss nu gå tillbaka till vårt huvudämne, hur man kontrollerar arkivloggstorleken i databasen?
storlek på varje Arkiverad logg
för att se storleken på varje Arkiverad logg, frågar vi V$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
...
storleken på varje enskild arkivlogg kan beräknas från att multiplicera block med BLOCK_SIZE-kolumnen. Dessutom beräknade vi bara arkiverade loggar som är färdiga på 24 timmar och tillgängliga i den primära databasen.
som du kan se är inte alla arkivloggar i samma storlek, de flesta arkiverade loggar är i 1024MB (dvs 1GB).
storlek på alla arkiverade loggar
alla tillgängliga
för att se den totala storleken på tillgängliga arkiverade loggar i den primära databasservern kan vi göra det här:
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
som vi kan se har vi över 400 GB arkiverade loggar, vi borde ta bort dem mer aggressivt från och med nu.
senaste 24 timmarna
för att sammanfatta all tillgänglig Arkiverad loggstorlek under de senaste 24 timmarna i den primära databasservern kan vi göra det här:
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
vi lade till ett filter för att begränsa tidsomfånget för arkiverade loggar.