经过一个星期的努力,已完成将实朴主流程移植到九安的工作任务,期间遇到了不少问题。由于是新入职的新手,遇到的问题都是第一次接触到的,通过向老同事虚心讨教,基本上都找到了解决的方法。现将我遇到的问题及解决的方法大致罗列如下:
一、进入StarLims时报错
① 报错信息:ORA-01033:Oracle initialization or shutdown in progress
报错原因:Oracle实例没有启动
解决方法:
<1> 进入SQL Plus,执行命令:sqlplus /nolog
<2> 执行命令:conn sys/lims as sysdba;,以系统管理员(sysdba)身份连接数据库
<3> 执行命令:recover database;,进行介质恢复
<4> 执行命令:alter database open;,打开数据库
<5> 问题已解决。重新进入StarLims即可。
② 报错信息:ORA-27101 Shared memory realm does not exist
可能原因: 非正常关闭数据库
解决方法:
<1> 进入cmd,执行命令:lsnrctl start,启动Oracle监听
<2> 执行命令:sqlplus /nolog进入sqlplus
<3> 执行命令:conn / as sysdba以系统管理员身份进行登录
<4> 执行命令:startup启动例程
<5> 问题解决。
③ 报错信息:ORA-12518 TNS:监听程序无法分发客户机连接
可能原因: 未知
解决方法(视情况):进入服务管理,重启Oracle相关服务。
④ 报错信息:SQL error: ORA-12541: TNS: 无监听程序
SQL stmt: Select VERSION from DATABASE_VERSION where ORIGREC = (select max(origrec) from DATABASE_VERSION)
可能原因: 1. OracleOraDb11g_home1TNSListener
2. 主机名与Oracle Net Manager中的配置的地址的主机名不一致
解决方法: <1> 开始--》运行--》services.msc,找到OracleOraDb11g_home1TNSListener 服务,并重启。如果还是不行,看第<2>步
<2> 进入Oracle Net Manager,将服务名和监听程序的地址的主机名与计算机主机名一致,重启OracleOraDb11g_home1TNSListener 服务
二、StarLims设计器报错
① 报错信息: Exception of type: SSLRunException
Description: Unknow DataSource Id: 35FDAA13-5E45-49C1-9C30-E8B05CCEF92B
Location: _GetData
Code: 1002
报错原因: 找不到某个DataSource脚本
解决方法: 每一个DataSource脚本对应唯一的DataSource Id,需要根据DataSource Id找到使用此脚本的源(可能是某个控件的
data属性或者DataGrid的 某个字段的data属性)即可。
<1> 在报错信息所在的Form文件名上按住shift双击,打开解析出来的此Form对应的xml文件
<2> Ctrl + F调出查找窗口,查找报错信息中的DataSource Id
<3> 找到此DataSource Id所在行的根节点即可找到使用此脚本的源
<4> 更改找到的源的data属性即可。
② 报错信息: Script not found!
Name: CLIENT_PROJECT.GET_PROECTS
Type: DataSource
报错原因: DataSource脚本不存在
解决方法: 检查是否拼错DataSource脚本名称,或者在对应Form的DataSource中添加相应的脚本即可。
③ 报错信息: Script not found!
Name: CLIENT_PROJECT.urrentUserIsRASManager
Type: ServerScript
报错原因: Server Script脚本不存在
解决方法: 检查是否拼错Server Script脚本名称,或者在对应Form的Server Script中添加相应的脚本即可。
④ 报错信息: SQL error: ORA-00904: "XXX"."YYY": 标识符无效
ORA-00904: "XXX"."YYY": 标识符无效
错误原因: XXX表中缺失字段YYY
解决方法: 在Table Manager中找到表XXX,添加字段YYY即可。
⑤ 报错信息: SQL error: ORA-00942: 表或视图不存在
ORA-00942: 表或视图不存在
SQL stmt: <SQL语句>
错误原因: 表不存在
解决方法: 在Table Manager中添加SQL语句中缺失表即可。
三、SQL Server与Oracle的sql语句不兼容的相关问题
由于实朴用的是SQL Server 数据库,而九安用的是Oracle数据库,SQL Server中好多自带的函数都不能在Oracle中使用,
一些查询语句的使用规则也不尽相同,从而导致一些不兼容的情况发生。遇到的情况如下:
① 函数等不兼容的问题
② sql语句的区别
根据第二张表的关联关系更新第一张表中的数据
SQL Server:
update userinfo
set userinfo.username=i.username,userinfo.password=i.password
from info i
where userinfo.id = i.id;
Oracle:
update userinfo
set (userinfo.username,userinfo.password)
=(select username,password from info i where userinfo.id = i.id);