Aucun message portant le libellé IMPDP. Afficher tous les messages
Aucun message portant le libellé IMPDP. Afficher tous les messages

vendredi 18 mai 2012

Contrôle de la compatibilité des fichiers d'export

Au moment de faire un import avec l'utilitaire Oracle Datapump, si vous rencontrez les erreurs suivantes :

    ORA-39001: invalid argument value
    ORA-39000: bad dump file specification
    ORA-39142: incompatible version number 3.1 in dump file "/u01/app/oracle/admin/ORCL/dpdump/FICHIER.DMP"

Cela signifie que vous tentez d'importer un fichier d'export dont la version de la base de données d'où a été exécuté l'export ne corresond à celle de destination.

Pour contourner ceci, vous pouvez utiliser le paramètre "VERSION" au moment de l'export pour indiquer que la structure du fichier d'export doit être compatible avec la version mentionnée. Voici un exemple :

    expdp dumpfile=fichier.dmp logfile=fichier.log content=all schemas=test version=10.2

jeudi 17 mars 2011

Datapump et le code PL/SQL "wrapped" ne font pas bon ménage

Si vous utilisez l'utilitaire "Datapump" pour exporter/importer des objets PL/SQL qui sont "wrapped", vous rencontrerez des erreurs de compilation de ses objets au moment de l'import.

La solution est forte simple par contre, si vous avez plusieurs objets PL/SQL, elle pourrait s'avérer longue et pénible. La façon de régler le problème est de tout simplement ajouter un retour chariot (ENTER) à la fin du bloc de code "wrapped" et de recompiler l'objet.

Par exemple, après l'import, vous aurez quelque chose de semblable :

9KT8wA45xNIx8UkKA2HePAukkjxautEZA46ttoRHaQKjPJh43giqUg==
/

Alors, il suffit d'ajouter un retour chariot avant la barre oblique :

9KT8wA45xNIx8UkKA2HePAukkjxautEZA46ttoRHaQKjPJh43giqUg==

/

J'ai rencontré ce problème sur une base de données Express Edition (XE).

Ce bug est connu chez Oracle et il a été observé sur une base de données 10gR2 :

Oracle Support : Impdp Returns ORA-39082 When Importing Wrapped Procedures [ID 460267.1]

jeudi 19 février 2009

Statistiques non mises à jour... Pourquoi ?!?

Si vous importez seulement la structure (métadonnée) donc, aucune donnée, les statistiques seront verrouillées. Vous ne pourrez plus mettre à jour les statistiques. Ce comportement a été observé sur une base de données Oracle 10g Release 2.

Pour résoudre ce problème, vous pouvez déverrouiller les statistiques après l’import ou exclure les statistiques de l’import en utilisant les paramètres de l’utilitaire IMPDP.

Voici un exemple de comment déverrouiller les statistiques sur les objets appartenant à un schéma :

execute DBMS_STATS.UNLOCK_SCHEMA_STATS('NomSchéma');

lundi 16 février 2009

ORA-06502 lors d’import via DB Link (IMPDP)

Lors d’un import, je devais exclure plusieurs tables. J’ai alors procédé de la façon habituelle, c’est-à-dire, en déclarant le paramètre TABLES puis une condition dans mon fichier de paramètres :

TABLES = 'NOT IN (''NomSchema.NomTable'', ''NomSchema.NomTable'', ''NomSchema.NomTable''…

Lors de l’exécution de l’import, j’ai reçu l’erreur suivante :

ORA-06502 (PL/SQL: numeric or value error: character string buffer too small

C’est à ce moment que j’ai constaté qu’il y avait une limite de caractères que l’on pouvait passer au paramètre.

L’alternative à cette limite est d’utiliser une table dans laquelle nous y insérons le nom des tables que nous désirons exclure et, par la suite, nous effectuerons une condition sous forme de requêtes.

Pour débuter, j’ai créé une nouvelle table et j’ai inséré le nom des tables à exclure :

CREATE TABLE impdp_t_objet
(
NomPropr VARCHAR2(30),
TypeObjet VARCHAR2(30),
NomObjet VARCHAR2(30)
);

INSERT INTO impdp_t_objet (NomPropr, TypeObjet, NomObjet)
VALUES ('NomSchema','TABLE','NomTable');
INSERT INTO impdp_t_objet (NomPropr, TypeObjet, NomObjet)
VALUES ('NomSchema','TABLE','NomTable');

Commit;


Ensuite, j’ai ajouté la ligne suivante dans le fichier de paramètre qui a été utilisé lors de l’import :

TABLES='NOT IN (SELECT NomObjet FROM impdp.impdp_t_objet WHERE NomPropr=''NomSchema'' AND TypeObjet =''TABLE'')'

Et, là, je suis prêt à exécuter l’import.

J’aime bien cette façon de procéder car dans ma situation, je dois rafraichir les données de plusieurs systèmes sous plusieurs environnements et je dois fréquemment exclure des objets. Ça me permet de conserver les objets à exclure d'une fois à l'autre.