加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle下服务端字符集修改

发布时间:2020-12-12 14:09:16 所属栏目:百科 来源:网络整理
导读:在Oracle下客户端中设置的字符集应于服务端保持一致,否则会出现乱码,而Oracle的客户端无论是在Windows/DOS系统下还是Unix系统下都可以通过环境变量NLS_LANG来加以控制,至于操作也很简单,在这里就不做过多的说明,在这里主要说一下如何在Oracle的服务端下

在Oracle下客户端中设置的字符集应于服务端保持一致,否则会出现乱码,而Oracle的客户端无论是在Windows/DOS系统下还是Unix系统下都可以通过环境变量NLS_LANG来加以控制,至于操作也很简单,在这里就不做过多的说明,在这里主要说一下如何在Oracle的服务端下如何正确的修改字符集。在修改的时候建议使用sysdba身份验证,要注意的是新修改的字符集必须为旧字符集的超集,不然Oracle上修改字符集会报ORA-12712错误。而在平时可以查询系统视图得知当前Oracle数据库中的字符集设置情况,如下:

SELECT*FROMv$nls_parametersWHEREPARAMETERIN('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');#通过NLS_LANGUAGE,NLS_TERRITORY,NLS_CHARACTERSET这三个变量查看
SELECTUSERENV('language')FROMDUAL;#或者通过USERENV函数也可以取得

操作方法也很简单:

SQL>shutdownimmediate
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>startupmount#进入维护模式
ORACLEinstancestarted.

TotalSystemGlobalArea4275781632bytes
FixedSize2260088bytes
VariableSize905970568bytes
DatabaseBuffers3355443200bytes
RedoBuffers12107776bytes
Databasemounted.
SQL>altersystemenablerestrictedsession;#在维护模式的基础上再开启restricted,防止其他用户登录连接

Systemaltered.

SQL>altersystemsetjob_queue_processes=0;#关闭系统的触发器

Systemaltered.

SQL>altersystemsetaq_tm_processes=0;#指定队列监视进程个数,缺省是0,如果没有改过可以不加

Systemaltered.

SQL>alterdatabaSEOpen;#打开数据库

Databasealtered.

SQL>alterdatabasecharactersetinternal_useal32utf8;#进行字符集修改

Databasealtered.

SQL>shutdownimmediate
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>startup#最后重启修改字符集生效
ORACLEinstancestarted.

TotalSystemGlobalArea4275781632bytes
FixedSize2260088bytes
VariableSize905970568bytes
DatabaseBuffers3355443200bytes
RedoBuffers12107776bytes
Databasemounted.
DatabaSEOpened.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读