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

Administration Oracle Discussion :

Mise en variable des résultats d'une requête


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Par défaut Mise en variable des résultats d'une requête
    Bonjour à tous !

    Contexte

    J'ai actuellement un mini projet de réorganisation de tables Oracle dans un environnement SAP.
    Nous devons reconstruire fréquemment les index de certaines de nos tables et nous avons décidé de planifier cela toutes les semaines via un ordonnanceur.
    Cet ordonnanceur ne comprend que le shell et le script doit être dynamique pour s'adapter à toutes les tables.

    Mis en place

    J'ai donc récupéré mes commandes Oracle de Rebuild Index que j'ai collé dans un KSH.
    A présent, je dois connaitre les noms des index que contiennent chacune de mes tables. Pas de soucis, une requête SQL fait sa très bien.

    Question

    Le résultat de ma requête me donne donc NOM_TABLE~1 NOM_TABLE~2 NOM_TABLE~3 NOM_TABLE~4 NOM_TABLE~5
    Est ce qu'une commande SQL me permet de mettre chacun de mes noms d'index dans une variable ?

    Etant dans un environnement KSH, je pourrai exporter tout le résultat de la requête dans une seule variable et ensuite travailler avec des sous-chaînes pour extraire chacun de mes index mais je n'ai pas envie de monter une usine à gaz étant donné mes connaissances limitées en KSH...

    Merci par avance pour vos propositions

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Citation Envoyé par shanod Voir le message
    Bonjour à tous !

    Contexte

    J'ai actuellement un mini projet de réorganisation de tables Oracle dans un environnement SAP.
    Nous devons reconstruire fréquemment les index de certaines de nos tables et nous avons décidé de planifier cela toutes les semaines via un ordonnanceur.
    Il y a une raison à ce rebuild systématique, plutôt qu'à un bête coalesce ?

    Question

    Le résultat de ma requête me donne donc NOM_TABLE~1 NOM_TABLE~2 NOM_TABLE~3 NOM_TABLE~4 NOM_TABLE~5
    Est ce qu'une commande SQL me permet de mettre chacun de mes noms d'index dans une variable ?
    De toute façon, tes "variables" seront des variables shell, donc le SQL n'a pas grand chose à voir ?
    Par contre sous Oracle, tu pourrais (devrais ?) gérer tout ceci en PL/SQL avec une procédure stockée (ton ksh se limitant à lancer la procédure). Là, effectivement, tu peux stocker tes informations facilement, et faire tout ce que tu veux dans ta base avec.

  3. #3
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut,

    Effectivement en PL, c'est mieux comme dit Rei.

    La clef de ton problème : EXECUTE IMMEDIATE + TaRequeteSousChaineDeCaracteres.

    Tu peux lancer ça à l'intérieur de ton curseur qui parcourt dba_indexes...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Par défaut
    Citation Envoyé par Rei Ichido Voir le message
    Il y a une raison à ce rebuild systématique, plutôt qu'à un bête coalesce ?
    Je ne connais pas la commande coalesce, mais d'après ce que j'en lis il s'agit d'une optimisation de l'espace libre, et cela doit prendre pas mal de temps...

    Alors que nous n'avons qu'une seule table qui est très sollicitée et nécessite une réorg des index et des statistiques régulièrement pour garder des temps de réponse satisfaisant.

    Ceci dit, c'est exactement le genre de réponse que j'attends Rei
    N'étant pas du tout DBA, je me dis qu'il existe peut être une commande Oracle qui me permettrai d'éviter d'avoir à retravailler le résultat de ma requête.

  5. #5
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    De ce que j'ai pu voir et lire, dans le cas général les rebuilds systématiques d'index à intervalle régulier ne sont pas nécessaires. Je parle bien ici d'un rebuild lié au temps, et non à des imports massifs - mais en l'occurrence, dans ce ce cas là, c'est parce qu'on désactive l'index dans un premier temps.

    Je te suggère de tester sur un environnement iso-prod (si tu as ça sous la main) ce qui se passe si tu ne rebuild pas, mais fais simplement du coalesce + calcul stats ?

    Dernier point, au sujet du temps : la consommation d'un coalesce est moindre vis à vis d'un rebuild.

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/01/2010, 11h25
  2. Mise en forme des résultats d'une requête
    Par mhamedbj dans le forum VBA Access
    Réponses: 5
    Dernier message: 04/06/2008, 16h44
  3. Réponses: 2
    Dernier message: 02/12/2005, 21h21
  4. Pagination des résultats d'une requête
    Par dl_jarod dans le forum ASP
    Réponses: 2
    Dernier message: 17/10/2005, 14h30
  5. Calcul à partir des résultats d'une requète
    Par Sendo dans le forum Access
    Réponses: 1
    Dernier message: 29/09/2005, 17h46

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