J'ai une énorme table qui contient beaucoup de données - l'historique et le courant.Partition d'intervalle sur la colonne varchar2
J'ai un travail automatique qui se déplacent d'anciennes données de quelques tables aux tables historiques
(puis supprimer de la source).
Je veux construire une table
interval-partition
qui obtenir les anciennes données de ce tableau.
Le problème est que la base date colonne dans la source est varchar2 dans ce modèle:
2017/07
Et les nouvelles colonnes de table doivent être des types de données identiques à la source. Donc quand j'essaye de créer la table de partitionnement d'intervalle, je ne peux pas faire une gamme dessus.
vous obtenez une erreur si vous essayez d'utiliser
to_date
.
Comment puis-je faire ça ???
C'est la table source:
CREATE TABLE
DATA_01(
APPLICATION VARCHAR2(10 BYTE),
PROCESS VARCHAR2(100 BYTE),
SNAPSHOT_MONTH VARCHAR2(7 BYTE)
);
que ce que je voulais faire, mais faire erreur:
CREATE TABLE
HISTORY_01 (
APPLICATION VARCHAR2(10 BYTE) NOT NULL ENABLE,
PROCESS VARCHAR2(100 BYTE),
SNAPSHOT_MONTH VARCHAR2(7 BYTE)
)
PARTITION BY RANGE (to_date(snapshot_month, 'yyyy/mm'))
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
(
PARTITION p_until_01_1900 VALUES LESS THAN (TO_DATE('01-01-1900', 'DD-MM-YYYY'))
);
Merci.
essayer: 'PARTITION DE GAMME (to_date (snapshot_month || '/ 01', 'aaaa/mm/jj)) INTERVALLE (NUMTOYMINTERVAL (1, 'MOIS')) ( PARTITION p_until_01_1900 VALEURS MOINS QUE (TO_DATE ('1900/01/01', 'aaaa/mm/jj')) ); ' – g00dy
Vous ne pouvez pas insérer to_date dans la colonne plage ... cela provoque une erreur. – user2671057
Vérifiez ce lien http://www.dba-oracle.com/t_partitioning_tables.htm -
g00dy