2017-03-03 4 views
-2

Quelqu'un peut-il m'aider à créer FRAGMENT BY RANGE (GENERATED_DATE) sur une table existante dans INFORMIX?CRÉER UN FRAGMENT PAR RANGE

J'ai essayé, mais je ne peux pas

ALTER FRAGMENT ON TABLE neura_biahmis_prod.episode_service_rendered_tbl INIT 
    FRAGMENT BY RANGE(GENERATED_DATE) 
     INTERVAL (NUMTOYMINTERVAL(6,'MONTH')) 
PARTITION Q1_EPSIODE_SERVICES VALUES > DATE('2016-01-01') AND VALUES <= DATE('2016-06-01') IN datadbs1, 
PARTITION Q2_EPSIODE_SERVICES VALUES > DATE('2016-06-01') AND VALUES <= DATE('2016-12-01') IN datadbs2, 
PARTITION Q3_EPSIODE_SERVICES VALUES > DATE('2016-12-01') AND VALUES <= DATE('2017-01-01') IN datadbs3; 
+3

Pourquoi criez-vous? Aussi, avez-vous essayé quelque chose? S'il vous plaît jeter un oeil à [DEMANDER] et [MCVE] pour améliorer votre question. Aussi, pourquoi le tag Oracle? – Aleksej

Répondre

0

Les clauses PARTITION ne peut contenir 1 opérateur d'inégalité, à savoir l'opérateur moindre (<).

conformément au manuel (FRAGMENT BY clause):

.-,-----------------------------------------------------------. 
    V                | 
>----PARTITION--partition--+-VALUES < range_expr-+--IN--dbspace-+--| 
          | (2)     |     
          '-------VALUES IS NULL-'     

Vous devez changer vos clauses de partition à quelque chose comme ceci:

PARTITION Q1_EPISODE_SERVICES VALUES < DATE('2016-07-01') IN datadbs1, 
PARTITION Q2_EPISODE_SERVICES VALUES < DATE('2017-01-01') IN datadbs2, 
PARTITION Q3_EPISODE_SERVICES VALUES < DATE('2017-07-01') IN datadbs3; 

Soyez conscient du fait que la clause INIT, la table être reconstruire. Assurez-vous que vous avez suffisamment d'espace disque pour cela (et si votre base de données est enregistrée, il s'agira d'une transaction unique, vous risquez de faire une longue transaction).

+0

merci @luis. Est-il possible que je puisse fractionner la table sans supprimer les contraintes et la table. –