本书针对广泛使用的ASE软件,为数据库顾问和管理员们提供了最全面的、最新的和最有权威性的介绍。内容涉及系统管理、定义服务器物理设备和Sybase镜像设备、数据库、数据库日志和恢复、安全性、审计、备份和还原,服务器配置和调整及故障诊断等。
本书讲解详细,叙述生动,实例丰富。本书可作为Sybase数据库管理员以及Sybase程序员的学习参考用书。
第1章 系统管理概述 (1)
1.1 体系结构概述 (1)
1.2 Sybase系统管理员的任务 (1)
1.2.1 安装Sybase Adaptive Server (2)
1.2.2 建立客户机和服务器之间的连接 (2)
1.2.3 安装和维护用户数据库 (3)
1.2.4 建立Adaptive Server Enterprise的安全性 (3)
1.2.5 维护和诊断ASE (4)
1.2.6 建立灾难恢复过程 (4)
1.2.7 监控ASE (5)
1.2.8 实用程序的使用 (5)
1.3 数据库 (6)
1.4 系统表总览 (6)
1.5 Sybase系统存储过程 (9)
第2章 安装Adaptive Server (10)
2.1 第1步:准备 (10)
2.1.1 逻辑页大小 (11)
2.1.2 物理设备 (12)
2.1.3 服务器名称 (12)
2.1.4 网络信息 (12)
2.1.5 Sybase软件资产管理器 (13)
2.2 第2步:文件传输 (13)
2.3 第3步:运行安装 (13)
2.3.1 interfaces文件 (14)
2.3.2 Runserver文件 (16)
2.3.3 Errorlog文件 (18)
2.3.4 servername.cfg——服务器配置文件 (18)
2.3.5 Adaptive Server中的SSL (18)
2.3.6 环境变量 (20)
2.4 第4步:前端安装 (21)
2.5 启动服务器 (22)
2.5.1 UNIX系统上的正常启动 (22)
2.5.2 NT系统上的正常启动 (23)
2.5.3 UNIX系统上的手工启动 (23)
2.5.4 自动系统引导 (23)
2.5.5 检验正在运行的服务器 (24)
2.6 关闭服务器 (25)
2.6.1 正常关闭 (25)
2.6.2 无等待关闭 (25)
2.6.3 维护关闭 (26)
第3章 定义服务器物理设备和Sybase镜像设备 (27)
3.1 设备的需求 (27)
3.1.1 逻辑设备和物理设备 (27)
3.1.2 性能含义 (27)
3.2 创建和删除设备 (27)
3.2.1 创建数据库设备 (28)
3.2.2 创建默认设备 (31)
3.2.3 删除数据库设备 (31)
3.3 原始设备和文件系统 (32)
3.4 Dsync选项 (33)
3.5 设备限制和约束 (33)
3.6 Master设备的创建 (34)
3.7 镜像和卷管理 (35)
3.7.1 Sybase镜像 (35)
3.7.2 禁止镜像 (37)
3.7.3 取消镜像 (38)
3.7.4 重镜像 (39)
3.7.5 软件级镜像和硬件级镜像 (39)
3.7.6 RAID (40)
3.7.7 卷管理 (40)
3.8 系统信息 (40)
3.8.1 系统过程 (41)
3.8.2 系统表 (42)
3.8.3 灾难恢复 (43)
3.9 小结 (44)
3.10 其他 (44)
第4章 数据库 (48)
4.1 系统数据库 (49)
4.2 创建数据库 (51)
4.2.1 create database命令 (51)
4.2.2 谁可以创建数据库 (52)
4.2.3 创建默认数据库 (52)
4.2.4 在分开的设备上创建数据库日志 (53)
4.3 设置数据库的大小 (54)
4.4 alter database命令 (55)
4.5 数据库选项 (55)
4.6 访问数据库信息 (57)
4.7 删除数据库 (58)
4.8 数据库所有权 (58)
4.9 系统表 (59)
4.9.1 sysdatabases (59)
4.9.2 sysdevices (60)
4.9.3 sysusages (60)
第5章 数据库日志和恢复 (62)
5.1 事务 (62)
5.1.1 事务日志 (62)
5.1.2 事务模式 (63)
5.1.3 事务控制语句 (64)
5.2 检查点 (68)
5.3 恢复 (69)
5.4 当事务日志写满时 (71)
5.4.1 阈值 (74)
5.4.2 挂起的事务 (75)
5.5 小结 (75)
第6章 安全性 (76)
6.1 ASE安全级别 (76)
6.2 操作系统级安全性 (77)
6.3 服务器级安全性 (77)
6.3.1 sp_addlogin的参数 (78)
6.3.2 要求口令中存在数字 (78)
6.3.3 特殊的注册账号/用户 (78)
6.3.4 三个标准角色 (80)
6.3.5 删除注册账号 (82)
6.3.6 syslogins表 (82)
6.3.7 kill命令 (84)
6.4 数据库级安全性 (84)
6.4.1 guest用户 (85)
6.4.2 别名 (86)
6.4.3 用户和别名信息 (86)
6.4.4 访问顺序 (87)
6.4.5 数据库访问 (88)
6.4.6 组 (88)
6.4.7 sysusers表 (89)
6.4.8 移植数据库 (90)
6.4.9 系统内建函数 (91)
6.4.10 命令安全性 (92)
6.5 对象访问级安全性 (92)
6.5.1 对象许可 (93)
6.5.2 所有权链 (94)
6.5.3 显示许可 (95)
6.5.4 setuser命令 (96)
6.5.5 细粒度访问控制 (96)
6.5.6 set proxy命令 (100)
6.5.7 系统角色 (101)
6.5.8 用户定义的角色 (103)
6.6 集成的安全性概述 (108)
6.7 小结 (108)
第7章 审计 (109)
7.1 审计概述 (109)
7.2 审计的安装 (110)
7.3 sybsecurity数据库和表 (111)
7.4 sybsecurity存储过程 (113)
7.4.1 sp_audit (114)
7.4.2 sp_displayaudit (115)
7.4.3 sp_addauditrecord (115)
7.4.4 sp_addaudittable (116)
7.5 审计队列 (116)
7.6 审计数据库存储要求 (117)
7.7 创建审计表 (119)
7.8 单表审计 (119)
7.9 存档审计记录 (120)
7.10 查询审计追踪 (121)
7.11 审计与第三方软件交互 (122)
7.12 有效审计的额外技巧 (123)
7.13 小结 (124)
第8章 备份和还原 (125)
8.1 角色和责任 (125)
8.2 备份类型 (126)
8.3 备份场景 (127)
8.4 备份服务器 (128)
8.4.1 远程备份服务器 (128)
8.4.2 服务器鉴别 (129)
8.4.3 启动备份服务器 (129)
8.5 转储设备 (130)
8.5.1 sp_addumpdevice (130)
8.5.2 数据库转储 (131)
8.5.3 转储压缩 (133)
8.5.4 转储数据库小结 (134)
8.6 自动备份 (134)
8.7 装载数据库命令 (135)
8.7.1 装载出错数据库 (135)
8.7.2 联机数据库 (136)
8.7.3 装载数据库小结 (136)
8.8 创建用于还原的数据库 (136)
8.9 转储事务命令 (138)
8.9.1 转储事务选项 (138)
8.9.2 转储事务活动 (139)
8.10 装载事务 (140)
8.11 最新恢复 (141)
8.11.1 装载事务 (141)
8.11.2 步骤 (141)
8.12 适时恢复 (142)
8.13 sp_volchanged (142)
8.14 监控日志 (143)
8.14.1 最后机会阈值 (143)
8.14.2 可用空间阈值 (144)
8.14.3 中断和挂起事务 (144)
8.15 逐步还原master数据库 (144)
8.16 休眠数据库 (146)
8.17 数据库恢复场景 (148)
8.18 小结 (149)
第9章 资源调控器 (150)
9.1 启用资源限制 (150)
9.2 时间范围 (151)
9.2.1 添加时间范围 (151)
9.2.2 简化时间范围的创建 (152)
9.2.3 更改时间范围 (152)
9.2.4 删除时间范围 (153)
9.3 创建资源限制 (153)
9.3.1 选择限制类型 (154)
9.3.2 选择强制时间类型 (155)
9.3.3 选择动作 (155)
9.3.4 选择作用域 (156)
9.4 资源限制层次 (156)
9.4.1 资源限制范例 (156)
9.4.2 查看资源限制 (157)
9.4.3 修改资源限制 (157)
9.4.4 删除资源限制 (157)
9.5 系统表 (158)
9.5.1 spt_limit_types表 (158)
9.5.2 systimeranges表 (158)
9.5.3 sysresourcelimits表 (158)
9.6 小结 (158)
第10章 逻辑进程管理器 (160)
10.1 什么是逻辑进程管理器 (160)
10.2 逻辑进程管理器执行类别 (161)
10.2.1 基本优先权 (162)
10.2.2 引擎亲合力 (162)
10.2.3 时间片(Quantum) (162)
10.3 逻辑进程管理器对象 (162)
10.4 逻辑进程管理器存储过程 (162)
10.4.1 sp_addexeclass (163)
10.4.2 sp_dropexeclass (164)
10.4.3 sp_bindexeclass (164)
10.4.4 sp_unbindexeclass (165)
10.4.5 sp_setpsexe (165)
10.4.6 sp_clearpsexe (166)
10.5 引擎组 (166)
10.5.1 sp_addengine (166)
10.5.2 sp_dropengine (167)
10.5.3 更多范例 (167)
10.6 逻辑进程管理器冲突和优先 (169)
10.7 一般建议 (170)
第11章 服务器配置和调整 (171)
11.1 12.5以前版本的内存管理 (171)
11.2 12.5版本的内存实用程序 (172)
11.3 配置系统表 (174)
11.3.1 sp_configure的输出 (174)
11.3.2 显示配置值 (184)
11.3.3 配置文件 (184)
11.3.4 动态选项与静态选项 (189)
11.3.5 内存相关变量 (190)
11.3.6 推荐的配置设置 (191)
11.4 小结 (193)
第12章 命名高速缓存 (194)
12.1 数据高速缓存 (194)
12.2 调整高速缓存 (194)
12.3 缓冲池 (196)
12.4 命名高速缓存的优点 (197)
12.5 创建命名高速缓存 (197)
12.5.1 重启服务器之前的结果 (198)
12.5.2 重启服务器之后的结果 (199)
12.6 创建缓冲池 (199)
12.6.1 使用缓冲池 (200)
12.6.2 清洗区 (200)
12.7 绑定 (202)
12.7.1 将对象绑定到命名高速缓存 (202)
12.7.2 删除高速缓存绑定 (203)
12.7.3 获取高速缓存绑定信息 (203)
12.8 事务性能和命名高速缓存 (203)
12.8.1 螺旋锁 (204)
12.8.2 关于高速缓存的几点附注 (206)
12.8.3 为tempdb数据库分配自己的数据高速缓存的优点 (207)
12.8.4 创建和配置高速缓存和缓冲池 (207)
12.8.5 高速缓存配置指南 (207)
12.9 调整高速缓存的一些意见 (208)
12.10 小结 (208)
第13章 远程服务器管理 (209)
13.1 远程访问 (209)
13.1.1 服务器命名 (210)
13.1.2 远程访问 (210)
13.1.3 映射注册账号 (210)
13.2 CIS — 组件集成服务 (211)
13.2.1 远程服务器 (212)
13.2.2 本地存储 (213)
13.2.3 代理数据库 (214)
13.2.4 远程访问设置范例 (215)
13.2.5 为远程过程调用使用CIS (216)
13.3 关于ASE页大小的几个问题 (217)
13.4 标准的RPC和CIS (218)
13.5 根据系统文件创建表 (219)
13.6 文件访问 (219)
13.7 小结 (220)
第14章 预防性的维护体系 (221)
14.1 定期维护 (221)
14.2 服务器级维护 (221)
14.2.1 活动监控 (221)
14.2.2 监控的内容 (224)
14.2.3 监控系统错误日志 (226)
14.2.4 资源检验 (231)
14.2.5 软件维护 (231)
14.2.6 记录运行时数据 (232)
14.3 数据库级维护 (232)
14.3.1 数据库维护的计划安排 (232)
14.3.2 运行dbcc的方法 (234)
14.3.3 理解dbcc命令的输出 (241)
14.3.4 使用dbcc checkstorage的准备工作 (242)
14.3.5 规划dbccdb数据库 (246)
14.3.6 创建dbccdb数据库 (247)
14.3.7 维护dbccdb数据库 (249)
14.3.8 根据dbccdb生成报告 (250)
14.3.9 数据库转储 (255)
14.3.10 灾难恢复 (255)
14.3.11 日志管理 (256)
14.3.12 空间管理 (256)
14.3.13 脚本维护 (256)
14.3.14 检验转储 (256)
14.4 表级维护 (257)
14.4.1 更新统计信息 (257)
14.4.2 255字节规则 (257)
14.4.3 监控空间使用 (257)
14.5 小结 (258)
第15章 故障诊断 (259)
15.1 Adaptive Server没有起来 (259)
15.2 有些用户声称服务器停止了 (259)
15.3 服务器已经起来了,但是有些用户不能访问 (260)
15.4 处理速度变慢或停止 (260)
15.5 不能访问某些数据库或所有数据库 (260)
15.6 用户不能访问对象 (260)
15.7 来自故障诊断指南的信息 (261)
15.7.1 灾难恢复的任务 (261)
15.7.2 通过好的DBA习惯避免灾难 (268)
15.7.3 联机恢复和恢复故障隔离 (271)
15.7.4 当联机恢复失败时如何处理 (274)
15.7.5 如何手工改变排序顺序或默认的字符集 (277)
15.7.6 有用的dbcc命令 (283)
15.8 小结 (285)
第16章 工具 (286)
16.1 bcp (286)
16.2 defncopy (288)
16.3 optdiag (288)
16.4 Sybase Central (288)
附录A CSPDBA样例测试 (291)
附录B CSPDBA样例测试解答 (297)
附录C 技巧 (309)
UNIX系统上的数据库备份 (309)
死锁 (309)
默认数据库 (310)
装载产品数据库 (310)
性能调整 (310)
标准 (310)
审查 (310)
过程 (310)
调整 (311)
可用的DB (311)
分析 (311)
Historical Server (311)
调整 (312)
监控 (313)
数据库的惟一用户 (315)
注销数据库的用户连接 (320)
数据库设备使用情况报告 (323)
活动的和非活动的连接 (326)
数据库创建清单 (331)
简单的数据挖掘 (333)
空间需求 (346)
索引维护 (346)
争用 (347)
确定Solaris系统上的物理内存总量 (347)
口令 (348)
标识符 (348)
DBA参考清单 (349)
附录D 其他资源 (353)
附录E 利用固态加速器调整Sybase ASE (354)
摘要 (354)
介绍 (354)
解决合适的问题 (355)
确定问题领域 (356)
Sybase Adaptive Server的几个热点 (357)
固态盘的优点 (358)
结论 (359)
附录F 碎片和数据库性能 (360)
关于作者 (360)
前言 (360)
介绍 (360)
为什么应该关注碎片 (360)
什么是碎片 (361)
术语定义 (362)
碎片的定义 (362)
碎片类型 (363)
杂乱页链 (363)
拙劣的页使用方式 (365)
区域碎片 (367)
数据行碎片 (368)
处理碎片 (368)
分析删除操作的影响 (368)
分析插入操作的影响 (369)
分析更新操作的影响 (370)
防止区域碎片 (370)
整理碎片的容量规划 (371)
使用固定长度的行大小 (372)
使用单调递增聚簇索引键值 (372)
使用惟一聚簇索引键值 (373)
大I/O考虑 (373)
碎片整理的好处 (374)
结论 (374)
附录G 灾难恢复:实用手册 (376)
前言 (376)
介绍 (376)
理解数据损坏 (377)
什么是数据损坏 (377)
数据损坏是如何发生的 (378)
计算机硬件故障 (378)
磁盘驱动器 (378)
其他故障:CPU、RAM、网络故障 (378)
电源故障 (379)
磁盘驱动器故障 (379)
数据库日志 (380)
磁盘冗余 (381)
复制 (381)
操作系统故障 (381)
数据库服务器软件故障 (382)
!@#&%(损坏)发生了,因此需要一份恢复计划 (382)
检测数据库损坏 (383)
第一道防线:定期运行DBCC检查命令 (383)
改进的DBCC:第三方解决方案 (383)
找到数据损坏(来自于用户) (384)
当!@#&%(损坏)发生了 (384)
调查损坏的起因 (384)
确定损坏的数据库区域 (385)
标准灾难恢复策略:优点、缺点及局限 (386)
拷贝出数据并重载数据 (386)
重建损坏的对象 (387)
在镜像磁盘之间切换 (387)
从备份还原 (387)
从复制的数据库还原 (388)
使用DBCC修复损坏 (388)
高级灾难恢复方法 (388)
通用的损坏灾难修复策略 (389)
修复数据层页 (389)
修复APL表 (389)
从页链中删除一页 (390)
修复DOL表 (391)
修复分配错误 (391)
修复损坏的索引 (392)
恢复损坏的数据 (393)
了解Sybase错误消息 (394)
Sybase错误日志的有关内容 (394)
错误605 (394)
分析605错误 (395)
修复605错误 (396)
错误692 (396)
分析692错误 (397)
修复692错误 (397)
错误695 (398)
分析695错误 (399)
修复695错误 (399)
错误697 (400)
分析697错误 (400)
修复697错误 (400)
错误806 (400)
分析806错误 (401)
修复806错误 (401)
错误1133 (402)
分析1133错误 (402)
修复1133错误 (403)
结论 (403)
亲爱的读者:
我负责Sybase公司的核心数据库和中间件业务的战略监督,其中包括Sybase的旗舰产品:Adaptive Server® Enterprise(ASE)的战略监督。15年以来,这个RDBMS已经为各行各业中数千名用户提供了关键任务OLTP和DSS应用的支持。
Sybase的RDBMS的最新版本:ASE 12.5,是在这个坚固的基础上建立的,并带有一些创新,它有助于满足把普通业务转换为电子业务时所出现的需要,包括用于处理新的电子商务数据类型的有力工具、为了解决基于网络计算的不可预料特性的动态性能管理,以及为了在高度分布的基于Web的环境中保护业务数据的增强的安全性。
过去的几年里,已经针对这个Sybase企业级数据管理软件平台发布了多种书目。这次《Sybase ASE 12.5管理员指南》的发布,将针对这个广泛使用的软件,为顾问和管理员们提供最全面的、最新的和最有权威性的介绍。
在整个Sybase领域,Jeffrey Garbus是公认的最有经验的数据库管理员、顾问,同时他也是撰写关于ASE企业级数据管理软件书籍的作者之一。他作为《Sybase SQL Server 11 Unleashed》的作者而广为人知,这本书受到广大的数据库管理员们的好评,我曾说过它是已出版的Sybase书籍中最值得关注的一本。
作为Wordware出版公司出版的Jeffrey Garbus的官方《Sybase ASE 12.5》丛书的编辑,Garbus开辟了一片新天地。我相信这套丛书将是Sybase数据库管理员和顾问们的无价之宝。
Dr. Raj Nathan
高级副总裁和Sybase公司企业级解决方案部门总经理
献 给
我的爱人
Jeffrey Garbus
Helen,感谢她为我付出的时间、耐心和宽容。
Gary Tyrrell
我的父母、George, Bea, Sharon, Stanley, 以及我的孩子们:Gillian, Max, Devon, Brandon。
Penny Garbus
关 于 作 者
Jeffrey Garbus的背景包括:拥有Rensselaer Polytechnic学院的理科学士学位,以及从计算机到大型机并再回到计算机的工作经历。他有多年的Microsoft和Sybase SQL Server经验,尤其是在辅助客户从已有系统移植到试点项目和大型项目方面。他在业界很有名,多年以来他一直在用户会议和用户小组上发表演讲,并为多本国内外杂志撰写文章和专栏,同时,他还编著了好几本书。最近,他已经把目光聚焦到了超大型数据库、数据仓库、人员培训和远程数据库管理上。
Jeffrey已经从事了14年的顾问工作、9年的培训工作,以及18年的软件业务工作。他不仅具有领导技术前沿的才
这是一件非常难以定夺的事。
当Wordware公司再次为我提供编写一本关于Sybase数据库的书的机会时,我不得不对时下人们最为关注的东西做出判断。我打算首先写些什么?我的倾向是系统管理,以及性能和调整方面的内容,因为它们包括了自那些最新的Sybase书籍出版以来,Sybase产品中所发生的最大变化。
我做出了这个(有些随意的)决定:因为与性能和调整相比,在日常工作中担任系统管理员职务的人要多一些,所以,我选择了编写有关系统管理员的书籍(也就是本书)。但是,从这本书开始,Wordware公司又要求我再编写五本Sybase丛书,幸运的是,我已经开始做这两件事情了,这本《Sybase ASE 12.5 管理员指南》就是这套丛书的“第一本”。
我希望本书能够为读者带来尽量多的好处,就像我们在编写它时从中得到的乐趣一样。
Jeffrey Garbus
致 谢
首先,我想要感谢Celeste Noren和Dale Engle,感谢他们独具慧眼,大力推行一本新的ASE书籍。我想要感谢所有花费时间和提供支持以帮助这成为可能的人:Wordware出版公司的Jim Hill和Wes Beckwith;Omkar Bhongir和Jan Gipe,他们负责与Sybase公司的协调工作;以及我的合著者们,他们当中的许多人是突然意识到撰写这本书所需的工作量的。Sybase ASE工程团队对本书的早期版本进行了审查,并提供了反馈意见。基于这些审查意见,我们又进行了修改才得到最终版本。Wordware公司和我都特别感谢Sybase工程团队的员工们,感谢他们在本书出版前对其进行审查所付出的额外努力。
我特别想要感谢我的家庭,没有他们的支持,我可能总是得不到休息。谢谢你们全体。
更多致谢:
特别感谢那些帮助撰写或审查了一到两章内容的DBA们,他们很能干,但是他们没有时间来帮助完成整本书的工作:
Brian Davignon Penny Garbus
Rick Kinnaird Christine Lindsay
Jim Nimmo Sheri Page
Brian Taylor
Jeffrey Garbus
Jeffrey和Alvin使得这个项目在一种非常愉快的氛围中进行。多年以来,我的同事慷慨地与我分享他们的知识,使我变得更加聪明。特别感谢Ray Rankins, Mitch Fleischman, Tony Haber, Chris Amidei, Jay Cramblet, Brian Knauff,以及Dean Rock。在我进行本书的编著,以及努力研究Sybase的过程中,Stacey Cooper和Brian Wesselink都为我提供了很大的支持。另外,如果没有Frank Acker、Jovan Lebaric、Andy Mech、Peter Parshall、Thad Smith,以及Art Western这几位博士的榜样作用,我可能不会成为一名技术教师——我希望有一天也能像他们那样在学术上取得成功。
Gary Tyrrell
我想要感谢Jeff Garbus为我提供了编著本书的机会。感谢我的兄弟Basil,他是我的宣传者,我们经常通过电话联系。另外,我想要感谢我的父母:Yuling和Yuching Chang,是他们对我进行计算机启蒙教育的。
Alvin Chang
我想要感谢我的合著者:Jeffrey、Alvin和Gary。与你们一起工作我感到很荣幸。
Penny Garbus
简 介
对你来说,系统管理意味着什么?安装一个服务器?保证它一直处于起来(up)并运行的状态?调整它?管理其安全性?调整那些有问题的查询?
我觉得如果你询问100个人,你将会得到100种不同的答案。这就使得很难限制这本书的范围。正因为如此,我们将尽力定义一些我们自己的角色。
系统管理
系统管理是安装、维护、操作,以及控制Sybase ASE的活动。系统管理员(SA)是在服务器级负责维护一个安全的、稳定的操作环境,预测CPU的能力需求,以及规划并执行将来的扩展。此外,SA也负责服务器级的总体性能。
数据库管理
数据库管理是将逻辑模型移植为物理设计的行为,并执行为了保证一致性、安全性、即时数据库访问所必需的任务。数据库管理员(DBA)负责数据库范围内的访问、一致性,以及性能。
角色交迭
因为数据库是服务器的一部分,负责服务器范围的性能意味着在确定性能瓶颈时,SA通常都接管DBA的角色。然而,大多数公司都同时使用这两种角色,因而造成混乱。进一步加剧这种混乱的是,我曾见到过的那些公司让不同的人分别担任这两种角色,最终却导致人际关系冲突,原因是担任某一角色的某个人,不等待担任另一角色的相关人员的配合就无法完成任务。
另一些公司则让某些人员担任产品DBA,这似乎意味着所有预防性的维护和灾难恢复工作都是由这些人员来执行;同时让另一些人员担任开发DBA,这些人员负责调整查询的性能和完成模式更改,以及与开发人员合作编写优秀的代码。
本书范围
这里,我们不对各个公司对角色和职责的分工加以评价。坦白地说,如果它产生了效果,那么是显而易见的,而如果它不起作用,那么也是显而易见的。只要它能产生效果,就不要去修正它。
本书是关于系统管理方面的内容。当我们断定DBA和SA这两个角色发生交叠时,也会讨论作为一名DBA需要去执行的任务。在阅读完本书之后,读者应该能够执行包含创建或维护一个服务器在内的所有任务。
惟一的例外就是性能调整(除了那些服务器配置参数以外),关于性能调整本身就能单独写上一本书。(译者注:实际上已经有了关于性能调整这本书)