一、ASE中的各种数据库
在我们安装Adaptive Server后创建一套ASE数据库系统时,ASE的数据库配置程序(asecfg、srvbuild、syconfig等)将默认创建下面的系统数据库,每个数据库各有其用途:
master数据库,包含系统表,这些系统表中的数据用于管理;
model模板数据库,用于创建新的数据库;
sybsystemprocs数据库,存放系统存储过程;
sybsystemdb数据库,关于分布式事务管理功能;
tempdb数据库,包含临时表,放置临时数据。
除去上述5个必须安装的系统数据库外,还可以选装下面几个数据库:
审计数据库sybsecurity,包含审计信息,用于系统管理员对用户的审计;
样本数据库pubs2、pubs3,关于一个虚构的图书销售公司的示例;
语法数据库sybsyntax,包含SQL关键词的语法帮助;
dbcc数据库dbccdb,包含从dbcc checkstorage的输入和输出,用于检查数据库一致性;
Job Scheduler数据库sybmgmtdb,用于存储作业数据、预定作业信息等与Job Scheduler内部处理相关的数据。
最后一种,是为应用而建立的,用于存放应用数据的应用数据库,或者说用户数据库。因此,在一套ASE系统中,可能有的数据库如图1-25所示。
第一行:系统数据库
第二行:用户数据库、演示数据库
第三行:选装数据库
ASE是通过master数据库来管理其他数据库的,因此它也称为主数据库。它与其他数据库的关系如图1-26所示。
ASE中master库之所以可以管理其他数据库,是因为master中拥有记载和管理ASE全系统信息的"系统表",这些系统表(也可称为系统数据字典)存放了所有有关ASE系统配置、安全管理、对象管理的全局性信息。
每个非master数据库也有自己的系统表,称为数据库级系统表。和master数据库中记录全局性信息的系统表不同,这些数据库级系统表用于存储这个特定数据库中的系统数据和状态信息记录。
master中的系统表存放的是ASE RDBMS全局层面的信息,数据库级系统表存在的仅是局部数据库中的管理信息。这也是master数据库和其他所有数据库的区别所在--存在意义不同!
1.master数据库
master数据库是ASE中管理整个系统、管理其他数据库的系统数据库,它对整个ASE都至关重要。如果master数据库发生损坏,则ASE启动失败、不能运行。master数据库特殊的作用在于其拥有其他数据库所没有的系统表,这些系统表记录了ASE系统级别的信息:
分配给ASE系统的全部存储空间
ASE中创建的所有数据库系统
一套ASE数据库系统中的用户登录信息
可与本ASE服务器进行互操作的远程服务器
ASE可以使用的联机引擎
ASE可以使用的备份设备
ASE用户可设置部分的环境变量
ASE所使用的字符集和语言
当前在ASE中运行的进程信息
当前在ASE中锁的活动信息
……
可见,ASE的master数据库存储了全局的数据字典数据,在功能上非常类似于Oracle和DB2的系统表空间。由于master数据库存储内容的特殊性,master的可靠性决定了整个系统的可靠性。
因此,对于master数据库来说,一些特殊的DBA工作是必要的:
保证master数据库所在的存储设备的可靠性,必要时使用镜像;
保证master数据库存储内容的逻辑可靠性,进行必要的备份。
2.sybsystemprocs数据库
sybsystemprocs数据库存放的是ASE系统用于服务器管理的存储过程工具。当一个用户登录到ASE的某个数据库中,试图执行某个系统存储过程时,ASE将在sybsystemprocs数据库中寻找该过程。
如果该系统过程未能在sybsystemprocs中找到,则继续搜索master数据库。
这个数据库一般是一个"静态"的数据库。如果该数据库的内容发生改变,则即刻的备份操作是必要的。
3.model数据库
model数据库,正如其名,是一个"模板"数据库,它是在ASE创建一个数据库时使用的模板,ASE创建新数据库的方法就是把model数据库中的所有内容复制到新数据库。
正因为model数据库有这个特点,因此可以定制model数据库,用来作为建立新数据库的模板。
作为数据库创建模板,有必要在model发生更改的时候制作其备份副本。当发生故障时,可以用来恢复model数据库。
4.tempdb数据库
tempdb数据库称为临时数据库,用来存放数据库运行中出现的临时表和临时工作表。这些临时类型的表可能有如下几种形式:
数据库临时表;
SQL导致的大数据量分组操作、排序操作、并行排序等活动。
tempdb数据库在ASE每次启动时都会临时性派生。ASE的自动恢复进程在系统启动时,复制model数据库并将其初始化到临时库所需大小,最后联机临时库。所以,tempdb一定大于等于model数据库。
tempdb数据库为所有ASE用户所共享使用,其默认大小是2MB(取决于数据页的大小)。在大多数情况下,这个数据库需要扩容,来应对大的SQL操作。
在Oracle系统中,临时表空间的作用类似于ASE的临时数据库。
5.sybsystemdb数据库
sybsystemdb数据库存储了有关于分布式事务的运行状态信息。ASE从12.0版开始可以为使用远程过程调用(RPC)或组件集成服务(CIS)将SQL事务中的数据推送到远程数据库服务器的那些事务提供事务协调服务。这也就是ASE著名的"分布式事务管理(DTM)服务"。
6.用户数据库
用户数据库就是为应用系统而创建的自定义数据库。当然,用户数据库也是通过复制model数据库生成的,用于存放用户应用系统的表、索引等数据库对象。ASE系统的核心价值即在于这些用户数据库,因此其维护和管理是ASE DBA管理任务的核心。
至于其他数据库,系统数据库也好,选装数据库也罢,都是为了这些用户数据库服务而存在的。
二、ASE选装数据库
ASE还有若干选装数据库,这些数据库用于某些个别的用途:
sybsecurity:审计数据库
sybsyntax:语法数据库
pub2、pub3:样本数据库
dbccdb:一致性检查数据库
sybmgmtdb:任务管理数据库
1.sybsecurity审计数据库
sybsecurity审计数据库用于装载ASE审计系统。ASE审计系统提供了跟踪、审计的系统表,用来记录数据库审计信息。
2.sybsyntax语法数据库
sybsyntax数据库用来存储Transact-SQL命令、Sybase系统过程、ASE、Open Client CT/DB-Library函数的语法帮助。安装sybsyntax数据库后,ASE中即可使用一个特殊的系统过程sp_syntax查看语法信息。例如,若要学习Transact-SQL的select命令,可以输入以下命令:
- 1> sp_syntax "insert"
- 2> go
- Syntax Help
- ---------------------------------------------------
- Transact-SQL
- insert - Adds new rows to a table or view.
- insert [into]
- [database.[owner.]]{table_name|view_name}
- [(column_list)]
- {values (expression [, expression]...)
- |select_statement [plan "abstract plan"] }
3.pub2、pub3样本数据库
pub2和pub3数据库是用来帮助学习Sybase ASE这个庞大系统的辅助数据库。这两个数据库本身无任何功效,仿真的是一个"书店"系统。ASE所有联机文档中使用的示例数据库对象和脚本,都是针对pub2、pub3数据库的。
鉴于pub2、pub3数据库的局限性,本书也设计了另外一个示例数据库:ase_db,和pub2、pub3数据库共同使用。
4.dbccdb一致性检查数据库
ASE中有一个进行数据库一致性检查(dbcc操作)的命令"dbcc checkstorage",用来检查数据库的一致性状态信息。这些信息需要记录在一个特殊的数据库dbccdb中。dbccdb数据库专用于存放"dbcc checkstorage"命令的返回结果,并依据结果生成dbcc报告。
5.sybmgmtdb数据库
ASE 15具有一个产品组件Job Scheduler(任务调度器)用于执行ASE的任务。sybmgmtdb数据库即用来保存任务作业信息、调度设置等相关数据以及已执行任务的输出结果。