如何查看Oracle数据库字符集
oracle查询字符集语句分享
oracle查 询 字 符 集 语 句 分 享
(1)查看字符集(三条都是等价的)
复制代码 代码如ቤተ መጻሕፍቲ ባይዱ:
select * from v$nls_parameters where parameter='NLS_CHARACTERSET' select * from nls_database_parameters where parameter='NLS_CHARACTERSET' select * from props$ where name='NLS_CHARACTERSET'
(2)查看国家字符集(三条都是等价的) 复制代码 代码如下:
select * from nls_database_parameters where parameter='NLS_NCHAR_CHARACTERSET' select * from nls_database_parameters where parameter='NLS_NCHAR_CHARACTERSET' select * from props$ where name='NLS_NCHAR_CHARACTERSET'
--DataFile脱机 ALTER TABLESPACE BSS11 OFFLINE --作用对象:表空间BSS11的所有datafile ALTER DATABASE 'BSS_03.dbf' OFFLINE ---作用对象:BSS_03.dbf,就一个datafile
Oracle数据库字符集问题总结
Oracle数据库字符集问题总结在不同数据库做数据迁移、同其它系统交换数据等,常常因为字符集不同而导致迁移失败或数据库内数据变成乱码。
现在我将oracle字符集相关的一些知识做个简单总结一、什么是oracle字符集Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。
ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。
它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。
影响oracle数据库字符集最重要的参数是NLS_LANG参数。
它的格式如下:它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。
其中:Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。
如:AMERICAN _ AMERICA. ZHS16GBK从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。
所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。
二、如何查询Oracle的字符集很多人都碰到过因为字符集不同而使数据导入失败的情况。
这涉及三方面的字符集,一是oracel server端的字符集,二是oracle client端的字符集;三是dmp文件的字符集。
在做数据导入的时候,需要这三个字符集都一致才能正确导入。
1、查询oracle server端的字符集有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以下这种:结果类似如下:AMERICAN _ AMERICA. ZHS16GBK2、如何查询dmp文件的字符集用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。
如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit 打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上):然后用上述SQL也可以得到它对应的字符集。
Oracle查看数据库字符集和客户端字符集SQL语句
Oracle查看数据库字符集和客户端字符集SQL语句
Oracle 数据库分为数据库字符集和客户端字符集两种!
很多刚接触的朋友经常会搞混这两个字符集,数据库字符集是在创建数据库时进行指定的,不建议更改!而客户端字符集是可以随时更改的!
查询数据库字符集:
select * from nls_database_parameters t where t.parameter i n ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');
查询客户端字符集:
SELECT USERENV('language') FROM DUAL;
如何修改客户端字符集?
Windows:
set NLS_LANG=american_america.AL32UTF8set NLS_LANG =SIMPLIFIED CHINESE_CHINA.ZHS16GBK
Linux:
export NLS_LANG=american_america.AL32UTF8export NLS_ LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
以上为常用客户端字符集,一个是英文,一个是中文!
本次分享到此结束啦~
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。
Oracle查看字符集
Oracle查看字符集1.查看字符集1⼀、oracle服务端字符集2 SQL> select userenv('language') from dual ;34 USERENV('LANGUAGE')5 ----------------------------------------------------6 AMERICAN_AMERICA.ZHS16GBK789⼆、oracle客户段字符集10112.1 window环境下,修改注册表ORACLE_HOME⽬录下的环境变量NLS_LANG。
12132.2 unix/linux环境下,就是环境变量$NLS_LANG1415 [oracle@wang ~]$ echo $NLS_LANG16 AMERICAN_AMERICA.ZHS16GBK1718查看数据库字符集1920数据库服务器字符集select * from nls_database_parameters;,其来源于props$,是表⽰数据库的字符集。
2122 客户端字符集环境select * from nls_instance_parameters;,其来源于v$parameter,表⽰客户端的字符集的设置,可能是参数⽂件,环境变量或者是注册表23 24如何查询dmp⽂件的字符集2526⽤oracle的exp⼯具导出的dmp⽂件也包含了字符集信息,dmp⽂件的第2和第3个字节记录了dmp⽂件的字符集。
如果dmp⽂件不⼤,⽐如只有⼏M或⼏⼗M,可以⽤UltraEdit打开(16进制⽅式),看第2第3个字节的内容,如0354,然后⽤以下SQL查2728 SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;2930 ZHS16GBK3132如果dmp⽂件很⼤,⽐如有2G以上(这也是最常见的情况),⽤⽂本编辑器打开很慢或者完全打不开,可以⽤以下命令(在unix主机上):33cat exp.dmp |od -x|head -1|awk'{print $2 $3}'|cut -c 3-634然后⽤上述SQL也可以得到它对应的字符集2.od 命令解释#od命令功能说明:输出⽂件内容。
Oracle 导入导出字符集乱码问题
Oracle 导入导出字符集乱码问题导出/导入与字符集进行数据的导入导出时,我们要注意关于字符集的问题。
在EXP/IMP过程中我们需要注意四个字符集的参数:导出端的客户端字符集,导出端数据库字符集,导入端的客户端字符集,导入端数据库字符集。
我们首先需要查看这四个字符集参数。
查看数据库的字符集的信息:SQL> select * from nls_database_parameters;PARAMETER VALUE--------------------------------------------------------------------------------------------------------------NLS_LANGUAGE AMERICANNLS_TERRITORY AMERICANLS_CURRENCY $NLS_ISO_CURRENCY AMERICANLS_NUMERIC_CHARACTERS .,NLS_CHARACTERSET ZHS16GBKNLS_CALENDAR GREGORIANNLS_DATE_FORMAT DD-MON-RRNLS_DATE_LANGUAGE AMERICANNLS_SORT BINARYNLS_TIME_FORMAT HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AMNLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZMNLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZMNLS_DUAL_CURRENCY $NLS_COMP BINARYNLS_NCHAR_CHARACTERSET ZHS16GBKNLS_RDBMS_VERSION 8.1.7.4.1NLS_CHARACTERSET:ZHS16GBK是当前数据库的字符集。
怎么查看数据库的字符集和排列规则
怎么查看数据库的字符集和排列规则要查看数据库的字符集和排序规则,可以使用不同的方法,下面将介绍如何在常见的几种数据库中进行操作。
一、MySQL数据库MySQL是一个开源的关系型数据库管理系统,常用于Web应用程序的后台数据存储。
要查看MySQL数据库的字符集和排序规则,可以按照以下步骤进行操作:1.登录MySQL数据库。
打开命令行窗口或使用MySQL客户端工具,输入正确的用户名和密码进行登录。
2.查看数据库的字符集。
在MySQL命令行或客户端工具中,输入以下命令:```SHOW VARIABLES LIKE 'character_set_database';```这条命令将显示当前数据库的字符集。
3.查看数据库的排序规则。
在MySQL命令行或客户端工具中,输入以下命令:```SHOW VARIABLES LIKE 'collation_database';```这条命令将显示当前数据库的排序规则。
二、Oracle数据库Oracle是一种在大型企业环境中广泛使用的关系型数据库管理系统。
要查看Oracle数据库的字符集和排序规则,可以按照以下步骤进行操作:1.登录Oracle数据库。
打开命令行窗口或使用SQL*Plus等Oracle客户端工具,输入正确的用户名和密码进行登录。
2.运行以下SQL查询语句:```SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_SORT');```这条查询语句将显示数据库的字符集和排序规则。
三、SQL Server数据库SQL Server是由Microsoft开发的关系型数据库管理系统,在Windows操作系统上广泛使用。
要查看SQL Server数据库的字符集和排序规则,可以按照以下步骤进行操作:1.登录SQL Server数据库。
ORACLE数据库DBA专题-字符集
一、字符集基本知识Oracle全球支持(即Globalization Support)允许我们使用本地语言和格式来存储和检索数据。
通过全球支持,Oracle可以支持多种语言及字符集,得以展示数据库的强大魅力。
由于不同语言及字符集的共同存储存在设置上具有一定的复杂性,字符集一度成为普遍困扰大家的一个主要问题。
本文试图就一些常见问题进行探讨,希望可以把一些实际经验共享给大家!1.字符集的基本知识如果从头说起,字符集最早的编码方案来自于与ASCII.这也是我们最常见的编码方式。
该方案起源于1960年代初期,最初是美国国会图书馆制定用来作为美国图书馆界书目交换的共同标准,最后完善成为美国的国家标准 ASCII(American Standard Codefor Information Interchange),之后进一步演变成世界性的计算机字符编码标准ISO646(其全名为7-bit coded character set for information interchange)。
成为计算机编码方案的基础。
Oracle数据库最早支持的编码方案也就是US7ASCII.但是我们知道,英文字符一般是以一个字节来存储的,7位的编码方案最多只能代表128个字符;经过扩展的8位的编码方案也只能代表256个字符,这远远不能满足计算机发展的需要,对于亚洲国家复杂的字符存储需要更多的码位,于是各种编码方案随之而生。
为了容纳全世界各种语言的所有字符和符号,解决不同编码之间的兼容和转换问题,1991年元月,10多家公司共同出资,组建Unicode协会,随后Unicode编码产生了。
Unicode协会的口号是: 给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么程序,不论什么语言。
最初Unicode编码使用2-Byte(16bit)来进行编码,但是最多只能容纳65536个字符,仍然不够使用,后来进行了扩充,也就是 Unicode3.1标准,增加了额外的补充字符定义,现在Unicode4.0标准已经发布,具体可以参考Unicode官方站点:Unicode编码方案主要有三个实施标准:UTF-8,USC-2,UTF-16。
oracle数据库字符集
oracle数据库字符集Oracle字符集的基本原理1. Oracle服务器字符集oracle以哪种字符编码存储字符,可以通过以下语句查出数据库字符集的设置。
⽅法1SQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';PARAMETER VALUE---------------------------------------------------------------- ----------------------------------------------------------------NLS_CHARACTERSET AL32UTF8⽅法2SQL> select userenv('language') from dual;USERENV('LANGUAGE')----------------------------------------------------AMERICAN_AMERICA.AL32UTF82. 客户端操作系统字符集Windows,可以使⽤chcp命令获得代码页(code page)C:\Users\zy>chcp活动代码页: 936到微软的官⽅⽂档《》找到其对应的字符集Linux,字符集在/etc/sysconfig/i18n设置:LANG="zh_CN.GB2312" (指定当前操作系统的字符集)SUPPORTED="zh_CN.GB2312"(指定当前操作系统⽀持的字符集)SYSFONT="lat0-sun16"(指定当前操作系统的字体)3.客户端NLS_LANG参数:该参数⽤于向Oracle指⽰客户端操作系统字符集它的格式如下: NLS_LANG = language_territory.charset它有三个组成部分(语⾔、地域和字符集),每个成分控制了NLS⼦集的特性。
Oracle数据库字符集的查询
Oracle数据库字符集的查询Oracle数据库字符集通俗的讲就是一个字节数据的相关的解释的符号集合,它具有大小的差异,也有互相包容关系。
Oracle是支持国家语言的相关体系结构,它允许你使用本地化语言来存储,处理,检索数据。
它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。
影响oracle数据库字符集最重要的参数是NLS_LANG参数。
它的格式如下:NLS_LANG = language_territory.charset 它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。
其中:Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset指定字符集。
如:AMERICAN _ AMERICA. ZHS16GBK。
从NLS_LANG的组成我们可以看出,真正影响Oracle数据库字符集的其实是第三部分。
所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。
如何查询Oracle的字符集很多人都碰到过因为字符集不同而使数据导入失败的情况。
这涉及三方面的字符集,一是Oracel server端的字符集,二是oracle client端的字符集;三是dmp文件的字符集。
在做数据导入的时候,需要这三个字符集都一致才能正确导入。
1、查询Oracle Server端的字符集:有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以下这种:SQL>select userenv(‘language’) from dual; 结果类似如下:AMERICAN _ AMERICA. ZHS16GBK。
2、如何查询dmp文件的字符集:用Oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2 和第3个字节记录了dmp文件的字符集。
Oracle导出导入与字符集信息查看
Oracle导出导入与字符集信息查看Oracle导出/导入与字符集信息查看进行数据的导入导出时,我们要注意关于字符集的问题。
在EXP/IMP过程中我们需要注意四个字符集的参数:导出端的客户端字符集,导出端数据库字符集,导入端的客户端字符集,导入端数据库字符集。
我们首先需要查看这四个字符集参数。
查看数据库的字符集的信息:SQL> select * from nls_database_parameters;PARAMETER VALUE------------------------------ --------------------------------------------------------------------------------NLS_LANGUAGE AMERICANNLS_TERRITORY AMERICANLS_CURRENCY $NLS_ISO_CURRENCY AMERICANLS_NUMERIC_CHARACTERS .,NLS_CHARACTERSET ZHS16GBKNLS_CALENDAR GREGORIANNLS_DATE_FORMAT DD-MON-RRNLS_DATE_LANGUAGE AMERICANNLS_SORT BINARYNLS_TIME_FORMAT HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AMNLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZM NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZMNLS_DUAL_CURRENCY $NLS_COMP BINARYNLS_NCHAR_CHARACTERSET ZHS16GBKNLS_RDBMS_VERSION 8.1.7.4.1NLS_CHARACTERSET:ZHS16GBK是当前数据库的字符集。
ORACLE字符集检查工具CSSCAN
执行完之后会在 D:\下看到 css.log.err、css.log1.out 和 css.log1.txt 文件,检查
css.log1.err 文件可以看到哪些字段需要修改到多大。例如:
User : STREAM
Table : T_FONDS_INFO
Column: TERM
Type : VARCHAR2(35)
当然,也可以利用数据字典生成脚本直接修改所有表的 CHAR 类型的字段长度为原值的
3
1.5 倍,例如:
创建 spool.sql 文件,内容如下:
set heading off set feedback OFF set echo off set pages 1000 lines 120 spool d:\length.sql select 'alter table '||table_name||' modify'||'('||COLUMN_NAME||' '||data_type||'('||ro und(DATA_LENGTH*1.5)||'));' from user_tab_columns where data_type like '%CHAR%'; spool off
些表的字段长度。ORACLE 提供了 CSSCAN 工具来查看字符集转换的时候哪些字段需要增大到
多大的长度。(当然,也可以写 PL/SQL 将所有的表为 CHAR,VARCHAR2 的字段都增大 1.5 倍),
既然 ORACLE 提供了 CSSCAN 工具,我们就要学着使用。
在 我 们 创 建 数 据 库 的 时 候 , CSSCAN 工 具一 般 不 会 被 安 装 , 我们 需 要 手 动 执 行
oracle字符集的检查与变更
selectuserenv('language') from dual;SELECT * FROM PROPS$;NLS_CHARACTERSET AL32UTF8对于简体中文平台,缺省的字符集是:ZHS16GBK常见的中文字符集有:ZHS16CGB231280 CGB2312-80 16-bit Simplified Chinese MB, ASCII ZHS16GBK GBK 16-bit Simplified Chinese MB, ASCII, UDC其中GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集--基本集》,由国家标准总局发布,1981年5月1日实施,通行于大陆。
新加坡等地也使用此编码。
GBK编码是1995年12月颁布的指导性规范。
GBK与国家标准GB 2312-80 信息处理交换码所对应的、事实上的内码标准兼容;同时,在字汇一级支持ISO/IEC 10646-1 和GB 13000-1 的全部中日韩(CJK) 汉字(20902字)。
包含了更多的编码。
但是我们说,ZHS16GBK 并非是ZHS16CGB231280的严格超集(虽然后者的汉字在前者中都存在,但是同样的编码在不同两个字符集中可能表达不同的汉字),所以在做数据库字符转换时仍然需要特别注意。
Oracle的字符集命名遵循以下命名规则:<Language><bit size><encoding>即: <语言><比特位数><编码>比如: ZHS · 16·GBK需要说明的是,有些字符集命名违背了这个规范,Oracle8/Oralce8i中的UTF-8是第一个打破这个命名规范的字符集。
我们可以看到一类字符集以AL开头,如:AL16UTF16其中AL代表ALL,指适用于所有语言(All Languages),按照这个标准当年UTF-8本应被命名为AL24UTF8。
查询数据库字符集的sql语句
查询数据库字符集的sql语句查询数据库字符集是数据库管理中的一项重要任务,通过查询数据库字符集,可以了解数据库所使用的字符编码,以便正确地操作和处理数据。
下面列举了一些查询数据库字符集的SQL语句。
1. 查询MySQL数据库字符集:```SHOW VARIABLES LIKE 'character_set_database';```这条SQL语句可以查询MySQL数据库中当前数据库的字符集。
2. 查询Oracle数据库字符集:```SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';```这条SQL语句可以查询Oracle数据库中当前数据库的字符集。
3. 查询SQL Server数据库字符集:```SELECT collation_name FROM sys.databases WHERE name = 'YourDatabaseName';这条SQL语句可以查询SQL Server数据库中指定数据库的字符集。
4. 查询PostgreSQL数据库字符集:```SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = 'YourDatabaseName';```这条SQL语句可以查询PostgreSQL数据库中指定数据库的字符集。
5. 查询DB2数据库字符集:```SELECT CODEPAGE FROM SYSCAT.DATABASES WHERE NAME = 'YourDatabaseName';```这条SQL语句可以查询DB2数据库中指定数据库的字符集。
6. 查询SQLite数据库字符集:```PRAGMA encoding;这条SQL语句可以查询SQLite数据库的字符集。
oracle字符集问题
oracle字符集问题一般可以分为三类:数据库字符集(NLS_CHARACTERSET)、国家字符集(NLS_NCHAR_CHARACTERSET), sqlplus的字符集(客户端字符集), 终端程序的字符集(非oracle的)。
1、数据库字符集。
数据库字符集是所有字符问题的核心,只有数据库本身的字符集正确了,客户端的字符集才可能正确。
这里指的客户端包括sqlplus以及我们自己读数据库的应用程序。
在定位问题时,我们需要先看看数据库当前是什么字符集。
1)查询数据库字符集select * from nls_database_parameters其中nls_language表示了显示方式, 就是sqlplus的程序的显示字体,有SIMPLIFIED CHINESE,American america其中nls_characterset是字符集设定, 常用的一些字符集有UTF8,US7ASCII,WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK, AL32UTF82)修改数据库字符集当发现数据库字符集不正确时,如我们期望时GBK的,而数据库当前是其他的,从而引起中文乱码。
这时我们需要修改数据库字符集。
步骤如下:$sqlplus /nologSQL>conn / as sysdba;若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器,然后执行以下命令:SQL>STARTUP MOUNT;SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;SQL>ALTER DATABASE OPEN;SQL>ALTER DATABASE CHARACTER SET ZHS16GBK; --设置数据库字符集如果出现错误使用:SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;SQL>ALTER DATABASE national CHARACTER SET ZHS16GBK; -- 设置国家字符集SQL>SHUTDOWN IMMEDIATE;SQL>STARTUP2 客户端字符集如果服务器端的字符集是正确的,而在客户端下,如sqlplus仍然不能正确显示中文,这一般是由于服务器端的字符集设定与客户端的字符集设定不同造成的。
查oracle字符集编码
查oracle字符集编码Oracle是一种流行的关系型数据库管理系统,它支持多种字符集编码。
在处理多语言数据时,正确的字符集编码非常重要。
本文将介绍如何查看Oracle字符集编码。
1. 查看数据库字符集编码要查看Oracle数据库的字符集编码,可以使用以下SQL语句:SELECT * FROM nls_database_parameters WHEREparameter='NLS_CHARACTERSET';这将返回一个结果集,其中包含数据库的字符集编码。
2. 查看表的字符集编码要查看特定表的字符集编码,可以使用以下SQL语句:SELECT * FROM all_tab_columns WHEREtable_name='table_name' AND column_name='column_name';将“table_name”和“column_name”替换为要查询的表和列名称。
这将返回一个结果集,其中包含表的字符集编码。
3. 查看会话字符集编码要查看当前会话的字符集编码,可以使用以下SQL语句:SELECT * FROM nls_session_parameters WHEREparameter='NLS_CHARACTERSET';这将返回一个结果集,其中包含当前会话的字符集编码。
4. 修改字符集编码如果需要修改Oracle数据库的字符集编码,需要执行以下步骤:a. 停止数据库实例。
b. 备份数据库。
c. 修改数据库参数文件(init.ora或spfile)中的NLS_CHARACTERSET参数。
d. 启动数据库实例。
e. 使用ALTER DATABASE CHARACTER SET语句修改数据库中现有表和列的字符集编码。
f. 重新创建索引和约束。
g. 修改应用程序以使用新的字符集编码。
总结在处理多语言数据时,正确的字符集编码非常重要。
oracle sql查询字符集
oracle sql查询字符集在Oracle SQL中,您可以使用以下方法查询数据库中的字符集:查询NLS_SESSION_PARAMETERS视图:使用以下SQL查询语句,您可以查看当前会话的字符集信息:SELECT parameter, valueFROM nls_session_parameters;这将返回当前会话的字符集参数,包括NLS_CHARACTERSET(字符集)和NLS_NCHAR_CHARACTERSET(NCHAR字符集)。
查询NLS_DATABASE_PARAMETERS视图:使用以下SQL查询语句,您可以查看数据库级别的字符集信息:SELECT parameter, valueFROM nls_database_parameters;这将返回数据库的字符集参数,包括NLS_CHARACTERSET(字符集)和NLS_NCHAR_CHARACTERSET(NCHAR字符集)。
查询V$NLS_PARAMETERS视图:使用以下SQL查询语句,您可以查看系统级别的字符集信息:SELECT parameter, valueFROM v$nls_parameters;这将返回系统级别的字符集参数,包括NLS_CHARACTERSET(字符集)和NLS_NCHAR_CHARACTERSET(NCHAR字符集)。
这些视图将提供与字符集相关的各种参数和值,以帮助您了解数据库的字符集设置。
请注意,字符集设置是非常重要的,因为它会影响文本和字符数据的存储和处理方式,尤其是在涉及多语言和国际化应用程序时。
当查询字符集信息时,还可以考虑以下内容:查询数据库版本:字符集信息可能会因Oracle数据库版本而异。
要查看数据库的版本信息,您可以运行以下SQL查询:SELECT * FROM v$version;这将返回有关Oracle数据库的版本和相关信息。
确保您的数据库版本与所需的字符集兼容。
修改字符集:如果您需要更改数据库的字符集,这是一个复杂而潜在危险的操作,因为它可能需要导致数据转换和潜在的数据丢失。
[原创]查看与修改oracle数据库字符集
[原创]查看与修改oracle数据库字符集NLS_LANG参数格式NLS_LANG=<language>_<territory>.<client character set>Language:显⽰oracle消息,校验,⽇期命名Territory:指定默认⽇期、数字、货币等格式Client character set:指定客户端将使⽤的字符集例如:NLS_LANG=AMERICAN_AMERICA.ZHS16GBKAMERICAN是语⾔,AMERICA是地区,ZHS16GBK是客户端字符集1. 查看服务器端字符集:视图 "nls_database_parameters" 来源于props$,是表⽰数据库的字符集。
props$是创建数据库时存储在数据库中的信息。
select * from nls_database_parameters where parameter in ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');select userenv('language') from dual;// ⽰例SQL> select userenv('language') from dual;USERENV('LANGUAGE')----------------------------------------------------SIMPLIFIED CHINESE_CHINA.ZHS16GBKSQL>2. 查看实例字符集:视图 "nls_instance_parameters" 来源于v$nls_parameters,表⽰会话⾃⼰的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters⼀致。
【Oracle】修改oracle数据库的字符集
【Oracle】修改oracle数据库的字符集由于安装Oracle数据库时未勾选正确的字符集,导致数据库的字符集与我们需要的不⼀样,我们可以通过如下步骤来修改。
1、查出oracle server 端当前的字符集select userenv('language') from dual查询结果中NLS_CHARACTERSET为server端字符集,NLS_LANGUAGE 为 server端字符显⽰形式。
2、修改 server端字符集下⾯将Oracle数据库的字符集改为ZHS16GBK将数据库启动到RESTRICTED模式下做字符集更改:SQL> conn /as sysdbaConnected.SQL>shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startup mountORACLE instance started.Total System Global Area 236000356 bytesFixed Size 451684 bytesVariable Size 201326592 bytesDatabase Buffers 33554432 bytesRedo Buffers 667648 bytesDatabase 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> startupORACLE instance started.Total System Global Area 236000356 bytesFixed Size 451684 bytesVariable Size 201326592 bytesDatabase Buffers 33554432 bytesRedo Buffers 667648 bytesDatabase mounted.Database opened.SQL>select*from v$nls_parameters;略19 rows selected.参考博⽂:。
如何查看及修改oracle编码格式方法
database closed.
database dismounted.
oracle instance shut down.
sql> startup mount;
oracle instance started.
total system global area 135337420 bytes
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 databa JA16SJIS;
sql> shutdown immediate;
sql> startup;
如何查看及修改oracle编码格式方法
查看oracle数据库字符集:
select userenv('language') from dual;
查询结果:
SIMPLIFIED CHINESE_CHINA.AL32UTF8
--修改oracle数据库字符集:(在SQL Plus中)
sql> conn / as sysdba;
fixed size 452044 bytes
variable size 109051904 bytes
database buffers 25165824 bytes
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ZHS16GBK
如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上):
cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
这样就只影响这个窗口里面的环境变量。
在unix平台下,就是环境变量NLS_LANG。
$echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK
如果检查的结果发现server端与client端字符集不一致,请统一修改为同server端相同的字符集。
补充:
(1).数据库服务器字符集
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
(4).客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。
如果多个设置存在的时候,NLS作用优先级别:Sql function > alter session > 环境变量或注册表> 参数文件> 数据库默认参数
字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。
客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件
字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。
会话字符集环境select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。
select * from nls_database_parameters
来源于props$,是表示数据库的字符集。
(2).客户端字符集环境
select * from nls_instance_parameters
其来源于v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表
SQL>select userenv(‘language’) from dual;
AMERICAN _ AMERICA. ZHS16GBK
2.2 如何查询dmp文件的字符集
用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:
(3).会话字符集环境
select * from nls_session_parameters
来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。
涉及三方面的字符集,
1. oracel server端的字符集;
2. oracle client端的字符集;
3. dmp文件的字符集。
在做数据导入的时候,需要这三个字符集都一致才能正确导入。
2.1 查询oracle server端的字符集
有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以下这种:
数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。s_instance_parameters,其来源于v$parameter,
表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表
然后用上述SQL也可以得到它对应的字符集。
2.3 查询oracle client端的字符集
在windows平台下,就是注册表里面相应OracleHome的NLS_LANG。还可以在dos窗口里面自己设置,
比如: set nls_lang=AMERICAN_AMERICA.ZHS16GBK