楼主: netfun2000

我想升级我的军卫一号系统,请帮帮我。

[复制链接]
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
71#
 楼主| 发表于 2007-10-21 16:16 | 只看该作者
可以改,但要小心!操作前请先对数据库做整库备份。
版主提示:下面的方法有极大地误导作用.请三思而后行.多看看论坛精华区的内容

Oracle字符集转换(英文->中文)方法



1、在原数据库(字符集为英文)执行sqlplus,连接sys用户,修改字符集参数,然后退出。

SQL> connect sys/******; (口令一般为"manager"
update props$ set value$ = 'ZHS16GBK' where name = 'NLS_CHARACTERSET';
update props$ set value$ = 'ZHS16GBK' where name = 'NLS_NCHAR_CHARACTERSET';
commit;
SQL> quit;

2、执行svrmgrl,关闭并重新开启Oracle数据库

SVRMGR> connect internal/******; (口令一般为"oracle"
SVRMGR> shutdown immediate;
SVRMGR> startup mount;
SVRMGR> alter system enable restricted session;
SVRMGR> alter system set job_queue_process=0;
SVRMGR> alter database open;
SVRMGR> alter database character set ZHS16GBK;
SVRMGR> shutdown immediate;
SVRMGR> exit;

3、执行regedit,将键值HKEY_LOCAL_MACHINE\Software\ORACLE\NLS_LANG
由 AMERICAN_AMERICA.WE8ISO8859P1
转换为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK

4、执行exp导出数据

5、执行regedit将键值HKEY_LOCAL_MACHINE\Software\ORACLE\NLS_LANG
由 SIMPLIFIED CHINESE_CHINA.ZHS16GBK
恢复为 AMERICAN_AMERICA.WE8ISO8859P1

6、执行sqlplus,连接sys用户,恢复字符集参数,然后退出。

connect sys/******; (口令一般为"manager"
update props$ set value$ = 'WE8ISO8859P1' where name = 'NLS_CHARACTERSET';
update props$ set value$ = 'WE8ISO8859P1' where name = 'NLS_NCHAR_CHARACTERSET';
commit;
SQL> quit;

7、重复步骤2,关闭并重新开启Oracle数据库

8、将导出的dmp文件导入目标数据库(字符集为中文)

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
72#
 楼主| 发表于 2007-10-21 16:18 | 只看该作者
执行svrmgrl,关闭并重新开启Oracle数据库

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
73#
 楼主| 发表于 2007-10-21 16:41 | 只看该作者
Oracle数据库字符集转换规律全面剖析
来源: 作者: 发布时间:2007-04-06   
  
作为一个Oracle数据库的用户,对于Export和Import两个命令绝对不会感到陌生,因为这二者正是我们经常用于数据备份和恢复的工具。但在使用这两个命令过程中所发生的Oracle字符集问题,常给一些Oracle使用者带来不必要的麻烦和不必要的数据损失。本文将就Export和Import过程中Oracle字符集的转换规律及使用这两个命令的注意事项做一总结。

字符集转换的原因




  
Export、Import过程如上图所示,从这个示意图中可以看到有四处关系到字符集,而这四处字符集的不一致恰恰是导致Oracle进行字符集转换的原因。

* 源数据库字符集;

* Export过程中用户会话字符集;

* Import过程中用户会话字符集;

* 目标数据库字符集。

在Export和Import过程中,如果存在影响字符集转换的四因素不一致,则可能发生Oracle字符集转换,即:

在Export过程中,如果源数据库字符集与Export用户会话字符集不一致,会发生字符集转换,并在导出的二进制格式Dmp文件的头部几个字节中存储Export用户会话字符集的ID号。在这个转换过程中可能发生数据的丢失。

例1: 如果源数据库使用ZHS16GBK,而Export用户会话字符集使用US7ASCII,由于ZHS16GBK是8位字符集,而US7ASCII是7位字符集,这个转换过程中,中文字符在US7ASCII中不能够找到对等的字符,所以所有中文字符都会丢失而变成“?? ”形式,即这种转换后生成的Dmp文件已经发生了数据丢失。

例2: 如果源数据库使用ZHS16GBK,而Export用户会话字符集使用ZHS16CGB231280,但由于ZHS16GBK字符集是ZHS16CGB231280字符集的超集,这个过程中绝大部分字符都能够正确转换,只有一些超出ZHS16CGB231280字符集的字符变为“?? ”形式。如果源数据库使用ZHS16CGB231280字符集,而Export用户会话使用ZHS16GBK字符集,则转换过程能够完全转换成功。

在Import向目标数据库转换过程中,其字符集发生转换的情况正好与Export过程相反,这里不再详述。

在Export导出的Dmp文件中,含有Export用户会话字符集。在Import过程中,首先发生的是Dmp文件字符集(即Export用户会话字符集)向Import用户会话字符集的转换。如果这个转换过程不能正确完成,Import向目标数据库的导入过程也就不能完成。

进行字符集的正确转换

通常情况下,我们在使用Oracle的Export和Import过程中,并不希望发生字符的转换,但有时这种转换却是必要的。如我们在安装Oracle数据库时,选择ZHS16CGB231280字符集,由于这种字符集是一种中文小字符集,对于一些汉字不能够正确表示,这需要通过使用ZHS16GBK字符集得到解决,此时就要进行字符集的转换。

为了确保Export、Import过程中,Oracle字符集不发生转换或正确转换,建议最好在进行这个过程前,检查一下源数据库字符集与Export用户会话字符集是否一致,源数据库字符集与目标数据库字符集是否一致,目标数据库字符与Import用户会话字符集是否一致。如果能够保证这四个字符集是一致的,则在Export、Import过程中,Oracle字符集就不用发生转换。

可用以下办法检查数据库字符集:

通过InitXXXX.ora文件进行查看;

借助SQL语句查看: SELECT NAME,VALUE$ FROM SYS.PROPS$ WHERE NAME=‘NLS_CHARACTERSET’。

对于Export、Import用户会话字符集,在Windows系统中也可以通过注册表中的NLS_LANG进行查看或修改,对于Unix系统则可通过设置用户的环境变量NLS_LANG来查看或修改。

特别要注意的是,Oracle数据库字符集通常是在创建时确定,一旦存储用户数据后就不要再修改了,因为其数据都是使用该字符集进行存储的,改换其他字符集之后,原有数据就不能够正确表示了。但如果确实想进行字符集改变,则可通过以下几步来实现:

备份数据库后删除原数据(可物理备份,如使用Export,请注意确保字符集不发生转换或数据无损失);

使用Internal用户更新sys.props$表中的字符集:



Update sys.props$ set name=‘Dest.CharSet’
Where name=‘NLS_CHARACTERSET’; COMMIT;


重启数据库;

恢复数据。

下面字符集之间的转换是可行的:

字符集子集向字符集父集转换是可行的,如ZHS16CGB231280向ZHS16GBK转换;而字符集父类向字符集子集进行转换时,会损失部分数据。

只包含英文字符数据的双字节字符集也可向单字节字符集转换,如ZHS16GBK(English Only)可以向US7ASCII正确转换。

编码范围相同的单字节字符集之间通常可以进行相互转换。

请注意,这里所说的没有数据损失,是指一种字符集A转换成另一种字符集B之后,可以再从字符集B正确转换成字符集A或字符集B能够正确表示字符集A中转换过来的数据。

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
74#
 楼主| 发表于 2007-10-21 18:31 | 只看该作者
请指教,住院收费和门诊收费如何打印到INI文件里面?

obilling.ini文件:
rcpt_type=1
;收据类型,本系统支持三种标准收据类型和一种自定义类型
;1:标准收据格式 152*94mm
;4:自定义收据

Ibilling.ini
;医疗费收据的打印格式
;0 --- 套打在印制好的收据上;1 --- 统一收据(空白纸张)
;2 --- 统一收据(套打)
;3 --- 打印到文件
MED_RCPT_PRINT=3
;当打印格式为1或2时,须指定收据头名

好像不起作用。
请高人指教一下。

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
75#
 楼主| 发表于 2007-10-22 14:47 | 只看该作者
在门诊收费里面有:
rcpt.pbl
这个是起到什么作用的?

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
76#
 楼主| 发表于 2007-10-22 16:08 | 只看该作者
有用过这套系统的前辈给个指点啊,怎么老见不到人?

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
77#
 楼主| 发表于 2007-10-28 09:10 | 只看该作者
看了半天,也不知道那套软件怎么用,也找不到说明书。

使用道具 举报

回复
论坛徽章:
0
78#
发表于 2007-10-28 20:19 | 只看该作者
楼主你的qq是多少啊?我们一起交流啊

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
79#
 楼主| 发表于 2007-10-29 17:04 | 只看该作者
QQ:

554587333

使用道具 举报

回复
论坛徽章:
3
生肖徽章:兔
日期:2006-09-26 21:29:55授权会员
日期:2006-10-16 17:04:082011新春纪念徽章
日期:2011-02-18 11:42:49
80#
发表于 2007-10-29 17:16 | 只看该作者
最初由 sky_chenyu 发布
[B]最好和软件公司联系完成升级的事情,如果自己技术力量达到的话,可以先测试一下。 [/B]


使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表