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

Administration Oracle Discussion :

Character_set et national_character_set [12c]


Sujet :

Administration Oracle

  1. #1
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut Character_set et national_character_set
    Salut,

    J'avoue que je me prends un peu la tête sur les characters sets d'Oracle et que les noms sont ambiguës .

    Il y a deux paramètres, chacun avec NLS au début : NLS_CHARACTERSET (le fameux character set de la base) et NLS_NCHAR_CHARACTERSET.

    Est-ce que les deux paramètres servent bien à :
    NLS_CHARACTERSET :
    -- gère les caractères utilisables dans les noms des objets Oracle que je peux créer (tables, index...)
    -- gère les caractères des données que je peux insérer dans mes tables dans les colonnes CHAR, CLOB, VARCHAR2, and LONG

    NLS_NCHAR_CHARACTERSET :
    -- gère les données qu'on peut insérer dans les colonnes de type NCHAR, NCLOB, and NVARCHAR2

    Si le paramètre NLS_NCHAR_CHARACTERSET n'est pas spécifié, il prends alors la valeur du paramètre NLS_CHARACTERSET.


    Pour trouver la valeur de ces paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * FROM database_properties WHERE property_name like '%CHARACTERSET';
    PROPERTY_NAME                  PROPERTY_VALUE                 DESCRIPTION
    ------------------------------ ------------------------------ ------------------------------
    NLS_NCHAR_CHARACTERSET         AL16UTF16                      NCHAR Character set
    NLS_CHARACTERSET               WE8MSWIN1252                   Character set
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Oui !
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Ah, merci pour la réponse, je commençais à douter
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  4. #4
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    C'est tout juste.
    Pour l'historique:
    La première idée des 'N' datatypes c'était que dans une applis seulement quelques colonnes ont besoin d'un characterset plus universel. Pas besoin de mettre en UTF-8 des noms de tables, des codes types, des numeros de compte,... Et donc on pourrait partir sur du US7ASCII qui simplifie les conversions, comparaisons et tris et mettre toute ce qui est linguistique dans des NCHAR NVARCHAR NCLOB...
    Mais personne n'est vraiment parti là dessus à une époque où on réfléchit de moins en moins au design, et d'une autre côté de plus en plus de languages se sont mit à tour gérer en Unicode et donc l'idée aujourd'hui est plutôt de créer des bases en AL32UTF8 et les NCHAR, NVARCHAR2, NCLOB et même les CLOB sont en AL16UTF16.
    Du coup on oublie un peu les NVARCHAR2 qui n'ont d'interêt que de gagner de la place lorsqu'on a principalement des caractères non-US7ASCII.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  5. #5
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Franck, tu pourrais préciser ta phrase "du US7ASCII qui simplifie les conversions, comparaisons et tris"?
    Je croyais qu'Oracle préconisait de mettre toutes les bases en UTF8 car c'était plus top pour gérer les caractères mais je n'avais pas vu cette dimension performances.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    US7ASCII = 1 octet par caractère, UTFxx de 2 à 4.
    Du coup, en temps machine, ça va plus vite de comparer des séquences d'octets plus courtes - et ça occupe moins d'espace sur le disque, en ram, en flash et cetera.

  7. #7
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Franck, tu pourrais préciser ta phrase "du US7ASCII qui simplifie les conversions, comparaisons et tris"?
    Je croyais qu'Oracle préconisait de mettre toutes les bases en UTF8 car c'était plus top pour gérer les caractères mais je n'avais pas vu cette dimension performances.
    Oui, aujourd'hui la recommendation est UTF-8 parce qu'il s'est avéré trop compliqué de décider par colonne.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  8. #8
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Citation Envoyé par Waldar Voir le message
    US7ASCII = 1 octet par caractère, UTFxx de 2 à 4.
    Du coup, en temps machine, ça va plus vite de comparer des séquences d'octets plus courtes - et ça occupe moins d'espace sur le disque, en ram, en flash et cetera.
    Attends, en UTF8 TOUS les caractères ont au minimum 2 octets?

    Quand je fais un lengthb sur le caractère A, j'ai 1 octet, pas deux. Ou bien c'est sur le stockage qu'on perd de l'espace?
    Tu peux approfondir? Par avance merci pour les réponses.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  9. #9
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    La taille est dans le nom du characterset Oracle:

    AL16UTF16 -> de 16 à 16 bits -> 2 octets
    AL32UTF8 -> de 8 à 32 bits -> de 1 à 4 octets
    WE8MSWIN125 -> 8 bits -> 1 octet
    US7ASCII -> 7 bits -> 1 octed
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  10. #10
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Franck, si je pouvais mettre 10 pouces verts à ta réponse je le ferais, je n'avais pas compris que les nombres du character set étaient le nombre d'octets
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. commande set inoperante sur character_set
    Par jean-michel-78 dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/05/2011, 21h31
  2. les accents character_set et client mysql
    Par ldiaz dans le forum Installation
    Réponses: 1
    Dernier message: 28/10/2010, 19h44
  3. Recherche des character_set
    Par Softdaemon dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/03/2010, 09h06
  4. j'arrive pas à changer mes CHARACTER_SET
    Par m.ben.hamida dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/03/2008, 16h26
  5. Character_set
    Par Débéa dans le forum Oracle
    Réponses: 10
    Dernier message: 24/04/2006, 15h21

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