IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[Imp] ORA-01401


Sujet :

Oracle

  1. #1
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut [Imp] ORA-01401
    Bonjour les forumistes (Instance cible 9i sur Unix)!
    J'ai quelques questions à poser ...
    Lors d'un Import, j'ai des code retour ORA-01401 sur des liellés de tables !
    Cela semble tout à fait normal puisque la base cible est en NLS_CHARACTERSER = 'UTF8' et le dump a été créé depuis une base 'WE81508859P1' => OK

    Questions :
    1°) Suis-obligé de créer une nouvelle instance en WE81508859P1 afin que mon Import ne plante pas (Je ne dois pas toucher aux données, ni au DDL de mon dump, car il proviernt d'une a?
    2°) Puis-je effectuer l'Import avec l'option NLS_CHARACTERSET à WE81508859P1 ?
    3°) Quel est le moyen de le faire (Avez-vous un script unix à copier/coller) ?
    4°) Et surtout, est-ce conseillé, et ne vaut-il mieux pas recreer une instance cible qui va bien ?

    Merci pour vos réponses ...

  2. #2
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut
    Je recommence car mon clavier à fourché !
    Bonjour les forumistes (Instance cible 9i sur Unix)!
    J'ai quelques questions à poser ...
    Lors d'un Import, j'ai des code retour ORA-01401 sur des liellés de tables !
    Cela semble tout à fait normal puisque la base cible est en NLS_CHARACTERSER = 'UTF8' et le dump a été créé depuis une base 'WE81508859P1' => OK

    Questions :
    1°) Suis-obligé de créer une nouvelle instance en WE81508859P1 afin que mon Import ne plante pas (Je ne dois pas toucher aux données, ni au DDL de mon dump, car il proviernt d'une application externe que l'on veut implanter sur notre site !) ?
    2°) Puis-je effectuer l'Import avec l'option NLS_CHARACTERSET à WE81508859P1 ?
    3°) Quel est le moyen de le faire (Avez-vous un script unix à copier/coller) ?
    4°) Et surtout, est-ce conseillé, et ne vaut-il mieux pas recreer une instance cible qui va bien ?

    Merci pour vos réponses ...

  3. #3
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut
    Personne pour me répondre ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Quelle version Oracle (source et cible) ?
    Quel OS Oracle (source et cible) ?

    Valeurs éventuelles sur votre serveur de
    • NLS_LANG
    • ORA_NLS(10|32|33)
    • NLS_CHARACTERSETS
    • NLS_NCHAR_CHARACTERSET

  5. #5
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    ORA-01401 inserted value too large for column

    Cause: The value entered is larger than the maximum width defined for the column.

    Action: Enter a value smaller than the column width or use the MODIFY option with ALTER TABLE to expand the column width.
    1°) Suis-obligé de créer une nouvelle instance en WE81508859P1 afin que mon Import ne plante pas (Je ne dois pas toucher aux données, ni au DDL de mon dump, car il proviernt d'une application externe que l'on veut implanter sur notre site !) ?
    Non, mais il faut peut-être revoir la taille des colonnes CHAR, VARCHAR2:
    avec UTF8 un caractère peut occuper plusieurs octets ce qui n'est pas le cas avec WE81508859P1. Par défaut votre import a sans doute créé des colonnes avec unité = byte (et non char).
    Quelle est la valeur du paramètre d'initialisation NLS_LENGTH_SEMANTIC ?

    Voir http://download-uk.oracle.com/docs/c...ch2.htm#104327
    2°) Puis-je effectuer l'Import avec l'option NLS_CHARACTERSET à WE81508859P1 ?
    Vous ne pouvez pas changer directement le jeu de caractères de la base à l'import. En fait l'import va faire la conversion en fonction de la valeur de NLS_LANG (variable d'environnement toujours définie en dehors d'Oracle) et le jeu de caractère de la base cible (l'export fonctionne aussi de façon similaire).
    En général vous devez pourvoir importer une base WE81508859P1 dans UTF8 car WE81508859P1 est un sous-ensemble de UTF8, point de vue du jeu de caractères.

    3°) Quel est le moyen de le faire (Avez-vous un script unix à copier/coller) ?
    Un script Unix, non mais un outil qui peut aider, oui: Oracle recommande d'utilise CSSCAN:

    The Character Set Scanner reads the character data and tests for the following conditions on each data cell:

    * Do character code points of the data cells change when converted to the new character set?
    * Can the data cells be successfully converted to the new character set?
    * Will the post-conversion data fit into the current column size?
    Voir http://download-uk.oracle.com/docs/c.../ch11.htm#1656

  6. #6
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut
    Merci Pifor pour vos explications toujours très utiles..
    Je vais maintenant essayer de comprendre tout ça !

  7. #7
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut
    Juste une dernière...
    quand le fichier log de l'import me dit ça :

    import done in US7ASCII character set and UTF8 NCHAR character set
    import server uses UTF8 character set (possible charset conversion)
    export client uses WE8ISO8859P1 character set (possible charset conversion)
    export server uses AL16UTF16 NCHAR character set (possible ncharset conversion)
    Je comprend bien qu'il y a un jeu de caractère différent entre le client et le serveur de la base source mais, pour ce qui est de la base cible, j'avoue ne pas bien comprendre les différences entre US7ASCII, UTF8 NCHAR et UTF8...

    Pouvez-vous juste m'éclairer en 3 mots ?

    Merci d'avance...

  8. #8
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Toute base de donnée a en fait 2 jeux de caractères:
    - celui pour les types CHAR, VARCHAR2, CLOB (character set)
    - celui pour les types NCHAR, NVARCHAR2, NCLOB (NCHAR character set)

    N/NCHAR signifie national character set dans la jargon Oracle mais c'est une dénomination choisie par Oracle qui ne signifie pas que c'est le jeu de caractères lié à la valeur de NLS_TERRITORY ou NLS_LANGUAGE.

    Cela permet de stocker des données dans 2 jeux de caractères différents mais il faut le prévoir lorsqu'on choisit le type des colonnes ...

    On peut consulter ces paramètres de création de la base avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SQL> select * from nls_database_parameters where parameter like '%CHARACTERSET%'
    ;
     
    PARAMETER                      VALUE
    ------------------------------ ----------------------------------------
    NLS_CHARACTERSET               WE8MSWIN1252
    NLS_NCHAR_CHARACTERSET         AL16UTF16

  9. #9
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut
    Merci encore Pifor...
    En effectuant mes recherches j'ai vu que :

    la base source contient :

    CHARACTERSET => WE8ISO885P1
    NATIONAL CHARACTERSET => AL16UTF16

    la base cible contient :
    CHARACTERSET => UTF8
    NATIONAL CHARACTERSET => UTF8

    Et il y a plantage...

  10. #10
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut
    Je recommence...

    Merci encore Pifor...
    En effectuant mes recherches j'ai vu que ma base cible est en NLS_LENGTH_SEMANTIC = Byte:

    Mais aussi :
    CHARACTERSET => WE8ISO8859P1
    NATIONAL CHARACTERSET => AL16UTF16

    alors que ma base cible est en :
    CHARACTERSET => UTF8
    NATIONAL CHARACTERSET => UTF8

    Et il y a plantage...

    Vous me dites qu' WE8ISO8859P1 est un sopus ensemble d'UTF8, donc cela devarit passer... à moins que ce soit le NATIONAL CHARACTER SET qui cloche...et dans ce cas que puis-je faire ?


    PS : Je n'ai pas eu le temps de potasser CSSCAN alors, si vous avez une solution rapide, n'hésitez pas à m'en faire part !

  11. #11
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Ca doit être compatible mais il faut sans doute changer la taille des colonnes dans la base cible pour les tables qui ont l'erreur 1401.

    Je ne sais pas s'il y a un moyen plus rapide que CSSCAN.

  12. #12
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut
    merci Pifor maiis, étant donné que je ne peut pas toucher à ce qui sort de l'import, je m'en vais de ce pas creer une nouvelle instance...

    Merci encore pour vos conseils !

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/04/2011, 18h15
  2. ORA-01401 : inserted value too large for column
    Par Mattgic dans le forum Oracle
    Réponses: 5
    Dernier message: 25/05/2010, 11h18
  3. ORA- 01401 Debug
    Par stongolm dans le forum Oracle
    Réponses: 12
    Dernier message: 14/03/2007, 12h24
  4. [Sql] Insert et ORA-01401
    Par madina dans le forum Oracle
    Réponses: 7
    Dernier message: 03/08/2006, 21h33
  5. [imp] ORA-00001 lors d'import de séquences
    Par exempleinfo dans le forum Oracle
    Réponses: 1
    Dernier message: 17/02/2006, 12h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo