+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Nouveau Membre du Club
    Inscrit en
    avril 2002
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 109
    Points : 36
    Points
    36

    Par défaut Problème character set

    Bonjour,

    J'ai envoyé un dump à mon fournisseur logiciel, notre base est en NLS_LANG à CANADIAN FRENCH_CANADA.WE8MSWIN1252 et le NCHAR character set à AL16UTF16.c

    De son côté, la base est en AMERICAN_AMERICA.WE8MSWIN1252 avec le NCHAR character set à AL32UTF8.

    Il croit que c'est le problème de son importation qui plante avec l'erreur suivante:

    IMP-00019: row rejected due to ORACLE error 12899
    IMP-00003: ORACLE error 12899 encountered
    ORA-12899: value too large for column XXX

    Puis-je convertir ma base avec EXP afin qu'il n'ait pas de problème pour l'import?

    Merci!

  2. #2
    Expert Confirmé Sénior

    Profil pro
    Inscrit en
    décembre 2002
    Messages
    2 871
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : décembre 2002
    Messages : 2 871
    Points : 5 198
    Points
    5 198

    Par défaut

    Il faut bien distinguer la variable d'environnement NLS_LANG, et le jeu de caractères de la base.

    Vous pouvez contrôler ce dernier simplement :
    Code :
    1
    2
    3
    select property_name, property_value 
    from database_properties
    where property_name like '%CHARACTERSET%';
    Quel est le résultat sur les bases respectives ?
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

  3. #3
    Nouveau Membre du Club
    Inscrit en
    avril 2002
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 109
    Points : 36
    Points
    36

    Par défaut

    Après avoir reçu la réponse du fournisseur, c'est comme vous avez dit, le character set qui est en cause. Voici l'information.

    Sur la base source:

    NLS_CHARACTERSET
    WE8MSWIN1252

    NLS_NCHAR_CHARACTERSET
    AL16UTF16

    Sur la base cible:

    NLS_CHARACTERSET
    AL32UTF8

    NLS_NCHAR_CHARACTERSET
    AL16UTF16

    Maintenant, comment puis-je exporter de WE8MSWIN1252 à AL32UTF8 via EXP? A moins qu'une commande existe avec IMP?

    Merci!

  4. #4
    Expert Confirmé Sénior

    Profil pro
    Inscrit en
    décembre 2002
    Messages
    2 871
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : décembre 2002
    Messages : 2 871
    Points : 5 198
    Points
    5 198

    Par défaut

    A mon sens, c'est à votre fournisseur de se débrouiller : qu'il crée une base en WE8MSWIN1252, et il n'aura pas de souci à importer vos données.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

  5. #5
    Nouveau Membre du Club
    Inscrit en
    avril 2002
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 109
    Points : 36
    Points
    36

    Par défaut

    D'accord, mais à ce que j'en comprends, il n'y a rien à faire que de créer une nouvelle base?

    Merci!

  6. #6
    Expert Confirmé Sénior

    Profil pro
    Inscrit en
    décembre 2002
    Messages
    2 871
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : décembre 2002
    Messages : 2 871
    Points : 5 198
    Points
    5 198

    Par défaut

    Citation Envoyé par nmathon Voir le message
    D'accord, mais à ce que j'en comprends, il n'y a rien à faire que de créer une nouvelle base?
    Votre fournisseur a besoin pour une raison quelconque de dupliquer vos données ? Il y en a pour 10 minutes pour créer une base vide "jetable" avec le jeu de caractères de son choix.

    De votre côté c'est votre base de prod je suppose, donc il n'y a pas de raison de la bricoler.
    Et si vous vouliez le faire, vous y passeriez bien plus que 10 minutes, sans parler des risques sur votre production.

    Quelle est votre version au fait ?
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

  7. #7
    Nouveau Membre du Club
    Inscrit en
    avril 2002
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 109
    Points : 36
    Points
    36

    Par défaut

    11g R2

    Évidemment, c'est plus simple pour lui de créer une nouvelle base vide. Je posais la question au cas où j'aurais pu ajouter un argument à la commande EXP qui aurait fait une conversion de mon character set au sien mais ça ne semble pas le cas!

    Merci!

  8. #8
    Expert Confirmé Sénior

    Profil pro
    Inscrit en
    décembre 2002
    Messages
    2 871
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : décembre 2002
    Messages : 2 871
    Points : 5 198
    Points
    5 198

    Par défaut

    Dans votre cas, la base source utilise un octet par caractère, alors que la base cible utilise dans certains cas plusieurs octets par caractère.

    Par défaut, un VARCHAR2(10) s'entend comme supportant une longueur maximale de 10 octets, or dans la base cible 10 octets ne suffiront pas forcément à stocker 10 caractères, d'où votre erreur à l'import.

    Donc, dans le principe, ce qu'il faudrait, c'est que l'export enregistre dans le fichier DMP un VARCHAR2(10 CHAR) alors qu'en base c'est VARCHAR2(10 BYTE).
    Une telle option n'existe pas avec l'export classique (EXP).

    Comme vous êtes en V11, vous devriez plutôt utiliser Datapump, mais ses options normales ne permettent pas non plus une telle conversion.
    C'est peut-être possible en faisant l'export en PL/SQL (avec DBMS_METADATA + DBMS_DATAPUMP), si vous avez une soirée d'hiver à gaspiller...
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •