乐趣区

关于dba: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
  • 创立数据库
  • 创立和治理利用所需的表和其它对象
  • 创立和治理用数据库用户
  • 建设牢靠的备份和复原过程
  • 监督和优化数据库性能
退出移动版