oracle中的hit,HIT工程师踩“oracle网关失效”坑日记

2023-11-10 16:00

本文主要是介绍oracle中的hit,HIT工程师踩“oracle网关失效”坑日记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在展开叙述之前,先对oracle网关用来干吗的做一个简单介绍。

一、oracle网关的作用

假设你有这样的一个需求,想通过oracle数据库直接访问异构的数据库,那就要用到oracle网关。我当年就是怀揣着这样一个梦想,如果能在oracle里面访问mssql数据库,那就太好了,我就可以用plsql直接查询mssql,很方便。广东省大部分的医院都会存在这两种数据库,典型的应用场景,his跑在oracle之上,病案管理系统跑在mssql上。在查询统计的工作当中,有时候会用到his与病案系统数据合并查询。比如根据病案首页数据来分析医保患者。

带着这个梦想,在百度上寻找答案,一个个关于网关的解决方案映入眼帘。经过一个星期的折腾,终于配置好网关可以访问mssql,欣喜若狂,以后终于方便多了。

a49216ac8a21

网关

a49216ac8a21

通过网关查sql2000

二、oracle网关失效

上个星期我们决定将我院的病案系统数据库sql 2000升级到sql 2008,为了升级方便,在另一台服务器上安装sql 2008并导入数据,升级完全以后,我将用到连接病案数据库的程序改为新的IP地址,都正常可以访问,就剩下网关了,我按之前文档配置成新的IP,再在plsql测试,发现sql语句一直在执行,卡在那里,既不出结果,也不报错。

a49216ac8a21

遇到这种问题,上一篇文章也提过,最有效的方法是用排除法,然而在这种情况下面,排除法是失效的。使用排除法有个前提,必须要知道排除选项确定不是这个原因,显然这里你是无法确定的,是oracle bug?是mssql 2008 已不支持?是oracle 网关bug?

oracle网关虽然好用,但出了问题很难解决。面对这种情况,我们最好的方法以后规避它,能不用就不用,尤其是开发的程序里面不要使用,但是临时的SQL统计可以使用。要不然像彭大帅那样“【彭建明专栏】IT运维系列谈(3):亲历让人后怕的医院数据库“灾难恢复”,自己亲手埋下“地雷”,还亲自踩上去,被炸个人秧马翻就不好了。

三、pb程序修复“网关失效”坑

我开发万能信息科程序里面,一小部份功能,当时为了方便(避免连接2个数据库),使用oracle网关进行开发,用pb9找到相应的"数据窗口",右键---edit source,一定要用这种方式打开,如果通过工具栏”sql“进去修改,pb会连接oracle数据库,现在网关已失效,pb会卡死在这里。

a49216ac8a21

a49216ac8a21

badata连接到网关

a49216ac8a21

再将相应window对象改成直接连接mssql数据库来处理,但是奇葩的问题来了,比如我只改一条语句,保存的时候一直提示未响应,pb卡死在那里。

a49216ac8a21

以前一直都可以,为什么现在不行?是不是win7环境有问题,百度找一下,说有这个bug会导致这种问题,但是我下载补丁,安装以后,测试故障依旧。

a49216ac8a21

然后又找了一台win xp的机器,来修改,故障依旧。这就奇怪了,到底是什么原因会引发未响应,我尝试改了一下其他窗口的代码,是正常的。为什么这个连接sql server的代码会出问题,带着这个问题一直思考,今天终于想明白了,原来pb保存window对象时,首先会检查一下语句是否正确,包括”嵌入式sql语法“,因为程序之前引用了badata,而badata是连接网关来的,pb检查嵌入式sql语法正确并连接oracle数据库验证,但是网关已失效,无响应也不报错,导致pb就卡死在这里。

原因找到了,接下来就好办法,打开编码先将window对象所有涉及到badata全部去掉,再保存,pb就正常了!

a49216ac8a21

冯火    2019-12-17

这篇关于oracle中的hit,HIT工程师踩“oracle网关失效”坑日记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/383743

相关文章

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序