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

PL/SQL Oracle Discussion :

Script utilisant une collection


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Par défaut Script utilisant une collection
    Bonjour,

    J'essaie de créer un script qui supprime tous les indexes d'un tablespace sans préciser le nom de chaque index puis qui applique un COALESCE sur le tablespace et enfin qui recrée tous ses indexes.

    En lisant le guide PL/SQL j'ai vu qu'il existait un objet collection, il faut donc stocker les indexes récupérer par la requête suivante:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT A.tablespace_name, A.table_name, A.index_name, U.column_name FROM ALL_INDEXES A, USER_CONS_COLUMNS U WHERE A.index_name = U.constraint_name ;
    dans une collection puis utiliser cette collection lors de la création des indexes.

    J'ai très peu de connaissance en PL/SQl donc je ne vois pas comment faire.

    Merci d'avance !

  2. #2
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonjour,

    Quelle version Oracle tu as ?
    et Standard ou Enterprise Edition ?

    Le tablespace est en Locally Managed tablespace ou Dictionnary ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Par défaut
    oracle 9i

    tablespace géré localement.

  4. #4
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    en LMT tu n'as pas besoin de faire un coalesce TABLESPACE

    Par contre un coalesce index peut etre ...

    mais pourquoi tu drop et crees les index ...??

    Dans quel but ...

    Il y a aussi la commande rebuild et online (Enterprise Edition ) ...

    Donc :

    tu peux faire coalesce des index
    ou rebuild enventuellement en ligne

    Mais pourquoi le faire ....

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Par défaut
    Car je dois proposer deux solutions,

    ma première solution a été la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    ALTER TABLESPACE nom_tbs COALESCE;
    ALTER INDEX rebuild tablespace nom_tbs;
    et la seconde est celle avec le DROP / CREATE sur les indexes.

  6. #6
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    D'abord

    Voir ceci

    http://asktom.oracle.com/pls/asktom/...:3679582396999

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    You can rebuild them as well -- BUT YOU RARELY, IF EVER NEED TO.  
     
    rebuilding indexes is 99% a waste of time.  You should work to find the 1% that might 
    sometime need it and ignore the rest.
    et cette discussion

    http://forums.oracle.com/forums/thre...art=0&tstart=0

    Apres

    Si tu dois vraiment faire ca :

    C'est des solutions qui lockent les tables, etc



    Tu peux essayer ca

    SOLUTION SQL (Enterprise Ed)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select 'ALTER INDEX '||OWNER||'.'|| index_name ||' REBUILD ONLINE TABLESPACE TBS_NAME ;' from dba_indexes
    where owner = 'UTILISATEUR';


    PLSQL (Enterprise Ed)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     
    BEGIN
    for x in (select * from dba_indexes where owner='UTILISATEUR')
    loop
    execute immediate 'ALTER INDEX '||x.WONER||'.'|| x.INDEX_NAME ||' REBUILD ONLINE TABLESPACE TBS_NAME';
    end loop;
    end;
    /

Discussions similaires

  1. Utiliser une collection dans plusieurs Userform
    Par citro dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/08/2014, 08h19
  2. créer et utiliser une collection probleme
    Par clem62173 dans le forum VB.NET
    Réponses: 5
    Dernier message: 28/04/2010, 09h41
  3. Pourquoi utiliser une Collections.synchronizedMap
    Par DevServlet dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 26/07/2009, 21h48
  4. [CR] Utiliser une collection comme source de données
    Par augereau dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 03/11/2006, 16h40
  5. [Configuration] Problème avec un script de login utilisant une session
    Par HNT dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/09/2005, 19h56

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