修改oracle‘’字符集,修改Oracle字符集_黄海柳的博客-程序员秘密

技术标签: 修改oracle‘’字符集  

新安装的数据库,导入数据之后,发现插入汉字部分是乱码。由于本地数据时正常显示的,没有乱码。因此断定是数据库字符集的问题。

1、查看数据库的字符集:

98fd769df395a01e910b8aa4a769913a.png

发现是西欧编码、8位(一个字节)、ISO标准8859P1编码。他的编码方案是适合欧洲大部分国家。

又查询了一下本地数据库的编码格式,发现是ZHS16GBk编码格式。

f84605227670720f222c40b5287e0df8.png

在这里解释一下字符集,Oracel最早支持的编码方案是US7ASCII。

再解释一下Oracle字符集的命名遵循以下命名规则:

即:

比如:ZHS16GBK表示采用GBK编码、16位(两个字节)简体中文字符集。

现在已经发现问题原因,下面就是如何修改Oracle的字符集。

2、修改数据库字符集

数据库字符集在创建后原则上不能修改,因为字符集是在数据创建时指定的。可以指定

NLS_CHARACTERSET              ZHS16GBK表示字符集

NLS_NCHAR_CHARACTERSET        AL16UTF16国家字符集

在这里总结两种方法:

(1)通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换。

(2)通过ALTER DATABASE CHARACTER SET 语句修改字符集,但创建数据库后修改字符集是有限的,只有新的字符集是当前字符集的超集时才能修改字符集,例如UTF8是US7ASCII的超集,修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8。现在只介绍方法二。

首先用管理员用户与数据库建立连接。

SQL>shutdown immediate;

Databaseclosed.

Databasedismounted.

ORACLEinstance shut down.

SQL> startup mount;

ORACLEinstance started.

TotalSystem Global Area 1140850688 bytes

FixedSize                  2020224 bytes

VariableSize             301993088 bytes

DatabaseBuffers          822083584 bytes

RedoBuffers               14753792 bytes

Databasemounted.

SQL> ALTER SESSION SET SQL_TRACE=TRUE;

Sessionaltered.

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;

Systemaltered.

SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

Systemaltered.

SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;

Systemaltered.

SQL>alter database open;

Databasealtered.

SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;

ALTERDATABASE CHARACTER SET ZHS16GBK

*

ERROR atline 1:

ORA-12712:new character set must be a superset of old character set

碰到这个问题是必然的,可以不理会这这个错误,可以路过超集的检查。

SQL>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

Databasealtered.

SQL>shutdown immediate;

Databaseclosed.

Databasedismounted.

ORACLEinstance shut down.

SQL> startup

ORACLEinstance started.

TotalSystem Global Area 1140850688 bytes

FixedSize                  2020224 bytes

VariableSize             301993088 bytes

DatabaseBuffers          822083584 bytes

RedoBuffers               14753792 bytes

Databasemounted.

Databaseopened.

3、修改之后验证

(1)修改之前状态:SQL>  select * from v$nls_parameters;

PARAMETER                                                       VALUE

--------------------------------------------------------------------------------------------------------------------------------

NLS_LANGUAGE                                                    SIMPLIFIED CHINESE

NLS_TERRITORY                                                   CHINA

NLS_CURRENCY                                                   ¥

NLS_ISO_CURRENCY                                                 CHINA

NLS_NUMERIC_CHARACTERS                                           .,

NLS_CALENDAR                                                    GREGORIAN

NLS_DATE_FORMAT                                                 DD-MON-RR

NLS_DATE_LANGUAGE                                               SIMPLIFIED CHINESE

NLS_CHARACTERSET                                                ZHS16GBK

NLS_SORT                                                        BINARY

NLS_TIME_FORMAT                                                  HH.MI.SSXFFAM

NLS_TIMESTAMP_FORMAT                                            DD-MON-RR HH.MI.SSXFF AM

NLS_TIME_TZ_FORMAT                                              HH.MI.SSXFF AM TZR

NLS_TIMESTAMP_TZ_FORMAT                                          DD-MON-RRHH.MI.SSXFF AM TZR

NLS_DUAL_CURRENCY¥

NLS_NCHAR_CHARACTERSET                                          AL16UTF16

NLS_COMP                                                         BINARY

NLS_LENGTH_SEMANTICS                                            BYTE

NLS_NCHAR_CONV_EXCP                                             FALSE

19 rows selecte

4、删除原来的数据,重新导入新的数据

修改字符集之后,里面的数据任然是乱码,因此需要重新导入数据。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29534463/article/details/116439858

智能推荐

个人博客网站——使用Markdown编辑器,发布浏览博客文章_A snicker的博客-程序员秘密_editor.md

作为博客文章最基本的功能,我们要能够编辑md文本,这里的网站成品如下:博客文章重点html:这里的markdown编辑器使用的是开源的Editor.md编辑器,直接导入它的js、css,设置好div的id,通过js函数调用即可。<div class="required field"> <div class="" id="md-content" style="z-index: 1 !important;"> <textarea placehold

『杭电1534』Schedule Problem_漠宸离若的博客-程序员秘密

Problem DescriptionA project can be divided into several parts. Each part should be completed continuously. This means if a part should take 3 days, we should use a continuous 3 days do complete it. There are four types of constrains among these parts w

windows 2008 server r2服务器 cd 切换文件夹失效处理_尤宗旭的博客-程序员秘密

今天在部署项目jar文件时,发现cmd ,cd 切换指定文件夹 不执行处理办法:利用pushd命令 指定路径

Word2003公式编号设置_cheng648266890的博客-程序员秘密

Word2003公式编号设置在用Word2003中插入由mathtype输入的公式后,要求公式居中,编号居右。今天主要介绍一下如何设置,以及如何套用设置好的格式,希望对您有所帮助。1)鼠标单击公式所在行,将光标停在公式所在的行2)在标尺上拖动鼠标,即出现一个制表位,拖到居中的位置, 如此这般,再建立一个指表位,拖到右边3)双击制表位,修改制表位的属性,前一个设置为居中,后一个设置为

为什么要内存对齐?内存对齐原则?如何判断大小端?_porryCn的博客-程序员秘密

为什么要内存对齐? 访问未对齐的内存,处理器要访问两次(数据先读高位,再度地位),访问对齐的内存,处理器只要访问一次,为了提高处理器读取数据的效率,我们使用内存对齐。Windows 默认对齐数为8字节,Linux 默认对齐数为4字节。 使用内存对齐的原因还有平台的原因:不是所有的硬件平台都能访问特定的地址上的任意数据,某些平台只能访问特定的地址上的获取数据,否则会抛出异常。内存对齐原则...

]Visual C++ ODBC数据库编程入门 (2015-06-13 18:06:31)_sunnyli3166的博客-程序员秘密

Visual C++数据库编程   ODBC基本概念 ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分

随便推点

pyspark学习之分布式hadoop+spark集群环境搭建_Torres Ye的博客-程序员秘密

环境搭建hadoop+spark前期准备配置免密登录生成密钥:ssh-keygen -t rsa添加密钥 cat ~/id_ras.pub >> ~/authorized_keysscp 传输同步到其他节点 scp 文件 [email protected]:路径exp: scp scp ~/.ssh/id_rsa.pub [email protected]:~配置h...

Android电子白板 视频会议电子白板_现实-乱了青年心的博客-程序员秘密

Android电子白板   实现了功能。服务器传送和转发没放:废话不说直接贴代码了MainActitvty.java(主类)package com.ubi.whitebord;import comm.ubi.util.DashPoint;import comm.ubi.util.Point;import comm.ubi.util.PointData;import an

[Go]GO语言实战-gorm获取insert的自增id 和 struct标签不映射到表字段_小红帽2.0的博客-程序员秘密

实现gofly客服的过程中遇到的问题gorm在插入完成数据后,想要获取插入的自增id ,可以使用Create()方法执行插入,在结构体里直接就能获取到ID例如下面这个Usertype User struct { Model Name string `json:"name"` Password string `json:"password"` Nickname s...

程序员该如何进行 SQL 数据库的优化?_CSDN资讯的博客-程序员秘密

作者 |单一色调责编| Elle出品 | CSDN 博客之前的文章是从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢...

牛顿迭代法求平方根原理_chenrenxiang的博客-程序员秘密_迭代法求平方根原理

牛顿迭代法可以求解n次方的根,但这里只讨论用它来求平方根。牛顿迭代法求平方根过程Java代码实现 /** * 求一个数的平方根 * @param number * @return */ public static double squareRoot(double number){

算法学习笔记(1)----最大公约数_weixin_34150224的博客-程序员秘密

为什么80%的码农都做不了架构师?>>> ...