De table partitionnée à table non partitionnée
Quel est le meilleur moyen de supprimer le partitionnement d'une table (pas le contenu)?
Pour l'instant ,voici comment je procède (la table T1 est partitionnée .):
Code:
1 2 3 4 5
| DROP TABLE T1_TMP;
CREATE TABLE T1_TMP (C1 VARCHAR2(10),C2 VARCHAR2(10),....,CN VARCHAR2(10),PRIMARY KEY (C1,C2,C3,C4,C5)) NOLOGGING;
INSERT INTO T1_TMP SELECT * FROM T1;
DROP TABLE T1;
ALTER TABLE T1_TMP RENAME TO T1; |
redefinition de table partitionnee : tablespace et redefinition d'index
bonjour
j'utilise DBMS_REDEFINITION pour faire cette manip, mais cela ne marche pas correctement
1) apres redefinition, la table se trouve dans le DEFAULT TABLESPACE (et pas dans son TS d'origine)
2) la table a un index local qui est perdu apres la redefinition. Quelle que soit la valeur du parametre "copy_indexes" , j'ai l'erreur
ORA-14016: underlying table of a LOCAL partitioned index must be partitionedmais aucun ne fonctionne.
y a-t-il un moyen de modifier la redefinition de l'index, ou bien il faut le recreer apres
Si vous avez des reponses a ces problemes, merci d'avance.
voici les 2 blocs principaux
Citation:
DBMS_REDEFINITION.START_REDEF_TABLE( uname =>vTableOwner,
orig_table =>vX.TABLE_NAME,
int_table =>vIntTable,
options_flag =>DBMS_REDEFINITION.CONS_USE_ROWID );
DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(
num_errors=>vNumErrors,
uname=>vTableOwner,
orig_table=>vX.TABLE_NAME, -- table source
int_table=>vIntTable, -- table interim
copy_indexes=> DBMS_REDEFINITION.CONS_ORIG_PARAMS,
copy_triggers=>TRUE,
copy_constraints=>TRUE,
copy_privileges=>TRUE,
ignore_errors=>TRUE);
Isa