web-dev-qa-db-fra.com

Tables d'importation sans contraintes de Schema Export

J'essaie de faire une importation à l'aide de la pompe à données, mais je me débats pour trouver les bonnes options. L'exportation a été prise comme exportation de schéma. J'essaie d'importer uniquement les tables, sans autre objet de base de données.

J'utilise actuellement

INCLUDE=TABLE
TABLE_EXISTS_ACTION=REPLACE
REMAP_SCHEMA=
REMAP_TABLESPACE=

Cela importe correctement les tables, mais je suis un peu surpris de voir que l'importation crée également les contraintes et les déclencheurs sur les tables, ou en essayant au moins. Les déclencheurs échouent, car ils incluent un nom de schéma qui n'existe pas dans la base de données.

Je pensais qu'en utilisant INCLUDE=TABLE Seules les tables seraient incluses. Apparemment que ce n'est pas le cas. Je suis incapable d'utiliser EXCLUDE=CONSTRAINT ou alors EXCLUDE=TRIGGER Comme j'utilise déjà inclus pour limiter l'importation à des tables seulement.

Des idées sur la manière dont je pourrais structurer l'importation uniquement des tables d'importation?

2
Patrick

Vous avez raison lorsque vous indiquez Je pensais qu'en utilisant INCLUDE=TABLE Seules les tables seraient incluses, mais il inclut également tous les objets associés. Cela signifie que des contraintes et des déclencheurs seront créés pour vous lorsque vous utilisez INCLUDE=TABLE lors de l'importation.


Solution possible

Si vous avez la possibilité de recréer la décharge à l'aide de la commande expdp _, vous pouvez simplement exporter les tables du schéma requis et utiliser le paramètre INCLUDE.

COMPRENDRE

Objet: vous permet de filtrer les métadonnées exportées en spécifiant des objets et des types d'objet pour le mode d'exportation actuel. Les objets spécifiés et tous leurs objets dépendants sont exportés. Les subventions sur ces objets sont également exportées.

exp_include.par

Ceci est fondamentalement le fichier de paramètres expdp.

FULL=N
...
SCHEMAS=<your_schema(s)>
INCLUDE=TABLE
...

Cela créera une vidage du schéma requis et ne contenir que des tables et des objets dépendants.


Après avoir généré le nécessaire *.dmp Fichier, importation à l'aide de l'EXCLUDE=... option.

EXCLURE

Objectif: vous permet de filtrer les métadonnées importées en spécifiant des objets et des types d'objet à exclure du travail d'importation.

imp_exclude.par

Ceci est le fichier de paramètres pour l'IMPDP.

FULL=Y
...
EXCLUDE=STATISTIC
EXCLUDE=CONSTRAINT
EXCLUDE=TRIGGER
...

Cela devrait aboutir aux tables importées correctement.

Matériel de référence

2
John K. N.

Les paramètres excluent et incluent ne peuvent pas être spécifiés dans le même travail d'importation. Vous pouvez utiliser l'une des méthodes suivantes permettant à ces tableaux et index, mais aucun déclencheur, contraintes ou contraintes de référence n'est importé. Si vous ne voulez pas non plus d'index, vous pouvez les exclure de l'importation de la même manière.

Méthode 1 : Vous incluez des tableaux dans votre importation et utilisez davantage les directives pour exclure les déclencheurs, les contraintes et les contraintes référentielles de l'importation. On spécifie les éléments suivants:

INCLUDE=TABLE
INCLUDE=TRIGGER:"=''"
INCLUDE=CONSTRAINT:"=''"
INCLUDE=REF_CONSTRAINT:"=''"

Il n'y a pas de déclencheur qui satisfait à la clause donnée qui signifie que le nom de la gâchette est une chaîne vide. Il en va de même pour la contrainte et les contraintes de référence

Methode 2 : Vous n'utilisez pas la directive Inclure pour spécifier que seules les tables doivent être importées mais utilisent une méthode différente. Que vous pouvez utiliser l'exclusion pour éviter l'importation de déclencheurs, de contraintes et de contraintes référentielles.

Vous pouvez spécifier la liste des tables que vous utilisez pour importer dans une importation de table

TABLES=owner1.table1, owner2.table2, ...
EXCLUDE=TRIGGER, CONSTRAINT, REF_CONSTRAINT

Si la liste des tables est grande que cette méthode n'est pas très utile.

Une autre façon de spécifier des tables uniquement consiste à utiliser une importation de l'espace de table. Le nombre d'espaces de table utilisés par les tableaux dans le fichier de vidage est généralement beaucoup plus petit que le nombre de tables

TABLESPACES=tablespace1,  tablespace2, ...
EXCLUDE=TRIGGER, CONSTRAINT, REF_CONSTRAINT

Exemples

J'utilise la base de données Oracle 11.2.0.4 Édition d'entreprise pour ces exemples.

J'ai créé un schéma Scott avec des tables, des déclencheurs, des procédures, des contraintes et des contraintes référentielles. Ensuite, j'ai fait un schéma d'exportation avec les paramètres suivants

 annuaire = Scott 
 Schemas = Scott 
 Dumpfile = schema.dmp [.____] logfile = exp_schema.log [.____]

Voici les parties pertinentes du logfile de cette exportation

 Démarrer "Système". "SYS_EXPORT_SCHEMA_01": SYSTEM/******** Parfile = exp_schema.par [. ____] Estimation en cours à l'aide de la méthode Blocks ... 
 Objet de traitement Type Schema_export/Table/Table_Data [.____] Total Estimation à l'aide de blocs Méthode: 192 KB 
 Type de traitement Type d'objet Schema_export/Utilisateur [. ____] Type d'objet Schema_export/System_Grant [.____] Type d'objet Schema_Export /Role_Grante
Port Type d'objet Schema_export/Default_role [.____] Type de traitement Type d'objet Schema_export/Pre_schema/Procact_schema [.____] Type de traitement Schema_export/Table/Tableau [.____] Type d'objet Schema_Export/Procédure /Procédrance
Port type d'objet Schema_export/Procédure/alter_procédraure [.____] Type de traitement Type d'objet Schema_export/Table/Index/Index [.____] Type d'objet Schema_export/Table/Contrainte [.____] Traitement Type d'objet Schema_Export/Table/Table/Ref_Constraint [.____] Trating Objet Type Schema_Export/Table/Tableau [ .____]. . Exporté "Scott". "Dept" 5.929 KB 4 rangées 
. . Exporté "Scott". "EMP" 8.562 KB 14 rangées 
. . Exporté "Scott". "Salgrade" 5.859 KB 5 rangées 
. . Exporté "Scott". "Bonus" 0 Ko 0 rangées 
. . Exporté "Scott". "Job_history" 0 Ko 0 rangées 
 Tableau maître "Système". "SYS_EXPORT_SCHEMA_01" chargé avec succès/déchargé [.____]

Ainsi que l'utilisateur, les subventions, les procédures, les consistions, les contraintes de référence, la gâchette et les cinq tableaux de service, EMP, salerade; Bonus, job_history de l'utilisateur Scott est exporté.

Maintenant, je n'importerai pas ce vidage dans une base de données, mais je ne créerai qu'un fichier SQL avec les déclarations qui seront exécutées par l'importation. Cela peut être atteint par le paramètre SQLFILE dans le fichier de paramter d'importation.

D'abord, je fais une importation complète du Dumpfile. Cela importera tout former le fichier de vidage

 annuaire = Scott [.____] Full = y 
 Dumpfile = schema.dmp [.____] logfile = imp_full.log 

Cela aboutit à ce qui suit

 Table principale "Système". "SYS_SQL_FILE_FLUM_01" chargé avec succès/déchargé [non chargé 
 Démarrage "Système". "SYS_SQL_FILE_FLOSL_01": Système/******** Parfile = Imp_full.par 
 Traitement Type d'objet Schema_export/Utilisateur 
 Type de traitement Type d'objet Schema_Export/System_Grant [.____] Type de traitement Type d'objet Schema_Export/Role_Grant [.____] Type d'objet Schema_export/Default_role [.____] Type d'objet Schema_export /Pre_schema/procact_schema
Port type objet Schema_export/Table/Tableau [.____] Traitement Type d'objet Schema_export/Procédure/Procédure [.____] Type d'objet Schema_Export/Procédure/Atter_Procédrique [.____] Type Schema_Export/Table/Index/Index [.____] Type de traitement Type d'objet Schema_Export/Table/Contraint/Contrainte 
 Traitement Type d'objet Schema_export/Table/Ref_Constraint [. ____] Type d'objet Schema_Export/Table/Déclencheur 
 Job "System". "SYS_SQL_FILE_FLODL_01" Terminé avec succès 

Si l'on utilise une sortie de schéma en utilisant

 Annuaire = Scott 
 Schemas = Scott 
 Dumpfile = schema.dmp [.] logfile = imp_schema.log [.____] SQLFILE = schema.sql 

un logfile similaire est créé.

Maintenant nous incluons uniquement les tables

 annuaire = Scott [.____] Full = y 
 Dumpfile = schema.dmp 
 logfile = imp_schema_inc.log [.____] sqlfile = schema_inc.sql 
 Inclure = table 

Cela se traduit par le fichier journal suivant:

 Démarrer "Système". "Sys_sql_file_full_01": Système/******** Parfile = imp_schema_inc.par [.____] Type de traitement Type d'objet Schema_Export/Table/Tableau [.____] Type d'objet Traitement Schema_export/Table/Index/Index [.____] Type de traitement Type d'objet Schema_Export/Table/Tableau/Contraint/Contrainte [.____] Type de traitement Type d'objet Schema_Export/Table/Ref_constraint 
 Job "Système". "SYS_SQL_FILE_FLUM_01" Terminé avec succès 

Les tableaux d'objets dépendants sont créés. Maintenant, nous utilisons davantage les directives pour éviter l'importation des objets indésirables:

 annuaire = Scott [.____] Full = y 
 Dumpfile = schema.dmp [.] logfile = imp_schema_inc_inc.log [.____] sqlfile = schema_inc_inc.sql 
 Inclure = Tableau [.____] Inclure = déclencheur: "= ''" 
 Inclure = contrainte: "= '" "[=' '" 

Cela se traduit exactement de ce que nous voulons:

 Démarrer "Système". "Sys_sql_file_full_01": système/******** Parfile = imp_schema_inc_inc.par [.____] Type de traitement Type d'objet Schema_export/Table/Tableau 
 Type d'objet Traitement Schema_export/table/index/index 
 Job "System". "SYS_SQL_FILE_FLODL_01" Terminé avec succès 

Si nous utilisons une table importation et spécifiez ces 5 tables et excluons les objets indésirables, nous obtenons un fichier journal similaire.

 annuaire = Scott 
 Tables = Scott.Dept, Scott.emp, Scott.Salgrade, Scott.bonus, Scott.job_history [.____] Dumma.dmp 
 LOGFILE = Imp_Tables.log 
 sqlfile = tables.sql [.____] exclude = déclencheur, contrainte, ref_constraint [.____]

Nous obtenons également un tel logfile si nous utilisons une importation de tablesPace. Tous les objets de l'utilisateur Scott sont dans les utilisateurs de l'espace de table.

 répertoire = Scott 
 Dumpfile = schema.dmp [.____] logfile = imp_tablespaces.log 
 sqlfile = tablepaces.sql 
 Les utilisateurs 
 Exclure = déclencheur, contrainte, ref_constraint 
0
miracle173