• Arun Kumar

Oracle Archivelog Mode

Oracle Database lets you save filled groups of redo log files to one or more offline destinations, known collectively as the archived redo log, or more simply the archive log. The process of turning redo log files into archived redo log files is called archiving. This process is only possible if the database is running in ARCHIVELOG mode.


Checking Archivelog Mode


Use below command to check the archivelog mode inside the oracle database

SQL> archive log list;

You can also use below command

SQL> SELECT LOG_MODE FROM SYS.V$DATABASE;


Set Archivelog Destination


You must set a destination for archivelog files

SQL> alter system set log_archive_dest_1='location=/u01/proddb/arch'


Enable Archivelog Mode


Please note that in order to enable archivelog mode, you must bounce the database

SQL> Shut immediate;
SQL> Startup mount;
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list;


Disable Archivelog Mode


The database must bounced even when you want to disable archivelog mode

SQL> shut immediate;
SQL> startup mount;
SQL> alter database noarchivelog;
SQL> alter database open;
SQL> archive log list;


Performing Log Switch


While your database is running in archivelog mode, you can perform force log switch. This will archive the current redo log file and force LGWR to start over-writing other redo log member

SQL> alter system switch logfile;


Enable Archivelog Mode in RAC


Let su check the db_recovery_file_dest_size parameter and add space to it

SQL> show parameter recovery;
SQL> alter system set db_recovery_file_dest_size = '20G' scope=both sid='*';
  • If DB_RECOVERY_FILE_DEST is set to disk group, LOG_ARCHIVE_FORMAT is ignored

  • If DB_RECOVERY_FILE_DEST is set to disk group location, LOG_ARCHIVE_FORMAT comes in effect

On Node 1
=========

ALTER SYSTEM SET log_archive_dest_1='location=+FRA/RAC/ARCH/' SCOPE=spfile;

ALTER SYSTEM SET log_archive_format='arch_%t_%s_%r.arc' SCOPE=spfile;

./srvctl stop database -d RAC

sqlplus / as sysdba
startup mount;
alter database archivelog;
alter database open;
select log_mode from v$database;


How to Estimate Archive Destination Space


The below query gives results of archive generation in oracle database. Use below query to find the archive space requirements and you can use it to estimate the archive destination size perfectly well

SELECT A.*, 
Round(A.Count#*B.AVG#/1024/1024/1024) Daily_Avg_gb 
FROM 
(SELECT 
To_Char(First_Time,'YYYY-MM-DD') DAY, 
Count(1) Count#, 
Min(RECID) Min#, 
Max(RECID) Max# 
FROM v$log_history 
GROUP 
BY To_Char(First_Time,'YYYY-MM-DD') 
ORDER 
BY 1 
) A, 
(SELECT 
Avg(BYTES) AVG#, 
Count(1) Count#, 
Max(BYTES) Max_Bytes, 
Min(BYTES) Min_Bytes 
FROM 
v$log ) B;

The above query will list total number of archives generated per day along with total size in GBs. You can easily get average archive size in GB per day and then multiply it with 30 to get archive destination space requirements for next 1 month!



543 views

Recent Posts

See All