0

J'ai besoin de votre suggestion sur la création d'une partition sur une table ayant des millions d'enregistrements.Partition sur une table existante avec des millions d'enregistrements

définitions de table

  1. COMPANYID
  2. Type_Of_Data
  3. emp_id
  4. Destination
  5. ID_destination

Maintenant ici pour une seule entreprise, le type de données et emp_id peut être différent

COMPANY_ID TYPE_OF_DATA EMP_ID 

A EMP_DATA   A1 
A EMP_DATA   A2 
A EMP_DATA   A3 
A EMP_DATA   A4 
A EMP_ADDRESS_DATA A1 
A EMP_ADDRESS_DATA A2 
A EMP_ADDRESS_DATA A3 
A EMP_ADDRESS_DATA A4 
B EMP_DATA   B1 
B EMP_DATA   B2 
B EMP_DATA   B3 
B EMP_DATA   B4 
B EMP_ADDRESS_DATA B1 
B EMP_ADDRESS_DATA B2 
B EMP_ADDRESS_DATA B3 
B EMP_ADDRESS_DATA B4 

Ma sélection de base sera sur company_id et type de données et emp_id

Je pensais à la création d'une liste - Hash Liste -Liste partition.

Quelqu'un peut-il suggérer quelque chose d'autre et comment ajouter une partition à la table existante sera utile

Répondre

1

Vous ne pouvez pas ajouter une partition existante à une table de « non-partitionized ». Vous devez créer une nouvelle table et y copier vos données. Jetez un oeil à DBMS_REDEFINITION qui vous aide à le faire sans aucun temps d'arrêt de votre application.

Une partition List-List composite serait celui-ci:

CREATE TABLE MY_TABLE 
(
COMPANY_ID VARCHAR2(100), 
TYPE_OF_DATA VARCHAR2(100), 
EMP_ID VARCHAR2(10), 
... 
) 
PARTITION BY LIST (COMPANY_ID) 
    SUBPARTITION BY LIST (TYPE_OF_DATA) SUBPARTITION TEMPLATE 
     (
     SUBPARTITION EMP VALUES ('EMP_DATA'), 
     SUBPARTITION EMP_ADDRESS VALUES ('EMP_ADDRESS_DATA'), 
     SUBPARTITION MISCELLANEOUS VALUES (DEFAULT) -- if needed 
     ) 
(
PARTITION COMPANY_A VALUES ('A'), 
PARTITION COMPANY_B VALUES ('B'), 
PARTITION COMPANY_C VALUES ('C'), 
PARTITION COMPANY_OTHER VALUES (DEFAULT) 
); 

Dans le cas où vous pouvez obtenir d'autres compagnies dans votre table envisager RANGE partition au lieu.

+0

Merci pour la Réponse: Pouvez-vous s'il vous plaît me dire comment ajouter une nouvelle partition et sous-partition à cette table? –

+0

Il suffit d'ajouter une partition 'ALTER TABLE MY_TABLE AJOUTER PARTITION COMPANY_D_TO_G VALEURS ('D', 'E', 'F', 'G');'. Les sous-partitions sont créées automatiquement comme définies par le modèle. –

+0

: Je veux dire si une autre sous-partition arrive comme EMP_SPOUSE, alors je ne veux pas qu'elle passe sous la sous-partition par défaut, alors comment vais-je l'ajouter, je demande parce que je dois faire cette dynamique –

0

Vous ne pouvez pas partitionner directement une table non partitionnée existante.Vous devrez créer une table intermédiaire/nouvelle table selon les méthodes suivantes pour partition:

  • DBMS_REDEFINITION

    1. Créer une table intérimaire partitionné
    2. Démarrez le processus Redéfinition
    3. Créer des contraintes et des index (dépendances)
    4. Terminez le processus de redéfinition
  • EXCHANGE PARTITION

    1. Créer une partitionné Destination Tableau
    2. ÉCHANGE PARTITION
    3. SPLIT PARTITION (Si nécessaire pour diviser seule grande partition en partitions plus petites)