oracle 修改nls_characterset,修改NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET字符集
有时候安装oracle未了解清楚需求,设置的字符集导致中文乱码。oracle如何修改字符集呢?
1、查询字符集
SQL> col VALUE format a30
SQL> select * from nls_database_parameters where parameter like ‘%CHARACTERSET%’;
PARAMETER VALUE
—————————— ——————————
NLS_CHARACTERSET US7ASCII
NLS_NCHAR_CHARACTERSET UTF8
SQL> select value$ from props$ where name=’NLS_NCHAR_CHARACTERSET’;
VALUE$
—————————–
UTF8
2、oracle修改服务器端字符集:
SQL>alter system checkpoint;
SQL>alter system switch logfile;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT EXCLUSIVE;
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;
#####################################################################
ORA-12712: new character set must be a superset of old character set
提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改,INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验. :
#####################################################################
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;
#####################################################################
注意:
1)这样修改会影响数据库中定义了Nclob、NVARCHAR2等大字段的表,会出现乱码。需要重新导入表,当然在修改前要备份相关表。
2)如果没有大对象,在使用过程中进行语言转换没有什么影响,
3)在Oracle8i中,设定的字符集必须是ORACLE支持,假如修改了错误的字符集,数据库将无法启动。不过从Oracle9i开始,Oracle在启动时跳过了这个检查,即使修改了错误的字符集,也仍然可以启动,数据库启动时会将控制文件中的字符集更改为缺省的US7ASCII.
#####################################################################
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP
3、更新系统表(props$)修改字符集
SQL>update props$ set value$=’ZHS16GBK’ where name=’NLS_CHARACTERSET’;
SQL>update props$ set value$=’AL16UTF16′ where name=’NLS_NCHAR_CHARACTERSET’;
4、如果还没有数据,最好的办法还是用dbca重新创建instance
5、 确认字符集是否修改
SQL> col VALUE format a30
SQL> select * from nls_database_parameters where parameter like ‘%CHARACTERSET%’;
PARAMETER VALUE
—————————— ——————————
NLS_CHARACTERSET ZHS16GBK
NLS_NCHAR_CHARACTERSET AL16UTF16
赞过:
赞 正在加载……
相关
oracle 修改nls_characterset,修改NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET字符集相关推荐
- oracle 修改nls_nchar_characterset,修改NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET字符集
修改NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET字符集 2013-07-26 有时候安装oracle未了解清楚需求,设置的字符集导致中文乱码.oracle如何修改字符 ...
- oracle imp导入修改字符集,Oracle中IMP导入数据时提示字符集不一致解决
生产环境中经常使用到Oracle的IMP导入和EXP导出来功能来达到数据迁移的目的,通常在源数据库和目标数据库中查询字符集是否致, 测试环境中导入IMP导入报错信息如下: 导入命令如下: [oracl ...
- oracle nls lang 修改,修改NLS参数、NLS_LANG参数格式等
一.查询字符集参数 可以查询以下数据字典或视图查看字符集设置情况 nls_database_parameters.props$.v$nls_parameters 查询结果中NLS_CHARACTERS ...
- ORACLE安装参数修改
修改内核参数 /etc/sysctl.conf #net.ipv4.ip_forward = 0 #disabled net.ipv4.conf.default.rp_filter = 1 kern ...
- 使用oracle 游标修改数据,Oracle 函数施行修改和游标传递
Oracle 函数执行修改和游标传递 ORA-14551:不能在查询语句中执行dml语句,开始误以为函数里不能执行DML或DDL语句,后查到前辈通过采用自治事务解决,在此基础上演例 传递SQL语句对数 ...
- MySQL修改有存量数据的数据库字符集实战
原文链接:https://www.modb.pro/db/22722?cyn 我们已经知道数据库或者表,可以在创建后再修改字符集.但是修改字符集不会将已有的数据按新字符集重新进行处理.那么已有存量数据 ...
- Oracle查看并修改最大连接数
Oracle查看并修改最大连接数 第一步,在cmd命令行,输入sqlplus 第二步,根据提示输入用户名与密码 1. 查看processes和sessions参数 SQL> show param ...
- 服务器上Oracle System如何修改system用户密码
服务器上Oracle System如何修改system用户密码 1,服务器上oracle经常会使用plsql developer访问,很多时候我们用的服务器,或者之前的密码我们并不知道,这个时候需要修 ...
- oracle修改seq为order,Oracle 创建和修改sequence
Oracle 创建和修改sequence 在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方. 1.Create Sequence 你首先要有 ...
最新文章
- swift 中showAlertTitle的使用
- 【深度学习】基于Torch的Python开源机器学习库PyTorch回归
- 关于C#泛型列表ListT的基本用法总结
- 不是Linux文件系统的权限,Linux中文件系统的权限管理(普通权限,特殊权限,文件的扩展属性,FACL)...
- [bzoj 2555]Substring
- Spring_自动装配
- Sql Server 列转行 Pivot使用
- iOS UIScrollView 动画的力学原理
- 乐鑫Esp32学习之旅 20 一篇好文,开发过程中编译esp32固件太大,无法正常启动?教你如何自定义分区表partitions.csv。
- Win32子系统(csrss.exe,win32k.sys相关知识总结)
- qt 获取屏幕句柄_VC中获取窗口句柄的各种方法
- 现代制造业信息化建设的主要内容
- Mark,road-stone 2012-7-7
- Python爬虫实战之五:requests-re多页爬取链家成都地区租房市场信息
- 程序员专属手机壁纸来了。。。
- 如何用计算机玩扫雷,扫雷怎么玩_玩好扫雷游戏的技巧是什么【图文】-太平洋电脑网PConline-太平洋电脑网...
- 不知道如何进行图片文字翻译?看完这篇你就知道了
- 4g硬盘可以装Linux 么,eeepc 900a 4g ssd硬盘予装了linux操作系统是否能改装xp
- debian linux win7,win7debian双系统
- 浏览器发送请求过程解析