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

SQL Oracle Discussion :

Requête sql permettant de localiser une table recement modifié [11g]


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2013
    Messages
    933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 933
    Points : 348
    Points
    348
    Par défaut Requête sql permettant de localiser une table recement modifié
    Bonjour,

    je me demandais une chose, j'ai un logiciel qui a été mise à jour (évolution ) et je suis en train de repérer les champs qui correspond à certaines parties du logiciel, exemple : état , date de création

    J'utilise sqldeveloper et je me demandais , existe t-il une requête qui parcours la base qui permets de :

    - sélectionner les tables qui ont été récemment modifié ( ajout d'enregistrement dans la table ), c'est à dire par exemple qui ont été modifié hier au 16/10/2018 pour mon cas .

    par exemple :
    mon logiciel affiche pour un enregistrement la dernière date de modification au 16/10/2018 et j'aimerais localiser dans toutes mes tables ( dont le champ s'appel date_modification ) correspondant à cette date, ce qui pourrait m'aider à localiser la table où sont enregistré les données.

    Merci à vous

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Tu peux lister les tables avec cette colonne, et faire un Select dessus en Execute Immediate pour compter le nb d'enreg en DBMS_OUTPUT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DECLARE
    	v NUMBER
    BEGIN
      FOR rt IN (SELECT table_name FROM user_tab_columns c
      WHERE column_name = 'DATE_MODIF' 
      AND NOT EXISTS (SELECT 1 FROM user_views v WHERE v.view_name = c.table_name) -- Pas les vues
      AND NOT EXISTS (SELECT 1 FROM user_objects v WHERE v.object_name = c.table_name AND (v.object_type = 'MATERIALIZED VIEW' OR TEMPORARY = 'Y')) -- Pas tables temporaires ni les MV
      ORDER BY table_name)
      LOOP
        EXECUTE IMMEDIATE 'SELECT count(*) FROM '|| rt.table_name ||' WHERE date_modif = to_date(''16/10/2018'', ''DD/MM/RRRR'')' INTO v;
    		DBMS_OUTPUT.put_line(rt.table_name ||CHR(9)|| v);
      END LOOP;
    END;
    PS : j'ai mis un séparateur chr(9) copier dans pour excel
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Si tu veux savoir si une table a été mise à jour dernièrement, tu peux utiliser la pseudo colonne ORA_ROWSCN.
    A partir du SCN le plus récent dans cette table, tu convertis pour avoir la date associée à ce SCN :-)

    Bien sur, si tu veux le faire sur TOUTES les tables d'un schéma, il faut faire une boucle et parcourir des vues comme user_tables ou dba_tables en filtrant sur tel ou tel user.

    Attention, ce champ est mis à jour automatiquement par Oracle, ça ne répondra pas à ta question si tu utilises une colonne applicative dans tes tables.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2013
    Messages
    933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 933
    Points : 348
    Points
    348
    Par défaut
    je ferme le sujet, celui ci netant plus d'actualité

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/08/2014, 18h07
  2. [2008] Requête SQL pour mettre à plat une table
    Par abbepierre94 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 11/02/2014, 13h04
  3. Requête SQL dynamique avec nom de table dans une variable
    Par jonjack dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 15/09/2011, 14h37
  4. Réponses: 2
    Dernier message: 29/05/2011, 22h15
  5. [SQL] Requête SQL permettant la création de tables
    Par lanje dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/01/2008, 19h08

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