RMAN Trace 10046
Introduction
Après avoir vu qu'on pouvait lancer RMAN en mode debug ("RMAN en mode débug"), nous allons étudier maintenant la trace 10046 RMAN. Car oui, on peut aussi lancer une trace 10046 sous RMAN pour étudier ce qui se passe lors d'une sauvegarde. Attention, tout comme pour le fichier de debug, ne vous faites pas d'illlusion, il est très difficile à interpréter, ce sont des SELECTs par dizaines dans le MPD d'Oracle et le fichier de trace servira surtout au support. Néanmoins, si vous vous sentez l'âme d'un explorateur RMAN, vous allez certainement bien vous amuser à le lire :-)
Points d'attention
N/A.
Base de tests
Une base Oracle 18c multi-tenants.
Exemples
============================================================================================
Lancement de RMAN en mode trace
============================================================================================
Attention si vous regardez les dates du fichier et du code ci-dessous : elles diffèrent... J'ai malencontreusement effacé le texte original de mon article et donc j'ai dû relancer les commandes RMAN. Je l'ai refait le 03 Juillet, quelques jours après la création du fichier de trace; comme j'y avais déjà mis mes commentaires, je n'ai pas voulu le recréer et y recopier mes commentaires... Donc il y a un décalage de date entre les deux fichiers mais bon, ce n'est pas l'objectif de cet article.
On lance RMAN et on modifie la session pour générer la trace 10046, en mode 12.
Vous noterez le "select 'RMAN SQL TRACE FILE' from dual;". Il va me permettre d'identifier le fichier de trace dans un répertoire contenant des dizaines d'autres fichiers, mais aussi, dans le fichier de trace proprement dit, de voir TOUT ce que Oracle fait avant de lancer le backup : et c'est énoooorme!
[oracle@vbgeneric ~]$ rman target SYS@orcl12c
connected to target database: ORCL12C (DBID=768045447)
RMAN> alter session set events '10046 trace name context forever, level 12';
using target database control file instead of recovery catalog
Statement processed
RMAN> select 'RMAN SQL TRACE FILE' from dual;
'RMANSQLTRACEFILE'
-------------------
RMAN SQL TRACE FILE
Je fais un backup du fichier de contrôle, qui va en plus déclencher un autobackup de ce même fichier et du spfile.
RMAN> backup current controlfile;
Starting backup at 03-JUL-20
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=36 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 03-JUL-20
channel ORA_DISK_1: finished piece 1 at 03-JUL-20
piece handle=/u01/app/oracle/fast_recovery_area/orcl12c/ORCL12C/backupset/2020_07_03/o1_mf_ncnnf_TAG20200703T110613_hhylc6t1_.bkp tag=TAG20200703T110613 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 03-JUL-20
Starting Control File and SPFILE Autobackup at 03-JUL-20
piece handle=/u01/app/oracle/fast_recovery_area/orcl12c/ORCL12C/autobackup/2020_07_03/o1_mf_s_1044788776_hhylc8wh_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 03-JUL-20
RMAN> exit;
Recovery Manager complete.
Une fois sorti de RMAN, on va dans le répertoire des traces, défini dans la vue V$DIAG_INFO enregistrement "Diag Trace".
SQL> select name, value from v$diag_info order by value;
NAME VALUE
------------------------------ ---------------------------------------
ADR Base /u01/app/oracle
ADR Home /u01/app/oracle/diag/rdbms/orcl12c/orcl12c
Diag Alert /u01/app/oracle/diag/rdbms/orcl12c/orcl12c/alert
Diag Cdump /u01/app/oracle/diag/rdbms/orcl12c/orcl12c/cdump
Health Monitor /u01/app/oracle/diag/rdbms/orcl12c/orcl12c/hm
Diag Incident /u01/app/oracle/diag/rdbms/orcl12c/orcl12c/incident
Diag Trace /u01/app/oracle/diag/rdbms/orcl12c/orcl12c/trace
Default Trace File /u01/app/oracle/diag/rdbms/orcl12c/orcl12c/trace/orcl12c_ora_4460.trc
Active Problem Count 0
Active Incident Count 0
Diag Enabled TRUE
11 rows selected.
Identification du bon fichier de traces grâce à notre Select "bidon" puis utilisation de tkprof dessus pour avoir une trace plus lisible que la trace brute.
[oracle@vbgeneric ~]$ grep -i 'RMAN SQL TRACE FILE' /u01/app/oracle/diag/rdbms/orcl12c/orcl12c/trace/*
/u01/app/oracle/diag/rdbms/orcl12c/orcl12c/trace/orcl12c_ora_4210.trc:select 'RMAN SQL TRACE FILE' from dual
/u01/app/oracle/diag/rdbms/orcl12c/orcl12c/trace/orcl12c_ora_4210.trc: value="RMAN SQL TRACE FILE"
[oracle@vbgeneric ~]$ tkprof /u01/app/oracle/diag/rdbms/orcl12c/orcl12c/trace/orcl12c_ora_4210.trc /u01/app/oracle/diag/rdbms/orcl12c/orcl12c/trace/orcl12c_ora_4210.txt
TKPROF: Release 12.2.0.1.0 - Development on Fri Jul 3 11:13:50 2020
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
[oracle@vbgeneric ~]$
============================================================================================
Le fichier de trace 10046
============================================================================================
Comme précisé auparavant, le fichier est long (7300 lignes), avec énormément de SELECTs internes à Oracle sur l'environnement de la base, les tables RMAN etc etc. Je le mets en picèe jointe car il est trop long pour être copié ici.
J'ai mis quelques commentaires (faire une recherche sur -- COMMENT --) mais bon, ce qui est intéressant c'est de voir qu'avec Oracle on accède, via des outils, à ses "entrailles" (désolé... mais je ne vois pas d'autre mot plus imagé).
Le fichier de trace 10046
RMAN_Trace_10046_Commentaires