="t18">
Oracle以其强大
![](/icons/75165de.gif)
数据库治理能力、高安全性、多用户操作时数据
![](/icons/75165de.gif)
![](/icons/75165yi.gif)
致性
![](/icons/75165dou.gif)
赢得了用户
![](/icons/75165de.gif)
广泛青睐
![](/icons/75165dou.gif)
获得了很高
![](/icons/75165de.gif)
市场占有率
![](/icons/75165dou2.gif)
但是
![](/icons/75165dou.gif)
它在汉字信息显示时存在多种
![](/icons/75165zifu.gif)
集
![](/icons/75165dou.gif)
且相互的间不能通用
![](/icons/75165dou.gif)
这就给多数据库的间
![](/icons/75165de.gif)
数据共享带来了
![](/icons/75165yi.gif)
些麻烦
笔者从事Oracle数据库治理及应用软件Software
![](/icons/75165de.gif)
开发工作多年
![](/icons/75165dou.gif)
常碰到Oracle数据库汉字显示
![](/icons/75165de.gif)
问题
![](/icons/75165dou.gif)
主要现象是汉字显示为不可识别
![](/icons/75165de.gif)
乱码
![](/icons/75165dou.gif)
信息无法使用
![](/icons/75165dou2.gif)
本文介绍笔者在实际工作中
![](/icons/75165de.gif)
![](/icons/75165yi.gif)
点心得体会
![](/icons/75165dou.gif)
和大家
![](/icons/75165yi.gif)
起探讨
中英文Oracle的间
![](/icons/75165de.gif)
数据共享
在笔者
![](/icons/75165de.gif)
实际工作中
![](/icons/75165dou.gif)
有为多个 2级厂矿开发
![](/icons/75165de.gif)
基于Oracle数据库
![](/icons/75165de.gif)
应用
![](/icons/75165chengxu.gif)
![](/icons/75165dou.gif)
而各个单位所用
![](/icons/75165de.gif)
Oracle数据库
![](/icons/75165dou.gif)
在安装时所采用
![](/icons/75165de.gif)
![](/icons/75165zifu.gif)
集各不相同
![](/icons/75165dou.gif)
有
![](/icons/75165de.gif)
用英文
![](/icons/75165zifu.gif)
集
![](/icons/75165dou.gif)
有
![](/icons/75165de.gif)
用中文
![](/icons/75165zifu.gif)
集
![](/icons/75165dou2.gif)
当表中
![](/icons/75165de.gif)
数据只是数字、英文信息时
![](/icons/75165dou.gif)
数据共享是可以
![](/icons/75165de.gif)
; 当表中含有汉字信息时
![](/icons/75165dou.gif)
以正常
![](/icons/75165de.gif)
方式进行共享
![](/icons/75165dou.gif)
就看不到汉字了
![](/icons/75165dou.gif)
而只会见到
![](/icons/75165yi.gif)
些乱码
![](/icons/75165dou2.gif)
下面以Oracle 7.3版
![](/icons/75165de.gif)
数据库为例介绍说明解决思路方法
假设源数据库是中文
![](/icons/75165zifu.gif)
集
![](/icons/75165dou.gif)
目标数据库是英文
![](/icons/75165zifu.gif)
集
![](/icons/75165dou.gif)
利用 Delphi作为转换工具
![](/icons/75165dou2.gif)
实际
![](/icons/75165de.gif)
步骤依据导入和导出有所区别
![](/icons/75165dou.gif)
导出数据时步骤如下:
>1. 配置客户端
![](/icons/75165zifu.gif)
集
首先将本机Oracle客户端
![](/icons/75165de.gif)
![](/icons/75165zifu.gif)
集配置得和源数据库
![](/icons/75165de.gif)
![](/icons/75165zifu.gif)
集
![](/icons/75165yi.gif)
致
![](/icons/75165dou2.gif)
打开注册表
![](/icons/75165dou.gif)
找到HKEY_LOCAL_MACHINE
![](/icons/75165dou.gif)
选下面
![](/icons/75165de.gif)
SOFTWARE
![](/icons/75165dou.gif)
再选Oracle
![](/icons/75165dou.gif)
在注册表中找到NLS_LANG,将值改为:AMERICAN_AMERICA.ZHS16CGB231280
2. 配置数据库别名
用Delphi
![](/icons/75165de.gif)
工具SQL EXPLORER配置两个数据库假名
![](/icons/75165dou.gif)
其中DBSOURCE1用来连接源数据库
![](/icons/75165dou.gif)
DBMIDDLE1用来连接中间数据库(Paradox表)
3. 导出
打开Delphi
![](/icons/75165de.gif)
工具Database DeskTop,在主菜单中选Tools下面
![](/icons/75165de.gif)
Utilities
![](/icons/75165dou.gif)
再选Copy
![](/icons/75165dou.gif)
会弹出
![](/icons/75165yi.gif)
个新
![](/icons/75165de.gif)
对话框
![](/icons/75165dou.gif)
在Alias(数据库别名)中选择DBSOURCE1
![](/icons/75165dou.gif)
并输入用户口令
![](/icons/75165dou2.gif)
在打开
![](/icons/75165de.gif)
数据库中选择需要
![](/icons/75165de.gif)
表
![](/icons/75165dou.gif)
点击OK按钮
![](/icons/75165dou2.gif)
在Alias(数据库别名)中选择DBMIDDLE1
![](/icons/75165dou2.gif)
在File Name栏中输入目标表名
![](/icons/75165dou.gif)
点击COPY按钮
![](/icons/75165dou.gif)
假如显示: Copy SUCcessfully Completed
![](/icons/75165dou.gif)
则数据导出成功
导入数据时步骤如下:
1. 配置客户端
![](/icons/75165zifu.gif)
集
首先将本机Oracle客户端
![](/icons/75165de.gif)
![](/icons/75165zifu.gif)
集配置得和目标数据库
![](/icons/75165de.gif)
![](/icons/75165zifu.gif)
集
![](/icons/75165yi.gif)
致
![](/icons/75165dou2.gif)
打开注册表
![](/icons/75165dou.gif)
找到HKEY_LOCAL_MACHINE
![](/icons/75165dou.gif)
选下面
![](/icons/75165de.gif)
SOFTWARE
![](/icons/75165dou.gif)
再选Oracle,在注册表中找到NLS_LANG,将值改为:AMERICAN_AMERICA.US7ASCII
2. 配置数据库别名
用Delphi
![](/icons/75165de.gif)
工具SQL EXPLORER配置
![](/icons/75165yi.gif)
个数据库别名:DBTARGET1
![](/icons/75165dou.gif)
用来连接目标数据库
3. 导入
打开Delphi
![](/icons/75165de.gif)
工具Database DeskTop,在主菜单中选Tools下面
![](/icons/75165de.gif)
Utilities
![](/icons/75165dou.gif)
再选Copy
![](/icons/75165dou.gif)
会弹出
![](/icons/75165yi.gif)
个新
![](/icons/75165de.gif)
对话框
![](/icons/75165dou.gif)
在Alias(数据库别名)中选择DBMIDDLE1
![](/icons/75165dou2.gif)
在打开
![](/icons/75165de.gif)
数据库中选择需要
![](/icons/75165de.gif)
表
![](/icons/75165dou.gif)
点击OK按钮
![](/icons/75165dou2.gif)
在Alias(数据库别名)中选择DBTARGET1
![](/icons/75165dou.gif)
并输入用户口令
![](/icons/75165dou2.gif)
在File Name栏中输入目标表名
![](/icons/75165dou.gif)
点击COPY按钮
![](/icons/75165dou.gif)
假如显示: Copy Successfully Completed
![](/icons/75165dou.gif)
则数据导入成功
![](/icons/75165dou2.gif)
此时
![](/icons/75165dou.gif)
在目标数据库中查看导入
![](/icons/75165de.gif)
表
![](/icons/75165dou.gif)
汉字显示就正常了
小型机和PC服务器的间
![](/icons/75165de.gif)
数据共享
笔者所在公司有小型机Alpha 2100作为数据库服务器
![](/icons/75165dou.gif)
上面有多个 2级单位使用
![](/icons/75165dou2.gif)
随着时间
![](/icons/75165de.gif)
推移
![](/icons/75165dou.gif)
数据增加
![](/icons/75165dou.gif)
用户增加
![](/icons/75165dou.gif)
小型机不堪重负
![](/icons/75165dou.gif)
运行速度缓慢
![](/icons/75165dou.gif)
不能满足日常
![](/icons/75165de.gif)
工作需要
![](/icons/75165dou2.gif)
为了缓解这种情况
![](/icons/75165dou.gif)
有部分单位自备了PC服务器
![](/icons/75165dou.gif)
将数据从小型机上移植下来
![](/icons/75165dou.gif)
建立了自己单独
![](/icons/75165de.gif)
数据库
两个数据库都安装
![](/icons/75165de.gif)
是英文
![](/icons/75165zifu.gif)
集
![](/icons/75165dou.gif)
从小型机上导出
![](/icons/75165de.gif)
数据
![](/icons/75165dou.gif)
装入到PC服务器
![](/icons/75165dou.gif)
碰到汉字信息也不能正常显示
![](/icons/75165dou2.gif)
这主要是
![](/icons/75165yinwei.gif)
两者
![](/icons/75165de.gif)
操作系统区别
![](/icons/75165dou.gif)
小型机上是VMS系统
![](/icons/75165dou.gif)
而PC服务器上是NT 4.0
![](/icons/75165dou.gif)
有两种思路方法可以解决这个问题:
1. 用仿真终端
![](/icons/75165de.gif)
方式将数据导出
用Telnet连接到小型机上
![](/icons/75165dou.gif)
执行exp
![](/icons/75165dou.gif)
将某个用户
![](/icons/75165de.gif)
数据库导出为
![](/icons/75165yi.gif)
个*.dmp文件
![](/icons/75165dou.gif)
保存在PC服务器上
2. 用FTP将数据取到本机
用FTP连接到小型机上
![](/icons/75165dou.gif)
执行bin
![](/icons/75165dou.gif)
再执行Get
![](/icons/75165dou.gif)
将数据(*.dmp文件)以 2进制
![](/icons/75165de.gif)
方式传输到本机
![](/icons/75165dou2.gif)
注重这里必须用 2进制方式
![](/icons/75165dou.gif)
否则数据无法正常使用
得到小型机上
![](/icons/75165de.gif)
数据后
![](/icons/75165dou.gif)
再将本机客户端配置得和PC服务器
![](/icons/75165de.gif)
![](/icons/75165zifu.gif)
集
![](/icons/75165yi.gif)
致
![](/icons/75165dou.gif)
将数据导入PC服务器数据库中
![](/icons/75165dou.gif)
则
![](/icons/75165yi.gif)
切数据均可使用了
数据库升级 在数据库
![](/icons/75165de.gif)
使用中常会碰到Oracle
![](/icons/75165de.gif)
版本升级
![](/icons/75165dou.gif)
如何在保证原来数据安全
![](/icons/75165de.gif)
情况下
![](/icons/75165dou.gif)
将数据库平稳地升级?这里分两种情况:
1. 英文
![](/icons/75165zifu.gif)
集
![](/icons/75165de.gif)
安装
假如原来
![](/icons/75165de.gif)
数据库安装采用
![](/icons/75165de.gif)
是英文
![](/icons/75165zifu.gif)
集
![](/icons/75165dou.gif)
则从Oracle 7.3升级到Oracle 8.0.5时
![](/icons/75165dou.gif)
只要将数据字典Props$中
![](/icons/75165de.gif)
参数修改为“US7ASCII”即可
以系统DBA
![](/icons/75165de.gif)
身份登录SQL*PLUS
![](/icons/75165dou.gif)
执行如下
![](/icons/75165de.gif)
命令
![](/icons/75165dou.gif)
修改数据字典:
SQL>UPDATE PROPS$ SET VALUE$=‘US7ASCII’WHERE NAME=‘NLS_CHARACTERSET’;
SQL>COMMIT;
注重
![](/icons/75165dou.gif)
修改后必须重新启动数据库
![](/icons/75165dou.gif)
配置才起作用
![](/icons/75165dou.gif)
然后将从Oracle
2. 中文
![](/icons/75165zifu.gif)
集
![](/icons/75165de.gif)
安装
假如原来
![](/icons/75165de.gif)
数据库安装采用
![](/icons/75165de.gif)
是中文
![](/icons/75165zifu.gif)
集
![](/icons/75165dou.gif)
直接将数据导入
![](/icons/75165dou.gif)
是否可用呢?不可以
![](/icons/75165dou.gif)
汉字显示为乱码
原因是Oracle 7.3
![](/icons/75165de.gif)
中文
![](/icons/75165zifu.gif)
集
![](/icons/75165de.gif)
参数是:ZHS16CGB231280
![](/icons/75165dou.gif)
而Oracle 8.0.5
![](/icons/75165de.gif)
中文
![](/icons/75165zifu.gif)
集
![](/icons/75165de.gif)
参数是:ZHS16GBK
![](/icons/75165dou2.gif)
两者不
![](/icons/75165yi.gif)
样
![](/icons/75165dou.gif)
为了能正常地使用
![](/icons/75165dou.gif)
必须修改Oracle 8.0.5
![](/icons/75165de.gif)
数据字典
![](/icons/75165de.gif)
参数为:ZHS16CGB231280
![](/icons/75165dou2.gif)
具体
![](/icons/75165de.gif)
修改步骤如下, 用系统DBA
![](/icons/75165de.gif)
身份登录SQL*PLUS
![](/icons/75165dou.gif)
执行:
SQL>UPDATE PROPS$ SET VALUE$=‘ZHS16CGB231280’WHERE NAME=‘NLS_CHARACTERSET’;
SQL>COMMIT;
注重
![](/icons/75165dou.gif)
修改后必须重新启动数据库
![](/icons/75165dou.gif)
配置才起作用
![](/icons/75165dou.gif)
然后将从Oracle 7.3导出
![](/icons/75165de.gif)
数据
![](/icons/75165dou.gif)
导入Oracle 8.0.5
![](/icons/75165de.gif)
数据库中即可