博客
关于我
oracle查看字符集后修改oracle服务端和客户端字符集的步骤
阅读量:508 次
发布时间:2019-03-07

本文共 2440 字,大约阅读时间需要 8 分钟。

1.oracle server端字符集查询

代码如下:
select userenv ('language')  from dual;

或:

col PARAMETER format a20;

 col VALUE format a30;

SQL> select * from nls_database_parameters ;

PARAMETER            VALUE

-------------------- ------------------------------
NLS_RDBMS_VERSION    12.1.0.2.0
NLS_NCHAR_CONV_EXCP  FALSE
NLS_LENGTH_SEMANTICS BYTE
NLS_COMP             BINARY
NLS_DUAL_CURRENCY    $
NLS_TIMESTAMP_TZ_FOR DD-MON-RR HH.MI.SSXFF AM TZR
MAT

NLS_TIME_TZ_FORMAT   HH.MI.SSXFF AM TZR

NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_FORMAT      HH.MI.SSXFF AM

PARAMETER            VALUE

-------------------- ------------------------------
NLS_SORT             BINARY
NLS_DATE_LANGUAGE    AMERICAN
NLS_DATE_FORMAT      DD-MON-RR
NLS_CALENDAR         GREGORIAN
NLS_NUMERIC_CHARACTE .,
RS

NLS_NCHAR_CHARACTERS AL16UTF16

ET

NLS_CHARACTERSET     AL32UTF8

PARAMETER            VALUE

-------------------- ------------------------------
NLS_ISO_CURRENCY     AMERICA
NLS_CURRENCY         $
NLS_TERRITORY        AMERICA
NLS_LANGUAGE         AMERICAN

20 rows selected.

server字符集修改

将数据库启动到RESTRICTED模式下做字符集更改:

代码如下:
SQL>conn /as sysdba

SQL>shutdown immediate;  

SQL>startup mount

SQL>ALTER  SYSTEM  ENABLE  RESTRICTED  SESSION;  

SQL>ALTER  SYSTEM  SET  JOB_QUEUE_PROCESSES=0;  

SQL>ALTER  SYSTEM  SET  AQ_TM_PROCESSES=0;

SQL>alter database open;  

SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;

ALTER DATABASE CHARACTER SET ZHS16GBK  ERROR at line 1:

ORA-12712: new character set must be a superset of old character set

提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:

代码如下:
SQL>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;  

SQL>select * from v$nls_parameters;  

重启检查是否更改完成:

代码如下:
SQL>shutdown immediate;

SQL>startup

SQL>select * from v$nls_parameters;

我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验

这一方法在某些方面是有用处的,比如测试;应用于产品环境时大家应该小心,可能会有一些意外的问题。

2.oracle client端字符集修改

代码如下:

$echo $NLS_LANG

client字符集修改:  

 在 /home/oracle与 /root用户目录下的.bash_profile中添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 语句

 关闭当前ssh窗口。

注意:NLS_LANG变量一定要配置正确否则会引起sqlplus失效。

3.修改数据库字符集为UTF-8

1.以DBA登录

2.执行转换语句:

代码如下:

SHUTDOWN IMMEDIATE;

STARTUP MOUNT EXCLUSIVE;

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

ALTER DATABASE OPEN;

ALTER DATABASE NATIONAL CHARACTER SET UTF8;

SHUTDOWN IMMEDIATE;

STARTUP;

注意:如果没有大对象,在使用过程中进行语言转换没有什么影响!

可能会出现ORA-12717:CANNOT ALTER DATABASE NATIONAL CHARACTER SET WHEN NCLOBDATAEXISTS, 解决这个问题的方法

利用INTERNAL_USE 关键字修改区域设置

代码如下:
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;

转载地址:http://tzmjz.baihongyu.com/

你可能感兴趣的文章
MySql从入门到精通
查看>>
MYSQL从入门到精通(一)
查看>>
MYSQL从入门到精通(二)
查看>>
mysql以下日期函数正确的_mysql 日期函数
查看>>
mysql以服务方式运行
查看>>
mysql优化--索引原理
查看>>
MySQL优化之BTree索引使用规则
查看>>
MySQL优化之推荐使用规范
查看>>
Webpack Critical CSS 提取与内联教程
查看>>
mysql优化概述(范式.索引.定位慢查询)
查看>>
MySQL优化的一些需要注意的地方
查看>>
mysql优化相关
查看>>
MySql优化系列-优化版造数据(存储过程+函数+修改存储引擎)-2
查看>>
MySql优化系列-进阶版造数据(load data statment)-3
查看>>
MySql优化系列-造数据(存储过程+函数)-1
查看>>
MySQL优化配置详解
查看>>
Mysql优化高级篇(全)
查看>>
mysql会员求积分_MySql-统计所有会员的最高前10次的积分和
查看>>
mysql会对联合索性排序优化_MySQL索引优化实战
查看>>
MySQL作为服务端的配置过程与实际案例
查看>>