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 :

oracle 8i, ROWID et date de création d'un enreg


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    VVE
    VVE est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 72
    Par défaut oracle 8i, ROWID et date de création d'un enreg
    Salut à toutes et à tous,

    J'ai un pb pour rechercher l'historique des créations des enreg dans une table.

    Je n'ai pas prévu de champ TIMESTAMP, et cependant, pour coirriger des données anciennes qui sont erronnées, j'aurais besoin de retrouver toutes les lignes qui ont été créées (voire modifiées) à une certaine date.


    Apparemment en Oracle 10, il existe une pseudo colonne ORA_ROWSCN qui semble nous permettre de retrouver ce genre d'info. Mais en Oracle 8i, cette information n'existe pas.

    Je cherche donc à utiliser une autre pseudo colonne, et notamment ROWID.

    Y-a-t'il un moyen, en me basant sur le ROWID, de retrouver la date de création de l'enregistrement (même de façon approximative) ?

    Merci de votre aide

    Vincent

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Hélas, non sauf si on utilise LogMiner mais c'est lourd .... .

  3. #3
    VVE
    VVE est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 72
    Par défaut

    Je m'en doutais un peu...

    Mais est-ce qu'en comparant les ROWID issus de deux tables différentes, je peux situer dans le temps les enreg ?

    Mon idée est la suivante : j'ai une table A sans champ horodatage, une table B avec un champ horodatage.
    En comparant le ROWID des enreg de A et les ROWID des enreg de B est-ce que cela pourrait me permettre de situer dans le temps les enreg de A ?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Non, je ne ne pense pas. Le format interne du ROWID dépend entre autres du bloc dans lequel se situe la ligne. Or je ne vois pas comment mettre en correspondance le choix d'un bloc dans un extent lors d'un INSERT avec le temps ou avec une autre table

  5. #5
    VVE
    VVE est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 72
    Par défaut
    Salut,

    Mon idée était de comparer deux données situées dans un même bloc (voire même un bloc "proche") dont une possède par ailleurs un horodatage (champ explicite dans la table). Mais je ne suis pas du tout sûr de la faisabilité.

    Je ne connais pas suffisamment la façon dont sont gérer ces blocs entre les différentes tables et même entre les différents enreg d'une table.

    En parcourant la doc et notamment la description du contenu du ROWID, j'ai imaginé pouvoir utiliser cette valeur, mais, je l'avoue, c'est un peu tordu comme démarche.

    Je crois que je vais me faire à l'idée que mon pb n'a pas de solution, et je vais, désormais, ajouter systématiquement des champs d'horodatage dans mes tables (date_creation et date_modification) !!!




    Vincent

  6. #6
    Membre chevronné Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Par défaut
    Non, non imaginer que deux rowid proche ont été inséré a une date proche est faux. Ça peut être le cas mais il y a trop de contre exemple pour faire un système fiable la dessus.

    Imagine une table toute simple initialement vide:

    Tu la remplies à T1 Ligne 1
    T2 Ligne 2
    T3 Ligne 3

    Jusque là tout se passe bien Oracle remplie dans l'ordre et donc les ROWID sont dans l'ordre des dates de création.

    Et puis, on supprime les lignes 1 et 2 avant d'insérer une ligne 4. Et là.....

    Suivant les cas Oracle mettra la ligne 4 après la ligne 3 et on continuera à avoir les ROWID et les dates de création dans le même ordre mais Oracle peut aussi bien décider de réutiliser l'espace libéré et donc de mettre la ligne 4 au à la place de la ligne 1 et donc patatra. Rien ne va plus ! ! !

    C'est un exemple parmi d'autre pour dire que le ROWID n'est pas du tout un bon indicateur pour faire de l'horodatage.

    Hope this helps

Discussions similaires

  1. Réponses: 11
    Dernier message: 26/02/2009, 15h50
  2. [requete] Date de création d'une base oracle.
    Par Cyborg289 dans le forum Oracle
    Réponses: 2
    Dernier message: 14/02/2006, 11h14
  3. Réponses: 17
    Dernier message: 01/03/2005, 16h11
  4. Date de création d'un fichier
    Par daphne35 dans le forum Windows
    Réponses: 5
    Dernier message: 20/01/2005, 17h09
  5. Réponses: 4
    Dernier message: 16/04/2004, 08h20

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