您现在的位置是:首页 > 数据库 > Oracle

Oracle数据库服务器端和客户端字符集查询与修改

yuyong2018-12-25Oracle

简介1、查看数据库服务器字符集;
2、查看数据库实例的字符集;
3、查看当前客户端的字符集;
4、当前会话的字符集(无特殊设置则集成 V$NLS_PARAMETERS的值);
5、修改SERVER端字符集;

image.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;


很赞哦! ()

文章排行

本栏推荐

栏目更新