1546048358792925.png

1、查看数据库服务器字符集select * from nls_database_parameters ;

2、查看数据库实例的字符集(由参数文件决定,不受环境变量影响)并不是网上所说为客户端的字符集select * from nls_instance_parameters ;

修改nls_instance_parameters步骤

执行下面的语句 查看nls_lang参数是否为静态参数SELECT NAME, VALUE, ISSYS_MODIFIABLE FROM v$parameter a WHERE a.NAME like 'nls_%'

ISSYS_MODIFIABLE: 为 FALSE 则在系统级别修改的时候需要加上  scope=spfile  重启数据库后参数生效alter system set nls_language='AMERICAN' scope=spfile;

alter system set nls_territory='AMERICA' scope=spfile;

SHUTDOWN IMMEDIATE;

STARTUP;

3、查看当前客户端的字符集

默认继承nls_instance_parameters的值  但若环境变量/注册表/ALTER SESSION 指定了值,则使用指定值

优先级:ALTER SESSION>用户环境变量>系统环境变量>注册表(HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1的NLS_LANG 键)select userenv('language') from dual;

等价于SELECT * FROM V$NLS_PARAMETERS;

4、当前会话的字符集(无特殊设置则集成 V$NLS_PARAMETERS的值)SELECT * FROM NLS_SESSION_PARAMETERS;

修改当前会话的字符集(立即生效,同时影响上面两条语句的查询结果) 'SIMPLIFIED CHINESE'  'AMERICAN'alter session set NLS_LANGUAGE='AMERICAN';

5、修改SERVER端字符集(不建议使用)conn / as sysdba;

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

ALTER DATABASE OPEN;

---修改字符集且跳过超子集检测  AL32UTF8  ZHS16GBK

ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;

SHUTDOWN IMMEDIATE;

STARTUP;

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐