Dump des fichiers RedoDate de publication : le 26 Septembre 2005
Par
Mohammed Bouayoun
Dans cet Article
I. Introduction
II. Dump basé sur le DBA (Data Block Address)
III. Dump basé sur le RBA (Redo Block Address)
IV. Dump basé sur le temps
V. Dump basé sur la couche et l'opcode.
VI. Dump des informations de l'entête du fichier
VII. Dump du fichier redo en entier
I. Introduction
Les informations dans les fichiers redo sont souvent très utile pour diagnostiquer les problèmes de corruption.
On utilise les commandes suivantes :
- La commande 'alter session' est utilisé pour décharger l'en-tête dur fichier redo.
- On utilise 'alter system dump logfile' pour décharger le contenu du fichier redo.
Cette commande nécessite le privilège système ALTER SYSTEM. La base peut être en mode mount, nomount ou open quand la commande est lancé. Un fichier redo en ligne ou archivé peut être déchargé. Il est possible de faire un dump d'un fichier d'une autre base, tant que l'OS est le même.
La sortie de la commande est mise dans le fichier trace de la session.
Les differents façons pour faire un dump du fichier redo sont :
- Dump basé sur le DBA (Data Block Address)
- Dump basé sur le RBA (Redo Block Address)
- Dump basé sur le temp
- Dump basé sur la couche et l'opcode
- Dump de l'entête du fichier redo
- Dump du fichier redo en entier
II. Dump basé sur le DBA (Data Block Address)
Cela, déchargera tous les enregistrements redo dans un rangée de
blocs de données specifié par file# et bloc#..
A partir de SQL, en lance la commande suivante :
ALTER SYSTEM DUMP LOGFILE 'filename'
DBA MIN fileno . blockno
DBA MAX fileno . blockno; |
Exemple:
ALTER SYSTEM DUMP LOGFILE 'u01/oracle/V10.2/dbs/arch1_76.dbf'
DBA MIN 5 . 31125
DBA MAX 5 . 31150; |
III. Dump basé sur le RBA (Redo Block Address)
Ici, on décharge tous les enregistrements redo entre deux adresses redo spécifiés par
un numéro de séquence et un numéro de bloc.
ALTER SYSTEM DUMP LOGFILE 'filename'
RBA MIN seqno . blockno
RBA MAX seqno . blockno; |
Example:
ALTER SYSTEM DUMP LOGFILE 'u01/oracle/V10.2/dbs/arch1_76.dbf'
RBA MIN 2050 . 13255
RBA MAX 2255 . 15555; |
IV. Dump basé sur le temps
Cette option devrait provoquer la décharge des enregistrements redo crées entre
deux dates.
Pour décharger le fichier redo suivant les dates, on utilise la commande suivante :
ALTER SYSTEM DUMP LOGFILE 'filename'
TIME MIN value
TIME MAX value; |
Par exemple:
ALTER SYSTEM DUMP LOGFILE 'u01/oracle/V7323/dbs/arch1_76.dbf'
TIME MIN 299425687
TIME MAX 299458800; |
 |
La date est donnée dans la REDO DUMP TIME.
|
time = (((((yyyy - 1988)) * 12 + mm - 1) * 31 + dd - 1) * 24 + hh) * 60 + mi) * 60 + ss;
| YYYY |
année |
|
| mm |
mois |
01-12 |
| dd |
jours |
01-31 |
| hh |
heure |
00-23 |
| mi |
minute |
00-59 |
| ss |
seconde |
00-59 |
V. Dump basé sur la couche et l'opcode.
LAYER et OPCODE sont utilisés pour décharger tous les enregistrements d'un type particulier.
Depuis la commande SQL :
ALTER SYSTEM DUMP LOGFILE 'filename'
LAYER value
OPCODE value; |
Par exemple:
ALTER SYSTEM DUMP LOGFILE 'u01/oracle/V10.2/dbs/arch1_76.dbf'
LAYER 11
OPCODE 3; |
VI. Dump des informations de l'entête du fichier
Cette commande décharge les informations des entêtes de tous les fichiers redo en ligne.
A partir de SQL :
alter session set events 'immediate trace name redohdr level 10'; |
La commande décharge les entêtes de tous les fichiers journaux
DUMP OF LOG FILES: 3 logs in database
LOG FILE #1:
(name #3) D:\ORACLE\PRODUCT\10.2.0\ORADATA\B10G2\REDO01.LOG
Thread 1 redo log links: forward: 2 backward: 0
siz: 0x19000 seq: 0x00000053 hws: 0x4 bsz: 512 nab: 0xffffffff flg: 0x8 dup: 1
Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.00315ef2
Low scn: 0x0000.0031b9a8 10/23/2005 00:40:37
Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
FILE HEADER:
Compatibility Vsn = 169869568=0xa200100
Db ID=1483236283=0x586863bb, Db Name='B10G2'
Activation ID=1483223739=0x586832bb
Control Seq=2084=0x824, File size=102400=0x19000
File Number=1, Blksiz=512, File Type=2 LOG
descrip:"Thread 0001, Seq# 0000000083, SCN 0x00000031b9a8-0xffffffffffff"
thread: 1 nab: 0xffffffff seq: 0x00000053 hws: 0x4 eot: 1 dis: 0
reset logs count: 0x21d964be scn: 0x0000.00085bc4
Low scn: 0x0000.0031b9a8 10/23/2005 00:40:37
Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
Enabled scn: 0x0000.00085bc4 09/01/2005 20:40:30
Thread closed scn: 0x0000.0031fb40 10/23/2005 08:58:17
Disk cksum: 0x5c30 Calc cksum: 0x5c30
Terminal Recovery Stop scn: 0x0000.00000000
Terminal Recovery Stamp 01/01/1988 00:00:00
Most recent redo scn: 0x0000.00000000
Largest LWN: 0 blocks
Miscellaneous flags: 0x0
Thread internal enable indicator: thr: 0, seq: 0 scn: 0x0000.00000000 |

* DUMP OF LOG FILES: 3 logs in database
La ligne suivante montre que la base à 3 fichiers de journalisation.
* LOG FILE #1:
(name #3) D:\ORACLE\PRODUCT\10.2.0\ORADATA\B10G2\REDO01.LOG
C'est le nom du fichier de journalisation avec le chemin complet.
* Thread 1 redo log links: forward: 2 backward: 0
siz: 0x19000 seq: 0x00000053 hws: 0x4 bsz: 512 nab: 0xffffffff flg: 0x8 dup: 1
Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.00315ef2
Low scn: 0x0000.0031b9a8 10/23/2005 00:40:37
Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
Ces informations se trouve dans le fichier de contrôle.
Ici on'a deux informations intéressantes pour calculer la taille du fichier redo : siz et bsz.
Bsz est la taille d'un bloc et siz est le nombre de blocs dans le fichier redo.
Dans cette exemple la taille du fichier redo exacte est 52429312 (taille OS, on peut le verifier par les commandes OS comme ls sous unix ou dir sous dos).
D'après le fichier trace la taille du fichier redo est egale à siz x bsz = 102400 x 512 = 52428800 (car 0x19000 est égale à 102400 en décimal). Et on remarque qu'il manque un bloc 52429312 - 52428800 = 512 . Tout simplement le bloc manquant est celui de l'entête du fichier redo qui contient des informations OS. Enfin, la taille exacte du fichier est (siz + 1) x bsz.
seq: 0x00000053 c'est le numéro de sequence du fichier redo, en décimal c'est 83=5*16+3.
hws: 0x4 c'est header write seq#
nab: 0xffffffff le prochain bloc disponible (next available block)
flg: 0x8 c'est le type de fichier (ici un fichier redo en ligne). Le drapeau peut prendre les valeurs suivantes :
- KCCLESPL 0x0001 /* si le fichier redo est spooled */
- KCCLENAL 0x0002 /* set if No more ALlocation may be done in log */
- KCCLEUSM 0X0004 /* si c'est le prochain fichier redo en ligne (USM : Use Me) */
- KCCLECUR 0x0008 /* le fichier redo en ligne (CUR : current) */
- KCCLECLR 0x0010 /* si le fichier redo vient d'être initialiser par la commande CLEAR(CLR : CleaR) */
Low scn: 0x0000.0031b9a8 10/23/2005 00:40:37 c'est le SCN quand le fichier redo à commuter en Next scn: 0xffff.ffffffff 01/01/1988 00:00:00 . next scn est soit égale à low scn du prochain fichier redo ou 0xffff.ffffffff s'il est encore en ligne.
Dans la section FILE HEADER on'a :
Compatibility Vsn = 169869568=0xa200100 veut dire une base en 10.2.01
Db ID=1483236283=0x586863bb
Control Seq=2084=0x824, c'est le numéro de séquence du fichier de contrôle, ce numéro est nécessaire pour trouver le bon fichier de contrôle suite à une restauration.
File Type=2 LOG c'est le type du fichier, le type 2 veut dire un fichier redo.
- KCCTYPCF 1 /* control file */
- KCCTYPRL 2 /* redo log file */
- KCCTYPDF 3 /* vanilla db file */
- KCCTYPBC 4 /* backup control file */
- KCCTYPBP 5 /* backup piece */
- KCCTYPTF 6 /* temporary db file */
descrip:"Thread 0001, Seq# 0000000083, SCN 0x00000031b9a8-0xffffffffffff"
C'est un texte en ASCII juste une aide pour le deboguage.
thread: 1 nab: 0xffffffff seq: 0x00000053 hws: 0x4 eot: 1 dis: 0
thread : le numéro de thread pour ce fichier redo
nab : prochain bloc disponible
seq : le numéro de sequence du fichier redo
eot : indique si c'est le dernier log (End Of Thread). Il prend les valeurs suivantes :
- KCRFHENOT 0 /* NOT end of thread */
- KCRFHEPUB 1 /* End of thread for PUBLIC thread */
- KCRFHEPVT 2 /* End of thread for PRIVATE thread */
dis : DISabled - Vrai si le thread est désactivé à la fin de ce log.
VII. Dump du fichier redo en entier
A partir de SQL on peut lancer la commande suivante :
ALTER SYSTEM DUMP LOGFILE 'filename'; |
 |
Il faut entrer le nom complet du fichier redo entre les simples quotes.
|
Par exemple:
ALTER SYSTEM DUMP LOGFILE 'u01/oracle/V7323/dbs/arch1_76.dbf'; |
 
Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
|