一、项目背景:
    医院自主开发HIS系统,使用Oracle9i+PB10。目前运行稳定,效果良好。但服务器会间歇性犯神经病。
二、HIS服务器硬件配置:
    IBM P650小机2台(以下将以小机A、B表示),IBM 7133 盘阵1台(上任科长04年采购,至今使用)。
    目前HIS的Oracle数据库跑在小机A上,数据库数据文件、归档日志文件在7133盘阵上。小机B闲置。
  备份方式为:远程脚本备份,每天半夜1:00备份数据库用户的Dmp文件。
  最大的表空间现为:14G左右
三、存在问题:
  1、小机A突然会变的很慢,Sqlplus登陆非常慢,大约需要10分钟,此时使用Vmstat观察,Pi,Po值非常大(>350)
       以下是该小机A正常状态下,Vmstat 记录:
    $ vmstat 1
     kthr     memory             page              faults        cpu
     ----- ----------- ------------------------ ------------ -----------
      r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa
      1  1 678698   123   0   2   3  28   94   0 316 1805 665  7  1 90  2
      1  0 678708   128   0   9   0 187 1968   0 621 9879 2391 52  6 28 14
      2  0 678710   124   0   5   0  18   63   0 425 8559 1855 62  4 33  2
      0  1 678710   125   0   3  13 135  546   0 469 5489 2070 42  1 40 16
      0  1 678710   120   0  10  36 497 2013   0 891 4028 1407  3  4 46 48
    2、上述情况一般会发生在大的查询时(2000万条表全表遍历)
    3、高度怀疑盘阵上某块硬盘有问题,但我不会检测。
四、需要解决的问题:
    1、解决这样小机的间歇性神经病。
     2、利用起B小机,提高数据的安全性和可用性。
五、自己的设想:
  1、请大侠根据现实情况对AIX及Oracle进行优化调整。
  2、在A、B小机之间实现DataGuard功能。B小机既作为A小机的备用服务器,同时作为需要全表遍历查询的服务器(由于前端
        软件是我们自己开发,此功能可实现)
六、服务方式及报酬:
    1、最好提供上门服务及现场培训,使我们自己能更好的维护这2台小机。
  2、如实在没人应征,也可考虑把A、B小机Map到防火墙外网口上,远程telnet维护。
  3、提供双人的往返机票、食宿、旅游安排及合理的报酬。(我们这个城市风景宜人,你可带你亲爱的人前来旅游。)
七、关于我们及联系方式:
    威海市立医院,我个人姓门,现任信息科主任。以上事宜如有有意者,可联系我:0631-5287516(办),0631-2887558(小灵通)

解决方案 »

  1.   

    只要你解决
     2、在A、B小机之间实现DataGuard功能。B小机既作为A小机的备用服务器,同时作为需要全表遍历查询的服务器(由于前端 
            软件是我们自己开发,此功能可实现) 
    基本就可以了 可以先不用考虑硬盘的事情
      

  2.   

    楼主你们没有买主机、oracle的服务吗?
      

  3.   


    你的数据库是放在存储上面的吧,如果真是存储硬盘的问题导致的速度慢,
    你做dataguard,另一台库文件位置只要是还在存储上,估计还会有问题的。
    检测存储问题检测很简单,直接用管理软件登上去,就可以查看存储下每块硬盘的状态了。
    你的存储RAID组不会已经降级了吧
      

  4.   

    程序设计,标设计有问题。只要优化 程序 就行, 改改查询,改改表结构就可以了。 2000万条数据不算多的。  先侦测出哪些SQL问题,然后针对这些SQL做一些调优就行了,表结构对相应的变动就行啦。小问题。
      

  5.   

    纠正一个说法,7133阵列是老的阵列,
    是直接用主机(aix)维护的,不能通过管理界面查看,
    而且7133的读写效率的确不好
      

  6.   

    刚请教了下专做移动门户维护的兄弟,他们觉得从两个方面来优化程序,
    1.2000万条表全表遍历不是很正常的,可以建立分区索引来解决,
    2.表结构中间就算使用了索引,你的sql语句中如果没有使用它也是无效的。
    所以检查下相关的sql语句很有效。针对,“在进行查询的时候,pi,po值比较高”,
    有个老的DBA提出这样的假设,
    oracle进程有时候会被别的程序抢占sga,这样就会造成物理读比较大,PI,PO值变大。
    可能是你的小机的内存不够,也可能是还有什么程序占用了内存。
    可以做一个检查,在进行全表索引的时候
    topas一下,看哪些程序占用了大的内存和磁盘读写。
      

  7.   

    优化程序是关键。
    我的意思也是2000万的数据是小儿科(我们的系统很多表格都是几千万,甚至有过亿的),当然前提是不能有多个并发来full scan.
    所以,你得找找为什么要full scan. 
    其次data guard并非什么高深的技术,在自己机器上练习下,看看oracle文档,基本上也行了。