oracle安装选取字符集,oracle10g字符集问题及设置PL/SQL、sqlplus字符集

使用plsql登录的时候,oracle的tns不显示。需要在本机上增加环境变量:

NLS_LANG=SIMPLIFIED

CHINESE_CHINA.ZHS16GBK

并参考文章:

http://blog.sina.com.cn/s/blog_61c44d780102wec0.html

1.打开注册表-regedit

2.找到如下目录:

HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE ->

KEY_OraDb10g_home1

3.执行sql :select

userenv('language') from dual; 获取oracle服务端字符集X

4. 右键修改

NLS_LANG 值为 X 即可。

备注:oracle10g

UTF8编码:SIMPLIFIED CHINESE_CHINA.UTF8

GBK编码:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

5、操作系统环境变量更改。

6、数据库字符集修改:

字符集问题:

源库ZHS16BGK,汉字在数据库存放的时候占用两个字节

目标库UTF8,汉字在数据库里存放的时候占用三个字节

由于字符集不同,导致现在数据库impdp的时候有些表的字段长度不够,出现ORA-12899: value too large

for column的错误。(此部分以上为原文注释)

今天在家又再次折腾,终于解决了这个问题,折腾了几次,每次都忘记,特记录一下:

SIMPLIFIED CHINESE_CHINA.UTF8

American_America.AL32UTF8

AMERICAN_AMERICA.UTF8

2016.04.24日。BAO_TEA数据库的解决:

解决办法:更改数据库字符集为GBK

1、首先查询oracle的字符集变量:

select * from v$nls_parameters where

parameter='NLS_CHARACTERSET';

查询结果:

SQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';

PARAMETER

--------------------------------------------------------------------------------

VALUE

--------------------------------------------------------------------------------

NLS_CHARACTERSET

ZHS16GBK

2、如果需要更改oracle字符集变量(更改为上面查询的结果ZHS16GBK),步骤:

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

AL16UTF16; 更改国际字符集AA

ALTER DATABASE CHARACTER SET ZHS16GBK;

更改本地字符集BB

SHUTDOWN IMMEDIATE;

STARTUP ;

如果错误信息,在执行AA和BB语句的时候可能报错,请对照一下信息

如果提示:

ORA-12717: Cannot issue ALTER DATABASE NATIONAL

CHARACTER SET when NCLOB, NCHAR

or NVARCHAR2 data exists

则更改使用以下语句:

ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE

AL16UTF16;

如果提示:

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

old character set

则更改使用以下语句:

ALTER DATABASE character set INTERNAL_USE

ZHS16GBK;

如果提示:

ORA-12721: operation

cannot execute when other sessions are active

则更改使用以下语句:

SHUTDOWN

IMMEDIATE;

STARTUP MOUNT

EXCLUSIVE;

如果提示:

ORA-01109: database not

open

则更改使用以下语句:

ALTER DATABASE

OPEN;

如果提示:

ORA-12719: operation

requires database is in RESTRICTED mode

则更改使用以下语句:

ALTER SYSTEM ENABLE

RESTRICTED SESSION;

3、检查Windows系统(win7,win2003server等)的变量:

win7:系统属性——》高级——》环境变量——》

设置NLS_LANG的值:SIMPLIFIED

CHINESE_CHINA.ZHS16GBK

4、注册表:

我看了一下注册表里面,nls_lang共有三个地方有:

第一个地方:local_machine——software——wow6432node——oracle——KEY_OraDb10g_home1

nls_lang=AMERICAN_AMERICA.ZHS16GBK

第二个地方:local_machine——system——controlset001——control——session

mananger——environment。

nls_lang=SIMPLIFIED

CHINESE_CHINA.ZHS16GBK

第三个地方:local_machine——system——currentcontrolset——control——session

mananger——environment。

nls_lang=SIMPLIFIED

CHINESE_CHINA.ZHS16GBK

执行:

exp tea/tea file="e:\tea3.dmp" buffer=40960 log="e:\tea3.log"

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

- Production

With the Partitioning, OLAP and Data Mining options

已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即将导出指定的用户...

. 正在导出 pre-schema 过程对象和操作

. 正在导出用户 TEA 的外部函数库名

. 导出 PUBLIC 类型同义词

. 正在导出专用类型同义词

. 正在导出用户 TEA 的对象类型定义

即将导出 TEA 的对象...

. 正在导出数据库链接

. 正在导出序号

. 正在导出簇定义

. 即将导出 TEA 的表通过常规路径...

. . 正在导出表  A_OUTNOKEEP_QTY导出了  0 行

. . 正在导出表  A_PRICE_TMP导出了

0 行

. . 正在导出表  A_TMP_PACK导出了  0 行

. . 正在导出表  A_TMP_PACK2导出了

0 行

. . 正在导出表  A_YYTTOBAO导出了  0 行

. . 正在导出表  A_YYT_LOT导出了  0 行

. . 正在导出表  A_YYT_QTY导出了  0 行

. . 正在导出表  A_YYT_SUPRICE导出了  0 行

. . 正在导出表  BAO_BUSI_ST_RGPLAN导出了

0 行

. . 正在导出表  BUIS_MV_CCPFXB导出了  0 行

. . 正在导出表  BUIS_MV_ZXPFXB导出了  0 行

. . 正在导出表  BUIS_MV_ZXPFXBB导出了  0 行

.

.

.

. . 正在导出表  ZX_WULIU_KCZQL导出了  0 行

. . 正在导出表  ZX_XSRB导出了  0 行

. 正在导出同义词

. 正在导出视图

. 正在导出存储过程

. 正在导出运算符

. 正在导出引用完整性约束条件

. 正在导出触发器

. 正在导出索引类型

. 正在导出位图, 功能性索引和可扩展索引

. 正在导出后期表活动

. 正在导出实体化视图

. 正在导出快照日志

. 正在导出作业队列

. 正在导出刷新组和子组

. 正在导出维

. 正在导出 post-schema 过程对象和操作

. 正在导出统计信息

成功终止导出, 没有出现警告。

(完)2016年4月24日。阳明

安装的是PLSQL

Developer,执行SQL发现弹出的错误提示对话框都是ora29275表示。后来才明白是跟服务器的字符集不匹配的问题。方法如下:

1、查询oracle server端的字符集。打开SQL

Window输入下面SQL查询服务端的字符集。

select userenv('language') from

dual;

2、我的电脑中环境变量界面,在系统变量中新加:

变量名:NLS_LANG

变量值:SIMPLIFIED

CHINESE_CHINA.ZHS16GBK

其中的变量值跟服务器查询到得一致即可。

SQLPLUS

登录界面乱码,解决:

select * from nls_database_parameters;

1 NLS_LANGUAGE AMERICAN

2 NLS_TERRITORY AMERICA

3 NLS_CURRENCY $

4 NLS_ISO_CURRENCY AMERICA

5 NLS_NUMERIC_CHARACTERS .,

6 NLS_CHARACTERSET UTF8

7 NLS_CALENDAR GREGORIAN

8 NLS_DATE_FORMAT DD-MON-RR

9 NLS_DATE_LANGUAGE AMERICAN

10 NLS_SORT BINARY

11 NLS_TIME_FORMAT HH.MI.SSXFF AM

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

13 NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR

14 NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR

15 NLS_DUAL_CURRENCY $

16 NLS_COMP BINARY

17 NLS_LENGTH_SEMANTICS BYTE

18 NLS_NCHAR_CONV_EXCP FALSE

19 NLS_NCHAR_CHARACTERSET AL16UTF16

20 NLS_RDBMS_VERSION 10.1.0.2.0

客户端的环境变量设置为:

NLS_LANG

AMERICAN_AMERICA.UTF8

搞定,乱码不在显示,显示为英文。

其他

SIMPLIFIED CHINESE_CHINA.UTF8

ALTER DATABASE CHARACTER SET ZHS16GBK;

ALTER DATABASE CHARACTER SET UTF8;

------------> ZHS16GBK

[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jul 7 04:27:40

2009

Copyright (c) 1982, 2005,

Oracle. All rights

reserved.

SQL> conn /as sysdba

Connected.

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> Startup restrict

ORACLE instance started.

Total System Global

Area 167772160

bytes

Fixed

Size 1218292

bytes

Variable

Size 79694092

bytes

Database

Buffers 79691776

bytes

Redo

Buffers 7168000

bytes

Database mounted.

Database opened.

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;

Database altered.

(有时候会遇到如下错误:ORA-12712: new character set must be a superset of old

character set

可以执行如下: 跳过超集的检查 :ALTER DATABASE character set INTERNAL_USE

zhs16gbk;)

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global

Area 167772160

bytes

Fixed

Size 1218292

bytes

Variable

Size 79694092

bytes

Database

Buffers 79691776

bytes

Redo

Buffers 7168000

bytes

Database mounted.

Database opened.

SQL>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值