1. 基本概念篇
1.1 什么是Sybase Adaptive Server Enterprise (ASE)?
Sybase Adaptive Enterprise Server (ASE)是由Sybase公司提供的具有高性能、高可靠性和易维护性的一个关系数据库管理系统。
1.2 Sybase 具有哪些Server以及这些Server的用途?
Adaptive Server
Adaptive Server是Sybase公司提供的适应性核心数据库服务器,用于管理整个数据库系统,包括用户、数据、资源等的管理和控制。
Backup Server
在备份和恢复时执行数据库的 dump 和 load.
XP Server
执行扩展存储过程
Monitor Server
为性能调试分析采集数据
Historical Server
保存来自Monitor Server 的数据,以备将来分析.
1.3 什么是登录帐户?
登录帐户是指能够登录到Adaptive Server数据库服务器的用户。登录帐户是成为数据库用户的前提和基础。ASE 安装完成后自动建立一个登录帐户sa. sa 的初始口令为空. sa 具有SA和SSO的角色.具有SSO的登录帐户可以添加其他登录帐户。
1.4 什么是角色,Sybase具有哪些常用的系统角色以及这些系统角色的作用?
角色是授予指定用户的一组权限.角色允许登录的用户执行必要的管理及安全任务。
Sybase具有的系统角色包括:
System Administrator (SA)
System Security Officer (SSO)
Server Operator (OPER)
SA的权限:
1.服务器的权限
2.磁盘资源分配的权限
3.存取的权限
4.备份和恢复
5.系统管理权限
SSO 的权限:
• 建立服务器的登录帐户并给予初始口令
• 更改登录帐户
• 修改口令
• 设置口令期限
• 建立并管理用户自定义角色
• 授权使用代理授权
• 对其他登录帐户授予及收回 SSO 及 OPER 角色
• 管理审计系统
• 对登录帐户加锁及解锁
• 删除登录帐户
OPER 的权限:
• 备份及恢复的权限
• 备份及装载所有的数据库
• 备份及装载所有的事务日志
1.5 什么是超级用户,它具有哪些特点?
sa登录帐户为Sybase数据库服务器的超级用户。
sa超级用户主要具有以下特点:
• 在安装Sybase数据库服务器的时候,由系统自动创建。
• 具有sa_role、sso_role和oper_role。
• 不可以被用户删除。
• 其口令初始为空。
1.6 什么是数据库设备?
数据库设备是存储组成数据库的对象的物理资源。“设备“不一定指特定的物理设备。它可以是一块盘,如 disk partition,也可以是操作系统的文件。
1.7 什么是数据库?
数据库用于存储一套互相关联的对象(如表)的有关信息(数据). 当用户建立自己的数据库时,需要定义如何组织自己的数据.
Adaptive Server 数据库对象包括: 表,规则,缺省,存储过程,触发器,视图等。
1.8 Sybase具有那些重要和必要的系统数据库,它们的作用分别是什么?
master :包含一些系统表,存储管理Adaptive Server所用的数据。
model :用于创建新数据库的模板数据库。
sybsystemprocs :包含存储系统存储过程的表。
sybsystemdb :包含用于分布式事务管理特性的数据。
tempdb :包含临时表
1.9 什么是数据库用户,以及登录帐户与数据库用户的区别?
一个登录帐户要存取一个数据库,他必须是那个数据库的用户。每个数据库的用户列在 sysusers 系统表中。要登录服务器,用户必须是登录帐户。要进入数据库,必须是数据库的有效用户。
1.10 什么是用户定义组?
一个组是包含多个数据库用户的一个集合。当一个组被建立时,它只存在于创建时所在的数据库。组用于对组的所有成员进行授予及回收权限。
每个用户自动属于 public 组。除了 public组,一个用户只能属于DBO建立的一个组。
1.11 什么是数据库的属主?
数据库的属主是数据库的拥有者。建立数据库的登录帐户是数据库的最初属主。数据库属主可以把属主地位转给其他用户。
每个数据库有一个属主。数据库属主在数据库中可以:
• 设置数据库选项
• 增加及删除数据库用户
• 授予及回收建立数据库对象的权限
• 执行 checkpoint
• 检查数据库一致性
• 执行系统操作员的任务
DBO 可以对数据库的对象行使全部权限,如果:
• DBO 有 sa_role角色, 或
• 对象的属主授予全权给 DBO, 或
• DBO 使用 setuser 转为对象属主的身份
1.12 什么是数据库选项,Sybase具有那些常用的数据库选项?
数据库选项控制数据库行为的不同方面。
例如:
• 事务的行为
• 表中列的缺省
• 用户存取的限制
• 恢复及 bcp 操作的性能
• 日志的行为
数据库选项与配置参数和set设置的选项类似,只是范围不同:
• 配置参数影响服务器范围的行为
• 数据库选项影响数据库的行为
• set 选项影响当前对话或存储过程
数据库有如下选项:
1. allow nulls by default
2. auto identity
3. dbo use only
4. ddl in tran
5. identity in nonunique index
6. read only
7. single user
8. unique auto_identity index
9. abort tran on log full
10. no chkpt on recovery
11. no free space acctg
12. select into/bulkcopy/pllsort
13. trunc log on chkpt
关于数据库选项的详细使用方法请参考本手册 3.4 数据库选项(dboption)的使用与管理。
1.13 什么是数据库一致性检查,Sybase具有哪些常用的检查命令?
数据库一致性检查通过dbcc 命令检查数据库的逻辑的和物理的一致性. dbcc 的两个基本点主要功能是:
使用checkstorage 或 checktable 及 checkdb 在页一级和行一级检查页链和数据指针.
使用checkstorage, checkalloc, checkverify, tablealloc, 和 indexalloc 检查页分配。
1.14 什么是 APL表和DOL表,它们的特点和区别?
APL 表是指在事务活动期间,数据页和所有相关的索引叶级页加锁, 以阻止其它用户的存取.
Datapages 表是指在事务活动期间,只对数据页加锁, 所有相关的索引叶级页不加锁.当索引叶级页需要修改时,只加Latches 锁防止存取,但这个锁不会保持到事务结束。
Datarows 表是指在事务活动期间, 只对数据行加锁, 其他用户可以使用数据页的其它部分.当索引叶级页需要修改时,只加Latches 锁防止存取,但这个锁不会保持到事务结束。
Datapages 和 Datarows 表就是 data-only locking (DOL) 表. 名称 ’data-only locked’ 就是指没有索引页上的锁竞争。
1.15 什么是Sybase的锁,它具有哪些类型以及这些锁的作用?
Adaptive Server 通过锁的方式保护被活动的事务正在使用的表,数据页,或数据行. 锁是一种并发控制机制: 它确保事务内及事务间的数据一致性. 在多用户环境中需要锁, 因为在同一时刻多个用户可能对同一数据进行操作。
锁的类型及作用如下:
Shared 锁:
Adaptive Server 对读操作加shared 锁. 如果一个shared 锁已经加在一个表、数据页,或数据行,或索引页上,即使加锁的事务仍然是活动的,其它事务也可以获得 shared 锁. 然而,在表或页面或行上的所有shared锁被释放之前, 没有事务可以获得对这个表或页面或行的 exclusive 锁. 这意味着多个事务可以同时读表,页面或行, 但没有事务可以对已被加shared 锁的表,页面或行中的数据进行修改. 需要 exclusive 锁的事务必须等待 shared 锁释放后才能继续.
Exclusive 锁:
Adaptive Server 对数据更改操作加 exclusive 锁. 如果一个事务获得了一个 exclusive 锁, 那么在这个事务结束时释放exclusive 锁之前,其它事务在相应的表或页面或行上不能获得任何类型的锁. 其它事务必须等待exclusive 锁释放后才能继续.
Update 锁:
Adaptive Server 在update, delete, 或 fetch 的初始阶段(当页面或行被读时)加 update 锁. 加 update 锁的页面或行允许加 shared 锁,但是不允许加update 或 exclusive 锁. Update 锁对避免死锁和锁竞争有帮助. 如果页面或行的内容需要修改, 只要没有其它shared锁在上面, update 锁立即升级为exclusive 锁.
Intent 锁:
Intent 锁指出在一个表上有页级或行级锁. Adaptive Server 对每一个有shared 或 exclusive的页或行锁的表加 intent 表锁, 所以intent 锁可以是exclusive 锁, 也可以是 shared 锁. 设置 intent 锁可以防止其它后来的事务在有锁住的页的表上获得有冲突的表级锁. Intent 锁持续的时间和事务中页或行锁的时间一样长.
1.16 什么是数据库备份和恢复?
数据库备份是指通过dump命令把数据库中的内容拷贝到磁带或操作系统文件上的过程。
数据库恢复是指通过load命令把数据库的备份内容装载回数据库的过程。
遇到介质故障(如磁盘崩溃)时,仅当用户有数据库的及事务日志的定期备份的情况下才可恢复该数据库.
要完全恢复,则必须定期使用 dump database 和 dump transaction命令备份数据库和日志,发生故障时,才可用 load database 和 load transaction 命令恢复数据库。
2. 日常维护篇
2.1 常规数据库服务器维护的基本要点和步骤?
常规数据库服务器的维护主要是由系统管理员来完成的,主要维护工作包括:
1. 对各ASE用户担当的角色和特权进行分派
为了保证数据库服务器访问的安全性,以及区分各种登录帐户的工作范围,首先需要系统管理员(这里一般情况是指具有sa_role的登录帐户)添加具有一定角色的登录帐户以便进行相关的数据库服务器管理工作。例如对登录帐户的管理;对数据库服务器安全设置的管理;对相关系统参数的管理;以及对于数据库服务器中特殊的option的管理,如DTM,HA等等。
同时,系统管理员也可以完成对数据库用户的管理工作。例如授予数据库用户查询,插入,删除数据表中数据,以及执行某个存储过程的权限等等。这个工作也可以由数据库属主来完成。
2. 管理和监视磁盘空间的使用状况
这里主要是指对数据库空间的管理,包括数据段和日志段;以及数据库设备空间的管理。
系统管理员要定期的对数据库空间和数据库设备空间进行监视及管理。
(1) 数据库空间
可以在isql环境下执行”sp_helpdb”系统存储过程,显示当前数据库空间的使用情况,观察数据段空间是否足够,是否需要执行”alter database”命令进行扩充;观察日志段空间是否足够,是否需要执行”alter database”命令进行扩充,或者执行”dump tran”命令截断日志。
(2) 数据库设备空间
首先建议用户保存每一次的数据库设备创建的脚本文件,以及每一次每一个数据库设备的使用状况,做到对每一个数据库设备的剩余空间心中有数。因为数据库设备的剩余空间目前只能在Sybase Central的管理工具中有明显标识,而在isql环境下没有很直接的命令或者存储过程查看数据库设备的剩余空间。如果没有数据库设备的使用记录,又无法调用Sybase Central图形化管理工具,则会给系统管理员的管理工作带来不便。
当数据库服务器中几乎没有可以使用的数据库设备时,就需要在isql环境下执行”disk init”命令创建新的数据库设备以备用。
3. 进行日常的数据库备份与恢复
首先需要系统管理员根据系统运行状况以及业务需求指定相应的数据库备份与恢复策略,之后以该策略为指导进行日常数据库备份与恢复。如何指定备份策略以及进行数据库备份与恢复的必要步骤,请参考例行数据库备份恢复策略和必要步骤。
4. 诊断系统故障
在系统诊断的过程中,首先需要具有一定系统维护经验的系统管理员确认是操作系统的问题,还是Sybase数据库服务器的问题。以下简要步骤只是说明了,当碰到数据库服务器的问题时该如何做。
(1)详细记录出现系统故障时的现象,以及在应用过程中可能出现在客户端的错误提示信息
(2)查看Sybase错误日志文件:$SYBASE/ASE-12_5/install/server_name.log,查找不正常的信息提示或者出现的错误代码。如果此时能够确认是数据库本身的问题,例如数据页或者索引损坏,那么可以先执行DBCC命令进一步确认问题的确切所在。(DBCC命令的使用,请参照后面的相关章节)
(3)按照错误日志文件中所提示的错误代码,查看《Troubleshooting and Error Messages Guide》并按书中所提示的纠错步骤进行处理
(4)在自行无法解决的情况下,可以联系Sybase工程师寻求帮助,同时提供:
――详细的产品版本信息
――详细的现象描述
――详细的错误信息提示
――必要的查询输出结果
――完整的数据库服务器错误日志文件
5. 调整ASE的性能
这是一项需要长时间的,不断尝试的,不断测试的,不断优化的循序渐进的过程。针对不同的数据库服务器的运行环境,不同的业务需求就会出现不同的性能要求。
我们说调优是一门艺术,就是要在不断磨合的过程中以求得数据库服务器的最佳使用状态。
Sybase会提供系列的性能分析的工具来帮助用户实现最有效的调优方法。具体说明请参照查找定位数据库服务器性能问题的常用工具和方法。
2.2 例行数据库备份恢复策略和必要步骤?
在例行数据库备份之前,首先要制定有效的数据库备份策略,即应该多长时间备份一次数据库。这主要是基于当发生系统故障时( 例如磁盘故障 ) 应用系统允许丢失多长时间的数据。
例如某个系统允许丢失一个小时的数据, 那么可以考虑在每天的固定时刻对整个数据库做一次备份, 并每一个小时对数据库日志做一次备份。那么当系统故障排除之后,就可以用最近一次的数据库备份以及直到系统故障发生时的日志备份来对数据库数据进行恢复。
这里要注意的是:第一,保留系统出现故障前的最近一次完整的有效的数据库备份,这很重要;第二,在做数据库恢复时,要先恢复完整的数据库备份,再依次恢复每一小时的日志备份,直到出现系统故障前的最后一次日志备份。
在备份数据库时应该注意的问题:
1.在做数据库备份操作之前, 应对数据库做 dbcc 检查, 以确保备份的数据库是完好的数据库。如果数据库有损坏, 备份时可能不会报错, 但将来可能无法恢复。
2.通常情况下, 只有发生严重故障后,需要恢复数据库备份时才进行恢复数据库的操作。但是 Sybase 建议偶尔对备份的数据库恢复到一个测试环境上, 是有利于保证备份工作过程正常以及数据库备份有效的很好的测试方法。
3.Master 数据库的备份也不能忽略。每次master 数据库的内容有变动时, 例如增加login, 增加设备, 增加用户数据库等,应及时备份 master 数据库。
用户可以根据自己的应用制定可行的数据库备份恢复的方案。SYBASE 数据库的备份主要是通过 dump 命令来实现的,分为数据库备份和日志备份;数据库的恢复主要是通过 load 命令来实现的,也分为数据库恢复和日志恢复。语法命令,请参照以后的相关章节。
2.3 查找定位数据库服务器性能问题的常用工具和方法?
1. 实用工具类
(1) 在Sybase Central图形化管理工具中,使用Monitor Server监视数据库服务器性能
从上图中看到,在Sybase Central图形化管理工具右边所列出的条目就是所有可以以图形化的方式监测的数据库服务器的性能指标。
(2) isql –p
在使用isql登录数据库服务器时,加-p选项,那么之后执行的每一条SQL语句都可以得到它的执行时间,这里所记的是CPU的时钟时间。
(3) reorg
该命令用于优化DOL表的表空间及其索引。使用方法,请参考如何执行reorg 系列命令来优化DOL表及其索引
(4) optdiag
该命令用于显示数据库服务器中的表和索引的统计值信息。使用方法,请参考如何执行optdiag命令来监控表和索引的物理使用情况
2. Set 命令
(1) statistics io
执行方法:
1> set statistics io on
2> go
之后所执行的任何SQL语句,执行完毕后,都会得到物理读、写,逻辑读、写的次数
(2) statistics time
执行方法:
1> set statistics time on
2> go
之后所执行的任何SQL语句,执行完毕后,都会得到执行时间,以CPU的时钟时间记时。
(3) showplan
执行方法:
1> set showplan on
2> go
之后所执行的任何SQL语句,执行完毕后,显示由调优器所选择的执行计划,包括执行步骤,索引的使用,I/O的使用状况等等。
(4) showplan and noexec
执行方法:
1> set showplan,noexec on
2> go
之后所执行的任何SQL语句,不需要执行,就直接显示由调优器所选择的执行计划,包括执行步骤,索引的使用,I/O的使用状况等等。
3. 系统存储过程
(1) 进程行为查看类
① sp_who
请参看如何查看当前数据库中的进程信息
② sp_lock
请参看如何查看当前数据库中锁发生的情况
③ sp_object_stats
执行方法:
1> sp_object_stats “00:20:00”,20
2> go
以上例子将输出在当前执行这条语句的数据库中,在20分钟内锁竞争最激烈的前20张表
④ sp_showplan
执行方法:
1> sp_showplan 20, null, null, null
2> go
以上例子输出20号进程所执行的SQL语句的执行计划。
(2) 空间使用类
① sp_spaceused
执行方法:
1> sp_spaceused table_name
2> go
输出指定表的空间使用情况。
② sp_helpartition
执行方法:
1> sp_helpartition table_name
2> go
输出指定表的分区使用情况
③ sp_estspace
执行方法:
1> sp_estspace table_name,nr_of_rows
2> go
输出指定表(table_name)中如果存在指定行数(nr_of_rows)的数据,估计的空间使用情况。
④ sp_helpsegment
执行方法:
1> sp_helpsegment seg_name
2> go
输出指定段的使用情况。
⑤ sp_helpcache
执行方法:
1> sp_helpcache cache_name
2> go
输出指定缓存的使用情况。
(3) 系统配置类
① sp_configure
请参看如何执行sp_configure 系统存储过程来查看系统参数
② sp_cacheconfig
请参看如何配置用户自定义命名缓存以及缓冲池
③ sp_poolconfig
请参看如何配置用户自定义命名缓存以及缓冲池
(4) 任务行为查看类
① sp_sysmon
请参看如何使用sp_sysmon存储过程来查看当前数据库的性能情况
② sp_monitor
执行方法:
1> sp_monitor
2> go
输出CPU,I/O使用情况
4. dbcc trace命令
(1) dbcc trace(3604,302,310)
执行方法:
1> dbcc trace(3604,302,310)
2> go
输出更为详细的SQL语句执行计划
2.4 开发数据库应用时需要开发人员重点关注的几个问题?
通常,开发一个应用包括如下几个阶段或步骤:
1. 弄清业务需求,定义业务规则
2. 规划应用开发环境,特别是定义软件规范说明
3. 完成数据库的逻辑和物理设计
4. 应用程序设计(编程和调试)
5. 运行与维护
在程序设计时,要注意如下两个问题:
1. 对于复杂的业务规则应放在服务器上去实现,而不是在客户机上实现,这样做将使程序设计更省力,且效果更好。
2. 由客户机程序将“批”发送到服务器,要求在程序结构中包含对错误的处理和对事务的管理能力。
2.5 如何在Windows 平台上启动和关闭Sybase数据库服务器?
有两种常用方式:
1. 使用Sybase工具:Sybase Central
打开Sybase Central-->找到所需要启动的Sybase数据库服务器的名称-->鼠标右键单击该名称,出现弹出框
启动:-->单击”start”
关闭:-->单击”stop”
2. 使用Windows操作系统提供的服务管理
打开“Control Panel”中的“Service”--> 找到所需要启动的Sybase数据库服务器的服务名称-->鼠标右键单击该名称,出现弹出框
启动:-->单击”start”
关闭:-->单击”stop”
2.6 如何在UNIX平台上启动和关闭Sybase数据库服务器?
启动:
使用SYBASE用户在操作系统提示符下执行:
startserver –f RUN_servername
关闭:
isql登录到数据库服务器,执行:
1> shutdown
2> go
注:如果需要关闭备份服务器,执行:
1> shutdown SYB_BACKUP
2> go
2.7 如何使用交互式管理工具isql?
在UNIX操作系统平台,使用SYBASE用户执行该命令;或者在Windows平台的DOS窗口中执行该命令。具体命令的通常使用方法如下所示:
isql –Uuser_name –Ppassword –Sserver_name
其中user_name:登录帐户名,例如sa
password:登录帐户的口令,例如sa的口令123456
server_name:数据库服务器的名称或者是在Dsedit使用程序中定义的相应
的服务器名称,例如SYB125
正确使用这个命令后,会进入1>提示符,而没有任何错误、信息提示。
2.8 如何在Windows操作系统上安装Open Client12.0
1. 选择Open Client的正版。
2. 安装Open Client时,如果安装程序提示是否覆盖相关.DLL文件时,一定选择NO。
3. 编辑客户端win98/win95的autoexec.bat和configure.sys文件(在其中添加自动执行SYBASE设置环境变量的批处理文件sybase.bat,以及添加SYBASE的路径,DLL路径,BIN路径)。
#假设SYBASE安装在C:\SYBASE
(1) 编辑autoexec.bat:
path='c:\sybase;c:\sybase\ocs-12_0\dll;c:\sybase\ocs-12_0\bin';
call c:\sybase\sybase.bat
(2) 编辑config.sys:
shell=c:\windows\command.com /p /e:2048
files=50
2.9 如何使用图形化管理工具Sybase Central?
这里主要介绍windows平台的java版的Sybase Central和windows版的Sybase Central。
Sybase Central是一个用于管理数据库及相关产品的简单易用的图形化管理工具。它能够帮助您管理数据库服务器,数据库对象以及执行一些系统管理的任务,同时为每一个任务都能够提供便于参考的循序渐进的图形化的步骤说明,使得系统管理员在管理过程中游刃有余。
下面介绍使用方法。
java版的Sybase Central-------
1.打开Sybase Central图形化界面:
在“开始”菜单中寻找: 开始-->程序-->Sybase-->Sybase Central Java 版,鼠标单击 Sybase Central Java 版,出现以下界面:
2.连接数据库服务器
鼠标单击菜单中:Tools-->Connect,出现以下连接窗口:
输入登录帐户名,口令,选择需要连接的数据库服务器名称,之后鼠标单击“OK”按钮,即可看到如下界面:
现在您就可以对您的数据库服务器进行需要的管理工作了。
windows版的Sybase Central----
1.打开Sybase Central图形化界面:
在Sybase产品的安装目录下执行"E:\sybase\Sybase Central 3.2\win32\scview.exe"(这里Sybase产品安装在e:\sybase目录下),出现以下界面:
2.连接数据库服务器
鼠标双击需要连接的数据库服务器名,出现登录界面:
输入登录帐户名,口令,之后鼠标单击 “OK”按钮,即可看到如下界面:
现在您就可以对您的数据库服务器进行需要的管理工作了。
2.10 如何使用图形化管理工具Dsedit实用程序?
Dsedit实用程序是客户端用于配置服务器端数据库服务器连接属性的配置工具。在客户端访问服务器端数据库服务器之前,数据库服务器连接属性的配置是必须的也是必要的,那么连接属性的配置将使用Dsedit实用程序来完成。
这里主要介绍windows平台的Dsedit实用程序的使用方法。
1.打开Dsedit实用程序图形化管理工具:
在“开始”菜单中寻找: 开始-->程序-->Sybase-->Dsedit实用程序,鼠标单击
Dsedit实用程序,出现以下界面:
鼠标单击”OK”按钮,进入:
2.添加数据库服务器名称:
鼠标单击菜单中:Server Object-->Add,出现以下窗口:
输入数据库服务器名称,鼠标单击”OK”按钮,出现以下界面:
3.添加数据库服务器地址:
用 鼠标选择Server Address条目,再鼠标右键单击该条目,出现弹出框,选择”Modify Attribute…”,出现以下对话框:
鼠标单击”Add”按钮,
按上图中所示格式输入数据库服务器的地址和端口号,鼠标单击”OK”按钮,
鼠标继续单击”OK”按钮,完成数据库服务器地址的配置。
关闭该图形化窗口,即完成数据库服务器连接属性的配置。
2.11 如何创建登录帐户?
在isql环境下执行:
1> sp_addlogin login_name,password
2> go
例:
1> sp_addlogin user1,”123456”
2> go
(注:该存储过程还提供其它参数,如需使用,请参阅资料《Reference Manual》)
2.12 如何修改自己以及其登录帐户的口令?
在isql环境下执行:
1> sp_password caller_password,new_password,login_name
2> go
例:
1> sp_password “111111”,”222222”,user1
2> go
其中:
caller_password:登录时所使用的login的口令。在以上例子中,如果登录时使用的是sa,那么“111111”就是sa的口令;如果登录时使用的是user1,那么“111111”就是user1的登录口令。
new_password:需要更新的login的新口令。在以上例子中,“222222”是user1的新口令。
login_name:需要更新的login名称。如果该参数不提供,则默认更改登录时所使用的login名称。
2.13 如何查看登录帐户的信息?
在isql环境下执行:
1> sp_displaylogin login_name
2> go
例:
1> sp_displaylogin user1
2> go
其中:
login_name:为需要查看的login名称。如不指定,则默认为登录时所使用的login名
称。
2.14 如何设置登录帐户的缺省数据库?
方法一:
在创建登录帐户时即可指定,具体方法如下,在isql环境下执行:
1> sp_addlogin login_name,password,default_db
2> go
例;
1> sp_addlogin user1,”123456”,pubs2
2> go
(注:这里如果不指定,缺省数据库为master)
方法二:
为已经创建好的登录帐户修改缺省数据库,具体方法如下,在isql环境下执行:
1> sp_modifylogin login_name,”defdb”,db_name
2> go
例:
1> sp_modifylogin user1,”defdb”,pubs2
2> go
上例中,将login是user1的缺省数据库设置为pubs2数据库。
2.15 如何为登录帐户授予系统角色?
方法一:
在isql环境下执行:
1> sp_role “grant”,role_name,login_name
2> go
例:
1> sp_role “grant”,”sybase_ts_role”,user1
2> go
上例中,将系统角色sybase_ts_role授予登录帐户user1。
方法二:
在isql环境中执行:
1> grant role role_name to login_name
2> go
例;
1> grant role “sybase_ts_role” to user1
2> go
2.16 如何创建数据库设备?
在isql环境中执行:
1> disk init
2> name=”device_name”,
3> physname=”physicalname”,
4> vdevno=virtual_device_number,
5> size=device_size
例:
1> disk init
2> name=”DATA1”,
3> physname=”c:\sybase\data\data1.dat”,
4> vdevno=6,
5> size=5120
以上例子中,创建了一个名为DATA1的设备,设备文件为c:\sybase\data\data1.dat,虚拟设备号为6,大小为10M(size默认大小的单位为2K)
注:在ASE125以上版本中,device_size单位可以自定义为K,M,G。使用这些单位时,需要用双引号将device_size的值引起来,例如:”100K”,”10M”,”1G”。
2.17 如何把数据库设备设置为缺省设备?
在isql环境下执行:
1> sp_diskdefault device_name,defaulton
2> go
例:
1> sp_diskdefault “DATA1”,defaulton
2> go
以上例子中,将数据库设备”DATA1”设置为缺省设备。
2.18 如何镜像数据库设备和取消数据库设备镜像?
镜像数据库设备:
在isql环境下执行:
1> disk mirror
2> name=”device_name”,
3> mirror=”pathname”
4> go
例:
1> disk mirror
2> name=”DATA1”,
3> mirror=”c:\sybase\data\DATA1_M.dat”
4> go
以上例子中为数据库设备DATA1创建镜像DATA1_M.dat.
取消数据库设备镜像:
1> disk unmirror
2> name=”device_name”,
3> side=”primary”|”secondary”,
4> mode=retain|remove
5> go
例:
1> disk unmirror
2> name=”DATA1”,
3> side=”primary”,
4> mode=remove
其中:
side:指定所要取消镜像的是primary(主设备),还是secondary(镜像设备)。如果不指定,默认取消secondary(镜像设备)。
mode:指定取消镜像这个操作是remove(永久操作),还是retain(临时操作)。如果不指定,默认为retain(临时操作)。临时取消镜像的操作,可以使用”disk remirror”命令恢复其镜像。
以上例子中,永久取消数据库设备DATA1的主设备镜像。
附:
使用disk remirror命令恢复被临时取消的数据库设备镜像。
1> disk remirror
2> name=”device_name”
3> go
2.19 如何创建数据库?
在isql环境下执行:
1> create database database_name
2> on data_device_name=data_size
3> log on log_device_name=log_size
4> go
例:
1> create database DB1
2> on DATA1=100
3> log on LOG1=20
4> go
以上例子中创建了一个数据为100M,日志为20M,总大小为120M的数据库DB1。
注:在ASE125以上版本中,data _size和log_ size单位可以自定义为K,M,G。使用这些单位时,需要用双引号将data_size,log_size的值引起来,例如:”100K”,”10M”,”1G”。
2.20 如何在Sybase Central中配置Monitor Server?
1.运行$SYBASE\ASEP_Win32\jdk1_1_8-win.exe,安装路径c:\JDK1.1.8
2.配置环境变量
(1) JAVA_HOME=c:\JDK1.1.8
(2) CLASSPATH=d:\sybase\ASEP\3pclass.zip;d:\sybase\ASEP\monclass.zip;c:\JDK1.1.8\lib;c:\JDK1.1.8\lib\classes.zip
(3) 在PATH环境变量中加入:c:\JDK1.1.8\bin;c:\sybase\Sybase Central 3.2\win32且将c:\JDK1.1.8\bin放在开始处,并且确认PATH环境变量中包含c:\WINNT或者c:\Windows.
3.复制文件
(1) 将 c:\JDK1.1.8\bin下地文件jre.exe 和 jrew.exe复制到 c:\WINNT或者
c:\Windows(视不同操作系统决定)目录下
(2) 复制$SYBASE\ASE_12-5\bin\libunic.dll 到 c:\WINNT\system32目录下
4.创建Sybase Central快捷方式
在桌面上创建Sybase Central快捷方式之后,修改该快捷方式的属性:
在属性对话框中选择”shortcut”页,在”start in:”的输入框中填入:
c:\jdk1.1.8\bin
5.重启机器
2.21 如何配置用户自定义命名缓存以及缓冲池?
定义命名缓存:
在isql环境中执行:
1> sp_cacheconfig cache_name,size
2> go
例:
1> sp_cacheconfig cache_a,”100K”
2> go
其中:
size:命名缓存的大小,单位可以是P/K/M/G,默认单位为K。
上例中创建了一个100K的命名缓存cache_a。
(注:该命令还提供其它参数,如定义命名缓存的类型等。若需使用,请参阅资料《Reference Manual》)
定义缓冲池:
在isql环境中执行:
1> sp_poolconfig cache_name,mem_size,config_pool
2> go
例:
1> sp_poolconfig cache_a,”100M”,”16K”
2> go
其中:
mem_size:缓冲池的大小,单位可以是P/K/M/G,默认单位为K,最小指定值为512K。
config_pool:I/O大小,可以为2K,4K,8K,16K
上例中创建一个大小为100M的缓冲池,其I/O大小为16K。
(注:该命令的其它用法,请参阅资料《Reference Manual》)
2.22 如何扩展数据库?
扩展数据空间:
alter database db_name on device_name
扩展日志空间:
alter database db_name log on device_name
2.23 如何设置数据库为单用户模式?
use master
go
sp_dboption db_name, “single user”, true
go
use db_name
go
checkpoint
go
2.24 如何把数据库设置为自动截断事务日志?
use master
go
sp_dboption db_name, “trunc log on chkpt”, true
go
use db_name
go
checkpoint
go
2.25 为了可以在用户事务中执行数据定义语言,应如何设置数据库选项?
use master
go
sp_dboption db_name, “ddl in tran ”, true
go
use db_name
go
checkpoint
go
2.26 如何设置数据库选项可以在用户表中自动添加序号生成器?
use master
go
sp_dboption db_name, “auto identity”, true
go
use db_name
go
checkpoint
go
2.27 如何为数据库创建数据库用户?
语法:sp_adduser loginame [, name_in_db [, grpname]]
举例:
1.sp_adduser margaret
将"margaret"增加为数据库用户。他的数据库用户名与Adaptive Server 的登录名(login name)相同, 并且属于缺省组"public"。
2.sp_adduser haroldq, harold, fort_mudge
将"haroldq"增加为数据库用户。当 "haroldq"使用当前数据库时,他的名字为 "harold"。该用户属于“ fort_mudge”组,同时也属于缺省组 "public"。
2.28 如何创建用户自定义组?
语法:sp_addgroup grpname
举例:
1.sp_addgroup accounting
增加一个名为“accounting”的组。
2.29 如何改变用户自定义组中数据库用户?
语法:sp_changegroup grpname, username
举例:
1.sp_changegroup fort_mudge, albert
用户"albert"现在成为"fort_mudge"组的成员。
2.30 如何查看数据库空间的大小?
举例:
1.查看全部数据库的大小:
sp_helpdb
name db_size owner dbid created status
-------------- -------- ----- ---- -------------- ------------------
master 5.0 MB sa 1 Jan 01, 1900 no options set
model 2.0 MB sa 3 Jan 01, 1900 no options set
pubs2 2.0 MB sa 6 Sep 20, 1995 no options set
sybsystemprocs 16.0 MB sa 4 Sep 20, 1995 trunc log on chkp
tempdb 2.0 MB sa 2 Sep 20, 1995 select into/bulkcopy
Displays information about all the databases in Adaptive Server.
2.查看指定数据库的大小
sp_helpdb pubs2
name db_size owner dbid created status
----- ------- ----- ---- ------------ ----------------------
pubs2 2.0 MB sa 4 Mar 05, 1993 abort tran when log full
device_fragments size usage free kbytes
----------------- ------ ------------ -------------
master 2.0 MB data and log 576
name attribute_class attribute int_value char_value comments
------- --------------- ------------- --------- ----------- --------
pubs2 buffer manager cache binding 1 pubs2_cache NULL
Displays information about the pubs2 database.
2.31 如何改变数据库的属主?
语法:sp_changedbowner loginame [, true ]
举例:
1.sp_changedbowner albert
用户 "albert"成为当前数据库的属主。
2.32 如何执行sp_configure 系统存储过程来查看系统参数?
1.查看全部参数的配置:
isql -Usa –P –Ssevername
1> sp_configure
2> go
2.查看指定参数(如:查看“用户连接数”)
isql -Usa –P –Ssevername
1> sp_configure “number of user connections”
2>go
2.33 如何为当前的Sybase数据库服务器设置最大可用内存?
在ASE12.5中,当前SYBASE数据库服务器可用的最大内存由参数“max memory”配置,其含义是ASE SERVER可分配的最大共享内存(pre-ASE12.5,使用参数total memory)。ASE12.5采用动态分配内存机制,在安装时由于没有什么进程、任务需要用到内存,此时系统分配的共享内存是很小(可用sp_configure “total physical memory”查看当前的内存使用情况)。因此即使我们将“max memory”配置到很大的值,比如2G、4G,但ASE SERVER在实际需要时并不一定能分到“max memory”指定的内存。因此,在安装时,必须先将“allocate max shared memory”设置为1(在SERVER启动时就划分”max memory”的值的内存),再启动SERVER,如果启动正常,那么说明“max memory”的值是系统可以接受,此时可以把“allocate max shared memory”设置为0,让ASE SERVER动态分配内存;如果启动失败,则要查看操作系统有关内存的配置参数是否正确设置。
2.34 影响数据库服务器内存配置的基本参数
设置Adptive Server12.5的内存配置时,使用sp_configure命令,用具体值指定每一项内存需求,例如过程缓存和缺省数据缓存的大小。以下3个参数影响内存的分配(不同于以前版本):
max memory 该参数是以2K为单位的数值,决定可以分配给Adaptive Server的最大内存数。为动态参数,改变后不必重起Adaptive server。
allocate max shared memory 该参数有0和1两个值。决定sybase server启动时,是否一次分配给Adaptive server 的内存为max memory指定大小。值为1时启动sybase server,一次分配max memory大小的内存;值为0时启动sybase server,一次只分配按实际参数配置所需要的内存。例如,max memory为500MB,若设置该参数为0(缺省值), Adaptive Server的具体配置参数和核心所需内存仅100M,则Adaptive server启动后只从OS获取100MB内存,仅当动态参数改变需要额外内存时才考虑从OS获取所需内存,最大不超过max memory大小;若设置该参数为1,则Adaptive Server在启动时一次即获取500MB内存,而不管空闲内存是多少。
Dynamic allocation on demand 该参数用以确定有新的内存请求时,是立即获得内存资源还是仅在需要时分配。是动态参数,取值范围为0和1。例如,假设number of user connections原值为50,改为150,因每个用户连接需要112K内存,则(150-50)个用户需要使用的内存数量为11MB(100 x 112/1024)。若设置该参数值为1,当有第51个连接需求时,才分配一个连接需要的内存,也就是说是随着真正的需要逐渐获取连接所需内存,直到150个连接局限;如果设置该参数值为0,Adaptive Server立即为用户连接分配(150-50)个用户需要的11MB内存。
2.35 如何为当前的Sybase ASE 12.5设置可用的数据缓存?
total data cach size以K字节显示当前有效的数据缓存大小,为只读参数,只能使用sp_configure查看,不能配置。配置数据缓存,必须使用sp_cacheconfig。ASE12.5的 default data cache必须手动重配,默认值8M不能满足性能需要。注意该参数为静态参数,必须重起ASE。
示例:为Adaptive Server配置100MB数据缓存
sp_cacheconfig “ default data cache”,”100M”
2.36 如何为当前的Sybase ASE 12.5设置可用的过程缓存?
参数procedure cach size(以2k为单位)决定了过程缓存的大小,该参数使用sp_configure配置,为动态参数。
示例:为Adaptive Server配置100MB过程缓存
sp_configure “procedure cache size”,”100M”
2.37 如何为当前的Sybase数据库服务器设置可用的最大数据库设备数量?
Number of device参数控制了Adaptive Server能够使用的数据库设备的数目。
示例:最多允许使用100个逻辑设备
sp_configure “number of devices”, 100
2.38 如何为当前的Sybase数据库服务器设置可用的最大锁数?
Adaptive Server中的所有进程共享一个公共的锁缓冲池,所需要的锁的数目取决于正在运行的操作的数目和性质。Number of locks参数控制了Adaptive Server上进程可用的锁的数目。如果所有配置的锁都已经用尽,Adaptive Server会显示一个服务器级的错误消息。另外,缓冲池锁会占用内存。
例如:允许最多使用100,000个锁
sp_configure “number of locks”, 100000
2.39 如何为当前的Sybase数据库服务器设置可用的最大用户连接数?
参数number of user connections用于设置可以同时连接到Adaptive Server的最大用户数。其中,用户连接包括用任何登录名(login)所做的登录连接,一个特定登录名(login)同时的多次登录被认为是多个连接。
例如:最多允许同时的100个用户连接
sp_configure “number of user connections”, 100
2.40 如何备份数据库?
当遇到介质故障时(如磁盘老化损坏),仅当你有数据库的定期备份及后继的事务日志备份的情况下才可恢复该数据库。要完全恢复,必须定期使用dump database 命令备份数据库并结合dump transaction命令备份日志。Dump database命令允许动态执行,即转储/备份数据库期间允许其他用户对该数据库中的数据进行更改,这使得定期备份数据库更加方便。
示例:使用单一磁带设备进行转储/备份:
在UNIX操作系统中:
dump database pubs2 to "/dev/nrmt4"
在Windows NT操作系统中
dump database pubs2 to "\\.\tape0"
你也可以把数据库备份/转储到一个操作系统文件中。例如,在NT操作系统环境中:
dump database pubs2 to "d:\backups\backup1.dat"
2.41 如何进行数据库的增量备份?
可以使用dump transaction命令(或其缩写dump tran)对事务日志进行例行的增量备份。Dump transaction与许多操作系统提供的增量备份类似。它复制并且备份事务日志,提供自上一次数据库备份或者事务日志转储以来对数据库所进行的所有改变的记录。Dump transaction复制/备份完日志后,会截断其中不活动的部分。
Dump transaction比完全数据库备份所花费的时间和存储空间要少,一般更为常用。注意,只有将数据库的数据和日志分别存储在不同的数据库逻辑设备上时,才可以运行dump transaction。示例:
在UNIX操作系统中:
dump transaction pubs2 to "/dev/nrmt4"
在Windows NT操作系统中
dump transaction to "\\.\tape0"
你也可以把数据库备份/转储到一个操作系统文件中。
例如,在NT操作系统环境中:
dump transaction pubs2 to "d:\backups\backup1.dat"
2.42 如何恢复数据库?
建议执行的步骤:
获取故障设备上每个数据库的当前日志转储(使用dump transaction的no_truncate选项)
检查设备上每个数据库的空间使用情况
收集完故障设备上所有数据库的这些信息后,删除每个受故障设备影响的数据库
删除故障设备
初始化新设备
重新创建数据库,每次创建一个
将数据库的备份装载到每个数据库
按事务日志转储创建时的顺序加载每个事务日志转储
online database YOUR_DB_NAME
2.43 如何截断数据库的事务日志?
事务日志填满数据库中的日志空间后,可能不能使用转储事务日志的办法备份并且清除原来存在的日志,因为转储日志这个动作本身也需要记录日志。
这时候,可以首先使用dump transaction database_name with truncate_only命令,该命令只是截断/清除事务日志,并不生成实际的备份。
如果不能奏效,可以使用dump transaction database_name with no_log命令。该命令也是仅仅清除既有的事务日志,不生成实际的备份文件,且该命令本身不记日志。
如果该命令还不能奏效,应当使用alter database命令为此数据库的日志分配额外的空间,随后执行dump transaction。
2.44 如何恢复数据库到某一具体时间?
可以将数据库恢复到事务日志中的指定时间点。为此,使用load transaction的until_time选项。该功能在诸如用户不小心从数据库中删除了一个重要表时很有用;可用util_time选项将对包含此表的数据库的改变恢复到表被删除前的状态。
要在数据库破坏后有效使用until_time,用户必须知道错误发生的确切时间,然后把包含误操作的事务日志转储出来,再如示例一样进行装载。示例:
load transaction database_name
from “/dev/nrmt5”
with until_time = “Mar 26 1997 12:35:59:650PM”
注意:这样装载事务日志后,AdaptiveServer重新启动数据库日志序列,在可以转储另一个事务日志之前,需要转储数据库。
2.45 如何把表、索引等数据库对象的定义从数据库中导出来?
使用defncopy.exe程序可以把指定的视图、规则、缺省值、触发器或者存储过程的定义从数据库导出到操作系统文件中,或者从操作系统文件导入到数据库中。它位于$SYBASE/OCS-12_5/bin中。
示例1:在ABC服务器上,将定义从new_proc文件拷入stagedb数据库中,使用sa帐户,口令为空:
defncopy –U sa -P –S ABC in new_proc stagedb
示例2:在SYBASE服务器上,将sp_calccomp和sp_vacation对象的定义从employees数据库库拷入dc.out文件中,消息和提示以法语显示:
defncopy -S SYBASE –U sa -P –z French out dc.out emploees spcalccomp sp_vacation
2.46 如何把整个数据库中所有用户表的数据全部导出来?
bcp命令一次只可以把一个表的数据导出来。要想把所有用户表的数据都导出来,可以生成一个包含多行bcp命令的批处理文件,其中的每行bcp命令导出一个表。
以下是生成这个批处理文件的示例:
a) 编辑一个文本文件select.sql,内容如下:
set nocount on
use pubs2
go
select "bcp pubs2.." + name + " out " + name + ".bcp -Usa -P -c "
from sysobjects where type="U"
go
b) 如果是unix环境, 执行:
isql -Usa -P -b -i select.sql -o bcpout
chmod +x bcpout
如果是Windows, 执行:
isql -Usa -P -b -i select.sql -o bcpout.bat
c) 把bcpout中out换为in即可得到bcpin的批处理命令文件
2.47 如何执行快速bcp操作?
当使用bcp命令向数据表中导入数据时,表上的索引和触发器会影响数据导入的速度。在这样的表上使用bcp时,bcp自动使用慢速模式,也就是将在日志中记录数据的插入,导致事务日志快速增长。
要想避免这种情况,可以先把目标表上的索引和触发器全部删除,并且把数据库bulk copy/select into开关打开,再使用bcp命令向该表中导入数据。
2.48 如何查看当前数据库中的进程信息?
可以使用存储过程sp_who查看Adaptive Server中的所有进程的信息。Sp_who返回结果的解释如下:
fid 进程所属于的组,在配置了并行处理的环境中有意义,否则为0
spid 进程号。系统管理员可以在T-SQL命令kill中用该号来停止进程
Status 进程状态,正在运行或者休眠
Loginname 启动进程的用户登录名或者别名,对于系统进程该项是NULL
Origname 如果loginname是别名,则origname显示真实登录名,否则与loginname 显示同一信息。
Hostname 数据库驻留的服务器名称
Blk_spid 阻塞进程的ID(如果有的话)。阻塞进程(可能受影响或者拥有排他锁)是占有其他进程所需资源的进程。
Dbname 该进程访问的数据库
Cmd 该进程正在执行的命令和进程。条件语句(if 或while循环)的求值将返回cond。
Block_xloid 标识出阻塞事务的唯一的锁所有者ID。
2.49如何查看当前数据库中锁发生的情况?
可以使用存储过程sp_lock查看AdaptiveServer当前运行状态中锁的分配和使用情况。
2.50 如何更改用户表的锁模式?
可以使用alter table 命令来更改现有用户表的锁模式。
示例:把titles表的锁模式改为数据行锁:
alter table titles lock datarows
另外,一个表的锁模式可以使用sp_help table_name查看。
2.51 如何执行optdiag命令来监控表和索引的物理使用情况?
Optdiag程序用以显示数据库中关于表和字段的统计信息,也可以将更新的统计信息装载到系统表中。该程序位于$SYBASE\ASE-12_5\bin中。
示例1 :显示pubs2数据库中所有用户表的统计信息,并将输出内容放入pubs2.opt中:
optdiag statistics pubs2 –Usa –Ppasswd –o pubs2.opt
示例2:显示titles表的统计信息:
optdiag statistics pubs2..titles –Usa -Ppwsswd –o titles.opt
示例3:显示titles表中price列的二进制统计信息:
optdiag binary statistics pubs2..titles.price –Usa –Ppasswd –o price.opt
2.52 如何执行reorg 系列命令来优化Dol表及其索引?
Reorg命令根据使用的选项,回收页上未使用的空间、删除行转移或将表中的所有行重新写入新页。通过整理表空间,可以有效改善表访问的性能。
可以使用的参数有:
reclaim_space 回收由删除和更新操作所留下的未使用空间。对于表中的各个数据页,如果有已经提交删除或者行缩短更新操作产生未使用空间,该参数将连续重写当前这些行,使未使用空间保留在页尾;如果页中已没有行,则释放该页。
forwarded_rows 删除前移行
compact 组合reclaim_space和forwarded_rows的功能
Rebuild 如果指定了表名,则将表中的所有行重写到新的页;如果指定了索引名,reorg将重建所以。
示例1:回收titles表中的未使用的页空间
reorg reclaim_space titles
示例2:回收索引titleind中的未使用页空间
reorg reclaim_space titles titleind
注意:reorg rebuild要求将数据库选项select into/bulkcopy/pllsort设置为true,并在数据库中运行checkpoint
2.53 如何使用sp_sysmon存储过程来查看当前数据库的性能情况?
存储过程sp_sysmon可以对指定时间段内Adaptive Server的活动情况进行十分详细的统计分析,并输出统计报告,系统管理员可以从输出报告中掌握到Adaptive Server的运行状况和配置参数的运行效果。输出报告的解读,请参阅性能和调优手册。
示例1:统计未来10分钟内Adptive Server的运行情况:
sp_sysmon “00:10:00”
示例2:分别通过begin_sample 和end_sample指定要分析的时间区间的其实端点和终结端点,其间可能发生了很多事务和操作。
sp_sysmon begin_sample ――开始对运行数据采样
…
sp_sysmon end_sample ――结束采样,输出统计报告
3. 技术专刊
3.1 关于Backup Server
什么是Backup Server?
Backup Server是一个基于Open Server的工具。它可以处理SQLServer10。0以及更高版本的数据Dump/Load。因为它是独立于ASE的处理过程,完成它的工作不依赖于ASE。因此,在联机数据库Dump/Load时,不会降低ASE的性能。
网络环境下的Backup Server
Backup Server必须与ASE放在同一台机器上(如果在Open VMS上,可以在同一簇内)。你也可以如下图所示的环境,使用分布在网络上的两个Backup Server来完成Dump/Load。这两个Backup Server一个与ASE放在同一台机器上另一个可在远程某一节点上。
上图的配置,可以将本地(Local)的数据库Dump到远程(Remote)节点的外部设备上,或者从Remote节点读取Dump,将数据库Load到本地的ASE。
当将本地数据库Dump到远程机器的设备时,由Local Backup Server读取数据库数据,再送到网络另一端的Remote Backup Server,经它将数据写到外部设备上。同样,从远程设备Load时,load Backup Server发出命令给Remote Backup Server,Remote Backup Server读取Dump设备内容并传送到Local Backup Server,由Load Backup Server将读到的数据写到数据库设备。网络上的Dump性能仅受网络传输能力的影响。
Backup Server新的特性,提高了系统Dump/Load的能力
• 能自动测出设备类型和密度;
• 支持多个SYBASE Dump到同一设备卷;
• 支持一个SYBASE Dump到多个设备卷。
•
Backup Server支持并行Dump设备
Backup Server支持最大32个Backup设备并行地Dump/Load。亦即可以将一个数据库分成碎片Dump到多个设备上。ASE并行Dump/Load的设备数受操作系统能打开的最大文件数和共享内存资源的限制。因此,各种不同硬件平台,不同的操作系统下,并行Dump/Load设备数不同。
多文件(Multi-file),多卷(Multi-volumn)Dump
操作系统文件和Raw Partifion是Single_volumn,Single-file的介质,这就是说这两种设备只能含有一个SYBASE Dump。
QIC磁带和可移动硬盘是Single-file,,Multi-Volumn介质,意味着一个Dump可以跨越多个卷。这些设备不允许叠加,如果你想在同一个设备卷上追加存放多个Dump,系统将提示是否覆盖已有的内容。
DAT,8mm,9-Track磁带是Multi-file,multi-volumn设备。以上三种设备可以包含一个或多个数据库Dump。设备卷上的最后一个Dump可以跨过磁带,继续存放在另一设备带上。
Backup Server在网络上的Server名称
网络环境中的所有Server必须在Interfaces文件中有一个注册信息项,包括Server的名字,在网络中的网络节点地址及SYBASE Server用的网络端口号Backup Server也必须将它的信息放在Interfaces文件中。可以用Sybinit来完成这个工作。并且Backup Server的名字也必须加在master数据库的Sysservers表中。如果你还有一个Remote Backup Server,也需将它的信息放在本地的Interfaces文件中。
Backup Server项在Interfaces文件和Sysservers表中必须有准确的名字。如果在启动Backup Server时用-s选项指定了Backup Server的名字,那么在整个网络中都要用这个名字来标识这个Backup Server。换言之,在Interfaces文件中,不能使用别名来标识某一个Backup Server。
Backup Server使用的设备
Backup Server必须使用不回卷(No Rewind)设备,以便Backup Server能够控制磁带设备的位置。
下表列出了某些硬件平台上的Dump设备名称。其中N代表了设备号。
Platform Type Device Name
HP9000 4mm(SCSI and /HPIB) /dev/rmt/Num
9 track (/SCSI and /HPIB) /dev/rmt/Nmn
NCR 8mm /SCSI (5 GB and 2.2 GB) dev/nrmtN
4mm/SCSI dev/nrmtN
RS6000 9 track /SCSI /dev/rmtN.1
8mm DAT /SCSI (5 GB and 2.2 GB) /dev/rmtN.1
QIC /SCSI (1/4?cartridge /dev/rmtN.1
Sun4 9 track /SCSI / dev /nrmtN
QIC /SCSI (1/4?cartridge) / dev / nrarN
8mm /SCSI (5 GB and 2.2 GB) / dev / nrstN
Sun4 SVR4
(Solaris) 9 track See un4 SVR4?on page
4-10
1/4 cartridge
8mm /SCSI (5 GB and 2..2 GB
VAX VMS 9 track (HSC and /DSSI) See pen VMS?on page
4-10
8mm (/HSC 5 GB and 2 GB and /DSSI)
TK50 (HSC and /DSSI)
AXP VMS 8mm / SCSI See pen VMS?on page
4-10
9 track
4mm DAT /SCSI
AXP OSF/1 4mm DAT /SCSI See XP OSF/1?on page
4-10
TZ851
Table 4-1:Device names for database dumps to tape
3.2 Backup Server的名字
当使用Backup Server做Dump/Load时,系统会自动地寻找SYB_BACKUP这样的Backup Server名字。这就要求在master库的sysservers表中必须有一条记录来描述这个Server,其srvname为SYB_BACKUP。在安装Backup Server时,如果使用缺省值,那么安装过程将自动生成一个名字为SYB_BACKUP的Backup Server,同时完成这些操作。
1.master库的sysservers表中增加一条记录如下
srvid srvstatus srvname srvnetname
n 0 SYB_BACKUP SYB_BACKUP
2.$SYBASE/interfaces文件中增加一项,servername为SYB_BACKUP,有它自己的网络地址和网络端口号。
3.在$SYBASE/install目录下,创建启动Backup Server名为RUN_SYB_BACKUP的文件。
文件中启动Backup Server命令的-S选项指明BackupServer在网上的名字为SYB_BACKUP。
在做Dump/Load时,系统自动地找SYB_BACKUP作为BackupServer。再根据(1)中指出的srvnetname到interfaces文件中找到server。但是,如果在安装时未使用SYB_BACKUP作为Backup Server名字。那么安装仅完成以上(2),(3)的操作。例如,你使用MY_BACKUP作为Backup Server名,则$SYBASE/interfaces中Server名为MY_BACKUP,启动Backup Server命令的-S选项参数为MY_BACKUP。完成(1)的操作,则必须依靠手工完成,在ISQL中,用sa帐号登录。
1>sp_addserver SYB_BACKUP, null, MY_BACKUP
2>go
其中SYB_BACKUP为固定参数,MY_BACKUP是你指定的网络上Backup Server的名字。
3.3 Sybase的数据库设备
数据库设备是指用于存取数据库的存储介质。它既可以是磁盘的一个分区,也可以是文件系统中的一个文件。但无论用哪种作数据库设备,它们在能被用来存取数据库对象之前必须初始化。一旦数据库设备被初始化,该设备就能:
为某个用户数据库分配一块可用空间
在为某用户数据库分配的空间内指定并存储某个特定的数据库对象
用于存储某数据库的事务日志
选择磁盘分区还是unix文件来作数据库设备应视具体情况而定。一般来说,如果是最终用户的数据库,建议您用磁盘化区而非文件。因为对磁盘文件,ASE不能确切地知道数据是否真正被写到文件中去。如果是开发人员的数据库,那么用磁盘文件要稍好些,因为它使得建在其上的数据库恢复起来要容易一些。但对于master device来讲,无论是最终用户还是开发人员的数据库,磁盘文件无疑更为合适。因为相对而言,对master device的修改更少些而且镜像更为方便简单些。
如果在磁盘分区作数据库设备,应避免使用柱面0,C,swap分区以及其它已被OS占用的分区。如果选择磁盘文件作数据库设备,要保证SYBASE用户在相关的目录下有写权限。
命令diskinit命令对数据库设备进行初始化,使得物理上的硬盘分区或文件可以被ASE使用,同时把逻辑设备映射到物理设备上,而每一次disk init执行后,都会在sysdevices系统表中增加一行。其映射关系如图:
disk init的语法:
disk init
name = "device-name",
phyname = "physical-name",
vdevno = virtual - device - number ,
size = number - of - pages
其中:
name: 逻辑设备名
physname: 硬盘分区或磁盘文件名
vdevno: 虚拟设备号。它们取值可以是从1到max configured -1未被使用的任何值。可以用sp_helpdevice或从errorlog文件中查看device。用sp_configure来看max configured的值。最大取值为255。一般来说,the master device的vdevno 总为0,如果系统缺省设置最大设备数为10,而您希望使用更多的逻辑设备,可以重新设置备数限制。
在OS下打入:
这是sql 11.0.X 以下版本的配置
isql -Uxx -Pxx
1) sp_configure " device", 20
2) reconfigure with override
3) go
这个新的配置值必须在Server重新启动后才生效。若一个数据库设备被删除掉后,其vdevno只有在重新启动Server后才能被新的设备所用。
3.4 数据库选项(dboptions)的使用与管理
一、概述
ASE能管理多个数据库,每个数据库有自己的选项。ASE允许用户通过设置数据库选项,来更好地管理和使用数据库。当大批数据需要加载到数据库的表时,如果把该库的Select into/bulkcopy选项设置为true,同时暂时删掉表上的索引和触发器,再使用系统提供的实用程序bcp,数据将以惊人的高速度被装载到用户表里。也曾有用户抱怨,调用dbwritetext函数不能成功地把一幅bmp图写入数据库的image字段中。原因是用户数据库的select into/bulkcopy选项没有设置成true。还有正在开发数据库应用的用户希望日常工作不受数据库日志满的不断打扰。这也可以通过设置数据库选项办到。因此,我们这里将数据库选项的设置和用法详细介绍给读者,希望它有助于你有效地使用和管理用户数据库。
二、数据库选项的设置
使用系统存贮过程sp_dboption来设置数据库选项,它的语法规则如下:
sp_dboption [dbname,optname,{true┃false}]
其中:
• dbname为用户所需设置选项的数据库名称。如果执行带参数的sp_dboption,则当前使用的库必须是master。不带参数便显示数据库选项清单。但是,用户不能设置master库的数据库选项。
• optname为用户所要设置或关闭的选项名称。ASE能识别选项名的任何唯一的字符串。当其名称为关键字或含嵌入空格或标点符号时,用引号括起来。
• {true┃false}——设置该选项时为true,关闭该选项时为false。
使用sp_dboption,能设置以下数据库选项:
• abort tran on log is full
• allow null by default
• dbo use only
• ddl in tran
• disable free space acctg
• no chkpt on recovery
• read only
• select into/bulkcopy
• single user
• trunc log on chkpt
查看数据库的选项设置情况,使用sp_helpdb存贮过程。
三、数据库选项的用途
(1)Selectinto/bulkcopy
使用bcp或批拷贝程序接口将数据高速拷贝到一张没有索引和触发器的表,Writetext或者Select into生成永久表,则此选项必须设置为true。因此,当你使用bcp实用程序往用户数据库加载数据时,或者调用dbwretetext函数把一幅图片插入到某张表的image字段,或者通过Select into命令形成结果表时,别忘了把该选项置为true。ASE为了快速执行上述操作,减少记录修改操作的日志。但是,这种不记日志的操作会使事务日志与数据库中数据不同步。这种事务日志对于系统失败后的恢复就没有用处。系统禁止在这种情况下,dump transation到转储设备。因此,这些不记日志记录的操作完成后,将Select into/bulkcopy选项关闭后,执行dump database。
由Select into或批拷贝对数据库产生未被日志记录的修改后,执行dump transaction命令时,显示错误信息,并指导用户改用dump database(而Wrrietext命令没有这种保护)。
由于临时库tempdb从不恢复,所以使用Select into产生临时表时不必将Selectinto/bulkcopy选项打开。对于有索引的表进行bcp时,一般进行慢速批拷贝并且记入日志,所以此时也不必将Select into/bulkcopy设置为true。
(2)trunc log on chkpt
该选项表示每当checkpoint检查进程执行时(通常每分钟12次以上),事务日志被载截,即将已提交的事务日志删除。但是,该选项设置成true以后,人工执行checkpoint操作时都不载截事务日志。在开发数据库应用时,防止日志增长太快.可以将该选项设置成true,所以它很有用。
(3)abort tran on log full
该选项决定当指定数据库日志段最后机会阀值被超越时,正在运行的事务的处理办法。缺省值为false,也就是说事务被暂停挂起,直到空间空余出来再恢复。本选项设置为true时,在日志存储空间空余出来之前,所有用户的需要写事务日志的查询将被去掉。
(4)allow nulls by default
该选项置为true,将列的缺省状态从not null改为null,这与ANSI标准一致。T-SQL中列的缺省状态为not null,即不允许列为空值。但用户可在列定义时指定该列为null状态。allow nulls by default true与缺省状态相反。
(5)dbo use only
该选项设置为true时,只有数据库拥有者才能使用该数据库。
(6)ddl in tran
该选项设置为true时,用户在事务中可以使用某些数据库定义语言的命令,例如:Create table,grant和alter table命令。•只有ddl in tran选项设置为true时,下述命令才可在用户自定义事务内部使用:
alter table create table drop rule create default create trgger drop table create index create view drop trigger create procedure ceate default drop view create rule drop index grant create Schera drop procedure revoke
下述命令在任何情形下都不能在用户自定义事务内部使用。
alter database load database truncate table create database load transation update statistics disk init recorfigure drop database select into
另外,系统过程sp_helpdb,sp_helpdevice,sp_helpindex,sp_helpjoins,sp_helpserver和sp_spaceused,由于在执行时产生临时表,也不能在用户自定义事务中使用。再者,用户自定义事务中不能使用修改master数据库的系统过程。
(7)no free space acctg
该选项抑制剩余空间计帐及非日志段阀值活动的执行,由于不再计算这些字段的剩余空间,所以将加速恢复时间。关于该选项,在阀值管理部分,已有详细介绍。
(8)no chkpt on recovery
当保持最新的数据库备份时,此项设置为true。此时,存在一个基本库和一个辅助库。首先,基本库转储到辅助库中。然后,基本库的事务日志间断地转储并装载到辅助库中
若此选项设置为缺省值false,重新启动ASE时,恢复数据库后将向数据库增加一条检查点记录。检查点记录确保机制不会不必要地重新运行,改变顺序号,并导致随后从基本库装载事务日志的失败。
将辅助库的此项设置打开,恢复过程将不产生检查点,这样从基本库转储的事务日志可以被装载至辅助库。
(9)read only
该选项使得用户可以从数据库中检索数据,但不能修改数据。
(10)single user
该选项设置为true时,每次只能有一个用户访问该数据库。
3.5 Index & Performance
在应用系统中,尤其在联机事务处理系统中,对数据检索及处理速度已成为衡量应用系统成败标准。而采用索引来加快数据处理速度也成为广大数据库用户所接受的优化方法。
索引的使用效果不仅仅依赖于ASE的优化策略,在相当程度上也依赖于应用程序的设。怎样正确地使用索引,不能一概而论,究竟是让索引满足程序设计的需要,或是程序设计遵循已建立的索引,这两者是相符相承的。只有正确地使索引与程序结合起来,才能产生最佳的优化方案。
建立索引的目地是为了优化检索速度,如果检索所需要的时间过长,便有理由怀疑是否索引不存在或者优化器没有使用索引。尚若是索引不存在,那么就要取决于用户是否愿意用空间来换取时间,使用索引来解决检索速度慢的问题。如果优化器未使用表上已有的索引,那么要分析为什么,关于这一点将在后一点篇幅来说明如果update的效率很低,很可能是由于表上有太多的索引需要维护,从而浪费了时间。
优化器怎样使用索引
Table scan
如果表上没有任何索引,那么检索将采用Table Scan方式进行,其所用时间主要依赖于表的大小。
例如:
- dbcc checktable 测出表占76923页
-系统每秒读取50页
-76923页/50页/秒=1538秒 (大约25分钟)
如果系统有比较大的cache,某些数据可能由于以前已被读到内存,那么读取数据时间可能会低于估计的时间。一般情况下,Tablescan检索是由于表上没有ClusteredIndex或者优化器认为,表中将有20%的数据做为结果追回。
使用索引(条件为指定值)
索引中包含指定记录的值及地址,ASE不必做全表扫描。
例: select * from title where title_,false
go
use pubs2
go
checkpoint
go
quit
go
isql -Usa -Pxxxxxx -SSYBASE <dbcc_db.sql >dbcc_db.out
grep Msg dbcc_db.out
举例2: Unix平台检查pubs2数据库中titles表的一致性
vi dbcc_table.sql
use pubs2
go
dbcc checktable(titles)
go
dbcc tablealloc(titles)
go
isql -Usa -Pxxxxxx -SSYBASE < dbcc_table.sql > dbcc_table.out
grep Msg dbcc_table.out
相关文章: