版本信息
系统环境:win7-64bit
oracle及PLSQL:
[img]http://dl2.iteye.com/upload/attachment/0113/1672/0ca08a7c-ae74-37b7-8603-7328fa1aac98.png[/img]
首先说明一下,我修改orale的字符集主要是为了满足本地数据库和远程数据库字符集的一致性。因为,我这边远程数据库脱离了内网是没办法使用的,
所以自己在本机建立一套同样的数据库,以满足平时的使用。
oracle 10g xe安装成功之后,默认的字符集是AMERICAN_AMERICA.AL32UTF8,并且服务端和客户端是一致的。
而我这边远程数据库服务端字符集却是AMERICAN_AMERICA.ZHS16GBK。
这里区别的地方在于GBK中文占2个字符,UTF8中文则是占3个字符。这样从远程数据库导出来的表结构字段的长度在本机就会不适用了。
比如:
name varchar(30)
在远程服务器上面该字段可以插入15个中文字段,在本地则只能插入10个中文字段。
以下操作的都是本机oracle服务器端和客户端。
1、修改之前首先查看下服务器上的字符集:
select userenv('language') from dual;
2、通过dos窗口连接数据库。
[img]http://dl2.iteye.com/upload/attachment/0113/1674/ca1d8d08-0ae6-36c3-a896-6186d93cd81e.png[/img]
这里需要说明一下,输入密码的时候需要指定连接方式。
格式:密码[空格]as[sysdba]
然后回车即可。
如果只是单纯的输入密码则会报错:
[img]http://dl2.iteye.com/upload/attachment/0113/1676/07f4dc8e-a8ba-3377-b661-996e9d1924cc.png[/img]
输入正确后:
[img]http://dl2.iteye.com/upload/attachment/0113/1678/4e7a512c-ef15-3372-a86b-b9e5868d2acd.png[/img]
具体命令:
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 805306368 bytes
Fixed Size 1289996 bytes
Variable Size 218104052 bytes
Database Buffers 583008256 bytes
Redo Buffers 2904064 bytes
数据库装载完毕。
SQL> alert system enable restricted session;
SP2-0734: 未知的命令开头 "alert syst..." - 忽略了剩余的行。
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 charset set ZHS16GBK;
alter database charset set ZHS16GBK
*
第 1 行出现错误:
ORA-02231: ALTER DATABASE 选项缺失或无效
SQL> alter database character set ZHS16GBK;
alter database character set ZHS16GBK
*
第 1 行出现错误:
ORA-12712: 新字符集必须为旧字符集的超集
SQL> alter database character set ZHS16GBK;
alter database character set ZHS16GBK
*
第 1 行出现错误:
ORA-12712: 新字符集必须为旧字符集的超集
SQL> alter database character set internal_use ZHS16GBK;
数据库已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 805306368 bytes
Fixed Size 1289996 bytes
Variable Size 218104052 bytes
Database Buffers 583008256 bytes
Redo Buffers 2904064 bytes
数据库装载完毕。
数据库已经打开。
===================================================================================
至此oracle数据库服务器端算是设置成功了。
这个时候使用PLSQL可能就会出现下面的错误提示了,原因应该就是客户端的字符集编码还没有改过来,所以和服务器端不一致。
更改客户端字符集编码的方式网上都有:更改注册表和环境变量。我采用的是修改环境变量,因为我发现我的注册表中没有关于oracle的注册表。
[img]http://dl2.iteye.com/upload/attachment/0113/1680/350f405c-b3eb-36da-bb4b-982568d49d91.png[/img]
环境变量修改:NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
[img]http://dl2.iteye.com/upload/attachment/0113/1682/017a8c76-4e06-3402-9755-9c71c3bc9d9c.png[/img]
改过之后就正常了。而且数据插入也正常了。但是oracle主页就不正常了。
不过也不管了。反正也用不到。
http://127.0.0.1:8080/apex/f?p=4550:11:1498699066044660::NO:::
[img]http://dl2.iteye.com/upload/attachment/0113/1684/578c2dd7-e11d-384e-acc0-acf1b86e7ec3.png[/img]
系统环境:win7-64bit
oracle及PLSQL:
[img]http://dl2.iteye.com/upload/attachment/0113/1672/0ca08a7c-ae74-37b7-8603-7328fa1aac98.png[/img]
首先说明一下,我修改orale的字符集主要是为了满足本地数据库和远程数据库字符集的一致性。因为,我这边远程数据库脱离了内网是没办法使用的,
所以自己在本机建立一套同样的数据库,以满足平时的使用。
oracle 10g xe安装成功之后,默认的字符集是AMERICAN_AMERICA.AL32UTF8,并且服务端和客户端是一致的。
而我这边远程数据库服务端字符集却是AMERICAN_AMERICA.ZHS16GBK。
这里区别的地方在于GBK中文占2个字符,UTF8中文则是占3个字符。这样从远程数据库导出来的表结构字段的长度在本机就会不适用了。
比如:
name varchar(30)
在远程服务器上面该字段可以插入15个中文字段,在本地则只能插入10个中文字段。
以下操作的都是本机oracle服务器端和客户端。
1、修改之前首先查看下服务器上的字符集:
select userenv('language') from dual;
2、通过dos窗口连接数据库。
[img]http://dl2.iteye.com/upload/attachment/0113/1674/ca1d8d08-0ae6-36c3-a896-6186d93cd81e.png[/img]
这里需要说明一下,输入密码的时候需要指定连接方式。
格式:密码[空格]as[sysdba]
然后回车即可。
如果只是单纯的输入密码则会报错:
[img]http://dl2.iteye.com/upload/attachment/0113/1676/07f4dc8e-a8ba-3377-b661-996e9d1924cc.png[/img]
输入正确后:
[img]http://dl2.iteye.com/upload/attachment/0113/1678/4e7a512c-ef15-3372-a86b-b9e5868d2acd.png[/img]
具体命令:
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 805306368 bytes
Fixed Size 1289996 bytes
Variable Size 218104052 bytes
Database Buffers 583008256 bytes
Redo Buffers 2904064 bytes
数据库装载完毕。
SQL> alert system enable restricted session;
SP2-0734: 未知的命令开头 "alert syst..." - 忽略了剩余的行。
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 charset set ZHS16GBK;
alter database charset set ZHS16GBK
*
第 1 行出现错误:
ORA-02231: ALTER DATABASE 选项缺失或无效
SQL> alter database character set ZHS16GBK;
alter database character set ZHS16GBK
*
第 1 行出现错误:
ORA-12712: 新字符集必须为旧字符集的超集
SQL> alter database character set ZHS16GBK;
alter database character set ZHS16GBK
*
第 1 行出现错误:
ORA-12712: 新字符集必须为旧字符集的超集
SQL> alter database character set internal_use ZHS16GBK;
数据库已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 805306368 bytes
Fixed Size 1289996 bytes
Variable Size 218104052 bytes
Database Buffers 583008256 bytes
Redo Buffers 2904064 bytes
数据库装载完毕。
数据库已经打开。
===================================================================================
至此oracle数据库服务器端算是设置成功了。
这个时候使用PLSQL可能就会出现下面的错误提示了,原因应该就是客户端的字符集编码还没有改过来,所以和服务器端不一致。
更改客户端字符集编码的方式网上都有:更改注册表和环境变量。我采用的是修改环境变量,因为我发现我的注册表中没有关于oracle的注册表。
[img]http://dl2.iteye.com/upload/attachment/0113/1680/350f405c-b3eb-36da-bb4b-982568d49d91.png[/img]
环境变量修改:NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
[img]http://dl2.iteye.com/upload/attachment/0113/1682/017a8c76-4e06-3402-9755-9c71c3bc9d9c.png[/img]
改过之后就正常了。而且数据插入也正常了。但是oracle主页就不正常了。
不过也不管了。反正也用不到。
http://127.0.0.1:8080/apex/f?p=4550:11:1498699066044660::NO:::
[img]http://dl2.iteye.com/upload/attachment/0113/1684/578c2dd7-e11d-384e-acc0-acf1b86e7ec3.png[/img]