配置Oracle服务器与客户端字符集

问题描述

一开始是设置字符集怎么设置怎么都不对,显示不出来,或者就是显示乱码.

后来,修改了本地的NLS_LANG就报下面的错误了.

ORA-12705: Cannot access NLS data files or invalid environment specified

Oracle LOGO
image-1872

解决方案

步骤[以SYS身份执行]:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
shutdown immediate;//如果未开启数据库,可以略过这一句
startup mount;
alter session set sql_trace=true;
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database open;
alter database character set internal_use utf8;
alter session set sql_trace=false;
shutdown immediate;
startup;

select userenv('language') from dual;

//下面是Linux操作

//这一句很重要,可能你设置的是UTF8.
//但这里显示的确不一样,[依据这个结果设置你的本地环境变量]
//我这查询的结果是:AMERICAN_AMERICA.UTF8[如果设置成别的,比如UTF8,运行sqlplus的时候就会报错[ORA-12705]]
//下面可以在另一个终端上进行操作!!
cd ~
vi .bash_profile
//去底部.增加下面的文字.
export NLS_LANG=AMERICAN_AMERICA.UTF8
:wq!//保存退出
//让其配置生效
source .bash_profile
source .bash_profile
//输出看一下是否正确
echo $NLS_LANG

//Linux操作结束

//回到sqlplus界面,重启数据库
STARTUP FORCE
CONN SYS/[PASSWORD] AS SYSDBA
CREATE TABLE TESTS(
    SNAME VARCHAR2(50)
);
INSERT INTO TESTS
(SNAME)
VALUES
('测试');
SELECT * FROM TESTS;
//如果输出中文就表示配置正确了.
//另外如果使用工具连接,请在连接属性里将LANGUAGE设置为CHINA[或类似]