您的位置:寻梦网首页编程乐园Java天地JSP 专辑JSP001 HTML 离线版
Java 天地
JSP001 HTML 离线版
论坛精华 >> Oracle 专栏 >> Oracle 8.0的几个使用技巧

由 guest 发布于: 2001-02-26 12:43

---- Oracle8企业版提供了多种高效、可靠、安全的数据管理。笔者在使用Oracle 8.0.4以及在新的平台上运行过程中积累了一些经验,希望与大家共同交流分享。


---- 一.汉字输入问题的解决


---- 用Oracle Report 3.0进行报表设计时,当输入汉字时,经常会造成软件非法错误,尤其是对已保存再打开进行修改的程序。对此,我们可以通过以下3种方式解决:


---- 1.在用Oracle Developer/2000开发的机器上安装时,语言请选择English(用户的机器选择Simplified Chinese),然后再用Regedit进行注册表编辑,选取"我的电脑"中的"HKEY-LOCAL-MACHINE"下的"Software→Oracle",选取Oracle下的NLS-LANG,其缺省值为:AMERICAN- AMERICA.WE8ISO8859P1,按"编辑"下的"修改",键入Server端NLS- LANG的值,可选择SIMPLIFIED CHINESE-CHINA.ZHS16CGB231280或AMERICAN-AMERICA.ZHS16CGB231280。


---- 2.在开发过程中,尽量在第一次将所有汉字输入完毕,待以后再进行调整。


---- 3.当在Report 3.0输入汉字产生非法错误时, 可用NOTEPAD输入汉字后保存在文件中,然后在Report 3.0 选单"File→Import→Text…",选择该文件,即可将该文件中的汉字输入。


---- 二.客户端省略数据库串的配置


---- 客户端在用"SQL Net Easy Configuration"成功配置数据库别名(如todec)后,在客户端每次连接数据库时,都要键入数据库别名,给用户造成了一定的不便,我们可以通过以下方法来解决:


---- 在Windows 95上选择"开始"按钮,启动"运行"图标,键入Regedit,进行注册表编辑。选取"我的电脑"中的"HKEY-LOCAL-MACHINE" 下的"Software→Oracle" 。在"注册表编辑器"选单上选取"编辑→新建→串值(S)"项,将新建的串值名改为local,键值为todec。


---- 三.屏蔽英文提示信息的两种方法


---- 在应用程序中,系统提示信息为用户提供参考信息,帮助用户正确使用系统。但运行Oracle form时,屏幕下方信息行的提示信息却是英文。当有两个以上信息等待在信息行上显示时,这些英文信息还会以窗口方式出现在屏幕中央。如何避免这种情况呢?


---- 笔者在实践中总结出解决此类问题的两种方法,希望能给初学者提供一些参考。


---- 1.压缩系统信息,禁止系统信息显示在信息行上 Oracle form将每个信息定义了重要级别,用于表明该信息是重要还是不重要。共有如下六个等级:


重要级别 意 义

0 所有信息

5 重申明显的条件

10 操作人员产生了一个过程错误

15 操作人员试图执行form未设计的动作

20 由于触发子问题或某些其他突出问题不能继续动作

25 可能引起form不正确完成任务的一个条件

>25 开发人员不能压缩的信息


---- 开发人员可压缩的最大信息级别为25,使用如下语句禁止系统信息显示:

system.massege-level:=′25′;

禁止显示信息级别不大于25的系统信息:

system.suppress-working:=′TRUE′;

禁止显示系统处理一个动作时的工作信息

注意:这种方法只能屏蔽信息级别小于等于25的系统信息。


---- 2.截获系统信息,转换为汉字提示信息

---- Oracle form中有两个触发子on-erro和on-message,分别在显示系统错误信息和通知信息(告诉操作人员当前处理状态或给出上下文相关的信息)时触发,在触发子中插入pl/sql代码实现汉字提示信息替换英文提示信息。例如:在on-erro触发子中插入以下编码:


Begin

If erro-code=40202 and error-type=′FRM′

Then message(′字段值必须键入!′); bell;

End if;

End;


---- 这样,当有"form--40202"号错误时,系统信息行的提示信息会由原来的英文"field must be enterd"变为汉字"字段值必须键入!",用户不用再为不认识的提示犯愁了。

---- 四.数据库回滚表空间的数据文件误删除的处理方法


---- 1. 首先改参数文件init< sid >.ora,使数据库能mount上来在system表空间内有一个system回滚段,是该回滚段上数据库所必须的,当数据库第一次建立时,它就随之建立,并随数据库的打开而自动在线。我们通常使用的回滚段是公用回滚段,而非system回滚段,若公用回滚段出现故障,我们暂可用system回滚段替代,使数据库能mount上来。


svrmgrl>Shutdown abort

$ vi $ORACLE_HOME/dbs/init< sid >.ora

rollback_segments=(system)

_corrupted_rollback_segments=(r01,r02,r03,r04)

svrmgrl>Startup mount


---- 2. 对数据库实施恢复,再将它打开

---- 从数据库的控制文件中将回滚段表空间rbs的数据文件rbs01.dbf离线并去掉 svrmgrl>alter database datafile ’##/##/rbs01.dbf’ offline drop; 对数据库进行恢复。 svrmgrl>recover database using backup controlfile;


---- 此时屏幕上可能会出现:


ORA_00280 Change #### for thread# is in sequence#

specify log:[< RET > for suggested|AUTO|from logsource|cancel]


---- 您可以根据sequence#号找到您需要的在线日志文件,并将日志文件输入(包括全路径),查找在线日志文件时可以使用svrmgrl>select * from v$log; 此时完成数据库恢复。再将数据库打开。svrmgrl>alter database open resetlogs;

---- 3. 重建新的回滚段


---- 将旧回滚段及回滚表空间删除。


svrmgrl>alter rollback_segment r01 offline drop;

svrmgrl>alter rollback_segment r02 offline drop;

svrmgrl>alter rollback_segment r03 offline drop;

svrmgrl>alter rollback_segment r04 offline drop;

svrmgrl>drop tablespace rbs including contents;


---- 重建新的回滚表空间及回滚段。

svrmgrl>connect internal

svrmgrl>create rollback segment ro tablespace system;

svrmgrl>alter rollback segment ro online;

svrmgrl>create tablespace rbs datafile ’##/##

/rbs01.dbf’ size ##k;

svrmgrl>create rollback segment r01 tablespace rbs;

svrmgrl>create rollback segment r02 tablespace rbs;

svrmgrl>create rollback segment r03 tablespace rbs;

svrmgrl>create rollback segment r04 tablespace rbs;

svrmgrl>alter rollback segment r01 online;

svrmgrl>alter rollback segment r02 online;

svrmgrl>alter rollback segment r03 online;

svrmgrl>alter rollback segment r04 online;


---- 4. 使用新建的回滚段启动数据库

svrmgrl>Shutdown abort

$ vi $ORACLE_HOME/dbs/init< sid >.ora

rollback_segments=(r01,r02,r03,r04)

将参数_corrupted_rollback_segment去掉

svrmgrl>Startup normal


---- 此故障的排除是数据库在归档方式上执行的, 已在HP-UX 10.20及Solaris2.5两种系统平台上成功通过。

---- 五.Oracle Report Wizard技巧


---- 在Report Wizard中,NCA Yellow模板出现"Print Dialog"窗口,而NCA Gray和 Gray Grid模板中没有出现该窗口。这是由于Report的系统参数 Printjob的缘故,Printjob值判断在打印过程中是否出现打印窗口。我们可在"Data Model→System Parameter→Print job "中将Initial Value的值由"NO"改为"YES"。


---- 在打印横向报表时,我们可先选择打印机为"横打"方式,然后设置系统参数Printjob值为"NO"。


---- 六. 数据库备份


---- 在企业的业务日益复杂的今天,我们谈Oracle数据库的备份,应该站在企业级的备份角度来考虑。例如我们的工程图文管理系统文档信息是存放在Oracle for Digital UNIX上,文档本身是存放在中文Windows NT Server 4.0上。如果单纯考虑数据库的备份可能会造成数据的不一致性,因此我们可用企业级的备份软件如Legato Networks来备份所有的企业数据。对于Oracle数据库,我们可采用冷备份的方式备份所有相关文件:数据文件、日志文件、控制文件和参数文件。


---- 首先,用sys或system用户在sqlplus中查询以下文件:


---- 1. 控制文件select * from V$controlfile


---- 2. 日志文件select * from V$logfile


---- 3. 数据文件select * from V$datafile


---- 4. 参数文件$ORACLE-HOME/dbs/initsid.ora


---- 然后将文件备份清单交由备份管理员,采用UNIX cron定时机制打开、关闭数据库实施备份。当数据库文件有变化时,要及时通知备份管理员。


__________________
我就是我,命运由我摆布。



资料来源: JSP001.com