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 :

Partitionner des tables existantes


Sujet :

Administration Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 90
    Points : 59
    Points
    59
    Par défaut Partitionner des tables existantes
    Bonjour,

    Je me documente actuellement sur le partitionnement, que j'envisage à moyen terme sur certaines grosses tables de notre base de production (9i).
    Il ne semble pas exister une commande ALTER TABLE permettant de partitionner une table non encore partitionnée.

    Pour l'instant, j'ai l'impression que pour fractionner ma table TOTO, je devrai :
    1) Créer une table TOTO_TEMP, copie de TOTO
    2) Supprimer ma table TOTO, et la recréer avec les clauses de partionnement
    3) Réinsérer dans TOTO les données de TOTO_TEMP

    Existe-t-il un moyen plus rapide et plus simple ?

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Tu peux créer un index partitionné qui fonctionne tout aussi bien et qui ne t'oblige pas à recréer ta table

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 90
    Points : 59
    Points
    59
    Par défaut
    C'est-à-dire partionner uniquement l'index sur le champ en fonction duquel j'aurais partitionné la table , et laisser la table elle-même comme elle est ?

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Pas tout à fait, tu ne partitionnes pas un index, mais tu recrées l'index en spécifiant plusieurs partitions

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 90
    Points : 59
    Points
    59
    Par défaut
    Oui, je le comprenais bien comme ça
    Mais dans la doc Oracle, ils ne parlent quasiment que des tables
    Comment crées-tu un index en spécifiant plusieurs partitions ?

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE INDEX matable_part ON matable(colonne)
    GLOBAL PARTITION BY RANGE (colonne)
      (
        PARTITION part_1 VALUES LESS THAN (100000), 
        PARTITION part_2 VALUES LESS THAN (2000000), 
        PARTITION part_max VALUES LESS THAN (MAXVALUE)
      )

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 90
    Points : 59
    Points
    59
    Par défaut
    Merci beaucoup je vais tester ça !!
    Je voudrais essayer aussi la méthode BY HASH.

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    c'est l'inconvénient du partitionnement par index et non sur la table... le BY HASH est impossible

    mais quand la table est pleine (et a priori a bcp de lignes pour nécessiter un partitionnement) c'est assez compliqué de la copier

  9. #9
    Membre éclairé

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2003
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 701
    Points : 710
    Points
    710
    Billets dans le blog
    1
    Par défaut
    oui mais si le champ prévu pour partitionner la table n' est pas indexée
    et figure pourtant dans les clauses where des requêtes
    il est bien préférable de partitionner la table non ?
    (surtout si on peut mettre les partitions dans des tablespaces différents)

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 90
    Points : 59
    Points
    59
    Par défaut
    Ah Voilà pourquoi je ne trouvais pas d'exemples

    Donc, autrement dit, il vaut mieux prévoir dès la conception le partitionnement des tables Pas toujours évident

    Finalement, mes tables n'ont peut-être pas tant besoin que ça d'être partitionnées Les plus grosses font 1 à 2 Go et plusieurs millions de lignes Est-ce qu'elles sont candidates pour le partitionnement ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 90
    Points : 59
    Points
    59
    Par défaut
    Oui ducho, je m'étais posé exactement la même question !
    Le partitionnement de la table semble dans certains cas être la seule solution...

  12. #12
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par zestrellita
    Finalement, mes tables n'ont peut-être pas tant besoin que ça d'être partitionnées Les plus grosses font 1 à 2 Go et plusieurs millions de lignes Est-ce qu'elles sont candidates pour le partitionnement ?
    A mon avis ça peut effectivement être une solution mais pour moins le partitionnement reste la solution de la dernière chance

  13. #13
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par ducho
    oui mais si le champ prévu pour partitionner la table n' est pas indexée
    et figure pourtant dans les clauses where des requêtes
    il est bien préférable de partitionner la table non ?
    (surtout si on peut mettre les partitions dans des tablespaces différents)
    Bah c'est tout l'intérêt de l'index partitionné... Sur les tables volumineuses un index classique peut ne pas être intéressant mais çà n'empêche pas d'indexer sur la colonne... dans ce cas on fait un index partitionné qui sera toujours plus performant qu'une table partitionné sans index

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 90
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par orafrance
    A mon avis ça peut effectivement être une solution mais pour moins le partitionnement reste la solution de la dernière chance
    D'accord orafrance, cela me confirme dans le fait que ma base n'a pas de problèmes de performances au point de nécessiter un partitionnement.

    Merci encore pour tous ces éclaircissements.

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

Discussions similaires

  1. Partitionner des tables pendant l'import
    Par pat29 dans le forum Administration
    Réponses: 1
    Dernier message: 03/12/2007, 18h00
  2. Liste des tables existantes dans une base de données
    Par Lorenzole+bo dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/11/2007, 20h15
  3. Liste des tables existantes access, C#
    Par Pynuch dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/10/2007, 16h09
  4. Nouvelle bdd basée sur des tables existantes
    Par alyphe dans le forum Juridique
    Réponses: 6
    Dernier message: 04/07/2007, 11h12
  5. [MySQL] Comment connaître les noms des tables existantes
    Par Cygnus Saint dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/03/2006, 20h26

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