Vos recrutements informatiques

700 000 développeurs, chefs de projets, ingénieurs, informaticiens...

Contactez notre équipe spécialiste en recrutement

Developpez.com - Oracle
X

Choisissez d'abord la catégorieensuite la rubrique :


Dump des fichiers Redo

Date 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 :

  1. Dump basé sur le DBA (Data Block Address)
  2. Dump basé sur le RBA (Redo Block Address)
  3. Dump basé sur le temp
  4. Dump basé sur la couche et l'opcode
  5. Dump de l'entête du fichier redo
  6. 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;
info 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';
info 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';


Valid XHTML 1.1!Valid CSS!

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.
Contacter le responsable de la rubrique Oracle