查看和修改Oracle服务器端字符集

查看和修改Oracle服务器端字符集:

如果在安装Oracle10g的时候没有选择字符集,则按照下面的3步进行字符集的修改就可以完全正常的使用Oracle10g
  
在服务器上以oracle用户登录
$sqlplus / as sysdba;


1、检查服务器上Oracle数据库的字符集  
 
  SQL>  col  value$  format  a40  
  SQL>  select  name,value$  from  props$;  
  
  NAME                                                      VALUE$  
  ------------------------------  -------------------------  
  DICT.BASE                                            2  
  NLS_LANGUAGE                                      AMERICAN  
  NLS_TERRITORY                                    AMERICA  
  NLS_CURRENCY                                      $  
  NLS_ISO_CURRENCY                              AMERICA  
  NLS_NUMERIC_CHARACTERS                  .,  
  NLS_DATE_FORMAT                                DD-MON-YY  
  NLS_DATE_LANGUAGE                            AMERICAN  
  NLS_CHARACTERSET                              ZHS16GBK  
  NLS_SORT                                              BINARY  
  NLS_CALENDAR                                      GREGORIAN  
  NLS_RDBMS_VERSION                            7.3.4.0.0  
  GLOBAL_DB_NAME                                  ORACLE.WORLD  
  EXPORT_VIEWS_VERSION                      3  
  
  
  
  NLS_CHARACTERSET和NLS_CHAR_CTERSET这个参数应该是ZHS16GBK,如不是,修改:

  SQL>  update  props$  set  value$='ZHS16GBK'  where  name='NLS_CHARACTERSET';


2、确认字符集是否修改的不彻底。
  SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET,
  DECODE(TYPE#, 1,
  DECODE(CHARSETFORM, 1, 'VARCHAR2', 2, 'NVARCHAR2', 'UNKOWN'),
  9,
  DECODE(CHARSETFORM, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),
  96,
  DECODE(CHARSETFORM, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
  112,
  DECODE(CHARSETFORM, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
  FROM SYS.COL$
  WHERE CHARSETFORM IN (1, 2)
  AND TYPE# IN (1, 9, 96, 112);

3、如果上面的查询的确显示有多个字符集的设定,则进行如下处理(一条一条输入并执行):
  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;

(这里需要一行一行执行)
  COL VALUE NEW_VALUE CHARSET;
  SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
  COL VALUE NEW_VALUE NCHARSET;
  SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';

  --INTERNAL_USE是没有写在文档中的参数,用以强制完成字符集一致化(这里需要一行一行执行)
  ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
  ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;

  SHUTDOWN IMMEDIATE;
  STARTUP;

最后在PL/SQL客户端上测试:
以system登录:
create table k(n varchar2(20));
insert into k values('你我yown');
select * from k;
若查询出来的数据没有乱码,即已设置正确!
删除测试表:
drop table k;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值