Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Import/Export
Import/Export Forum d'entraide sur les outils d'import/export Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/11/2011, 16h42   #1
Membre expérimenté
 
François
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : François

Informations forums :
Inscription : février 2010
Messages : 306
Points : 536
Points : 536
Par défaut Transportable Tablespace et TABLE_EXIST=APPEND

Bonjour,

J'essaye de generer beaucoup de donnees (plus ou moins random). Ca, ca va. Pour aller plus vite, je me suis dit que c'etait peut-etre possible de copier/coller directement les datafiles, ca me ferait des doublons, mais vu le temps gagne je m'en accomode. Bien entendu, un bete copie colle ne fonctionne pas.
Du coup je me suis penche du cote de datapump.

En gros, pour le moment j'ai ca:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SYS@minilhc AS SYSDBA>SELECT table_name, tablespace_name,blocks FROM dba_tables WHERE table_name='TMP' AND owner='TMP';
TABLE_NAME                     TABLESPACE_NAME                    BLOCKS
------------------------------ ------------------------------ ----------
TMP                            TEST_IMPORT                         33883
 
SYS@minilhc AS SYSDBA>SELECT count(UNIQUE n) FROM tmp.tmp;
COUNT(UNIQUEN)
--------------
         99999
 
SYS@minilhc AS SYSDBA>SELECT tablespace_name, file_name FROM dba_data_files WHERE tablespace_name='TEST_IMPORT';
TABLESPACE_NAME                FILE_NAME
------------------------------ --------------------------------------------------------------------------------
TEST_IMPORT                    C:\DEMO-ORACLE\TEST_IMPORT_01.DF
Et a la fin de mon import je souhaiterai obtenir quelque chose dans ce style:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SYS@minilhc AS SYSDBA>SELECT table_name, tablespace_name,blocks FROM dba_tables WHERE table_name='TMP' AND owner='TMP';
TABLE_NAME                     TABLESPACE_NAME                    BLOCKS
------------------------------ ------------------------------ ----------
TMP                            TEST_IMPORT                         67866 --Deux fois plus de blocks
 
SYS@minilhc AS SYSDBA>SELECT count(UNIQUE n) FROM tmp.tmp;
COUNT(UNIQUEN)
--------------
         99999 --Toujours le meme nombre, vu que ca fait des doublons
 
SYS@minilhc AS SYSDBA>SELECT tablespace_name, file_name FROM dba_data_files WHERE tablespace_name='TEST_IMPORT';
TABLESPACE_NAME                FILE_NAME
------------------------------ --------------------------------------------------------------------------------
TEST_IMPORT                    C:\DEMO-ORACLE\TEST_IMPORT_01.DF
TEST_IMPORT                    C:\DEMO-ORACLE\TEST_IMPORT_02.DF --Un second datafile
J'ai essaye de faire la chose suivante:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
C:\>EXPDP tmp/xxxx DIRECTORY='DATA_PUMP_DIR' DUMPFILE='test_import.dump' TRANSPORTABLE=ALWAYS TABLES='TMP.TMP'
 
Export: Release 11.2.0.1.0 - Production ON Mon Nov 14 16:30:42 2011
 
Copyright (c) 1982, 2009, Oracle AND/OR its affiliates.  ALL rights reserved.
 
Connected TO: Oracle DATABASE 11g Enterprise Edition Release 11.2.0.1.0 - Production
WITH the Partitioning, OLAP AND Real Application Testing options
Starting "TMP"."SYS_EXPORT_TABLE_01":  tmp/******** DIRECTORY='DATA_PUMP_DIR' DUMPFILE='test_import.dump' TRANSPORTABLE=ALWAYS TABLES='TMP.TMP'
Processing object type TABLE_EXPORT/TABLE/PLUGTS_BLK
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/END_PLUGTS_BLK
Master table "TMP"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for TMP.SYS_EXPORT_TABLE_01 is:
  C:\...\TEST_IMPORT.DUMP
******************************************************************************
Datafiles required for transportable tablespace TEST_IMPORT:
  C:\DEMO-ORACLE\TEST_IMPORT_01.DF
Job "TMP"."SYS_EXPORT_TABLE_01" successfully completed at 16:30:50
Ce qui me parait pas trop mal par rapport a ce que je souhaite faire.

Ensuite, faire un copie/colle manuel du datafile, en le renomant TEST_IMPORT_02.df.
Et apres, lors de l'import, il me dit (avec raison) que le tablespace existe... Ligne 15
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
C:\>impdp tmp/xxxx directory='data_pump_dir' dumpfile='test_import.dump' TABLES='TMP.TMP' transport_datafiles='C:\DEMO
-ORACLE\TEST_IMPORT_02.DF'  TABLE_EXISTS_ACTION=APPEND
 
Import: Release 11.2.0.1.0 - Production ON Mon Nov 14 16:34:49 2011
 
Copyright (c) 1982, 2009, Oracle AND/OR its affiliates.  ALL rights reserved.
 
Connected TO: Oracle DATABASE 11g Enterprise Edition Release 11.2.0.1.0 - Production
WITH the Partitioning, OLAP AND Real Application Testing options
Master TABLE "TMP"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "TMP"."SYS_IMPORT_TABLE_01":  tmp/******** directory='data_pump_dir' dumpfile='test_import.dump' TABLES='TMP.TMP' transport_datafiles='C:\DEM
O-ORACLE\TEST_IMPORT_02.DF' TABLE_EXISTS_ACTION=APPEND
Processing object type TABLE_EXPORT/TABLE/PLUGTS_BLK
ORA-39123: Data Pump transportable tablespace job aborted
ORA-29349: tablespace 'TEST_IMPORT' already exists
 
Job "TMP"."SYS_IMPORT_TABLE_01" stopped due to fatal error at 16:34:51
Est-ce que c'est simplement pas possible, et je dois necessairement passer par un dumpfile pour faire ca? Ou alors je m'y prends comme un manche?

Merci!
Rams7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 19h41   #2
Membre Expert
 
Avatar de pachot
 
Homme Franck Pachot
DBA Oracle
Inscription : novembre 2007
Messages : 706
Détails du profil
Informations personnelles :
Nom : Homme Franck Pachot
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : DBA Oracle
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 706
Points : 1 645
Points : 1 645
Bonjour,

Transportable tablespace ne permet pas de faire cela. C'est tout le tablespace qui est importé, avec tous les objets. Donc le 'APPEND' ne signifie rien. Pour faire une analogie à 2 balles, tu peux amener 2 voituresdans ton garage, mais tu ne pourra pas les transformer en un camion...

Pour doubler la taille d'une table, un
Code :
INSERT /*+ append */ INTO T SELECT * FROM T
est probablement le plus rapide.

Cordialement,
Franck Pachot.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
pachot est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/11/2011, 15h48   #3
Membre expérimenté
 
François
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : François

Informations forums :
Inscription : février 2010
Messages : 306
Points : 536
Points : 536
Effectivement, le nom du sujet etait tres mal choisi.

En fait, je me disais que comme dans expdp et impdp il y a l'option TABLES, plus des options du style CONTENT=METADATA_ONLY, TABLE_EXISTS_ACTION=APPEND, il y avait peut-etre moyen de faire un import, non pas du tablespace comme l'indique betement le titre, mais bien d'une table en deplacant directement les datafiles.
Ce qui aurait ete plus rapide que le insert, si ca ne me derange pas de perdre un peu de place.
Rams7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h42.


 
 
 
 
Partenaires

Hébergement Web