『壹』 怎样察看oracle数据库的字符集
Oracle数据库查看和修改服务器端的字符集的方法是本文主要要介绍的内容,接下来救让我们一起来了解一下这部分内容。
A、oracle server 端字符集查询 select userenv('language') from al 其中NLS_CHARACTERSET 为server端字符集 NLS_LANGUAGE 为 server端字符显示形式
B、查询oracle client端的字符集 $echo $NLS_LANG 如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。
C、server端字符集修改 将数据库启动到RESTRICTED模式下做字符集更改: SQL> conn /as sysdba Connected. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 236000356 bytes Fixed Size 451684 bytes Variable Size 201326592 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes Database mounted. SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; System altered. SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; System altered. SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; System altered. SQL> alter database open; Database altered. SQL> ALTER DATABASE CHARACTER SET ZHS16GBK; ALTER DATABASE CHARACTER SET ZHS16GBK ERROR at line 1: ORA-12712: new character set must be a superset of old character set 提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改: SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; Database altered. SQL> select * from v$nls_parameters; 略 19 rows selected. 重启检查是否更改完成: SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 236000356 bytes Fixed Size 451684 bytes Variable Size 201326592 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes Database mounted. Database opened. SQL> select * from v$nls_parameters; 略 19 rows selected. 我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验。 这一方法在某些方面是有用处的,比如测试;应用于产品环境大家应该格外小心,除了你以外,没有人会为此带来的后果负责。 结语(我们不妨再说一次): 对于DBA来说,有一个很重要的原则就是:不要把你的数据库置于危险的境地! 这就要求我们,在进行任何可能对数据库结构发生改变的操作之前,先做有效的备份,很多DBA没有备份的操作中得到了惨痛的教训。
D、client端字符集修改 在 /home/oracle与 /root用户目录下的。bash_profile中 添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 语句
希望可以帮到您,谢谢!
『贰』 oracle如何查看客户端的字符集
查看数据库字符集,涉及三方面的字符集:
查询oracle server端搏卖的字符集 :比较直观的查询方法是以种:SQL>selectuserenv(‘language’) from al;结果类似如下:AMERICAN _ AMERICA. ZHS16GBK
如何查询dmp文件的字符集 :用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 al;如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上):cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6 ,然后用上述SQL也可以得到它对应的字符集。
查询oracle client端的字符集:在windows平台下,就是注册表里面相应OracleHome的NLS_LANG。还可以在dos窗口里面自己设置,比如:set nls_lang=AMERICAN_AMERICA.ZHS16GBK ,这样就只影基渗逗响这个窗口里面的环喊哪境变量。在unix平台下,就是环境变量NLS_LANG。
『叁』 如何查看Oracle数据库的字符编码
1、SELECTvalue$FROMsys.props$WHEREname='NLS_CHARACTERSET';
--查询oracle相关参数
2、SELECT*FROMNLS_DATABASE_PARAMETERS;
(3)如何查Oracle数据库字符集扩展阅读:
OracleDatabase,又名OracleRDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。
可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。
比如SilverStream就是基于数据库的一种中间指改件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用链逗前它。
Oracle数据库最新版棚清本为OracleDatabase12c。Oracle数据库12c引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。
此外,一些创新特性可最大限度地提高资源使用率和灵活性,如OracleMultitenant可快速整合多个数据库,而AutomaticDataOptimization和HeatMap能以更高的密度压缩数据和对数据分层。
这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c成为私有云和公有云部署的理想平台。
参考资料:Oracle数据库--网络
『肆』 如何查看及修改oracle编码格式方法
查看及修改oracle编码格式方法:枝尺x0dx0a1、查看oracle数据库字符集:x0dx0aselect userenv('language') from al;x0dx0a查询结果:x0dx0aSIMPLIFIED CHINESE_CHINA.AL32UTF8x0dx0a2、修改oracle数哪搭薯据库字符集:(在SQL Plus中)x0dx0asql> conn / as sysdba;x0dx0asql> shutdown immediate;x0dx0adatabase closed.x0dx0adatabase dismounted.x0dx0aoracle instance shut down.x0dx0asql> startup mount;x0dx0aoracle instance started.x0dx0atotal system global area 135337420 bytesx0dx0afixed size 452044 bytesx0dx0avariable size 109051904 bytesx0dx0adatabase buffers 25165824 bytesx0dx0aredo buffers 667648 bytesx0dx0adatabase mounted.x0dx0asql> alter system enable restricted session;x0dx0asystem altered.x0dx0asql> alter system set job_queue_processes=0;x0dx0a李者system altered.x0dx0asql> alter system set aq_tm_processes=0;x0dx0asystem altered.x0dx0asql> alter database open;x0dx0adatabase altered.x0dx0asql> alter database character set internal_use UTF8x0dx0asql> shutdown immediate;x0dx0asql> startup;
『伍』 如何查看oracle用的什么字符集
查看oracle字符集方法如下:
1、单机电脑做小脚windows图标,输入框中输入“cmd”
(5)如何查Oracle数据库字符集扩展阅读:
甲骨文公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企早圆业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。2013年,甲骨文已超越IBM,成为继Microsoft后全球第二大软件公司。
2017年6月7日发布的2017年美国《财富》500强,甲骨文公司排名第81位。 2017年6月,《2017年BrandZ最具价值全球品牌100强》公布,甲骨文公司排名第46位。
字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。中文文字数目大,而且还分为简体中文和繁体中文两种不同书写规则的搏睁银文基宴字,而计算机最初是按英语单字节字符设计的,因此,对中文字符进行编码,是中文信息交流的技术基础。
网络-字符集
网络-甲骨文公司
『陆』 如何查看oracle数据库的字符集
数据库服厅宽务器字符集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。
涉及三方面的字符集,
1. oracel server端的字符集;
2. oracle client端的字符集;
3. dmp文件的字符集。
在做数据导入的时候,需要这三个字符集都一致才能正确导入。
2.1 查询oracle server端的字符集
有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以下这种:
SQL> select userenv('language') from al;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
SQL>select userenv(‘language’) from al;
AMERICAN _ AMERICA. ZHS16GBK
2.2 如何查询dmp文件的字符集
用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 al;
ZHS16GBK
如果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。
$echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK
如果检查的结果发现server端与client端字符集不一致,请统一修改为同server端相同的字符集。
补充:
(1).数据库服务器字符集
select * from nls_database_parameters
来源于props$,是表示数据库的字符集。
(2).客户端字符集环境
select * from nls_instance_parameters
其来源于v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表
(3).会话字符集环境
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数据库字符集
什么是Oracle字符集
Oracle字符集是一个字节数据解释的符号集合,有大小之分,有相互的包容关系。
Oracle支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字和日历自动适应本地化语言和平台。
影响oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下:
NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:
Language指定服务器消息的语言,territory指定服务器的日期和数字格式,charset指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK。
从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。
如何查询Oracle的字符集
很多人都碰到过因为字符集不同而使数据导入失败的情况。这涉及三方面的字符集,一是Oracel server端的字符集,二是oracle client端的字符集;三是dmp文件的字符派缓集。在做数据导入的时候,需要这三个字符集都一致才能正确导入。
1、查询Oracle Server端的字符集
有很多种方法可以查出oracle server端的字符集,比较直观的查尘链模询方法是以下这种:
SQLselect userenv(‘language’) from al;
结果类似如下:AMERICAN _ AMERICA. ZHS16GBK.
2、如何查询dmp文件的字符集
用Oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的唤并第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:
SQL select nls_charset_name(to_number(','xxxx')) from al; ZHS16GBK
如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上):
cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
然后用上述SQL也可以得到它对应的字符集。
3、查询Oracle client端的字符集
这个比较简单。在Windows平台下,就是注册表里面相应OracleHome的NLS_LANG.还可以在Dos窗口里面自己设置,比如:
set nls_lang=AMERICAN_AMERICA.ZHS16GBK
这样就只影响这个窗口里面的环境变量。在Unix平台下,就是环境变量NLS_LANG.
$echo $NLS_LANG AMERICAN_AMERICA.ZHS16GBK
如果检查的结果发现Server端与Client端字符集不一致,请统一修改为同Server端相同的字符集。
修改Oracle的字符集
上文说过,oracle的字符集有互相的包容关系。
如us7ascii就是zhs16gbk的子集,从us7ascii到zhs16gbk不会有数据解释上的问题,不会有数据丢失。在所有的字符集中utf8应该是最大,因为它基于unicode,双字节保存字符(也因此在存储空间上占用更多)。
一旦数据库创建后,数据库的字符集理论上讲是不能改变的。因此,在设计和安装之初考虑使用哪一种字符集十分重要。根据Oracle的官方说明,字符集的转换是从子集到超集受支持,反之不行。如果两种字符集之间根本没有子集和超集的关系,那么字符集的转换是不受oracle支持的。对数据库server而言,错误的修改字符集将会导致很多不可测的后果,可能会严重影响数据库的正常运行,所以在修改之前一定要确认两种字符集是否存在子集和超集的关系。一般来说,除非万不得已,我们不建议修改oracle数据库server端的字符集。特别说明,我们最常用的两种字符集ZHS16GBK和ZHS16CGB231280之间不存在子集和超集关系,因此理论上讲这两种字符集之间的相互转换不受支持。
修改Server端字符集(不建议使用):
在Oracle 8之前,可以用直接修改数据字典表props$来改变数据库的字符集。但Oracle8之后,至少有三张系统表记录了数据库字符集的信息,只改props$表并不完全,可能引起严重的后果。正确的修改方法如下:
$sqlplus /nolog SQLconn / as sysdba;
若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器,然后执行以下命令:
SQLSTARTUP MOUNT;
SQLALTER SYSTEM ENABLE RESTRICTED SESSION;
SQLALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQLALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQLALTER DATABASE OPEN;
SQLALTER DATABASE CHARACTER SET ZHS16GBK;
SQLALTER DATABASE national CHARACTER SET ZHS16GBK;
SQLSHUTDOWN IMMEDIATE; SQLSTARTUP
修改dmp文件字符集:
上文说过,dmp文件的第2第3字节记录了字符集信息,因此直接修改dmp文件的第2第3字节的内容就可以‘骗’过oracle的检查。这样做理论上也仅是从子集到超集可以修改,但很多情况下在没有子集和超集关系的情况下也可以修改,我们常用的一些字符集,如US7ASCII,WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK基本都可以改。因为改的只是dmp文件,所以影响不大。
具体的修改方法比较多,最简单的就是直接用UltraEdit修改dmp文件的第2和第3个字节。比如想将dmp文件的字符集改为ZHS16GBK,可以用以下SQL查出该种字符集对应的16进制代码:
SQL select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from al; 0354
然后将dmp文件的2、3字节修改为0354即可。
如果dmp文件很大,用ue无法打开,就需要用程序的方法了。网上有人用java存储过程写了转换的程序(用java存储过程的好处是通用性教好,缺点是比较麻烦)。我在Windows下测试通过。但要求Oracle数据库一定要安装JVM选项。
『捌』 如何查看和修改Oracle数据库服务器端的字符集
A、oracle server 端字符集查询
select userenv('language') from al
其中NLS_CHARACTERSET 为server端字符集
NLS_LANGUAGE 为 server端字符显示形式
B、查询oracle client端的字符集
$echo $NLS_LANG
如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。
C、server端字符集修改
将数据库启动到RESTRICTED模式下做字符集更改:
SQL> conn /as sysdba Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。
.1.oracle server端字符集查询 复制代码代码如下: select userenv('language') from al; server字符集修改: 将数据库启动到RESTRICTED模式下做字符集更改:&??
oracle10g服务器端是安装在AIX 6.0系统上,客户端是安装在windows server 2008 系统上,客户端与服务器已成功连接,但是数据库表里的中文字无法显示,显示为“?”,用SQLPLUS查得服务器端的字符集为AL16uTF16,如何修改该字符集使之支持中文呢?另外oracle10G客户端的字符集需不需要设置,如何查看和设置呢?
『玖』 如何查询Oracle的字符集
用以下命令查看oracle字符集:
select userenv('language') from al;
『拾』 怎样修改查看Oracle字符集
[Q]怎么样查看数据库字符集 [A]数据库服务器字符集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>环境变量>注册表>参数文件字符集要求一致 但是语言设置却可以不同 语言设置建议用英文 如字租者符集是zhs gbk 则nls_lang可以是American_America zhs gbk [Q]怎么样修改字符集 [A] i以上版本可以通过alter database来修改字符集 但也只限于子集到超集 不建议修改props$表 将可能导致严重错误 陵启Startup nomount;Alter database mount exclusive;Alter system enable restricted session;Alter system set job_queue_process= ;Alter database open;Alter database character set zhs gbk; lishixin/Article/program/Oracle/201311/17182