SYBASE数据库的使用及日常问题的解决方法
中兴通讯固网南京用服部 辛国成
摘 要: 介绍sybase数据库的基础知识和核心系统SQL Server的基本特征以及sybase软件重要组成、系统库和用户数据库主要部分,sybase数据库各种问题的处理。 关键词: SQL Server 数据库备份 BCP表操作 1 Sybase基础知识
1.1 Sybase软件的组成
Sybase软件可划分为以下三个部分: (1)进行数据管理与维护的联机关 系数据库管理系统Sybase SQL Server; ( 2 ) 支持数据库应用系统的建立
和开发的一组前端工具软件Sybase SQL Tools;
(3)可把异构环境下其他厂商的应用软件和任何类型的数据连接在一起的接口软件Open Client/Open Server。SQL Server是个可编程的数据库管理系统(DBMS),它是整个Sybase产品的核心软件,起着数据管理、高速缓冲区管理、事务管理的作用。 1.2 SQL Server的基本特征
SQL Server是个关系数据库管理系统,它具有如下一些基本特征:
(1)SQL Server可以放在若干个磁盘设备上,初始安装时所需的磁盘空间根据版本不同需要的空间不同。 (2)SQL Server支持多库结构,也就是说Sybase系统中可以有多个数据库。Sybase可以管理多个数据库。 (3)SQL Server可以编译和运行T-SQL语句,并可返回客户程序所要求的结果。T-SQL语句是标准SQL的扩充,它除了有数据定义语句、数据操纵语句和数据控制语句之外,主要增加了流程控制语句。 (4)SQL Server可以管理多个用户并具有较高的事务吞吐量和较低的事务响应时间。 1.3 客户/服务器体系结构
Sybase系统是一种建立在客户/服务器体系结构上的数据库管理系统。那么什么是客户/服务器体系结构? 从硬件角度看,客户/服务器体系结构是指将某项任务在两台或多台机器之间进行分配,其中客户机(Client)用来运行提供用户接口和前端处理的应用程序,服务器机(Server)提供客户机使用的各种资源和服务。从软件角度看,客户/服务器体系结构是把某项应用或软件系统按逻辑功能划分为客户软件部分和服务器软件部分。客户软件部分一般负责数据的表示和应用,处理用户界面,用以接收用户的数据处理请求并
将之转换为对服务器的请求,要求服务器为其提供数据的存储和检索服务;服务器端软件负责接收客户端软件发来的请求并提供相应服务。 1.4 SQL Server的配置参数
服务器配置是系统管理员的职责,正确的配置对系统性能有重大的影响。有两个系统表存储配置信息:sysconfigures和syscurconfigs;sysconfigures是永久性的,一旦系统运行,sysconfigures的信息就拷贝到 syscurconfigs中。显示配置和改变配置使用系统过程sp_configure。
有两种配置值:动态的和静态的,动态值一旦改变立即生效,静态值要在系统重启动后才起作用。
1.5 访问Sybase服务器的基本过程
(1)建立客户与服务器之间的连接,包括网络连接、客户进程与服务器进程之间的连接; (2)客户端通过网络发送SQL语句给服务器,用来查询或操作服务器中的数据或数据库对象; (3)服务器接收到SQL语句后,对其进行语法分析、优化和编译后执行; (4)如果执行的语句产生一个结果集,服务器通过网络把结果集返回给客户; (5)客户端对收到的结果作相应的处理。
在客户/服务器体系,有两种数据库引擎结构,即多进程数据库引擎和单进程、多线程引擎结构。
多进程结构即多个可执行程序同时运行。每当用户登录到数据库系统时实际上都启动了数据库引擎的一个独立实例。存在起协调作用的进程协调进行之间的通讯以保证当多用户访问相同数据时数据的完整性。多进程数据库引擎一般用在大型机数据库上。单进程多线程数据库引擎在原理上和多进程数据库引擎类似,不同的是多线程数据库引擎自己负责调度各应用程序占用CPU的时间,而不依赖于操作系统。这样,多线程数据库引擎自我保护的能力更强。 Oracle Server是一个真正的多进程数据库引擎,Sybase数据库管理系统采用的是单进程多线程的引擎结构。 1.6 SQL Server的主要内容
Sybase SQL Server是一个多库结构的RDBMS,体系结构大致如下:
(1) 数据库。
服务器自身所使用的数据库,也可以说是管理服务器和用户数据库的数据库。Sybase在安装时,自动创建了四个系统数据库:master、model、tempdb、sybsystemprocs ● master数据库
它是管理和控制用户数据库以及维护服务器正常运行的核心数据库,它保存了大量的系统信息,如服务器配置、用户、设备等。
在master数据库中不允许普通用户在其中创建数据库对象,否则会使得master数据库的事务日志很快变满。如果事务日志用尽,就无法使用dump transaction命令释放master数据库中的空间。 ● model数据库
它是为创建用户数据库而提供的模板。每当创建新的数据库时,SQL Server自动建立model数据库的一份拷贝,并把它扩充到用户所要求的大小,以此作为新用户数据库。
Model数据库中包含每个用户数据库所要求的系统表。Model数据库可以被修改以便定制新创建的。 ● tempdb数据库
它是个临时数据库, 为服务器运行与处理提供一个共享的存储区域,如group by和order by的中间结果就存放在这里。Tempdb的空间为服务器中所有数据库的所有用户所共享。
每次重启SQL Server,服务器的一个自动进程都拷贝model数据库到tempdb数据库,并清除tempdb中原来的内容。因此tempdb中的用户表都是临时的。临时表分为两类:可共享的和不可共享的。
不可共享的临时表在由create table中将符号#置于表名之前创立;可共享的临时表通过create table中指定表名前缀tempdb..而创立。不可共享的临时表SQL Server自动为其添加数字后缀名,且它只存在于当前会话中。 ● sybsystemprocs数据库master数据库它是专门用来保存系统命令(存储过程)的数据库,如sp_help、sp_configure、sp_helpdevice等。当任一数据库用户运行以sp_开头的存储过程时,SQL Server 按照以下顺序查找: 当前数据库、sybsystemprocs数据库、master数据库。
(2)用户数据库。
用户数据库是我们使用Sybase服务器的真正目的。要管理用户数据,必须在Sybase中创建自己的数据库,它是指用create database命令创建的数据库。不能存取master数据库的用户是无权创建新的数据库的。 数据库中的主要内容——数据库对象:
● 表、视图、临时表 ● 索引、主键、外键 ● 缺省值、规则 ● 存储过程、触发器
2 Sybase的使用
2.1 数据库的字符集问题
SYBASE数据库缺省的安装选项是:语言为us_english,字符集为roman8。安装过程中一般要改变成语言为chinese,字符集为eucgb. 如果字符集设置不对,数据库操作过程中就可能产生软码现象。
2.2 数据库服务器的系统配置和数据库的选项
SYBASE数据库服务器的配置选项很多,常用的选项有:
allow sql server async i/o (是否启用磁盘异步IO) number of user connections (最大的用户连接数) number of open databases (同时打开的数据库的最大数目) procedure cache percent
(存储过程缓冲占总数据库内存的百分比) number of locks (锁的数目) max online engine (数据库最大引擎数目) number of worker processes (工作引擎数目) total memory
(数据库总的物理内存) tcp no delay
(控制TCP数据是否延迟发送)
数据库安装完成后所有的选项都是缺省配置,必需根据具体的应用修改配置的值。修改方法有两种:
(1)修改配置文件。
修改$SYBASE用户下的server_name.cfg文本文件。 (2)用sp_configure存储过程。 进入isql,执行
sp_configure option_name,option_value go
数据库常用的选项有: select into/bulk copy
(允许大批数据加载到数据库表的选项,如bcp) truncate log on checkpoint
(数据库执行checkpoint时自动删除已提交事务) single used
(将数据库设置成单用户模式)
2.3 服务器端客户程序isql
isql的语法如下:
isql [-b] [-e] [-F] [-p] [-n] [-v] [-X] [-Y]
[-a display_charset] [-A packet_size] [-c cmdend] [-D database] [-E editor [-h header [-H hostname [-i inputfile] [-I interfaces_file] [-J client_charset] [-K keytab_file] [-l login_timeout] [-m errorlevel] [-M labelname labelvalue] [-o outputfile] [-P password] [-R remote_server_principal] [-s col_separator] [-S server_name] [-t timeout] [-U username] [-V [security_options]] [-w column_width] [-z localename] [-Z security_mechanism]
使用方法是:isql –Uusername –Ppasswd –S server_name
2.4 数据库的备份
SYBASE数据库的备份主要通过dump命令来实现的,备份的介质可以是文件系统、裸设备和磁带设备。 (1)备份到文件系统。
方法如下:dump database database_name to ?/home/sybase/zxin.dmp‘ (2)备份到裸设备。
在裸设备上,创建备份设备,然后用以下命令备份:dump database database_name to dump_device (3)备份到磁带设备。
向在磁带上创建一个磁带备份设备,需要指定capacity和不自动回卷的设备文件。非回滚设备文件AIX上为 /dev/rmt0.1, HPUX上为/dev/rmt/0mn
然后用如下命令来进行备份:dump database database_name to dump_device [with init]
2.5 数据库的恢复
SYBASE数据库的恢复主要通过load命令来实现的。简单的命令语法如下: load database database_name from device_name
2.6 bcp实用程序的使用方法
以用户指定的形式将数据库表拷贝到操作系统文件中,或从操作系统文件中拷贝数据到到数据库表。简化后的语法如下:
bcp [[ database_name.] owner.] table_name {in | out} datafile [-U username] [-P password] [-S server_name]
[-c | -n] [-t field_terminator] [-r row_terminator] 其中:
U username 指定用户名 P password 指定用户口令 S server_name 指定数据库服
务器的名字。该名字在interfaces文件中必需存在。
c 以字符方式输出或输入
数据库表,用户可以查看文件的内容。
n 以内部格式输出或输入
数据库表,用户无法查看文件内容。
t field_terminator 指定域分隔符。
r row_terminator 指定行分隔符。
例如, 将数据库z x d b _ 1 中的表s139cardinf表中的内容BCP到文件中的命令为: bcp zxdb_1.dbo.s139cardinf out
s139cardinf.txt -Usa -P -Sscp1 -c -t \\| -r \\|\\\\n 各域之间以 | 分隔,行结束符为 |加回车。 2.7 给数据库增加空间的方法
用sp_helpdb database_name可以查看某个数据库的空间分配情况。如果发现数据或日志空间过小,必需及时增加。增加方法如下。 (1)扩数据空间。
如给zxin库在设备zxindatadev设备上扩100M数据空间。 alter database zxin on zxindatadev=100 (2)扩日志空间。
如给zxin库在设备zxinlogdev设备上扩100M日志空间。 a l t e r d a t a b a s e z x i n l o g o n zxinlogdev=100
2.8 数据库操作的注意事项
(1)应避免直接用SYBASE的工具对数据库操作,尽量通过―智能网系统管理程序‖和―智能网业务管理程序‖来修改用户数据。
(2)应尽量避免对呼叫中正在使用的记录进行数据量很大的更新(update)操作,如一次更新数万条记录,因为这样会在多页上加锁,甚至上升为表锁,造成锁冲突。如果必须做,请先将业务去激活,或者将SCP暂停再做。从时间上说,因为去激活时要等待所有呼叫释放,所以需要比较长的时间。如果业务很少,暂停SCP反而更快。 (3)对于常用的SQL操作,特别是新增加的运行在版本中或业务中的操作,要仔细考虑它的效率,必要时在查询字段上加索引。SYBASE对索引的依赖性很强,虽然索引会影响一点增加/删除记录的速度,但从查询和更新的角度来看,速度一般能提高一个数量级。
(4)在进行了大批数据的增加/删除后,请对该表作如下操作(如果是通过―业务管理程序‖增加删除卡号的,那么程序中已经做了这个操作):update ststistics table_name