打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
oracle字符集查看修改
userphoto

2022.06.24 河北

关注

一、 查看字符集

1. 查看DB Server字符集

select * from nls_database_parameters where parameter in ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');

2. 查看客户端字符集

可以看到基本都是通过操作系统命令在查,原因是 only the client knows their character set as well -- it is not available "in the database"

#On UNIX:
SQL> HOST ECHO $NLS_LANG

#On Windows(环境变量设置)
SQL> HOST ECHO %NLS_LANG%
#On Windows(注册表设置)
SQL> @.[%NLS_LANG%].

#或者(只能查到字符集,没有国家和区域信息)
SELECT * FROM NLS_SESSION_PARAMETERS;

二、 修改字符集

1. 修改DB Server字符集

shutdown immediate;

startup mount;
--限制session
alter system enable restricted session;
--查询相关参数并修改(防止有任务自动启动执行,一般不做也没关系)
show parameter job_queue_processes; -- 记下这个值
show parameter aq_tm_processes; -- 记下这个值
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
Alter database open;

-- 按需修改nls_characterset,其中INTERNAL_USE表示跳过字符集检查
alter database character set internal_use AL32UTF8;
-- 按需修改nls_nchar_characterset
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
-- 查看修改后字符集
select * from nls_database_parameters;

shutdown immediate;
startup mount;
--将相关参数改回原来的值
alter system set job_queue_processes=xxx;
alter system set aq_tm_processes=xxx;
Alter database open;

2. 修改客户端字符集(NLS_LANG)

关于NLS_LANG参数的解释:

NLS_LANG = NLS_LANGUAGE_NLS_TERRITORY.NLS_CHARACTERSET

eg: export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
    export NLS_LANG=AMERICAN_AMERICA.UTF8
    export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
  • NLS_LANGUAGE:指定服务器消息的语言, 影响提示信息是中文还是英文
  • NLS_TERRITORY:指定服务器的日期和数字格式
  • NLS_CHARACTERSET:指定字符集。

Windows与Linux通用改法

ALTER SESSION SET NLS_LANGUAGE=AMERICAN; -- 视服务器端字符集设置情况修改

Windows改法

当前会话生效

进入cmd
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8
set NLS_LANG=AMERICAN_AMERICA.AL32UTF8

永久生效

将windows环境变量NLS_LANG值设置为SIMPLIFIED CHINESE_CHINA.AL32UTF8

Unix/Linux改法

查看方法

su - oracle
env | grep NLS_LANG

修改方法

使用export命令设置该环境变量,或直接加进~/.bash_profile里

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"

参考

NLS_LANG Explained (How does Client-Server Character Conversion Work?) (文档 ID 158577.1)

[转载]Oracle Character set – Everything a New oracle DBA needs to know - FangwenYu - 博客园

Determine Oracle session client character set? - Database Administrators Stack Exchange

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
navicat连接oracle的错误:ora-12737:instant client l...
Oracle 字符集的查看和修改
Oracle客户端NLS
oracle那个sqlplus在linux上怎么显示中文的?
如何设置Oracle数据库客户端字符集以及系统中的NLS
Oracle学习笔记(16)字符语言环境
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服