本文是作者在多年的Oracle数据库治理工作中总结出的一套行之有效的系统,它大大提高了工作效率,做到事先预知数据库存在的隐患,从而及早排除,保证全网几十台数据库服务器的安全稳定运行。
文章旨在抛砖引玉,并不对文中提到的具体技术做介绍,有关DNS设置、SENDMAIL设置、POP3设置、SHELL SCRIPT 编程、UNIX CRON使用等请参考有关资料,网上有大量技术网站介绍。
当你面对少数几个数据库时,治理工作相对简单,只需定时telnet到各个数据库服务器,运行一些事前写好的系统信息收集程序就可以了解数据库的整体状况,但当你面对的是数十个分布式的数据库时,再采用上述方法就会耗费大量的时间和精力,还有可能忽略某些重要的信息或点,从而影响数据库服务器的性能,甚至造成DOWN机。
既然我们的系统是UNIX平台上的,那么能不能借助UNIX强大的MAIL功能,将各台数据库服务器上的统计信息定时主动地送到DBA的手中呢?答案是肯定的。
整体思路是,选取一台数据库服务器作为中心服务器,利用UNIX系统提供的免费邮件系统SENDMAIL,所有数据库服务器的统计信息定时通过邮件系统送到中心服务器,中心服务器再将统计信息送到DBA的手中。具体实施步骤如下:
第一步:域名规划
确定全网域名,如:abc.net,给每一台数据库服务器分配域名,如位于北京的数据库服务器的域名为bj.adb.net,位于上海的数据库服务器的域名为sh.adb.net。
第二步:架设域名服务器
选取一台数据库服务器作为全网的DNS服务器,并将所有数据库服务器的DNS设置指向这部服务器。不同的UNIX系统配置稍有不同,有关如何设置DNS,请读者自行查阅相关资料,此处不再赘述。
第三步:邮件服务器配置
根据已规划的域名,配置所有数据库服务器的SENDMAIL系统,并做测试,看是否能互相收发邮件。
第四步:POP3服务器配置
为能使DBA通过传统的客户端邮件系统(如Netscape, Outlook EXPress等)收取数据库的统计信息,需选取一台数据库服务器并安装配置POP3服务器。在网上可以找到多免费的POP3服务器。
第五步:编写Shell Script信息统计程序
Unix提供功能强大的Shell Script,成为众多DBA所喜爱的编程工具。可收集如内存情况、硬盘使用情况、数据库的Tablespace空间使用情况、数据库各项性能等等信息,许多SQL Script读者可从本站得到。
在程序中需指定将统计信息发送到中心邮件服务器上的一个帐户,如dba@bj.abc.net。程序的定时执行可通过Unix系统中的CRON来完成,CRON功能强大,使用可通过Unix的man来查阅。
第六步:设置客户端邮件系统
配置你的客户端邮件系统,可以收取dba@bj.abc.net的邮箱的统计信息,建议使用如Outlook Express, FoxMail等支持多帐户的邮件系统,并设置定时(如5分钟)取信模式。
经过以上六大步,读者可以配置一个完整的分布式数据库系统的治理平台,要收集的信息可以根据不同需求更改程序。邮件样本如本文附录。
对于一些更加紧急的信息,如Tablebase已满或extent无法扩展等严重信息,可发到DBA的传呼机上,具体的程序请读者发挥想象力。
邮件样本:
Disk usage statistics for SZBMS at 01/10/00/08:30:01 AM
Filesystem 512-blocks Used Available Capacity Mounted on
/dev/rz16a 2321998 118050 1971748 6% /
/proc 0 0 0 100% /proc
/dev/rz16g 98520854 29853320 58815448 34% /usr
/dev/rz1g 6090794 533640 4948074 10% /disk1
/dev/rz3g 4057676 1254588 2397320 35% /disk2
/dev/rz4c 34500632 27540166 3510402 89% /disk3
**Database status report**
Pct
TABLESPACE Total(Mb) Used(Mb) Free(Mb) Free Largest(Mb) FRAGMENT
SALES 1900.0 1379.3 520.7 27.4 100.2 30
INDEXES 4699.1 3543.9 1155.2 24.6 180.0 63
PRODUCT 3800.0 3294.2 505.8 13.3 68.9 248
PERSONNEL 20.0 3.2 16.8 84.0 16.8 1
RBS 100.0 61.5 38.5 38.5 .3 237
RBS1 200.0 150.0 50.0 25.0 50.0 1
SYSTEM 60.0 38.1 21.9 36.5 21.9 1
TEMP 500.0 10.0 490.0 98.0 490.0 1
TOOLS 10.0 .2 9.8 98.0 9.8 1
--------- -------- --------
sum 11289.1 8480.4 2808.7
db buffer cache hit ratio
96.5300416
DOC60 extents,
it can effectively avoid extent exceed maximum
DOCextent limit */
objects which exceed 60 extent are:
SEGMENT_NAME TABLESPACE_NAME FILE_ID MAX_EXTENT_NO
SER_TRAN_VALUE_IDX_S INDEXES 14 73
SER_TRAN_VALUE_IDX_S INDEXES 16 68