🎊 Oracle 字符集简介及修改操作实战

Oracle 字符集简介及修改操作实战

一、Oracle 数据库字符集简介

1.Oracle 字符集基础

Oracle字符集是二进制数据与字符符号的映射规则,决定了数据的存储、处理和显示方式。它由三部分组成:language、territory、characterset(语言、地域、字符集)

language:主要指定服务器消息的语言,提示信息显示中文还是英文。territory:主要指定服务器的数字和日期的格式,定义日期、货币格式。characterset:是指字符集核心部分,决定实际存储的字符编码,一般国内数据库实际使用的字符集主要是ZHS16GBK、AL32UTF8。

2. 常见的 Oracle 字符集

US7ASCII :美国信息交换标准代码,是最早支持的编码方案之一,使用 7 位编码,可表示 128 个字符,包括英文字符、数字和一些控制字符等,适用于存储英文文本。WE8ISO8859P1 :西部欧洲字符集,基于 ISO 8859-1 标准,使用 8 位编码,能够表示 256 个字符,涵盖了西欧语言如英语、法语、德语等所需的字符。ZHS16GBK :中文字符集,能够表示繁体中文、简体中文以及日文中的汉字,适用于存储中文文本,定长​​(简体中文,2字节)。AL32UTF8 :一种 Unicode 编码的变长编码方式,兼容 UTF-8,可以表示世界上几乎所有常用字符,适用于多语言环境。

3. Oracle 字符集的查询方法

1.服务端字符集查询​

-- 查询数据库字符集及国家字符集

SELECT PARAMETER, VALUE

FROM NLS_DATABASE_PARAMETERS

WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');

-- 结果

PARAMETER | VALUE

---------------------|---------

NLS_CHARACTERSET | AL32UTF8

NLS_NCHAR_CHARACTERSET | AL16UTF16

​2. 客户端字符集检查​

-- 查看会话级字符集(受NLS_LANG影响)

SELECT * FROM NLS_SESSION_PARAMETERS;

-- 或通过环境变量查询

SELECT USERENV('language') FROM DUAL;

查询会话字符集 :查询 V$NLS_PARAMETERS 视图可得到当前会话的字符集设置,它可能受会话环境变量或 ALTER SESSION 语句的影响,若未特殊设置,则与 NLS_INSTANCE_PARAMETERS 一致。

查询客户端字符集 :在 Windows 平台下,可查看注册表中相应 Oracle Home 的 NLS_LANG 值;在 Unix 平台下,则查看环境变量 NLS_LANG 的值。

二、字符集修改操作实战​​

场景1:安全修改(目标字符集为超集)​​

​​步骤:​​

​​1. 备份数据库​​

使用RMAN或导出工具(expdp)全量备份。

检查数据库当前状态

SELECT status FROM v$instance;

​​2. 停止数据库并挂载​​

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

​​3. 开启限制会话模式​​

-- 进入受限模式并关闭后台进程

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

执行字符集修改​​

ALTER DATABASE CHARACTER SET AL32UTF8;

-- 若上面执行失败,则​​强制修改字符集

ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;

重启数据库

SHUTDOWN IMMEDIATE;

STARTUP;

验证​​

SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';

​​场景2:强制修改(非超集,高风险!)​​

若需将 AL32UTF8 降级为 ZHS16GBK(非超集):

ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;

​​3. 添加/修改操作系统环境变量

-- Windows 查询 NLS_LANG

echo %NLS_LANG%

-- 设置环境变量值

NLS_LANG

AMERICAN_AMERICA.AL32UTF8

🎯 相关推荐

诺贝尔奖告诉你:为什么有人喜欢欠钱不还?
110版本常见资源使用推荐 让材料发挥价值
完美体育365

110版本常见资源使用推荐 让材料发挥价值

📅 07-17 👀 6784
ios开发怎么样
365bet在线网投

ios开发怎么样

📅 09-01 👀 7115
《宝可梦 剑盾》大师球获得方式攻略 大师球在哪里拿
如何轻松打开华为手表蓝牙并连接手机的详细步骤解析
三角洲行动能赚人民币吗,搬砖一天可赚多少人民币,搬砖一个月怎么赚5w
笔记本触摸滑动如何实现 笔记本怎么用触摸板滚动页面
猴年纪念币发行多少 狗年纪念币发行多少
完美体育365

猴年纪念币发行多少 狗年纪念币发行多少

📅 07-23 👀 4976
肘击下血光四溅 希望之星鲁莽举动险毁整个意大利