2017-07-26 5 views
1

Mon environnement a plus de 4000 tables. Je veux exporter seulement 2000 tables. J'ai essayé d'utiliser le fichier par en utilisant la clause Include. Mais l'exportation échoue. Les détails sont mentionnés ci-dessousexporter un grand nombre de tables en utilisant expdp

Outil: EXPDP | Version de la base de données Oracle: 11g R2 | Nombre de tables à exporter: 2000

code utilisé:

directory=pump 
dumpfile=EXP_FULL_GOLD.dmp 
logfile=EXP_FULL_GOLD.log 
COMPRESSION=ALL 
schemas=GOLD 
include=TABLE:"IN('T1','T2','T3','T4'..'T2000') 

Erreur: Avec la division, OLAP, data mining et options réelles de test d'application ORA-39001: valeur d'argument invalide ORA-39071 : La valeur pour INCLUDE est mal formée. ORA-00920: opérateur relationnel invalide

Même j'ai essayé ci-dessous le code:

directory=pump 
dumpfile=EXP_FULL_GOLD.dmp 
logfile=EXP_FULL_GOLD.log 
COMPRESSION=ALL 
schemas=Gold 
content=DATA_ONLY 
INCLUDE=TABLE:\"IN \(SELECT tname FROM Gold.t11\)\" 

Ici T11 contient la liste des tables stockées dans la colonne tname (2000 dossiers).

Mais la même erreur se produit. S'il vous plaît aider comme j'ai beaucoup cherché sur le net, mais je ne suis pas en mesure de trouver une solution. Même pour la clause Include Nombre de tables autorisées La limite n'est également disponible nulle part. Essayé en utilisant 900 tables, mais a échoué avec la même erreur.

Cordialement,

Sujit

Répondre

0

Le documentation décrit, que le name_clause du paramètre INCLUDE

is a SQL expression used as a filter on the object names...

cela signifie que l'aide d'une liste IN, vous êtes limité à la limite générale de 1000 elements dans la liste.

Même le pire this link suggère qu'il y a une limite de la longueur de name_clause de 4000 caractères. De plus, vous obtenez UDE-00014 invalid value for parameter INCLUDE

Mais une solution est facile (comme le suggère le lien ci-dessus)

1) utiliser un fichier de paramètres - voir paramètre PARFILE - à ne pas perturber d'éventuelles questions qui s'échappent

2) mettre la (sans guillemets) noms de table dans une table d'assistance et de l'utilisation paramètres suivants

INCLUDE=TABLE:"IN (select table_name from TAB_LIST)" 
0

trouvé la solution:

SCHEMAS=GOLD 
DIRECTORY=DEBUG 
COMPRESSION=ALL 
CONTENT=DATA_ONLY 
DUMPFILE=EXP_GOLD_26Jul2017.dmp 
LOGFILE=EXP_GOLD_26Jul2017.log 
INCLUDE=TABLE:"IN(SELECT TNAME FROM GOLD.T11)" 

Merci.

0

Vous pouvez importer uniquement les tables que vous voulez à partir d'une exportation complète en utilisant un parfile qui comprend la liste des tables que vous souhaitez en utilisant un mode de table import: -

directory=pump 
dumpfile=EXP_FULL_GOLD.dmp 
logfile=EXP_FULL_GOLD.log 
transform=storage:n 
exclude=statistics 
tables=(
gold.t1, 
gold.t2, 
gold.t3, 
gold.t4, 
gold.t2000) 

(ajouter toutes les tables que vous avoir besoin).

Vous devez pré-créer le schéma d'or s'il n'existe pas actuellement. Vous pouvez le faire avec une importation en mode schéma si vous voulez exclure = table pour ignorer toutes les tables.