13.3 数据库
数据库是一个单位或是一个应用领域的通用数据处理系统,它存储的是属于企业和事业部门、团体和个人的有关的数据集合。数据库中的数据是从全局观点出发建立的,按一定的数据模型进行组织、描述和存储。其结构基于数据间的自然联系,从而可提供一切必要的存取路径,且数据不再针对某一应用,而是面向全组织,具有整体的结构化特征。
数据库中的数据是为众多用户所共享其信息而建立的,已经摆脱了具体程序的限制和制约。不同的用户可以按各自的用法使用数据库中的数据;多个用户可以同时共享数据库中的数据资源,即不同的用户可以同时存取数据库中的同一个数据。数据共享性不仅满足了各用户对信息内容的要求,同时也满足了各用户之间信息通信的要求。
目前,商品化的数据库管理系统以关系型数据库为主导产品,技术比较成熟。面向对象的数据库管理系统虽然技术先进,数据库易于开发、维护,但尚未有成熟的产品。国际国内的主导关系型数据库管理系统有DB2、Oracle、MY SQL、Sybase和INFORMIX。这些产品都支持多平台,如UNIX、Linux、VMS、Windows,但支持的程度不一样。微软的SQL Server也是成熟的关系型数据库,但是SQL Server只支持Windows操作系统。
13.3.1 SQL SERVER软件
SQL Server最初是由Microsoft、Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNIX操作系统上的应用。
SQL Server的安全性及稳定性受操作系统限制,一般用于轻量级应用程序及非关键性系统,但是SQL Server 提供了众多的Web和电子商务功能,如对XML和Internet标准的丰富支持,通过Web对数据进行轻松安全的访问,具有强大的、灵活的、基于Web的和安全的应用程序管理等。而且,由于其易操作性及其友好的操作界面,深受广大用户的喜爱。目前微软共提供了五种不同的版本:
SQL Server Enterprise Edition(32 位和 64 位)——企业版Enterprise Edition,达到了支持超大型企业进行联机事务处理(OLTP)、高度复杂的数据分析、数据仓库系统和网站所需的性能水平。Enterprise Edition 的全面商业智能和分析能力及其高可用性功能(如故障转移群集),使它可以处理大多数关键业务的企业工作负荷。Enterprise Edition 是最全面的 SQL Server 版本,是超大型企业的理想选择,能够满足最复杂的要求。
SQL Server Standard Edition(32 位和 64 位)——标准版SQL Server Standard Edition,是适合中小型企业的数据管理和分析平台。它包括电子商务、数据仓库和业务流解决方案所需的基本功能。Standard Edition 的集成商业智能和高可用性功能可以为企业提供支持其运营所需的基本功能。SQL Server Standard Edition 是需要全面的数据管理和分析平台的中小型企业的理想选择。
SQL Server Workgroup Edition(仅适用于 32 位)——工作组版,对于那些需要在大小和用户数量上没有限制的数据库的小型企业,SQL Server Workgroup Edition 是理想的数据管理解决方案。SQL Server Workgroup Edition 可以用作前端 Web 服务器,也可以用于部门或分支机构的运营。它包括 SQL Server 产品系列的核心数据库功能,并且可以轻松地升级至 SQL Server Standard Edition 或 SQL Server Enterprise Edition。SQL Server Workgroup Edition 是理想的入门级数据库,具有可靠、功能强大且易于管理的特点。
SQL Server Developer Edition(32 位和 64 位)——开发版,SQL Server Developer Edition 允许开发人员在 SQL Server 顶部生成任何类型的应用程序。该应用程序包括 SQL Server Enterprise Edition 的所有功能,但许可用作开发和测试系统,而不用作生产服务器。SQL Server Developer Edition 是独立软件供应商(ISV)、咨询人员、系统集成商、解决方案供应商以及生成和测试应用程序的企业开发人员的理想选择。可以根据生产需要升级 SQL Server Developer Edition。
SQL Server Express Edition(仅适用于 32 位)——学习版,SQL Server Express 是免费的,可以再分发(受制于协议),还可以充当客户端数据库以及基本服务器数据库。SQL Server Express 是独立软件供应商 ISV、服务器用户、非专业开发人员、Web 应用程序开发人员、网站主机和创建客户端应用程序的编程爱好者的理想选择。如果您需要使用更高级的数据库功能,则可以将 SQL Server Express 无缝升级到更复杂的 SQL Server 版本。
借助于Windows优良的图形界面,在当前成熟的关系型数据库中,SQL Server应该是最容易维护最为简洁的数据库系统。但是要在SQL Server软件正常运行的基础上确保企业的应用程序能够稳定、高效、安全的运行,对运维人员也提出了较高的要求。针对不同的SQL Server应用,应该从以下几个方面进行研究。
(1)安装部署
相对于其他数据库系统,SQL Server受益于Windows的图形界面辅助,安装过程较为简单,但是安装部署要考虑的事情也是不容忽略的。部署前应该考虑到操作系统的安全、账户的权限、系统数据库设置、字符集及时区的设置等。
(2)内存管理
SQL Server在运行过程中使用的内存配置,将会对数据库的运行稳定性及性能产生较大的影响,因此对于SQL Server数据库的内存管理也要有深入的了解,其中包括数据页面、数据库组件、线程内存以及第三方代码消耗的内存。因此SQL Server内存使用情况的分析将是比较重要的工作内容,一般来说内存监控有两种方式。第一种是在分析系统内存情况时使用性能计数器,第二种是使用动态管理视图(DMV,只适用于SQL Server2005和2008),在此就不做具体介绍了。
(3)数据库数据文件及日志文件
数据库的日常工作主要是对数据的增删改查,以及对各操作进行记录。这些工作最终都会落实到文件的读写操作上,因此,数据文件及日志文件的分布配置以及存储类型将会影响到数据库的响应速度。对此运维人员应该对存储设备及类型有一定的了解,并深入掌握文件及文件组的使用。
(4)SQL编码
数据库系统作为数据管理的一个平台,在日常工作中所有的操作及交互都需要使用SQL进行。因此SQL的编写是运维人员必须具备的能力,在此基础上还要了解怎样的SQL可以让数据库引擎高效地执行。对于SQL Server的数据库引擎来说,复杂的SQL往往执行效率不高,调试困难,无法重复使用。复杂的存储过程同样面对阅读困难、复用性差以及不便维护的困境。因此应该尽可能地使用较为简单的SQL,合理地将SQL或存储过程进行拆分,简化逻辑。此外数据库引擎对于大批量的数据处理效率要优于行级数据处理,在维护过程中要多加注意。
(5)性能提升
在软件系统的整个生命周期中,比起规划设计阶段、编码阶段,运维阶段所做的工作对数据库的影响是最小的,也是对运维人员要求最高的。运维人员,没有办法改变数据组成,往往连查询语句都不能修改。这就需要运维人员使用索引、分区等一些对用户透明的手段,对数据库进行改造,以改善其性能,此外还要注意内存以及IO的重新配置和规划。此外,还应该熟练地进行数据库监控,以及数据库锁的使用。通过SQL Server Profiler(2000版本叫事件探查器)可以监控到执行较差的查询,登录尝试、故障、连接或者断开,语句级别使用的CPU,死锁的问题,tempdb数据库的性能等。
(6)容灾与备份
数据库的备份和恢复是运维人员必须要掌握的一项能力,此外,容灾是在备份的基础上更高的一种可用性要求,容灾是保障数据不因人为因素丢失的高可用方案。备份是保障数据在任何情况下都能回滚到可接受的范围的手段,而且容灾不能代替备份。对此运维人员应该了解并可以熟练进行数据库的备份恢复操作,并可以使用相关的容灾软件对数据库进行恢复(一些非关键性或小型企业的数据库系统可能对容灾没有那么高的要求)。
(7)故障诊断
除备份恢复之外,故障诊断应该是运维人员最重要的必需技能。SQL Server Profiler(2000版本叫事件探查器)跟踪数据库的告警及报错信息,根据跟踪信息进行诊断定位。对于24小时不间断运行的系统,还可以使用系统监视器来收集SQL Server的运行情况,进行系统诊断。
13.3.2 MY SQL软件
MySQL是一个开放源码的小型关联式数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。Linux作为操作系统,Apache和Nginx作为Web服务器,MySQL作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP”组合。它具有以下系统特性:
(1)使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
(2)支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
(3)为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
(4)支持多线程,充分利用CPU资源。
(5)优化的SQL查询算法,有效地提高查询速度。
(6)既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
(7)提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
(8)提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
(9)提供用于管理、检查、优化数据库操作的管理工具。
(10)支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
(11)支持多种存储引擎。
新版本特性中新加表和索引的分区、行级复制、MYSQL基群基于磁盘的数据支持、MYSQL集群复制、增强的全文本搜索函数、增强的信息模式(数据字典)、可插入的API、服务器日志表、XML/XPath支持、实例管理器、表空间备份、mysql_upgrade升级程序、内部任务/事件调度器、新的性能工具和选项如mysqlslap。
1.数据库引擎
MySQL作为开源的数据库管理系统,拥有最为众多的存储引擎,根据不同的应用系统特点选择需要的存储引擎,这对运维人员的技术水平就提出了很高的要求。常用的存储引擎为MyISAM、InnoDB、BDB、MEMORY、Archive、MERGE、Federated、Cluster/NDB、CSV、BlackHole、EXAMPLE,其中InnoDB、BDB提供事务安全表,其他存储引擎都是非事务安全表。
MyISAM是Mysql5.5之前的默认数据库引擎,最为常用。拥有较高的插入、查询速度,但不支持事务。
InnoDB是事务型数据库的首选引擎,支持ACID事务,支持行级锁定,MySQL 5.5起成为默认数据库引擎。
BDB源自Berkeley DB,是事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性。
Memory是所有数据置于内存的存储引擎,拥有极高的插入、更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失。
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用。
Archive非常适合存储大量的独立的、作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差。
Federated将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用。
Cluster/NDB是高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大、安全和性能要求高的应用。
CSV是逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个.CSV文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV存储引擎不支持索引。
BlackHole是黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继。
EXAMPLE存储引擎是一个不做任何事情的存根引擎。它的目的是作为MySQL源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,对此有兴趣的是开发者。EXAMPLE存储引擎不支持编索引。
另外,Mysql的存储引擎接口定义良好,有兴趣的开发者可以通过阅读文档编写自己的存储引擎。
2.索引功能
索引是一种特殊的文件(InnoDB及其他关联型数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。为了在某种程度上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有记录之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE选项的作用将非常明显。另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
3.数据库备份
MY SQL数据库的备份,主要是利用mysqldump来备份数据库,小数据量的库是直接用mysqldump来处理,稍微大些的数据库是在slave端做mysqldump备份,也在有些场合考虑使用xtrabackup。对于数据库比较分散的系统,相对来说备份校验的工作量有点大。对于小型数据库,还可以使用mysqlhotcopy进行备份。对于安全性较高的数据库,也可以使用主从复制机制(replication)实现数据库实时备份。
13.3.3 DB2软件
DB2是IBM出品的一系列关系型数据库管理系统,分别在不同的操作系统平台上服务。DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/2、Windows等平台下。DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。DB2采用了数据分级技术,能够使大型机数据很方便地下载到LAN数据库服务器,使得客户机/服务器用户和基于LAN的应用程序可以访问大型机数据,并使数据库本地化及远程连接透明化。它以拥有一个非常完备的查询优化器而著称,其外部连接改善了查询性能,并支持多任务并行查询。DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。
DB2数据库根据不同的生产环境,提供了不同的软件产品:
DB2 Everyplace
DB2 Everyplace主要用于移动计算。移动计算的真正力量并不在于移动设备本身,而是在于能够利用来自其他来源的数据。DB2 Everyplace不仅仅是一种移动计算基础设施,它是一个完整的环境,包含了构建、部署和支持强大的电子商务应用程序所需的工具。DB2 Everyplace提供一个“指纹”引擎(大约200 KB),其中包含所有的安全特性,比如表加密和提供高性能的高级索引技术。
它可以在当今最常见的各种手持设备上顺利地运行(提供多线程支持),如Palm OS、Microsoft Windows Mobile Edition、任何基于Windows 的32 位操作系统、Symbian、QNX Neutrino、Java 2 Platform.Micro Edition(J2ME)设备(如RIM 的Blackberry pager)、嵌入式Linux 发布版(如BlueCat Linux)等。
DB2 Personal Edition
DB2 Personal Edition(DB2 Personal)是单用户RDBMS,运行于低价的商用硬件桌面计算机上。DB2 Personal 包含DB2 Express 的所有特性,但是有一个例外:远程客户机无法连接运行这个DB2 版本的数据库。
DB2 Express - C
DB2 Express - C 其实 不算是DB2 系列的一个版本,但是它提供了DB2 Express 的大多数功能。2006 年1 月,IBM 发布了这个特殊的DB2 免费版本,可以用于基于Linux和Windows的操作系统。它是IBM专门针对开发者社区提供的完全免费的DB2数据库版本,可以在此版本的DB2上不受限制地开发、部署以及分发自己的数据库应用程序。
DB2 Express Edition
DB2 Express Edition(DB2 Express)是一种功能全面的支持Web 的客户机/服务器RDBMS。DB2 Express 可以用于基于Windows 和Linux 的工作站。DB2 Express 提供一个低价的入门级服务器,主要用于小型企业和部门的计算任务。
DB2 Workgroup Edition
DB2 Workgroup Edition(DB2 Workgroup)和DB2 Express Edition 功能相同,只是在服务器上可以安装的内存和价值单元(等于一个服务器处理器核心的能力)数量方面有区别。
DB2 Enterprise Edition
DB2 Enterprise Edition(DB2 Enterprise)是一种功能全面的支持Web 的客户机/服务器RDBMS。它可以用于所有支持的UNIX 版本、Linux 和Windows。DB2 Enterprise 适合作为大型和中型的部门服务器。DB2 Enterprise 包含DB2 Express 和DB2 Workgroup 的所有功能,还添加了其他功能。
Data Enterprise Developer Edition
Data Enterprise Developer Edition(DEDE)是为应用程序 开发人员提供的特殊版本。这个版本提供了几个信息管理产品,使应用程序 开发人员可以对应用程序进行设计、构建和建立原型,产生的应用程序可以部署在任何IBM 信息管理软件客户机或服务器平台上。在DB2 9 中,这个软件包 已经取消了,由DB2 Express - C 取代。
DB2相较于其他几个数据库系统(SQL Server除外)是比较封闭的,但是也是维护最为简单的。虽然环境变量、全局变量、实例参数、数据库参数加起来有上百个供运维人员根据实际环境进行设置,但是IBM丰富的说明文档可以简明扼要地让所有初学者知道其各自的作用。也正是拥有这些自由的选择,使得DB2数据库具有巨大的伸缩性和扩展性。
IBM DB2数据库在以下几方面有自己的特点和特性,运维人员应重点关注和学习,并掌握其使用和维护方法。
(1)高可用-HADR
DB2发行版中,一个HADR环境需要两台数据库服务器:主数据库服务器(primary)和备用数据库服务器(standby)。当主数据库中发生事务操作时,会同时将日志文件通过TCP/IP传送到备用数据库服务器,然后备用数据库对接受到的日志文件进行重放(Replay),从而保持与主数据库的一致性。当主数据库发生故障时,备用数据库服务器可以接管主数据库服务器的事务处理。此时,备用数据库服务器作为新的主数据库服务器进行数据库的读写操作,而客户端应用程序的数据库连接可以通过自动客户端重新路由(Automatic Client Reroute)机制转移到新的主服务器。当原来的主数据库服务器被修复后,又可以作为新的备用数据库服务器加入HADR。
(2)数据库分区
DB2的企业版提供数据库分区功能,即DPF,这一功能主要用来为大规模数据处理提供支持。DB2数据库分区采用Share-nothing体系结构,数据库在一个非共享的环境中被分解为独立的分区,每个分区都具有自己的资源,例如内存、CPU和磁盘以及自己的数据、索引、配置文件和事务日志。通过它可以在物理或逻辑上将数据库负载分流,处理海量数据,多用于数据仓库和商业智能,数据库具有并行处理单一任务的能力。
(3)DB2 pureScale
DB2 pureScale 是一种新的 DB2 可选特性,它允许您通过“双机(active-active)”配置将数据库扩展到一组服务器上,以便交付高水平的可用性和可伸缩性。在这种配置中,运行于各主机(或服务器)上的 DB2 副本可以同时读取和写入相同的数据。共享 DB2 数据的一台或多台 DB2 服务器被称作数据共享组。数据共享组中的 DB2 服务器是该组的成员。目前,数据共享组支持的最大成员数量是 128。
(4)数据库并发
DB2在做数据修改时,在日志中既记录了修改前的数据(也就是UNDO日志),也记录了修改后的数据(即REDO日志)。对于DB2 V9.7之前的版本,读取数据的应用程序,遇到正在被其他应用程序修改的数据时,将会进行锁等待(除非使用UR隔离级别)。对于DB2 V9.7及以后版本,由于引入了当前已落实,读取数据的应用程序将不需要等待锁释放,而是会从日志中读取数据修改前的版本。当请求加锁时,DB2会检查锁列表,看数据对象上是否已加锁,以及请求的锁与已加的锁是否兼容。DB2强调“读一致性”,在读数据行时,会根据隔离级别的不同而加S或IS锁,只有在使用UR隔离级别时才不加S或IS锁,这保证了不同应用程序和用户读取的数据是一致的。DB2缺省的隔离级是CS,对于大多数应用来说,缺省的CS级别可以满足需要。DB2在UR隔离级别下,遇到正在被更改的数据会读最新的没有提交的脏数据。
(5)SQL优化器
DB2数据库里面是通过优化器来分析SQL,生成它认为最优的执行计划。DB2的优化器实际上是一个标准规则集合。DB2的优化器是基于成本的优化器,也就是CBO(costbasedoptmizer)。也就是说DB2优化器会应用查询成本公式,该公式对每一条可能的存取路径的四个因素进行评估和权衡:CPU成本、I/O成本、DB2系统目录中的统计信息和实际的SQL语句。DB2系统目录中统计信息是让DB2优化器正确工作的一个重要的依据。这些统计信息向优化器提供了与正在被优化的SQL语句将要访问的表状态相关的信息,因此应该保证数据库的统计信息是准确的。
(6)备份恢复
DB2数据库的备份和恢复是比较简单的,只需要一条明确的关键指令,备份工作就可以顺利进行。当然,不同的生产环境可能需要一些前期工作要做。根据应用系统的需要,从数据块到数据库级,从delta到增量备份再到全备份,从联机备份到脱机备份,甚至实时备份,DB2提供了完备的各种备份方案供运维人员选择。当然,想要很好地运用这些不同的备份方案,还需要深入的学习。在高可用方面,数据库分区以及数据库复制,也应该是运维人员应该关注的地方。
(7)故障诊断
DB2软件提供了管理通知日志、诊断日志、事件日志、转储文件、陷阱文件等日志信息帮你监控和记录数据库发生的问题过程,具体这些文件所处的位置及作用如下:
管理通知日志(“instance_name.nfy”)
该日志适用于所有的操作系统,只是根据操作系统的不同展现方式有所区别。
Linux和 UNIX:位于 diagpath 数据库管理器配置参数所指定的目录中。
Windows:使用事件查看器工具(“开始”>“控制面板”>“管理工具”>“事件查看器”)。
该日志在创建实例时自动创建。发生重大事件时,DB2 将信息写入管理通知日志,供数据库和系统管理员使用。记录在此文件中的消息类型由 notifylevel配置参数确定。
DB2 诊断日志(“db2diag.log”)
该日志位于 diagpath 数据库管理器配置参数所标识的目录中。
此文本文件包含关于实例遇到的错误和警告的诊断信息。此信息用于问题确定及 IBM软件支持。记录在此文件中的消息类型由diaglevel数据库管理器配置参数确定。
DB2 管理服务器(DAS)诊断日志(“db2dasdiag.log”)
该日志同样适用于所有的操作系统,根据操作系统的不同展现方式如下:
Linux和UNIX:位于DASHOME/das/dump中,其中DASHOME是DAS所有者的主目录。
Windows:位于DAS主目录的“dump”文件夹中。例如,C:Program FilesIBMSQLLIB DB2DAS00dump。
该日志在创建 DAS 时自动创建。文件包含关于 DAS 遇到的错误和警告的诊断信息。
DB2 事件日志(“db2eventlog.×××”,其中×××是数据库分区号)
事件日志与诊断日志一样位于diagpath数据库管理器配置参数所指定的目录中。在创建实例时自动创建。
DB2 事件日志文件是数据库管理器中发生的基础结构级事件的循环日志。该文件大小固定,并且充当在实例运行时记录的特定事件的循环缓冲区。每次停止实例时,就会替换先前的事件日志,而不是追加。如果实例捕获,则还会生成db2eventlog.×××.crash文件。这些文件供 IBM 软件支持使用。
DB2调出脚本(db2cos)输出文件
位于diagpath数据库管理器配置参数所指定的目录中。出现应急启动、陷阱或分段违例时自动创建。还可以在使用db2pdcfg命令所指定的特定问题情况期间创建。缺省db2cos脚本将调用db2pd命令以打开方式收集信息。根据db2cos脚本中包含的命令,db2cos输出文件的内容会有所不同。
转储文件
该文件位于diagpath数据库管理器配置参数所指定的目录中,出现特定问题情况时自动创建,对于某些错误情况,会将附加信息记录在以失败进程标识命名的二进制文件中,这些文件可供 IBM 软件支持使用,对其分析定位问题有帮助。
陷阱文件
位于diagpath数据库管理器配置参数所指定的目录中。实例异常结束时自动创建。还可以使用db2pd命令创建。如果数据库管理器由于陷阱、分段违例或异常而不能继续处理,则会生成陷阱文件。
核心文件
核心文件是一个二进制文件,它包含类似于 DB2 数据库产品生成的陷阱文件的信息。核心文件还可能包含已终止进程的完整内存映像。位于diagpath 数据库管理器配置参数所指定的目录中。DB2 实例异常终止时由操作系统创建。
13.3.4 Oracle软件
Oracle数据库系统是美国Oracle(甲骨文)公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(Client/Server)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。Oracle数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。只要在一种机型上学习了Oracle知识,便能在各种类型的机器上使用它。
Oracle数据库最新版本为Oracle Database 12c。Oracle数据库12c 引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic Data Optimization和Heat Map能以更高的密度压缩数据和对数据分层。这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c成为私有云和公有云部署的理想平台。
到目前Oracle仍然是市场份额占有量最大的数据库系统。Oracle安装介质完全免费所以其同代产品中没有过多的版本。Oracle作为市场占有量最大,从业人员最多的数据库管理系统,其创新和升级也走在了其他数据库管理系统的前面。业内使用的版本从8i、9i到10g、11g、12g版本的升级都引入了大量的新功能,并对各项功能进行了增强。
Oracle数据库在以下几方面有自己的特点和特性,运维人员应重点关注和学习,并掌握其使用和维护方法。
(1)高性能——集群
Oracle的集群软件RAC的特点包括如下几点:
- 双机并行。RAC是一种并行模式,并不是传统的主备模式。也就是说,RAC集群的所有成员都可以同时接收客户端的请求。
- 高可用性。RAC是Oracle数据库产品高可用性的解决方案,能够保证在集群中只要有一个节点存活,就能正常对外提供服务。
- 易伸缩性。RAC可以非常容易地添加、删除节点,以满足系统自身的调整。
- 低成本。能使用较低廉的服务器来实现高可用性、高吞吐量的集群环境,这要比通过对某台高端服务器增加硬件实现高可用性、高吞吐量花费的成本低很多。
高吞吐量。随着节点数的增加,整个RAC的吞吐量也在不断增长。
(2)高可用——容灾
Oracle DataGuard是一种数据库级别的HA方案,最主要功能是冗灾、数据保护、故障恢复等。当然根据配置的不同,DATA GUARD还可以具备以下特点:高可用、性能提升、数据保护以及故障恢复等。
DATA GUARD可以分为物理STANDBY和逻辑STANDBY两种。二者的最大差别在于,物理STANDBY应用的是主库的归档日志,而逻辑STANDBY应用的是主库的归档日志中提取的SQL语句。由于二者这一点的区别,决定了物理STANDBY无论从逻辑结构和物理结构都是和主库保持一致,而逻辑STANDBY则只需保证逻辑结构一致,且逻辑STANDBY在应用SQL语句的时候,数据库可以处于打开的状态。
根据DATA GUARD的保护模式,可以分为三种不同类型:保护最大化、可用最大化、性能最大化。
(3)灵活性
Oracle 独家具有提供网格计算优势的功能,可以利用它来提高用户服务水平、减少停机时间以及更加有效地利用IT资源,同时还可以增强全天候业务应用程序的性能、可伸缩性和安全性。网格计算是一种新的IT体系结构,它能够适应不断变化的业务需求。网格计算还为IT经济带来了革命性的变化。通过企业网格计算,可以使用可随需应变的灵活成本结构构建一个功能强大的数据中心。
简单来讲,网格计算就是将所有IT资源集中到一组共享服务中,用于满足所有的企业计算需求。网格计算基础架构将不断分析资源需求,并对供应做出相应调整。
Oracle数据库还具有带 Oracle闪回数据归档的 Total Recall,使您可以在选定的表中查询以前的数据,从而提供了一种简单实用的向数据中添加时间维度的方法以便于更改跟踪、 ILM、审计和合规。
(4)管理自动化
利用管理自动化提高 DBA 效率,其中包括以下几个方面:
自动存储管理(ASM),增删硬盘不再需要操作系统管理员设置的镜像、负载均衡、物理卷、逻辑卷、分区、文件系统,只要打一条Oracle命令,ASM会自动管理增加或删除的硬盘。支持滚动升级,自动坏块检测和修复、快速镜像重新同步。自动存储管理的性能增强使得大型数据库可以更快地打开并减少 SGA 内存消耗。这些增强还允许 DBA增加存储分配单元大小以加快大型序列输入/输出(I/O)。
内存自动化,根据需要自动分配和释放系统内存。在该特性之下SGA与PGA将会根据需要自动地扩展与收缩。
(5)数据库并发
Oracle在日志中记录修改后数据,而将修改前的数据记录到“回滚段”(ROLLBACK SEGMENT)中。UNDO信息也会记录在REDO中,也就是说Oracle会把修改前的数据及其修改后的数据都记录在REDO中,以便实例失效的时候进行recovery。
当一个应用程序对表以Insert、Update和Delete操作进行修改时,另外一个应用程序在读取该表时,会从回滚段中读取该表修改前的数据。Oracle利用数据行上的标志位来实现锁机制。Oracle同一时刻不同的应用程序有读不一致的现象,这是因为Oracle认为一致性指的是在开始读的时候的断片应该保持一致,也就是说一直到TRANSACTION的生命周期里,总是能读到一致的内容。Oracle缺省的隔离级别类似DB2的UR,读取数据和更新不会互锁(如果提高Oracle的隔离级别,也会产生互锁问题),但只能读到已提交的数据,无法得到最近修改(但暂时未提交)的版本。Oracle在其所有的隔离级别(即read committed、serializable以及read-only隔离级别)下都不会读取脏数据(在read committed级别下,会从回滚段中直接读取修改前的曾经提交过的数据)。在一些应用里,需要读到最新的数据,也就是脏数据。
在旧的DB2里(DB2 9.7以前)是靠锁来解决并发问题的,这是一个阵营。而Oracle在另一个阵营,使用MVCC。Oracle叫UNDO。实践检验,MVCC胜出。读脏数据没有太大用处。对于并发控制,无论是DB2还是Oracle,都有自己的特色,只要合理地设计应用并配置好数据库参数,就能够满足绝大多数的需求。
(6)数据库备份恢复
当我们使用一个Oracle数据库时,总希望数据库系统的数据是可靠的、正确的,但由于计算机系统的故障(硬件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失。因此当发生上述故障后,希望能重新建立一个完整的数据库,该处理称为数据库恢复。恢复子系统是数据库管理系统的一个重要组成部分,恢复处理随着所发生的故障类型所影响的结构而变化。Oracle数据库除了可以进行物理备份之外还可以进行逻辑备份。相对于DB2的备份来说,Oracle的备份有点让人烦躁,但得益于rman的应用,Oracle的备份开始变的越来越人性化。
(7)故障诊断
Oracle在数据库中内置了大量的视图,为性能及故障诊断提供丰富的数据基础。在此基础上,根据数据库诊断日志中的告警信息,参照Oracle文档,可以解决Oracle运行过程中的大部分故障。Oracle的高开放性是的Oracle的每一个运作机制都展现在我们面前。使得我们从参数设置不合理到四大主要文件(控制文件、日志文件、数据文件、参数文件)损坏,都可以通过技术手段将Oracle复活。
13.3.5 Informix软件
Informix是IBM公司出品的关系数据库管理系统(RDBMS)家族。作为一个集成解决方案,它被定位为作为IBM在线事务处理(OLTP)旗舰级数据服务系统。IBM对Informix和DB2都有长远的规划,两个数据库产品互相吸取对方的技术优势。
Informix动态服务器采用的是一种多线索体系结构(Oracle、Sybase也属于多线索数据库,DB2的情况较为复杂),这就意味着一个进程利用自己的多个线索可以同时完成多个任务,因而整个系统只需要较少的进程就足以完成DBMS的任务。
INFORMIX动态服务器系统由三个主要组件构成:共享内存、进程和磁盘。
共享内存
包括三个段:驻留段、虚拟段和消息段。驻留段主要用作磁盘数据的缓存。虚拟段主要用作内存池以支持进程及相关的会话(session)和线索。当客户与服务器利用共享内存进行通信时,消息段将用作两者之间的消息缓冲区。系统中还包括若干构成数据库服务器的UNIX进程,称为oninit。这些进程被称为虚拟处理器(VP)(virtual processors),每一VP隶属于某一虚拟处理类,而每一虚拟处理器类都负责完成一类特定的任务。
- 进程
在动态服务器中,线索是在oninit中的一段被执行的指令流。通过多线索机制,可以让一个进程同时为多个任务服务而不必生成多个OS级进程。进程oninit可以启动多个线索,各线索顺序执行,并在适当的时候把控制权转移给其他线索。在多线索进程中每一线索都有自己的执行环境,包括自己的代码空间和自己的局部变量。一个多线索进程负责多个线索间的正文切换。
- 磁盘组件
系统的磁盘组件由多个原始磁盘空间组成,称为chunk,chunk以页(page)为基本单位,多个chunk集合逻辑上构成了数据空间(dbspace),数据空间用于存储数据库、表、系统信息以及物理日志和逻辑日志,一个数据空间至少包括一个chunk。
运维人员需要清楚地知道共享内存中各段的工作内容,以及对数据库可能产生的影响。还要清楚操作系统对进程、线索的维护原理,以及进程和线索的关系以及使用中的优劣,磁盘组件的工作直接影响了数据库IO的效率。
13.3.6 Sybase软件
Sybase是美国Sybase公司研制的一种关系型数据库系统,是一种典型的UNIX或WindowsNT平台上客户机/服务器环境下的大型数据库系统。Sybase提供了一套应用程序编程接口和库,可以与非Sybase数据源及服务器集成,允许在多个数据库之间复制数据,适用于创建多层应用。系统具有完备的触发器、存储过程、规则以及完整性定义,支持优化查询,具有较好的数据安全性。Sybase通常与Sybase SQL Anywhere用于客户机/服务器环境,前者作为服务器数据库,后者为客户机数据库,采用该公司研制的PowerBuilder为开发工具,在我国大中型系统中具有广泛的应用。
1.SYBASE数据库的特点
(1)基于客户/服务器体系结构的数据库
一般的关系数据库都是基于主/从式的模型的。在主/从式的结构中,所有的应用都运行在一台机器上。用户只是通过终端发命令或简单地查看应用运行的结果。而在客户/服务器结构中,应用被分在了多台机器上运行。一台机器是另一个系统的客户,或是另外一些机器的服务器。这些机器通过局域网或广域网连接起来。客户/服务器模型的好处是:它支持共享资源且在多台设备间平衡负载;允许容纳多个主机的环境,充分利用了企业已有的各种系统。
(2)真正开放的数据库
由于采用了客户/服务器结构,应用被分在了多台机器上运行。更进一步,运行在客户端的应用不必是Sybase公司的产品。对于一般的关系数据库,为了让其他语言编写的应用能够访问数据库,提供了预编译。Sybase数据库,不只是简单地提供了预编译,而且公开了应用程序接口DB-LIB,鼓励第三方编写DB-LIB接口。由于开放的客户DB-LIB允许在不同的平台使用完全相同的调用,因而使得访问DB-LIB的应用程序很容易从一个平台向另一个平台移植。
(3)一种高性能的数据库
Sybase真正吸引人的地方还是它的高性能。体现在以下几方面:
- 可编程数据库
通过提供存储过程,创建了一个可编程数据库。存储过程允许用户编写自己的数据库子例程。这些子例程是经过预编译的,因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多。
- 事件驱动的触发器
触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程,从而确保数据库的完整性。
- 多线索化
Sybase数据库的体系结构的另一个创新之处就是多线索化。一般的数据库都依靠操作系统来管理与数据库的连接。当有多个用户连接时,系统的性能会大幅度下降。Sybase数据库不让操作系统来管理进程,它把与数据库的连接当作自己的一部分来管理。此外,Sybase的数据库引擎还代替操作系统来管理一部分硬件资源,如端口、内存、硬盘,绕过了操作系统这一环节,提高了性能。
2.Sybase数据库的主要组成
Sybase数据库主要由3部分组成:
(1)Sybase SQL Server,它是整个Sybase产品的核心软件,起着数据管理、高速缓冲管理、事务管理的作用。
(2)Sybase SQL Toolset,它是支持数据库应用系统的建立与开发的一组前端工具,主要有以下3个工具:
ISQL是与SQL Server进行交互的一种SQL句法分析器。ISQL接收用户发出的SQL语言,将其发送给SQL Server,并将结果以形式化的方式显示在用户的标准输出上。
DWB是数据工作台,是Sybase SQL Toolset的一个主要组成部分,它的作用在于使用户能够设置和管理SQL Server上的数据库,并且为用户提供一种对数据库的信息执行添加、更新和检索等操作的简便方法。在DWB中能完成ISQL的所有功能,且由于DWB是基于窗口和菜单的,因此操作比ISQL简单,是一种方便实用的数据库管理工具。
APT是Sybase客户软件部分的主要产品之一,也是从事实际应用开发的主要环境。APT工作台是用于建立应用程序的工具集,可以创建从非常简单到非常复杂的应用程序,它主要用于开发基于表格(Form)的应用。其用户界面采用窗口和菜单驱动方式,通过一系列的选择完成表格(Form)、菜单和处理的开发。
(3)Sybase Open Client/Open Server,它是把异构环境下其他厂商的应用软件和任何类型的数据连接在一起的接口,通过Open Client的DB-LIB库,应用程序可以访问SQL Server;而通过Open Server的SERVER-LIB,应用程序可以访问其他的数据库管理系统。
13.3.7 数据库软件维护技能
数据库运维服务是指:针对用户数据库开展的软件安装、配置优化、备份策略选择及实施、数据备份恢复、数据迁移、故障排除、预防性巡检等一系列服务。其具体要求如下:
(1)数据库安装与配置。主要指定制数据库安装配置方案,检查软件安装环境,安装数据库软件,完成数据库配置,并测试之;
(2)权限管理和配置。确保数据库管理的安全和数据的安全,数据库软件都设置了不同的用户、不同的角色和不同的权限,需要确定建立哪些用户,这些用户充当什么角色,这些角色都有什么权限。权限相关总原则,以最低粒度控制权限;
(3)数据库日常监控。数据库监控主要包括数据库系统的性能、事物、连接等方面的数据,如数据库工作状态、数据库表空间的利用情况、数据文件和数据设备的读写命中率、数据碎片情况、数据库的进程状态、数据库内存利用状态等;
(4)数据库备份与恢复。主要是指本地、异地、同步、实时的分级备份与恢复方案及实施;
(5)数据库性能优化。主要是指核心参数调优,SQL语句调优,性能评估方案的提供;
(6)故障排除。通过远程、上门等方式按服务级别实施故障排除;
(7)数据迁移。不同版本、不同厂商、不同结构数据库间的数据迁移;
(8)预防性巡检。定期提供预防性巡检,并完成系统参数、配置调优,及补丁分发、安装服务。