本文主要是介绍Oracle 12C 修改 NLS_NCHAR_CHARACTERSET 的值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
说明:本例使用的数据库为新建数据库,没有数据。
注意:若数据库内有重要数据,建议在操作前做好备份工作。
修改原因:
报错:ORA-00910: specified length too long for its datatype
经查看是NLS_NCHAR_CHARACTERSET的配置有问题,应该为AL32UTF8
select value from nls_database_parameters t where t.PARAMETER ='NLS_NCHAR_CHARACTERSET'
修改步骤:
(此处记录的是实际操作情况,之所以把失败的情况也展示出来,是为了提供给大家一个排错思路。)
尝试修改
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8
*
ERROR at line 1:
ORA-12719: operation requires database is in RESTRICTED mode
出现该错误,是由于当前没有处于 RESTRICTED 模式
修改为 RESTRICTED 模式
SQL> alter system enable restricted session;System altered.
再次尝试
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8
*
ERROR at line 1:
ORA-12721: operation cannot execute when other sessions are active
出现该错误是因为除了当前连接,还有其他连接
断开其他连接后,再次修改
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;Database altered.
修改成功!
取消RESTRICTED模式
SQL> alter system disable restricted session;System altered.
查询是否生效
select value from nls_database_parameters t where t.PARAMETER ='NLS_NCHAR_CHARACTERSET'
select * from v$nls_parameters
为验证本次修改的时效性,现重启数据库,再次查看是字符集配置情况:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.Total System Global Area 1.6267E+11 bytes
Fixed Size 7653480 bytes
Variable Size 2.4159E+10 bytes
Database Buffers 1.3798E+11 bytes
Redo Buffers 529215488 bytes
Database mounted.
Database opened.
再次查看发现字符集的配置依然是对的
本次修改完成!
这篇关于Oracle 12C 修改 NLS_NCHAR_CHARACTERSET 的值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!