DBA日常工作

  1. 引言
    本指南旨在简要地列出Sybase ASE系统管理员(DBA)所需的日常维护工作。一般说来,在完成这些操作后,所管理的ASE数据库可以长期安全可靠地运行。本指南着重的是what to do,而不是how to do,也即是说本指南并不会详细地介绍如何进行这些日常工作,但会给出相应的参考手册。我们认为作为一个合格的数据库管理员,应及早发现可能导致的问题,而不是等到出现问题时才来解决。根据Sybase技术支持人员的经验,在出现问题时,因时间急迫,数据库管理员所采取的一些紧急措施往往容易导致更严重的问题。因此,本手册着重介绍的是一些事前的预防、检查措施,而不是事后的处理。
    考虑到目前仅ASE12.5.0有中文手册,因此,本指南所指出的参考的手册和章节均使用英文版手册的名称和章节。
    另外,需要注意的是,本指南只是 guide,实际生产环境差异甚大,请灵活掌握。如 2.10 和 2.11 节就不适合 7*24 运行的系统。同时,前期发布的本指南的 PDF 版本不再更新。
    本指南的撰写过程中,得到了Sybase广州办事处胡道军、周海涛工程师的大力支持和指正。SybaseBBS的朋友们也无私地贡献出他们宝贵的经验和意见。在此真诚地表示谢意。

1.1.适合的读者
本指南所面向的读者主要是Sybase ASE 数据库管理员,应具有Sybase ASE数据库基本知识,能独立进行数据库的基本操作。
本指南可以为那些希望制订适合所在组织的ASE数据库维护制度的管理人员提供参考。

1.2.约定
本手册遵从以下字体和风格约定:

元素

示例

书名、章节名

System Administration Guide Volume 2》 、 Developing a Backup and Recovery Plan

定期频度

每周一次

存贮过程或、命令

sp_addserver targetservername

2.日常维护工作
2.1.定期备份master库
Master库是ASE最核心的系统库,它记录了所有数据库的物理和逻辑信息。因此其备份工作独立成节。
建议master数据库的备份频度为每周一次。同时,在进行任何系统表操作之前和之后,应事先/立即备份master库。如: disk init 、 sp_addumpdevice 、 sp_dropdevice 、磁盘镜像命令、 sp_addsegment 、 sp_dropsegment 或 sp_extendsegment 等。
Master数据库的备份可以采用在服务停止后,直接复制master.dat文件的方式进行。
有关备份master数据库的详细信息,请参考Sybase手册之 《System Administration Guide Volume 2》 中的 Developing a Backup and Recovery Plan 一章。

2.2.定期备份用户数据库
对于数据库维护而言,定期备份是十分重要的工作。ASE管理员应制定合理的备份策略,定期进行数据库备份( dump database )和日志备份( dump transaction )。建议数据库备份的频度至少为每周一次、日志备份的频度至少为每日一次。可根据应用的实际情况将日志备份调整为每半天一次或每小时一次,以尽可能地降低意外导致的损失。
需要注意的事,除了定期备份外,当发生以下操作之前和之后,也应及时进行数据库备份:

数据库版本升级;
创建新索引;
无日志记录操作,如无记录的writetext、永久表上的select into、快速批量复制(bcp)到一个没有触发器或索引的表等;
dump transaction with truncate_only 或 dump transaction with no_log 。
同时,建议在进行了任何DDL操作后,立即备份数据库。
对于小容量并使用文件系统文件为设备的数据库,可以采用直接备份设备文件的方式进行。采用此种方式备份,必须准确地记录设备文件所在的目录。
有关备份用户数据库的详细信息,请参考Sybase手册之 《System Administration Guide Volume 2》 中的 Developing a Backup and Recovery Plan 一章。

2.3.定期检查最早活动事务
最早活动事务(the oldest active transaction)是指一个数据库中的最早未完成(未提交或未回滚)的事务。它将导致日志空间逐渐减少,持续时间越长,日志空间越少。由于事务的瞬间性,通常并不会存在被记录下来的最早活动事务。但一些特殊情况可能会导致最早活动事务出现。比如,在一个大事务处理过程中,网络出现故障。
在master数据库中,系统表syslogshold为每个数据库记录了最早活动事务(如果存在的话)以及复制服务的截断点(如果存在的话),也就是说在该表中,每个数据库可能存在0、1或2条记录。
可以通过查询syslogshold表获取最早活动事务的情况。建议检查频度为每周一次。
有关备份用户数据库的详细信息,请参考Sybase手册之 《System Administration Guide Volume 2》 中的 Backing Up and Restoring User Databases__和__Managing Free Space with Thresholds 章节、 《Reference Manual: Procedures》 中的 System Procedures 一章以及 《Reference Manual: Tables》 中的 System Tables 一章。

2.4.定期检查数据库日志空间
ASE数据库采取的是先记日志的机制。每当用户执行修改数据库的操作时,ASE会自动地将变化写入日志中。一条SQL语句所产生的所有变化都被记录到日志后,它们才被写到数据页在缓冲区的拷贝中。日志对于数据库的数据安全性、完整性至关重要。如果当日志空间满了再来处理,有可能会造成一定的损失。因此,需要定期检查数据库日志空间。
可以通过 sp_spaceused syslogs 查看日志空间。有关该存贮过程的详细说明,请参考 《System Administration Guide Volume 2》 中的 Managing Free Space with Thresholds 一章和 《Reference Manual: Procedures》 中的 System Procedures 一章。
管理员应根据应用类型、业务量以及日志空间的大小来制订检查的频度。建议至少每周一次 。

2.5.定期检查数据库剩余空间
通常在设计时,数据库的容量比当前容量大很多。然而,随着时间的流逝、数据量的不断增加 ,数据库剩余空间逐渐减少。建议检查的频度至少为每月一次。
可以通过sp_helpdb查看数据库的使用情况,有关该存贮过程的详细说明,请参考 《Reference Manual: Procedures》 中的 System Procedures 一章。

2.6.定期查看(错误)日志
实际上,定期查看日志是任何系统的管理员都必须养成的良好习惯。日志(包含备份服务的日志)详细记录了数据库的运行过程情况,任何异常也会在日志中体现。查看日志并不需要多少时间,通常2-5分钟就足够了。将此项工作定期化,管理员就可以大致掌握数据库的运行状况,并及时分析异常并做出正确的响应。有鉴于此,强烈建议日志查看的频度为每日一次。
同时,在数据库发生任何异常时,请首先查看日志。
如何阅读日志,请参考Sybase ASE手册之 《System Administration Guide Volume 1》 中的 Diagnosing System Problems 一章。

2.7.定期检查数据库软件更新
虽然用户都希望能有一个没有Bug的软件,然而遗憾的是:任何软件都存在BUG,ASE自然也不会例外。因此,及时获取补丁并更新,是非常重要的工作。
强烈建议:

ASE管理员应至少每月查看一次Sybase官方网站的EBF包发布情况;建议在打补丁或更新前,管理员应认真阅读Targeted CR-List,分析并权衡更新可能对现有应用可能带来的影响。
只要可能,管理员也应认真阅读Target CR-List,了解当前ASE版本存在哪些问题,从而采取相应的措施,避免潜在的损失。
2.8.定期更新统计信息
ASE查询优化器依靠统计信息来生成查询计划,统计信息的正确与否,直接决定了SQL的执行速度。一个真实的例子是:一个应用系统运行一段时间后,性能急骤下降。监控过程中发现,一些查询SQL的SARG明明建有索引,但域名交易查询计划显示并未使用索引,而是全表扫描。在更新统计信息后,系统速度恢复正常。
建议根据表的更新程度,采取不同的频度执行此项工作。在ASE15之前,只能凭经验来估计需要更新的频度。而自版本15开始,ASE引入了一个 datachange 函数,可以获取表的更新程度,从而更灵活地更新统计信息。
需要注意的是,更新统计信息是极消耗系统资源的,因此应尽可能避免在业务时间内执行此项工作。同时,强烈建议不要使用update all模式,对于大表而言,update all将是一个灾难。同时对于大数据量的表,应使用采样更新。建议的采样率为10%到20%。
如何更新统计信息以及为哪些列增加统计信息,请参考Sybase ASE手册之 《Performance and Tuning:Monitoring and Analyzing》 的 Using Statistics to Improve Performance 一章以及 《Reference Manual: procedures》 。
由于 ASE 15的优化器可利用组合索引的非前导列,因此可适当增加 update index statistics 的执行频度。

2.9.定期进行性能检查
使用sp_sysmon存贮过程(所有ASE版本),定期检查数据库运行性能。也可以使用MDA(也称mon表,要求ASE版本为12.5.0.3以上),或者配合相关工具,如DB X-ray、Spotlight、Sybase DB Expert等。
有关 sp_sysmon 存贮过程的详细信息,请参考Sybase ASE手册之 《Reference Manual: procedures》 。
有关MDA的详细信息,请参考Sybase ASE手册之 《Performance and Tuning: Monitoring and Analyzing》 中的 Monitoring Tables 一节,

建议的频度为每周一次,尤其是在业务高峰期。

2.10.定期检查数据库完整性
DBCC(database consistency checker)提供了检查数据库逻辑和物理完整性的命令。其主要功能是:

使用checkstorage或checktable和checkdb检查页级和行级上的页链和数据指针;
使用checkstorage、checkalloc、checkverify、tablealloc和indexalloc检查分配页。
需要注意的是,DBCC需要消耗大量的资源,因此应尽可能地避免在业务时间内执行此项工作。建议定期DBCC的频度为每季度一次。另外,一旦发现硬件存贮可能存在问题,应尽快进行DBCC检查。
关于DBCC的详细信息,请参考Sybase手册之 《System Administration Guide Volume 2》 的 Checking Database Consistency 一章。

2.11.定期重新组织表空间
数据库运行一段时间后,频繁的表更新活动最终可能会导致空间利用不充分以及性能的降低。因此需要定期的重新组织表空间。
需要注意的是,重新组织表空间需要足够的空余空间,建议应保证1.5倍表原有空间以上。同时,重组表空间需要大量的资源,因此应尽可能地避免在业务时间内执行此项工作。
建议定期重新组织表空间的频度为每半年一次。

2.11.1.APL表
对于有聚集索引(Clustered Index)的APL表,可删除该聚集索引,并重建;
对于没有聚集索引的APL表,可选择一列创建聚集索引,然后删除。
关于如何创建和删除聚集索引的信息,请参考Sybase手册之 《Performance and Tuning: Basics》 中的 How Indexes Work 一章。

2.11.2.DOL表
自11.9.2开始,ASE引入了DOL表。与传统的APL表相比,DOL表的存贮发生了较大的变化。使用 Reorg 命令可以重组表空间的使用并提高性能。
关于reorg命令的使用,请参考Sybase手册之 《System Administration Guide Volume 2》 中的 Using the reorg Command 一章。

3.如何自动化
第2章所介绍的操作,一些操作是可以进行自动化的,如定期备份数据库、定期更新统计信息、定期检查数据库完整性、定期重新组织表空间等等。需要注意的是:自动化的操作一定要输出执行结果。执行完后,管理员必须要查看所记录的结果文档。

3.1.使用操作系统的任务调度
采用OS支持的脚本语言(如perl、bash、BAT)编写相应的操作脚本,使用操作系统的crontab(UNIX和类UNIX系统)或任务调度(Windows系统)周期性执行,适合于所有版本的ASE数据库。缺点是需要将数据库密码以明文方式写在脚本中。
另外,通过 xp 服务也可以调用系统程序,请自行参考相关手册。

3.2.使用ASE的任务调度
自12.5.1(UNIX)/12.5.2(Windows)开始,ASE引入了任务调度(Job Scheduler)。通过JS,可以完成以前只能有OS的任务调度才能完成的功能。需要注意的是:使用JS功能,应尽可能地更新ASE版本,建议ASE版本至少为12.5.3ESD4。
有关JS的配置和使用信息,本文不再描述。请参考本文的WORD版本(注:该WORD版本不再更新),或Sybase手册之 《Job Scheduler User’s Guide》 。

附录A Oracle DBA的任务(部份)
以下内容摘自 Oracle 10G Administration I Study Guide ,第26页

选择运行数据库软件的服务器硬件
安装和配置Oracle 10g
创建数据库
创建和管理应用所需的表和其它对象
创建和管理用数据库用户
建立可靠的备份和恢复过程
监视和优化数据库性能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库管理员(DBA)的日常维护工作包括以下几个方面。 首先,对数据库进行备份和恢复。DBA需要定期进行数据库备份,以确保数据的安全性和可靠性。在备份过程中,还需要验证备份文件是否完好,以便在需要恢复数据库时能够正常进行。此外,DBA还应该制定恢复策略,并在需要时执行数据库恢复操作。 其次,进行性能监控和调优。DBA需要监控数据库的性能指标,如CPU利用率、内存利用率、I/O吞吐量等,并及时定位和解决性能问题。通过性能调优,可以提高数据库的响应速度和吞吐量,提升系统的整体性能。 此外,DBA还需要进行数据库的容量规划和管理。通过监控数据库的数据增长趋势,DBA可以预测数据库的容量需求,并根据需求调整数据库的存储空间。同时,还需要定期清理数据库中的无用数据和日志文件,以减少数据库的存储空间占用,保持数据库的高性能运行。 此外,DBA还需要进行数据库安全管理。这包括监控数据库的访问权限,确保只有授权的用户能够访问数据库。另外,还需要对数据库进行漏洞扫描和修复,及时应对潜在的安全威胁。 最后,DBA还要与开发人员和用户进行沟通和协调。DBA需要与开发人员合作,确保数据库的设计和实现符合最佳实践,并及时解决开发过程中出现的问题。此外,DBA还需要与用户进行沟通,了解他们的需求,为他们提供技术支持和解决方案。 综上所述,Oracle数据库管理员的日常维护工作主要包括备份恢复、性能监控调优、容量规划管理、安全管理以及与开发人员和用户的沟通协调等方面的工作。通过这些维护工作DBA可以保证数据库的稳定性、安全性和高性能运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值