oracle查询字符集(oracle查询字符集编码)
本篇文章给大家谈谈oracle查询字符集,以及oracle查询字符集编码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
如何查看oracle 客户端字符集
1. 客户端字符集环境
select * from nls_instance_parameters
2. 会话字符集环消此境:
select * from nls_session_parameters
3. 查询oracle client端的字符集 :
a. 在windows平台下,就是注册表里面相应OracleHome的NLS_LANG,或者系统环境变量中。
还可以在dos窗口里面自己设置,比如:
set nls_lang=AMERICAN_AMERICA.ZHS16GBK
这样就只影响这个窗口里面的环境变量。
b.在unix平台下,就是拿判迅环境变冲塌量NLS_LANG。
$echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK
[img]如何查看和修改Oracle数据库服务器端的字符集?
A、oracle server 端字符集查询
select userenv('language') from dual
其中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 dual; server字符集修改: 将数据库启动到RESTRICTED模式下做字符集更改:??
oracle10g服务器端是安装在AIX 6.0系统上,客户端是安装在windows server 2008 系统上,客户端与服务器已成功连接,但是数据库表里的中文字无法显示,显示为“?”,用SQLPLUS查得服务器端的字符集为AL16uTF16,如何修改该字符集使之支持中文呢?另外oracle10G客户端的字符集需不需要设置,如何查看和设置呢?
oracle字符集文档
Oracle字符集是一个字节数据的解释的符号集合 有大小之分 有相互的包容关系 ORACLE支持国家语言的体系结构允许你使用本地化语言来存储 处理 检谈毁索数据 它使数据库工具 错误消息 排序次序 日期 时间 货币 数字 和日历自动适应本地化语言和平台
一 Oracle字符集相关知识
参数说明
影响oracle数据库字符集最重要的参数是NLS_LANG参数
Oracle的字符集命名遵循以下命名规则:
Languagebit sizeencoding
即: 语言比特位数编码
比如: ZHS GBK表示采用GBK编码格式 位(两个字节)简体中文字符集
它的格式如下 NLS_LANG = language_territory charset
它有三个组成部分(语言 地域和字符集) 每个成分控制了NLS子集的特性
其中 Language 指定服务器消息的语言 territory 指定服务器的日期和数字格式 charset 指定字符集 如:AMERICAN _ AMERICA ZHS GBK
从NLS_LANG的组成我们可以看出 真正影响数据库字符集的其实是第三部分
所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据 前面影响的只是提示信息是中文还是英文
查看数据库字符集
这涉及三方面的字符集
一是 oracel server端的字符集;
二是 oracle client端的字符集;
三是 dmp文件的字符含颤备集;
在做洞陵数据导入的时候 需要这三个字符集都一致才能正确导入
查询oracle server端的字符集
有很多种方法可以查出oracle server端的字符集
①比较直观的查询方法
SQL select userenv( language ) from dual;
查询结果如下: SIMPLIFIED CHINESE_CHINA ZHS GB
②查看有关字符集的所有参数
SELECT * FROM v$nls_parameters;
结果中的NLS_CHARACTERSET ZHS GB
查看dmp文件的字符集
用oracle的exp工具导出的dmp文件也包含了字符集信息 dmp文件的第 和第 个字节记录了dmp文件的字符集 如果dmp文件不大 比如只有几M或几十M 可以用UltraEdit打开( 进制方式) 看第 第 个字节的内容 如 然后用以下SQL查出它对应的字符集:
SQL select nls_charset_name(to_number( xxxx )) from dual;ZHS GBK
查询oracle client端的字符集
在windows平台下 就是注册表里面相应OracleHome的NLS_LANG 具体路径
Win+R àregedit à HKEY_LOCAL_MACHINESOFAREORACLE nls_lang 显示本地的字符集 这样就只影响这个窗口里面的环境变量
在unix平台下 就是环境变量NLS_LANG
$echo $NLS_LANG
AMERICAN_AMERICA ZHS GBK
如果检查的结果发现server端与client端字符集不一致 建议统一修改为同server端相同的字符集
建议
关于字符集客户端的字符集要求与服务器一致 才能正确显示数据库的非Ascii字符 如果多个设置存在的时候 alter session环境变量注册表参数文件
客户端的字符集要求与服务器一致 才能正确显示数据库的非Ascii字符 如果多个设置存在的时候 alter session环境变量注册表参数文件
字符集要求一致 但是语言设置却可以不同 语言设置建议用英文 如字符集是zhs gbk 则nls_lang可以是 American_America zhs gbk
补充内容
数据库服务器字符集
SELECT * FROM nls_database_parameters;
客户端字符集环境
SELECT * FROM nls_instance_parameters;
会话字符集环境
SELECT * FROM nls_session_parameters;
二 关于oracle字符集修改
一旦数据库创建后 数据库的字符集理论上讲是不能改变的 因此 在设计和安装之初考虑使用哪一种字符集十分重要 根据Oracle的官方说明 字符集的转换是从子集到超集受支持 反之不行 如果两种字符集之间根本没有子集和超集的关系 那么字符集的转换是不受oracle支持的 对数据库 server而言 错误的修改字符集将会导致很多不可测的后果 可能会严重影响数据库的正常运行 所以在修改之前一定要确认两种字符集是否存在子集和超集的关系 一般来说 除非万不得已 我们不建议修改oracle数据库server端的字符集 特别说明 我们最常用的两种字符集ZHS GBK和 ZHS CGB 之间不存在子集和超集关系 因此理论上讲这两种字符集之间的相互转换不受支持
下例为把数据库的字符集从ZHS GBK修改为 ZHS GB
执行脚本
对于每个sql脚本的含义 请见注释①~⑥
startup mount ;
alter session set sql_trace=true;
alter system enable restricted session;
alter system set job_queue_processes= ;
alter system set aq_tm_processes= ;
alter database open;
set linesize ;
alter database character set INTERNAL_USE ZHS GB ;
shutdown immediate ;
startup ;
相关参数注释
查看字符集参数 SELECT * FROM v$nls_parameters;
①SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段 是强有力的辅助诊断工具 在日常的数据库问题诊断和解决中 SQL_TRACE是非常常用的方法
sql_trace =true
在全局启用SQL_TRACE会导致所有进程的活动被跟踪 包括后台进程及所有用户进程 这通常会导致比较严重的性能问题 所以在生产环境中要谨慎使用 这个参数在 g之后是动态参数 可以随时调整 在某些诊断中非常有效
提示: 通过在全局启用sql_trace 我们可以跟踪到所有后台进程的活动 很多在文档中的抽象说明 通过跟踪文件的实时变化 我们可以清晰的看到各个进程之间的紧密协调
②在使用过程中对数据库进行限制
ALTER SYSTEM DISABLE RESTRICTED SESSION来取消数据库的受限制状态 在数据库受限制的过程中 只有对数据库拥有CREATE SESSION权限的用户才能够连接到数据库 这种状态有利于对数据库进行备份 恢复 导入 导出等操作
③首先设置JOB_QUEUE_PROCESSES= Oracle会杀掉CJQ 及相应job进程
④aq_tm_processes值可选在 到 之间 代表是关闭队列监视
⑤利用INTERNAL_USE 关键字修改区域设置 目的是让Oracle数据库绕过了子集与超集的校验
⑥STARTUP NOMOUNT
lishixinzhi/Article/program/Oracle/201311/19105
oracle如何查看客户端的字符集?
查看数据库字符集,涉及三方面的字符集:
查询oracle server端搏卖的字符集 :比较直观的查询方法是以种: SQLselectuserenv(‘language’) from dual; 结果类似如下: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 dual; 如果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查询字符集和oracle查询字符集编码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。