您当前的位置:首页 > 互联网教程

怎样查看数据库的字符集

发布时间:2025-05-21 09:39:03    发布人:远客网络

怎样查看数据库的字符集

一、怎样查看数据库的字符集

1、Oracle数据库查看和修改服务器端的字符集的方法是本文主要要介绍的内容,接下来救让我们一起来了解一下这部分内容。

2、 select userenv('language') from dual

3、其中NLS_CHARACTERSET为server端字符集

4、 NLS_LANGUAGE为 server端字符显示形式

5、 B、查询oracle client端的字符集

6、如果发现你select出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。

7、将数据库启动到RESTRICTED模式下做字符集更改:

8、 SQL> conn/as sysdba Connected.

9、 SQL> startup mount ORACLE instance started.

10、 Total System Global Area 236000356 bytes

11、 Variable Size 201326592 bytes

12、 Database Buffers 33554432 bytes

13、 SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;

14、 SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

15、 SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;

16、 SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;

17、 ALTER DATABASE CHARACTER SET ZHS16GBK ERROR at line 1:

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

19、提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:

20、 SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

21、 SQL> select* from v$nls_parameters;

22、 SQL> startup ORACLE instance started.

23、 Total System Global Area 236000356 bytes

24、 Variable Size 201326592 bytes

25、 Database Buffers 33554432 bytes

26、 SQL> select* from v$nls_parameters;

27、我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验。

28、这一方法在某些方面是有用处的,比如测试;应用于产品环境大家应该格外小心,除了你以外,没有人会为此带来的后果负责。

29、对于DBA来说,有一个很重要的原则就是:不要把你的数据库置于危险的境地!

30、这就要求我们,在进行任何可能对数据库结构发生改变的操作之前,先做有效的备份,很多DBA没有备份的操作中得到了惨痛的教训。

31、在/home/oracle与/root用户目录下的。bash_profile中

32、添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8"语句

二、如何查看Oracle数据库字符集,详细操作,xx

数据库服务器字符集select* from nls_database_parameters,其来源于props$,是表示数据库的字符集。

客户端字符集环境select* from nls_instance_parameters,其来源于v$parameter,

表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表

会话字符集环境select* from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。

客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件

字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。

在做数据导入的时候,需要这三个字符集都一致才能正确导入。

2.1查询oracle server端的字符集

有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以下这种:

SQL> select userenv('language') from dual;

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

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

SQL>select userenv(‘language’) from dual;

用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:

SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;

如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上):

cat exp.dmp|od-x|head-1|awk'{print$2$3}'|cut-c 3-6

然后用上述SQL也可以得到它对应的字符集。

2.3查询oracle client端的字符集

在windows平台下,就是注册表里面相应OracleHome的NLS_LANG。还可以在dos窗口里面自己设置,

比如: set nls_lang=AMERICAN_AMERICA.ZHS16GBK

这样就只影响这个窗口里面的环境变量。

在unix平台下,就是环境变量NLS_LANG。

如果检查的结果发现server端与client端字符集不一致,请统一修改为同server端相同的字符集。

select* from nls_database_parameters

来源于props$,是表示数据库的字符集。

select* from nls_instance_parameters

其来源于v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表

select* from nls_session_parameters

来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。

(4).客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。

如果多个设置存在的时候,NLS作用优先级别:Sql function> alter session>环境变量或注册表>参数文件>数据库默认参数

字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。

三、如何查看oracle用的什么字符集

1、单机电脑做小脚windows图标,输入框中输入“cmd”

3、登录oracle数据库,使用sys用户以dba身份登录。输入“SQLPLUS”,回车,然后再在用户名下输入“SYS AS SYSDBA”,回车

4、密码后面输入“SYS”,回车。这里输入密码是隐式的,所以看不见,只要输入就好了

5、这里输入SQL查询语句,“select* from nls_database_parameters where parameter='NLS_CHARACTERSET';”然后回车。注意单引号内的内容必须大写,sql语句后面的分号。这里可以看到,数据库使用的是简体中文的字符集。

甲骨文公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。2013年,甲骨文已超越IBM,成为继Microsoft后全球第二大软件公司。

2017年6月7日发布的2017年美国《财富》500强,甲骨文公司排名第81位。 2017年6月,《2017年BrandZ最具价值全球品牌100强》公布,甲骨文公司排名第46位。

字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。中文文字数目大,而且还分为简体中文和繁体中文两种不同书写规则的文字,而计算机最初是按英语单字节字符设计的,因此,对中文字符进行编码,是中文信息交流的技术基础。