首先看看Oracle数据库的编码。


SQL > * nls_database_parameters参数= 'nls_characterset'select;


参数

雇佣

价值

雇佣

nls_characterset

al32utf8

这源于道具$,它是代表数据库的字符集。

Oracle客户端代码


SQL >选择*从nls_instance_parameters参数= 'nls_language;


参数

雇佣

价值

雇佣

nls_language

简体中文

它来自V $参数,它代表客户机字符集的设置,可以是参数文件、环境变量,也可以是注册表会话字符集环境。

SELECT * FROM nls_session_parameters,这是来自五nls_parameters美元,代表会议本身的设置。它可能是会话的环境变量或更改会话的完成。如果谈话是不成立的,它将符合nls_instance_parameters。

然后讨论如何修改oracle字符集:

现在我的数据库环境的特点是al32utf8,然后改变它zhs16gbk

1。第一次登录到控制室/作为SYSDBA作为SYSDBA

2。关闭数据库立即关闭;

三.用挂载启动挂载数据库

4。设置会话


启用受限会话;
SQL >修改系统设置job_queue_processes = 0;
SQL >修改系统设置aq_tm_processes = 0;


5。启动数据库

打开数据库;

6。修改字符集

修改数据库字符集zhs16gbk;

这可能是错误的,这表明我们的字符集:新的字符集必须是旧的字符集的超集,然后我们可以跳过检查变化的一个超集:

修改数据库字符集internal_use zhs16gbk;

这个语句可以提供帮助,ternal_use将Oracle绕过声明验证子集和超集,这句话在相同的内部运作。

7。关闭,重新启动

立即关闭;

已启动

当然,最好不要轻易修改字符集,因为这将直接影响数据库的数据。如果是生产环境,可能会造成意外损失。