Les tablespaces transportables sont une nouvelle fonctionnalité apparue avec la 10g.
Ils permettent comme leur nom l’indique de déplacer physiquement un ou plusieurs fichier d’une base à une autre (et éventuellement d’une machine à une autre)
Ils s’appuient sur datapump (pour les meta données) et une copie de fichier physique.
Contraintes :
- source et cible doivent être sur le me OS
- le schéma doit être isolé (des objets liés , table de vue matérialisées, segments de blobs ne doivent pas appartenir a des fichiers externes au tablespace
- ne pas contenir de XML (sinon on utilisera un export au lieu de datapump
“L’isolement” du tablespace (Self contained tablespace) peut être testé par une option du datapump ( TRANSPORT_FULL_CHECK=y ) ou par un package standard :
SQL> begin
2 sys.dbms_tts.transport_set_check(‘STAGING’, TRUE);
3 end;
4 /
SQL> alter tablespace mon_tbs read only;
–rem pas oblige d’etre SYSTEM ici mais il faut le privilège exp_full_database…
$> expdp system DUMPFILE=mon_appli.dmp DIRECTORY=DATA_PUMP_DIR TRANSPORT_TABLESPACES=mon_tbs TRANSPORT_FULL_CHECK=y
…******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:
/tmp/mon_appli.dmp******************************************************************************
Datafiles required for transportable tablespace MON_TBS:
/oradata/orcl/mon_tbs.dbfJob “SYSTEM”.”SYS_EXPORT_TRANSPORTABLE_01″ successfully completed at 21:22:36
rem : dp indique quel est le fichier nécessaire a copier !!
$> cp mon_tbs.dbf ../test/mon_tbs.dbf
– creation d’un user cible identique si necessaire (sinon REMAP_SCHEMA)
– pas de droit particulier, un create session to mon_appli peut suffire(les objets sont recréés dans le tbs indeendamment des privs et quota du user cible…)
$> impdp system DUMPFILE=mon_appli.dmp DIRECTORY=DATA_PUMP_DIR TRANSPORT_DATAFILES=’/oradata/test/mon_tbs.dbf’