Table of Contents
[HOWTO] Use logminer to query REDOLOGS
Description
Little document on how to use LogMiner to query REDOLOGS.
Enabling LogMiner
To start the LogMiner process, We must tell LogMiner which are the REDO's to be analysed, so the best option is just query the Online REDO's
col MEMBER format a60; col TYPE FORMAT A8 COL STATUS FORMAT A8 SELECT * FROM v$logfile ;
Or archived redo's:
SELECT NAME FROM GV$ARCHIVED_LOG WHERE NAME IS NOT NULL AND NAME LIKE '%2013_01_18%';
COL NAME FORMAT A150 ; SELECT RECID, STAMP, NAME, TO_CHAR(FIRST_TIME, 'MM-DD-YYYY HH24:MI:SS') , TO_CHAR(COMPLETION_TIME, 'MM-DD-YYYY HH24:MI:SS') FROM V$ARCHIVED_LOG WHERE NAME LIKE '%2014%' ORDER BY 1,2 ;
The date is an example
For example:
1* SELECT * FROM v$logfile GROUP# STATUS TYPE MEMBER IS_RECOVE ------------ -------- -------- ------------------------------------------------------------ --------- 8 ONLINE +DG_VXLPRE_DATA/ciberterminalpre/onlinelog/group_8.313.785158951 NO 8 ONLINE +DG_VXLPRE_FRA/ciberterminalpre/onlinelog/group_8.7459.785158955 YES 7 ONLINE +DG_VXLPRE_DATA/ciberterminalpre/onlinelog/group_7.312.785158943 NO 7 ONLINE +DG_VXLPRE_FRA/ciberterminalpre/onlinelog/group_7.7446.785158947 YES 6 ONLINE +DG_VXLPRE_DATA/ciberterminalpre/onlinelog/group_6.311.785158933 NO 6 ONLINE +DG_VXLPRE_FRA/ciberterminalpre/onlinelog/group_6.7429.785158937 YES 5 ONLINE +DG_VXLPRE_DATA/ciberterminalpre/onlinelog/group_5.310.785158925 NO 5 ONLINE +DG_VXLPRE_FRA/ciberterminalpre/onlinelog/group_5.7444.785158929 YES 4 ONLINE +DG_VXLPRE_DATA/ciberterminalpre/onlinelog/group_4.309.785158915 NO 4 ONLINE +DG_VXLPRE_FRA/ciberterminalpre/onlinelog/group_4.7440.785158919 YES 3 ONLINE +DG_VXLPRE_DATA/ciberterminalpre/onlinelog/group_3.308.785158905 NO 3 ONLINE +DG_VXLPRE_FRA/ciberterminalpre/onlinelog/group_3.7478.785158911 YES 2 ONLINE +DG_VXLPRE_DATA/ciberterminalpre/onlinelog/group_2.307.785158895 NO 2 ONLINE +DG_VXLPRE_FRA/ciberterminalpre/onlinelog/group_2.7465.785158903 YES 1 ONLINE +DG_VXLPRE_DATA/ciberterminalpre/onlinelog/group_1.306.785158857 NO 1 ONLINE +DG_VXLPRE_FRA/ciberterminalpre/onlinelog/group_1.7474.785158885 YES
This will help you:
SELECT 'EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LogFileName => ''' || MEMBER || ''', Options => dbms_logmnr.ADDFILE ) ;' FROM v$logfile;
and:
SELECT 'EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LogFileName => ''' || NAME || ''', Options => dbms_logmnr.ADDFILE ) ;' FROM GV$ARCHIVED_LOG WHERE NAME LIKE '%2013%';
You can ignore the FRA one's (or not, LogMiner will show you a nice ORA-01289 dupe log:-P):
So we begin adding REDO's, the 1st must use the NEW procedure from DBMSLOGMNR: <code> EXECUTE DBMSLOGMNR.ADDLOGFILE( - LogFileName ⇒ '+DGVXLPREDATA/ciberterminalpre/onlinelog/group8.313.785158951', -
Options => dbms_logmnr.NEW);
</code>
And the rest with the ADDFILE procedure:
EXECUTE DBMS_LOGMNR.ADD_LOGFILE( - LogFileName => '+DG_VXLPRE_FRA/ciberterminalpre/onlinelog/group_8.7459.785158955', - Options => dbms_logmnr.ADDFILE ) ;
And so on…
Starting the process:
EXECUTE DBMS_LOGMNR.START_LOGMNR( OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
Now you can query the V$LOGMNR_CONTENTS table
SELECT * FROM V$LOGMNR_CONTENTS where rownum <10;
More complex query:
COL OPERATION FORMAT A15; COL USERNAME FORMAT A15; COL OS_USERNAME FORMAT A20; COL MACHINE_NAME FORMAT A20; COL SESSION_INFO FORMAT A15 WORD WRAPPED; SELECT SCN, OPERATION, USERNAME, OS_USERNAME, MACHINE_NAME, SESSION_INFO, to_char(TIMESTAMP,'DD-MM-YYYY HH24:MI:SS') MONGUITIME FROM V$LOGMNR_CONTENTS where SEG_NAME LIKE 'IT_TBUFFER_QUEUE' AND to_char(TIMESTAMP,'DD-MM-YYYY HH24:MI:SS') LIKE '18-01-2013 11%' AND ROWNUM <50 ;
Add the “SQL_REDO” field if you want to obtain the query
Finish the LogMiner process when done:
EXECUTE DBMS_LOGMNR.END_LOGMNR();