2008年(239)
分类: Sybase
2008-06-17 22:11:03
1. 系统的启动和关闭
(1)启动实例
启动数据库服务器:
$ startserver -f $SYBASE/$SYBASE_ASE/install/RUN_{server_name}
启动备份服务器:
$ startserver -f $SYBASE/$SYBASE_ASE/install/RUN_{server_name}_back
(2)关闭实例
关闭备份服务器:
1> shutdown SYB_BACKUP
2> go
关闭数据库服务器:
1> shutdown
2> go
如果系统异常,无法正常关闭数据库服务器,可以使用以下方式:
1> shutdown with nowait
2> go
2. 系统运行日志文件的检查
SYBASE系统的运行日志文件存放在$SYBASE/$SYBASE_ASE/install目录下,确省为errorlog。可以在启动命令文件(RUN_{server_name})中,改变它的具体名字和存放位置。这个运行日志文件,需要每天检查、定期备份并手工清除其内容。
3. 系统运行状况检查
管理员要随时关注数据库系统的运行。对SYBASE系统,管理员可以从实例和数据库状态、用户连接、磁盘空间使用等多个方面,检查系统的运行状况。
显示当前系统的版本号和补丁号:
$ isql -v
显示当前实例运行状态:
$ showserver
显示cache以及cache中pool的划分信息:
1> sp_helpcache {cache_name}
1> sp_poolconfig
显示数据库状态及空间使用:
1> sp_helpdb
1> sp_helpdb {database_name}
显示段信息及空间使用:
1> sp_helpsegment
1> sp_helpsegment {segment_name}
显示设备状态及空间使用:
1> sp_helpdevice
1> sp_helpdevice {device_name}
显示表、索引信息:
1> sp_help
1> sp_help {table_name}
1> sp_helpindex {table_name}
1> sp_help {index_name}
显示表、索引的空间使用信息:
1> sp_spaceused {table_name}
显示当前用户以及进程的信息:
1> sp_who
显示系统中锁的使用:
1> sp_lock
显示系统配置:
1> sp_configure
显示网络配置:
$ vi interfaces
显示操作系统环境设置:
$ env或者vi .profile
4. 系统性能状况分析
管理员可以根据需要,使用sp_sysmon、sp_object_stats、sp_monitor工具,收集SYBASE数据库系统的运行数据,以确定系统性能瓶颈。
(1)使用sp_sysmon工具,收集一段时间内系统的运行状态数据:
1> sp_sysmon begin_sample
1> sp_sysmon end_sample
(2)使用sp_object_stats工具,显示表、索引的锁争用、死锁、锁等待等统计信息:
1> sp_object_stats
(3)使用sp_monitor工具,显示CPU、内存、I/O等统计信息:
1> sp_monitor
5. 系统配置的改变
SYBASE的系统配置存放在$SYBASE/$SYBASE_ASE/{server_name}.cfg中。要改变系统配置,可以直接使用操作系统编辑命令进行修改。对动态的配置参数,也可以使用命令sp_configure修改:
1> sp_configure {parameter_name}, {parameter_value}
系统的网络配置信息存放在$SYBASE/interfaces中,虽说也可以直接进行编辑,但一般建议使用bscp工具进行修改。
6. 数据库日志维护
SYBASE系统只使用归档日志模式,每个数据库都单独维护自己的日志信息。对每一个数据库,管理员必须定期移走不再使用的日志,以释放磁盘空间,可以采用以下两种方式:
(1)保存不再使用的日志,然后将这些日志从数据库中删除:
1> dump transaction {database_name} TO “{backup_device}”
(2)直接将不再使用的日志从数据库中删除,不进行保存:
1> dump transaction {database_name} with truncate_only
如果由于没有日志磁盘空间,造成数据库挂起,在使用以上方式释放日志磁盘空间之后,仍旧不能解除数据库的挂起状态,就可以执行以下命令,清除日志:
1> dump transaction {database_name} with no_log
7. 备份和恢复处理
管理员按照规划、定期地备份数据库。备份信息越完整,在系统故障时就越容易恢复。对SYBASE系统,除数据库备份之外,其备份还可以包括:运行环境备份、数据库对象的SQL语句定义备份。
(1)实例运行环境备份
对实例的运行环境,需要备份:系统配置、网络配置、master数据库系统表(sysdatabases、sysdevices、sysusages、sysloginroles、syslogins)和操作系统环境设置。
$ cp $SYBASE/$SYBASE_ASE/{server_name}.cfg > {outpute_file}
$ cp $SYBASE/interfaces > {outpute_file}
$ bcp master..sysdatabases out {output_file} -Usa -P -c
$ bcp master..sysdevices out {output_file} -Usa -P -c
$ bcp master..sysusages out {output_file} -Usa -P -c
$ bcp master..sysloginroles out {output_file} -Usa -P -c
$ bcp master..syslogins out {output_file} -Usa -P -c
$ cp .profile > {outpute_file}
(2)用户创建数据库对象的SQL语句定义备份
在SYBASE系统中,使用ddlgen工具,可以基于整个数据库、也可以基于某个数据库对象,将有关的数据字典信息存放在文本文件中。
生成整个数据库的SQL语句定义到文本文件中:
$ ddlgen -Usa -P -S{host_name}:{port_name} -TDB -D{database_name} -O{output_file}
生成单个表的SQL语句定义到文本文件中:
$ ddlgen -Usa -P -S{host_name}:{port_name} -TU -N{table_name} -D{database_name} -O{output_file}
(3)数据库备份
SYBASE系统的数据库备份,需要启动实例、启动备份服务器。可以在备份前,检查数据库结构的完整性。
① 在备份前,检查数据库结构是否正确。
1> dbcc checkdb {database_name}
1> dbcc checkalloc {database_name}
1> dbcc checkcatalog {database_name}
② 执行数据库备份。
1> dump database {database_name} TO “{backup_device}”
(4)数据库恢复
SYBASE系统使用多个数据库,可以分为:系统数据库和用户数据库。对它们的恢复, 需要采取不同的方法。
(5)master系统数据库的恢复
按照以下步骤,对master数据库进行恢复:
① 找出master数据库中下列系统表的文本备份:sysdatabases、sysdevices、sysusages、sysloginroles、syslogins。
② 建立新的master设备。
$ dataserver –d {device_name} –b {size_value}
③ 以单用户方式启动SYBASE数据库管理系统,拷贝runserver文件,并命名为m_RUN_{server_name}。编辑该文件,在dataserver命令行添加参数-m。
$ startserver –f m_RUN_{server_name}
④ 利用sysusages系统表中信息,使用alter database命令,改变master数据库在master设备上的空间分配。要保证master数据库在master设备上的空间分配情况和恢复前完全一致,为了做到这一点,有时还需要修改model、tempdb数据库在master设备上的空间分配。
⑤ 检查备份服务器,保证sysservers系统表中信息和interfaces文件中的信息一致。保证备份服务器正常运行。
⑥ 如果有master数据库的备份,使用该备份恢复master数据库。恢复完成后,数据库系统自动关闭,以单用户方式重新启动数据库管理系统
⑦ 查询master数据库的sysdatabases、sysdevices、sysusages系统表,确保它们的内容与现有的文本备份一致。如果存在不一致的地方,执行下列操作:
使用disk reinit命令,向sysdevices系统表添加新的数据库设备
使用disk refit命令,向sysdatabases系统表添加新的数据库,更改sysusages系统表中的空间分配信息
⑧ 以常规(多用户)方式重新启动数据库系统。查询master数据库的syslogins系统表,确保它的内容与现有的文本备份一致。如果存在不一致的地方,使用sp_addlogin、sp_modifylogin、sp_droplogin、sp_locklogin命令进行改正。
⑨ 恢复model数据库。如果有model数据库的备份,直接使用备份进行恢复。如果没有备份,就运行installmodel脚本:
$ isql –Usa –P{password} –S{server_name} < installmodel
然后,对model数据库执行相应的修改。
⑩ 使用dbcc命令,检查数据库。在所有数据库不存在问题后,备份master数据库。
(6)sybsystemprocs系统数据库的恢复
按照以下步骤,恢复sybsystemprocs数据库:
① 以单用户模式启动数据库系统
② 改变系统配置,允许用户直接修改系统表
1> sp_configure "allow updates",1
③ 删除sybsystemprocs系统数据库
1> drop database sybsystemprocs
④ 删除sybsystemprocs系统数据库所使用的设备:sysprocsdev
1> begin transaction
2> delete from sysdevices where name="sysprocsdev"
3> commit transaction
⑤ 以单用户模式重新启动数据库系统
⑥ 创建sysprocsdev设备、sybsystemprocs数据库:
1> disk init name="sysprocsdev", physname="{physical_device}", devno=4,
size={size_value}
1> create database sybsystemprocs on sysprocsdev = {size_value}
⑦ 以常规(多用户)模式启动数据库系统
⑧ 改变系统配置,不允许用户直接修改系统表
1> sp_configure "allow updates",0
⑨ 如果存在sybsystemprocs数据库的备份,直接使用备份恢复
1> load database sybsystemprocs from “{backup_device}”
如果没有sybsystemprocs数据库的备份,运行installmaster脚本来创建:
$ isql -Usa –P{password} –S{server_name} < installmaster
⑩ 检查sybsystemprocs数据库。如果发现不存在的用户自定义存储过程,就重新执行原有的创建脚本。
(6)用户数据库的恢复
按照以下步骤,对用户数据库库进行恢复:
① 归档数据库日志
1> dump transaction {database_name} to “{backup_device}” with no_truncate
② 收集数据库空间使用信息
1> select * from sysusages where dbid = db_id(“{database_name}”)
1> sp_helpdb {database_name}
③ 删除遭到破坏的数据库
1> drop database {database_name}
如果上述命令操作失败,可以使用下列命令删除数据库
1> dbcc dbrepair({database_name},dropdb)
④ 删除发生故障的设备,然后重建该设备
⑤ 按照步骤②收集的信息,重建数据库。可能需要修改数据库的空间使用,在下一步操作之前,要保证数据库空间使用与故障发生前的情况完全一致
1> create database {database_name} on {device_name} = {size_value}
log on {device_name} = {size_value}
1> alter database {database_name} on {device_name} = {size_value}
⑥ 使用数据库备份,恢复数据库
1> load database {database_name} from “{backup_device}”
⑦ 使用数据库日志备份,按照备份顺序前滚数据库,使数据恢复到发生故障时刻
1> load transaction {database_name} from “{backup_device}”
⑧ 使数据库处于联机状态,允许用户进行正常的操作
1> online database {database_name}
8. 数据库对象统计信息的维护
确定何时、对那些表和索引执行何种程度的统计信息收集,是管理员的工作职责。在SYBASE系统中,管理员根据需要,使用update statistics命令,对表、索引进行不同程度的统计信息收集。
对表以及表中的所有字段,进行信息统计:
1> update statistics {table_name}
对表的指定字段,进行信息统计:
1> update statistics {table_name} ({column_name}...)
对索引进行信息统计:
1> update index statistics {table_name} {index_name}
对分区表,进行和分区有关的信息统计:
1> update partition statistics {table_name}
9. 数据磁盘存放的整理
在对数据的磁盘空间进行整理之前,最好能够确定那些表、索引需要这些操作。这样可以做到有的放矢,避免浪费系统资源。SYBASE系统通过optdiag工具,来检查数据库中表、索引的空间使用:
$ optdiag statistics {database_name} -Usa -P -o {outpute_file}
对存在较多行转移、未使用空间的表,可以执行下列命令进行删除:
1> reorg compact {table_name}
2> go
在以上操作完成后,可以重新使用optdiag工具检查数据库。如果仍旧存在不能满足要求的表,就需要对这些表进行重建。除了第9.3.11一节所讨论方法之外,在SYBASE系统中还可以使用以下方法对表进行重建:
1> use master
2> go
1> sp_dboption {database_name}, “select into/bulkcopy/pllsort” ,true
2> go
1> use {database_name}
2> go
1> checkpoint
2> go
1> reorg rebuild {table_name}
2> go
10. 数据的导入和导出
除SQL语句之外,SYBASE系统提供bcp工具,可以进行基于表的数据导入和导出。
导出指定表中的数据:
$ bcp {database_name}..{table_name} out {output_file} -Usa -P –c
导入指定表中的数据:
$ bcp {database_name}..{table_name} in {input_file} -Usa -P