Chinaunix首页 | 论坛 | 博客
  • 博客访问: 426050
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

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以及cachepool的划分信息:

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_sysmonsp_object_statssp_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数据库系统表(sysdatabasessysdevicessysusagessysloginrolessyslogins)和操作系统环境设置。

$ 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系统使用多个数据库,可以分为:系统数据库和用户数据库。对它们的恢复, 需要采取不同的方法。

5master系统数据库的恢复

按照以下步骤,对master数据库进行恢复:

找出master数据库中下列系统表的文本备份:sysdatabasessysdevicessysusagessysloginrolessyslogins

建立新的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设备上的空间分配情况和恢复前完全一致,为了做到这一点,有时还需要修改modeltempdb数据库在master设备上的空间分配。

检查备份服务器,保证sysservers系统表中信息和interfaces文件中的信息一致。保证备份服务器正常运行。

如果有master数据库的备份,使用该备份恢复master数据库。恢复完成后,数据库系统自动关闭,以单用户方式重新启动数据库管理系统

查询master数据库的sysdatabasessysdevicessysusages系统表,确保它们的内容与现有的文本备份一致。如果存在不一致的地方,执行下列操作:

使用disk reinit命令,向sysdevices系统表添加新的数据库设备

使用disk refit命令,向sysdatabases系统表添加新的数据库,更改sysusages系统表中的空间分配信息

以常规(多用户)方式重新启动数据库系统。查询master数据库的syslogins系统表,确保它的内容与现有的文本备份一致。如果存在不一致的地方,使用sp_addloginsp_modifyloginsp_droploginsp_locklogin命令进行改正。

恢复model数据库。如果有model数据库的备份,直接使用备份进行恢复。如果没有备份,就运行installmodel脚本:

$ isql –Usa –P{password} –S{server_name} < installmodel

然后,对model数据库执行相应的修改。

使用dbcc命令,检查数据库。在所有数据库不存在问题后,备份master数据库。

6sybsystemprocs系统数据库的恢复

按照以下步骤,恢复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

阅读(1562) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~