修改server端字符集

1.       关闭数据库

SQL>SHUTDOWN IMMEDIATE

  2. 启动到Mount

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 NATIONAL CHARACTER SET AL16UTF16;

--如果是从子集到父集,需要使用INTERNAL_USE 参数,跳过超子集检测

SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;

SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;

  SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP

注意:如果没有大对象,在使用过程中进行语言转换没有什么影响,(切记设定的字符集必须是ORACLE支持,不然不能start) 按上面的做法就可以。

  若出现‘ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data exists’ 这样的提示信息,

要解决这个问题有两种方法

1. 利用INTERNAL_USE 关键字修改区域设置,

2. 利用re-create,但是re-create有点复杂,所以请用internal_use

  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 NATIONAL CHARACTER SET INTERNAL_USE UTF8;

SQL>SHUTDOWN immediate;

SQL>startup;

如果按上面的做法做,National charset的区域设置就没有问题

### 配置 Navicat 连接 Oracle 的字符集编码 为了确保 Navicat 正确处理与 Oracle 数据库之间的字符集转换,避免出现乱码等问题,在配置连接时需特别注意字符集设置。 #### 修改客户环境变量 NLS_LANG 一种方法是在操作系统级别通过设置 `NLS_LANG` 环境变量来指定客户使用的字符集。该变量定义了三个部分:语言(LANGUAGE),区域(TERRITORY)以及字符集(CHARACTERSET)[^1]。对于希望支持中文的情况,可以将其设为类似于 `SIMPLIFIED CHINESE_CHINA.ZHS16GBK` 或者其他适合的字符集形式。 #### 使用 OCI 库路径设定 当遇到因更改服务器字符集而导致无法正常建立连接的问题时(如ORA-25847错误),除了确认服务端状态外,还应核查本地安装的OCI版本是否兼容,并适当调整其所在目录位置以便程序加载正确的驱动文件[^2]。例如,如果已知特定版本的 `oci.dll` 文件位于 `E:\oraclexe\app\oracle\product\11.2.0\server\bin\` 下,则可通过Navicat的相关选项或者系统环境变量 PATH 来指向这个路径。 #### 在 Navicat 中直接设置字符集参数 另外,也可以尝试在创建新的连接过程中手动输入或选择合适的字符集作为会话属性的一部分。具体操作如下: 进入 **Connection Properties** 页面后找到 **Advanced Options**, 查看是否有提供关于字符集的选择项;如果没有显式的下拉菜单供选,则可以在命令行附加参数处加入 `-source_char_set=ZHS16GBK` 类似的指令以强制指明源数据流所采用的文字编码方式[^3][^4]。 ```sql -- Example of setting character set via SQL*Plus or similar command line tool before connecting through Navicat. ALTER SESSION SET NLS_LANGUAGE='SIMPLIFIED CHINESE'; ALTER SESSION SET NLS_TERRITORY='CHINA'; ALTER SESSION SET NLS_CHARSET='ZHS16GBK'; ``` 请注意以上建议均基于现有信息汇总而成,实际执行前最好先备份重要资料并参照官方文档获取最权威指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值