Oracle 12C 修改 NLS_NCHAR_CHARACTERSET 的值

178 篇文章 16 订阅

说明:本例使用的数据库为新建数据库,没有数据。
注意:若数据库内有重要数据,建议在操作前做好备份工作。

修改原因:

报错: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.

再次查看发现字符集的配置依然是对的

本次修改完成!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值