IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Adresse de bloc - Conversion hexadecimal en numerique


Sujet :

Oracle

  1. #1
    Membre éprouvé
    Inscrit en
    Février 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 97
    Par défaut Adresse de bloc - Conversion hexadecimal en numerique
    Bonjour,

    je cherche une fonction ou utilitaire me permettant de convertir les adresses relative de bloc (relative dba) hexadecimal en numerique. La rdba continet la File ID (numero du fichier) et le numero de bloc.
    ex Dump de bloc:
    rdba: 0x32807bb0

    Parfois ces infos sont donnees entre parenthese a cote du code hexadecimal mais pas toujours, par ex dans le cas d'une trace generee pas un Analyze Validate structure.

  2. #2
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    Chaque bloc oracle est identifié par un numéro unique qui est la combinaison d'un numéro de fichier et d'un numéro de bloc. Cette combinaison est representée par RDBA (Relative Data Block Address).


    Pour connaître le RDBA du bloc 7 contenu dans le fichier 5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL> select dbms_utility.make_data_block_address( 5, 7) from dual;
    Pour trouver la valeur en hexadecimal de 20971527 :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SQL> select to_char(dbms_utility.make_data_block_address( 5, 7),'xxxxxxxx') from dual;
     
    1400007
    Donc, 1400007 est le RDBA du bloc de données 7 qui se trouve dans le fichier 5.

    EDIT : pour ton cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SQL> select to_number('32807bb0','xxxxxxxx') from dual;
     
    TO_NUMBER('32807BB0','XXXXXXXX')
    --------------------------------
                           847281072
     
    SQL> select to_char(847281072,'XXXXXXXX') from dual;
     
    TO_CHAR(8
    ---------
     32807BB0
     
    SQL>

  3. #3
    Membre éprouvé
    Inscrit en
    Février 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 97
    Par défaut
    Merci bouyao, on s'approche mais ce que je cherche c'est le contraire, obtenir la file ID et le numero de bloc a partir de la rdba.

    il y a bien les procedures
    DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK (dba NUMBER)
    RETURN NUMBER;
    DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE (dba NUMBER)
    RETURN NUMBER;

    mais les rdba que j'ai sont loin d'etre de type number:
    rdba: 0x07805c89

  4. #4
    Membre éprouvé
    Inscrit en
    Février 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 97
    Par défaut
    OK, parfait avec ton edit et mes procedures, je m'en sors.

    merci!

  5. #5
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    Alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    SQL> select to_number('32807bb0','xxxxxxxx') from dual;
     
    TO_NUMBER('32807BB0','XXXXXXXX')
    --------------------------------
                           847281072
     
    SQL> select DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK (847281072) from dual;
     
    DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(847281072)
    ------------------------------------------------
                                               31664
     
    SQL> select DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(847281072) from dual;
     
    DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(847281072)
    -----------------------------------------------
                                                202
     
    SQL>
    Donc c'est le bloc 31664 dans fichier numéro : 202

    Pour mon exemple
    :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SQL> select to_number('1400007','XXXXXXXX') from dual;
     
    TO_NUMBER('1400007','XXXXXXXX')
    -------------------------------
                           20971527
     
    SQL> select DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(20971527) from dual;
     
    DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(20971527)
    ----------------------------------------------
                                                 5
     
    SQL> select DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(20971527) from dual;
     
    DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(20971527)
    -----------------------------------------------
                                                  7
     
    SQL>
    et je trouve bien le bloc 7 dans le fichier 5

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conversion hexadecimal vers string
    Par acognard dans le forum C#
    Réponses: 1
    Dernier message: 16/10/2007, 16h30
  2. Conversion Hexadecimal to binaire
    Par marco80 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 02/05/2007, 10h35
  3. [DATE][CONVERSION] du type numerique au type date
    Par hamed dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/04/2005, 16h16
  4. pb conversion hexadecimal ascii en c++
    Par smag dans le forum C++
    Réponses: 7
    Dernier message: 27/02/2005, 12h05
  5. conversion hexadecimal en ansistring
    Par xamxeladog dans le forum C++Builder
    Réponses: 4
    Dernier message: 28/10/2004, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo