知识大全 解决HIS集群系统的性能问题一例
Posted 系统
篇首语:观书散遗帙,探古穷至妙。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 解决HIS集群系统的性能问题一例相关的知识,希望对你有一定的参考价值。
解决HIS集群系统的性能问题一例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
摘要
我院在 年 月 日成功将HIS系统从win oracle 升级到两台IBM P A (操作系统AIX) oracle RAC组成的并行集群系统 随着一个新大楼的启用 客户端的电脑从 台增加到了 多台 集群系统出现了严重的性能问题 在业务高峰期经常死机 经过半个月左右的调试 终于彻底解决了性能问题 满足了医院医院业务发展的要求
关键词
ORACLE RAC (ORACLE Real Application Clusters): ORACLE 真正应用集群
新疆维吾尔自治区人民医院是新疆最大的三级甲等医院 病床 张以上 日门诊量 左右 为了满足医院发展的需要 自 年新HIS系统上线 医院的信息化得到了全面的提升 客户端工作站达到了 左右 其中HIS工作站近 台 随着客户数的增加 我院的系统表现出了扩展性不足的问题 这主要是WINDOWS 位操作系统 G内存限制造成 虽然我们经过参数修改 服务器内存升级为 G 但由于系统核心 位限制 当高峰期客户数达到 左右 前端工作站就不能继续连接 且一些大的统计分析不能执行 一些已连接用户也陆续不能使用 最后服务器上数据库DBA用户也不能连接 这时候只有重新启动服务器 才能解决问题 据了解全国一些大医院也面临我院同样的问题
在这种情况下 我院经过充分考证 借鉴电信和银行的小机 ORACLE RAC并行集群系统成功经验 经过尽一年的准备 成功采用两台IBM小机(IMB P A G内存 CPU) 实施了ORACLE RAC并行集群系统 从理论上根本上解决了扩展性不足的问题 并且预留了充分的扩展空间 这次升级跨度很大 操作系统平台从win ( 位)升级为IBM AIX ( 位) 数据库从 oracle ( 位)升级为oracle ( 位) 使用了oracle RAC集群系统 我院在 年 月 日进行了系统升级 由于准备的比较充分 系统升级比较顺利 碰见了几个小问题也很快的解决了 当时系统负载为客户端为 左右 但新系统的性能并不像我们想象的哪么理想 一些大的查询和业务性能出现了下降 系统整体性能出了下降 由于当时性能可以满足业务的要求 我们当时也没找到具体原因 到了 年 月 我院的新急救大楼投入了使用 HIS客户端从 台增加到了 台 这时性能出现了更进一步的下降 更为严重的是 高峰期 集群系统经常死机 这严重影响了医院正常工作 由于系统的错误很特别 我们没什么方法可以解决 我把每次系统的错误都传给了ORACLE 技术支持工程师 他们也分析不出原因 他们建议我们升级到 ORACLE 也许可以解决我们的问题 费了很大力气升完级 问题依旧 性能还是很差 由于新楼的科室不断增加 情况越来越坏 为了查清楚性能差的关键因素 我对数据库做了 小时的性能分析报告(oracle awr报告) 报告显示最耗资源的前SQL 语句(oracle top sql)均为:
SELECT OWNER SYNONYM_NAME FROM SYS ALL_SYNONYMS WHERE OWNER = PUBLIC AND SYNONYM_NAME = 表名称
这些语句应该是ORACLE 内部处理事件 SYS ALL_SYNONYMS是内部系统视图 表名称 是我们存放数据的表 我对比了ORACLE 的SYS ALL_SYNONYMS视图定义和我们现在ORACLE 的SYS ALL_SYNONYMS视图定义 发现SYS ALL_SYNONYMS定义发生了变化
CREATE OR REPLACE FORCE VIEW SYS ALL_SYNONYMS ( OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK ) AS
select u name o name s owner s name s node
from sys user$ u sys syn$ s sys obj$ o
where o obj# = s obj#
and o type# =
and o owner# = u user#
and (
o owner# in (USERENV( SCHEMAID ) /* PUBLIC */) /* user s private any public */
or /* user has any privs on base object */
Exists
(select null from sys objauth$ ba sys obj$ bo sys user$ bu
where bu name = s owner
and bo name = s name
and bu user# = bo owner#
and ba obj# = bo obj#
and ( ba grantee# in (select kzsrorol from x$kzsro)
or ba grantor# = USERENV( SCHEMAID ) ))
or /* user has system privileges */
exists (select null from v$enabledprivs
where priv_number in ( /* LOCK ANY TABLE */
/* SELECT ANY TABLE */
/* INSERT ANY TABLE */
/* UPDATE ANY TABLE */
/* DELETE ANY TABLE */) ))
以上为ORACLE SYS ALL_SYNONYMS视图定义 ORACLE 在以上基础上增加了以下部分
union
select u name o name s owner s name s node
from sys user$ u sys syn$ s sys obj$ o sys _ALL_SYNONYMS_TREE st
where o obj# = s obj#
and o type# =
and o owner# = u user#
and o obj# = st syn_id /* syn is in tree pointing to accessible base obj */
and s obj# = st syn_id /* syn is in tree pointing to accessible base obj */
我使用 set autotrace traceonly分别在oracle 和oracle 对以下查询语句的执行计划进行了分析: Select * from SYS ALL_SYNONYMS发现ORACLE 执行计划的效率比ORACLE 执行计划的效率差了几十倍 我们HIS系统的对所有表都建了同义词(SYNONYM) 所有表的访问都是通过同义词 所以可以确定 性能的严重下降是由于SYS ALL_SYNONYMS系统视图定义改变造成的
对此我们首先采用了采用了 移花接木 方法 增加私有同义词以跳过sys all_synonms的处理 CREATE OR REPLACE FORCE VIEW sys ALL_SYNONYMS_ as (select ……注ORACLE sys all_synonms定义) 在公共用户下创建了同义词CREATE SYNONYM puba ALL_SYNONYMS FOR SYS ALL_SYNONYMS_ 我们HIS系统所有的访问都是通过PUBA用户下建的同义词来玩成访问 ORACLE 数据库中用户下的同义词优先级要高于系统同义词 即PUBA ALL_SYSNONYMS的优先级要高于sys all_synonms完成此操作 系统应该启用ORACLE 下的sys all_synonms系统视图代替ORACLE 下的sys all_synonms系统视图 通过SQLPLUS 和PL/SQL等工具测试 均达到了我们目的 但我们HIS系统依然性能没有改变 从我做的性能报告分析 系统对同义词的处理没用采用我们建的私有同义词 我们分析 也许是我们HIS系统开发工具是POWERBUILD 它是一种专用的数据库开发工具 也许它可以绕过我们建的私用同义词 直接访问ORACLE 系统同义词
到此 可以采用的间接方法 已经没有了 我想直接修改ORACLE 中sys all_synonms视图定义为ORACLE 视图定义 即去掉新增加那部分语句 由于sys all_synonms是ORACLE 数据库内部系统视图 修改定义具有很大的风险 而且我们这是负载很高很重要的生产系统 我不敢冒然行事 我把自己自己处理经过和分析和ORACLE 支持工程师进行了沟通 并且咨询是否可以把ORACLE 中SYS ALL_SYNONYMS定义变成ORACLE SYS ALL_SYNONYMS的定义 由于SYS ALL_SYNONYMS是ORACLE 内部很重要系统视图 ORACLE 技术支持工程师也不清楚这样是否可行 他表示要与美国公司开发工程师咨询 最后 ORACLE 公司给出了明确的答复 系统视图改变是因为 如果对同义词再建同义词 ORACLE 有一个严重BUG 因此他们在ORACLE G对视图进行了修改 如果我们系统中没有使用对同义词再建同义词 我们可以修改视图 我们系统没有他们说的那种BUG 因此我们立即修改了视图 效果立竿见影 高峰期两台小机的负载从 %~ %下降到了 %~ % 所有的功能的性能都得到了显著的提升 困扰我们小机性能问题终于得到了完美的解决
cha138/Article/program/Oracle/201311/18849相关参考
在Symphony系统人机接口(HIS)上运行PROCDT程序,是将() 。
在Symphony系统人机接口(HIS)上运行PROCDT程序,是将()。A、将.DT文件转化成系统内部文件.DLB、将.DL文件转化成系统内部文件.DTC、将.DT文件转化成系统内部文件.DUD、将
在Symphony系统人机接口(HIS)上运行PROCDT程序,是将() 。
在Symphony系统人机接口(HIS)上运行PROCDT程序,是将()。A、将.DT文件转化成系统内部文件.DLB、将.DL文件转化成系统内部文件.DTC、将.DT文件转化成系统内部文件.DUD、将
MYSQL主从同步故障一例及解决过程! 以下文字资料是由(历史新知网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 公司里有两个mys
Linux下C连接MySQL出现错误解决一例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在L
我们知道MySQLCluster产品用的主要的引擎为NDB很多人说对于NDB来说执行SQL语句的性能很差但是我觉得主要是没有仔细的探索 对于数据库来说要判断他的性能如何无非是要看两点 对于数据
使用ADDM快速轻松解决常见的性能问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 从最终权威
分布式计算机控制系统的设计大体上分成哪几个阶段?各个阶段主要解决哪些问题?
分布式计算机控制系统的设计大体上可分为三个阶段。 第—阶段是系统分析与方案论证阶段。这一阶段的主要工作是调查研究和分析用户对系统的需求,即系统应具有的功能与主要性能指标,针对被控对象的数学模型,
分布式计算机控制系统的设计大体上分成哪几个阶段?各个阶段主要解决哪些问题?
分布式计算机控制系统的设计大体上可分为三个阶段。 第—阶段是系统分析与方案论证阶段。这一阶段的主要工作是调查研究和分析用户对系统的需求,即系统应具有的功能与主要性能指标,针对被控对象的数学模型,
许多数据库管理员都会遇到这样的困惑伴随着业务的不断进行数据库文件的大小也在逐渐的增大由此给数据库管理工作带来很大的困难一方面要为在线业务提供越来越大的高性能磁盘容量另一方面数据库的工作性能却越来越差一
用于企业的Oracle9i真正的应用集群系统配置 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!