16 Mai 2018
Hello !
Et un nouvel article qui sera court car il complète celui d'hier ... Quelques poissons rouge dans l’assistance (Importer une table partitionnée vers une version standard et donc non partitionnée)
N'empêche que dans le cas de migration ou l'on n'a pas forcement toutes les informations sur la source... si il y avait de l'Enterprise avec du partitionning, pas exclue qu'il y ai également par exemple de la compression (Aie!)...
Et histoire de corser le tout, une multitude de tablespace dont personne n'est capable de vous donner la liste complète.
Alors certes, comme je l'indiquais hier, il est tout à fait possible d'extraire le ddl d'un dump (et je garde cela pour le jour ou je serai en manque d'idée ;)).
Donc je lance mon import... et
ORA-39083: Object type TABLE:"LOLO"."CLIENTS" failed to create with error: ORA-00959: tablespace 'RORO_TBS' does not exist
Ah ! Problème de tablespace ...
Soit ! Créeons le ...
SQL> SQL> create tablespace roro_tbs datafile size 50m; Tablespace created. SQL>
Et relançons l'import..
[oracle@rasta tmp]$ impdp system/oracle directory=test dumpfile=test.dmp PARTITION_OPTIONS=merge remap_schema=roro:lolo Import: Release 12.2.0.1.0 - Production on Wed May 16 20:50:41 2018 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/******** directory=test dumpfile=test.dmp PARTITION_OPTIONS=merge remap_schema=roro:lolo Processing object type SCHEMA_EXPORT/USER .... ORA-39083: Object type TABLE:"LOLO"."CLIENTS" failed to create with error: ORA-00439: feature not enabled: Basic Compression
Et voila... Après un problème de tablespace, voila que maintenant la table d'origine en plus d'avoir des partitions, a de la compression d'activé... Et le message d'erreur est clair... pas de compression en Standard Edition.
Je dis "STOP" !!! Et encore je n'ai qu'une table... donc tout d'abord tant pis pour le tablespace !
SQL> drop tablespace roro_tbs including contents and datafiles; Tablespace dropped. SQL>
Et maintenant je sors la grosse artillerie l! La clause TRANSORM de impdp !
Je vais donc ajoute à impdp TRANSFORM=SEGMENT_ATTRIBUTES:n
Pour simplifier cela va tout simplement ne pas tenir compte de toute les clauses de stockage au niveau segment (tablespace, initial extent,... et donc les clause sur la compression).. On ne me croit pas...
Let's go !
[oracle@rasta tmp]$ impdp system/oracle directory=test dumpfile=test.dmp PARTITION_OPTIONS=merge remap_schema=roro:lolo TRANSFORM=SEGMENT_ATTRIBUTES:n
Import: Release 12.2.0.1.0 - Production on Wed May 16 21:19:39 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/******** directory=test dumpfile=test.dmp PARTITION_OPTIONS=merge remap_schema=roro:lolo TRANSFORM=SEGMENT_ATTRIBUTES:n
Processing object type SCHEMA_EXPORT/USER
ORA-31684: Object type USER:"LOLO" already exists
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "LOLO"."CLIENTS":"P75" 5.914 KB 1 rows
. . imported "LOLO"."CLIENTS":"P78" 5.929 KB 2 rows
. . imported "LOLO"."CLIENTS":"P95" 0 KB 0 rows
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Job "SYSTEM"."SYS_IMPORT_FULL_01" completed with 1 error(s) at Wed May 16 21:19:42 2018 elapsed 0 00:00:02
Si l'on ne tient pas compte de l'erreur (USER:"LOLO" already exists)... la mission est remplie !
Ma table issue d'un dump "Enterprise" avec paritions, compression, tablespace qui n'existe pas dans ma base destination est importée !
Pour ceux qui en veulent plus sur TRANSFORM.. c'est ici, la ou tout se trouve, la bien nommée doc ORacle !
Remarque: Grace à cela, j'ai pu réaliser mon import. Cependant, si il y avait du "fine tuning" sur la partie storage de la table (next extent, pct free,...) et bien cela sera perdu ! De même tous les objets seront placés dans le tablespace par défaut du user... donc potentiellement du rebuild d'index à faire pour les placer dans un tablespace à part si c'est la politique de la boite....
Enjoy