Comment changer le jeu de caractères dans Oracle 11g r2 Express edition
J'ai du modifier le jeu de caractères à partir AL32UTF8 à WE8MSWIN1252 dans un Oracle 11g r2 Express instance... j'ai essayé d'utiliser la commande:
ALTER DATABASE CHARACTER SET WE8MSWIN1252;
Mais il omet de dire que MSWIN1252 n'est pas un sur-ensemble de AL32UTF8. Ensuite, j'ai trouvé quelques articles parlant CSSCAN, et que l'outil ne semble pas être disponible dans Oracle 11 Express.
http://www.oracle-base.com/articles/10g/CharacterSetMigration.php
Quelqu'un a une idée sur comment faire? Merci d'avance
Modifier
Clarifier un peu: Le vrai problème, c'est que je suis en train d'importer des données dans une table qui contient une colonne définie comme VARCHAR(6 octets). La chaîne à l'origine du problème est 'eq.mês', il a besoin de 6 octets dans MSWIN1252 et 7 octets en UT8
J'aimerais conserver la base de données DDL identique dans les deux cas... je suis en train de penser à propos du changement de la colonne de type VARCHAR(6 CARACTÈRES), mais je ne sais pas s'il y a des inconvénients sur ce
qui sonne comme un plan raisonnable pour moi (alors que l'évolution des jeux de caractères)
Si vous vous souciez beaucoup le jeu de caractères que vous ne devriez probablement pas utiliser Express Edition. Express Edition est bon pour les étudiants et les quelques rares de formation et de production utilise. Mais basé sur le OTN licence de développeur, la plupart des gens à l'aide de Express Edition pouvez utiliser librement Enterprise Edition à la place. Ou dans le pire des cas, payer quelques centaines de dollars pour les Personnels de l'Édition.
Vérifier les jeux de caractères pris en charge par oracle express edition est docs.oracle.com/cd/E17781_01/install.112/e18803/...
OriginalL'auteur alessandroasm | 2012-02-02
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas.
L'Express Edition 11g est disponible uniquement à l'aide d'un caractère UTF-8. Si vous souhaitez revenir à l'édition express de 10g, il y avait un Ouest de la version Européenne qui a utilisé le Windows-1252 jeu de caractères. Contrairement aux autres éditions, Oracle ne prend pas en charge la gamme complète de jeux de caractères dans l'Édition Express ni ne prend en charge la modification du jeu de caractères d'une base de données XE.
Pourquoi croyez-vous besoin de changer le jeu de caractères de la base de données? Autre que, potentiellement, de prendre un peu plus d'espace de stockage pour prendre en charge les caractères de la moitié supérieure du Windows-1252 gamme, qui ne sont généralement pas particulièrement très utilisé, il n'y a pas beaucoup d'inconvénients à UTF-8 base de données.
Et vous êtes en cours d'exécution dans l'espace des questions? Vous devriez être en mesure de déclarer la colonne comme
VARCHAR2(6 CHAR)
d'allouer 6 caractères au lieu de 6 octets ou de définir laNLS_LENGTH_SEMANTICS
de "CHAR", de sorte qu'uneVARCHAR2(6)
alloue 6 caractères au lieu de 6 octets. Ou vous pouvez simplement augmenter la taille de toutes les colonnes de caractères qui stockent des données non-ASCII.J'ai trouvé que Oracle Express prend en charge WE8MSWIN1252... Tout ce que j'avais à faire était de courir
createDb -dbchar WE8MSWIN1252
Vous pouvez, mais ce n'est pas quelque chose que je vous suggère. Oracle explicitement essayé de limiter l'ensemble des jeux de caractères sont disponibles pour les XE les bases de données de sorte qu'il est tout à fait possible que vous aurez briser quelque chose en essayant de travailler autour de qui ou qu'une future mise à jour ou un script suppose que la base de données utilise le jeu de caractères UTF-8 et entraîner des problèmes dans votre base de données.
OriginalL'auteur Justin Cave
Je dirais que votre meilleure option lorsque vous voulez aller à un jeu de caractères qui prend en charge uniquement un sous-ensemble des caractères d'origine, votre meilleure option est d'utiliser l'exp et de la pmi (ou expdp et impdp).
Êtes-vous sûr que pas un seul tableau va contenir n'importe quel caractère ne trouve pas dans la page de codes 1252 ?
en effet.
Le vrai problème est que je suis en train d'importer des données dans une table qui contient une colonne définie comme VARCHAR(6 octets). Et puis, il y a une ligne qui a exactement 6 octets sur la source de l'encodage, mais a besoin de 7 sur la destination...
Pas possible. Chaque personnage prend un octet dans MSWIN1252, et aucun personnage prend une demi-octets en UTF-8.
Pas possible lors de l'examen des caractères anglais... la chaîne à l'origine du problème est 'eq.mês'
OriginalL'auteur Benoit
Le problème de la seule exécution de cette commande ALTER DATABASE est que le Dictionnaire de Données n'a pas été converti et il peut être endommagé.
J'ai eu le même problème. Dans mon cas, nous sommes à l'aide d'un Oracle 11g Express Edition (11.2.0.2.0) et nous avons vraiment besoin qu'il fonctionne sur WE8MSWIN1252 jeu de caractères, mais je ne peux pas changer le jeu de caractères de l'installation (il a toujours installer avec AL32UTF8).
Avec un Client Oracle 11g installé en tant qu'Administrateur et exécutez uniquement les
csscan full=y
(vérifier ce lien https://oracle-base.com/articles/10g/character-set-migration) et nous un avis qui sont à perte et convertibles problèmes de données dans notre base de données. Mais, les problèmes sont à la MDSYS (Oracle Spatial) et APEX_040000 (Oracle Application Express) schémas. Donc, comme nous n'avons pas besoin de ces produits, nous les supprimer (vérifier ce lien: http://fast-dba.blogspot.com.br/2014/04/how-to-remove-unwanted-components-from.html).Ensuite, nous exportons avec
expdp
les utilisateurs de schémas et de déposer les utilisateurs (ils doivent être restituée à la fin du processus).L'exécution de csscan à nouveau avec
full=y capture=y
, il rapporte que:The data dictionary can be safely migrated using the CSALTER script
. Si le rapport n'a pas cela, la csalter.plb script ne fonctionnera pas, car il ya certaines conditions qui ne seront pas satisfaits:Dans notre cas, ces conditions ont été satisfaites et nous aurions couru le CSALTER script avec succès. De plus, ce script exécute la commande ALTER DATABASE vous essayez d'exécuter et convertit les données CLOB d'un Dictionnaire de Données qui est convertible.
Enfin, nous avons créer les utilisateurs et les tablespaces de notre application et nous importer le dump de l'utilisateur des données avec succès.
OriginalL'auteur lssilveira