sybase的基础Word文档格式.docx
《sybase的基础Word文档格式.docx》由会员分享,可在线阅读,更多相关《sybase的基础Word文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
![sybase的基础Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/9/866cda86-c718-4a1e-b16c-26289e39a02d/866cda86-c718-4a1e-b16c-26289e39a02d1.gif)
Server是个关系数据库管理系统,它具有如下一些基本特征:
a.SQL
Server可以放在若干个磁盘设备上,初始安装时所需的磁盘空间至少要17MB。
b.SQL
Server支持多库结构,也就是说Sybase系统中可以有多个数据库。
Sybase可以管理多个数据库。
c.SQL
Server可以编译和运行T-SQL语句,并可返回客户程序所要求的结果。
T-SQL语句是标准SQL的扩充,它除了有数据定义语句、数据操纵语句和数据控制语句之外,主要增加了流程控制语句。
d.SQL
Server可以管理多个用户并具有较高的事务吞吐量和较低的事务响应时间。
客户的应用程序可以存取Server中某一个或几个数据库的数据。
四、SQL
Server的主要内容
Sybase
Server是一个多库结构的RDBMS,体系结构大致如下:
1.数据库
服务器自身所使用的数据库,也可以说是管理服务器和用户数据库的数据库。
Sybase在安装时,自动创建了四个系统数据库:
master、model、tempdb、sybsystemprocs
(1)
master数据库
它是管理和控制用户数据库以及维护服务器正常运行的核心数据库,它保存了大量的系统信息,如服务器配置、用户、设备等。
在master数据库中不允许普通用户在其中创建数据库对象,否则会使得master数据库的事务日志很快变满。
如果事务日志用尽,就无法使用dump
transaction命令释放master数据库中的空间。
(2)model数据库
它是为创建用户数据库而提供的模板。
每当创建新的数据库时,SQL
Server自动建立model数据库的一份拷贝,并把它扩充到用户所要求的大小,以此作为新用户数据库。
Model数据库中包含每个用户数据库所要求的系统表。
Model数据库可以被修改以便定制新创建的。
(3)tempdb数据库
它是个临时数据库,为服务器运行与处理提供一个共享的存储区域,如group
by和order
by的中间结果就存放在这里。
Tempdb的空间为服务器中所有数据库的所有用户所共享。
每次重启SQL
Server,服务器的一个自动进程都拷贝model数据库到tempdb数据库,并清除tempdb中原来的内容。
因此tempdb中的用户表都是临时的。
临时表分为两类:
可共享的和不可共享的。
不可共享的临时表在由create
table中将符号#置于表名之前创立;
可共享的临时表通过create
table中指定表名前缀tempdb..而创立。
不可共享的临时表SQL
Server自动为其添加数字后缀名,且它只存在于当前会话中。
(4)sybsystemprocs数据库master数据库
它是专门用来保存系统命令(存储过程)的数据库,如sp_help、sp_configure、sp_helpdevice等。
当任一数据库用户运行以sp_开头的存储过程时,SQL
Server按照以下顺序查找:
当前数据库、sybsystemprocs数据库、master数据库。
2.用户数据库
用户数据库是我们使用Sybase服务器的真正目的。
要管理用户数据,必须在Sybase中创建自己的数据库,它是指用create
database命令创建的数据库。
不能存取master数据库的用户是无权创建新的数据库的。
数据库中的主要内容——数据库对象:
表、视图、临时表
索引、主键、外键
缺省值、规则
存储过程、触发器等
五、Sybase的安装与配置
1.服务器端的安装
安装建立SQL
Server以后,要建立放置数据库、日志和索引的逻辑磁盘设备。
数据库、日志和索引的配置应注意以下原则;
a.不要把任何用户对象安装在master数据库中。
b.日志应该保存在与数据库分离的磁盘上。
c.可以通过跨越多个设备分配工作优化I/O性能。
2.客户端的安装
3.需要立即更改的内容
(1)更改sa的登录口令;
(2)命名服务器;
(3)修改文件名(保证Sybase
Central正常启动);
(4)更改缺省设备;
(5)增加tempdb的空间。
4.创建用户数据库
以下通过一个建立数据库的脚本说明建立数据库的过程:
//创建数据库设备,设备大小以页(2K)为单位
disk
init
name=”test_dbdev”,
physname=”c:
\test\test_dbdev.dat”,
vdevno=10,
size=10240
go
name=”test_logdev”,
phyname=”c:
\test\test_logdev.dat”,
vdevno=11,
size=5120
//创建数据库TEST_DB,其大小为20M,日志大小为10M
create
database
TEST_DB
on
test_dbdev=20
log
test_logdev=10
//打开数据库
use
5.系统管理的主要内容
a.物理资源的管理
b.用户及其权限管理
c.数据库的备份与恢复
6.SQL
Server的配置参数
服务器配置是系统管理员的职责,正确的配置对系统性能有重大的影响。
有两个系统表存储配置信息:
sysconfigures和syscurconfigs;
sysconfigures是永久性的,一旦系统运行,sysconfigures的信息就拷贝到syscurconfigs中。
显示配置和改变配置使用系统过程sp_configure。
有两种配置值:
动态的和静态的,动态值一旦改变立即生效,静态值要在系统重启动后才起作用。
第二讲
数据库设备与存储空间管理
一、概述
1.安装初始化
初始安装SQL
Server时,安装程序和脚本初始化主设备,并建立master、model、tempdb和sybsystemprocs数据库。
系统数据库、预定义设备和段按下列默认方式组织:
a.master、model、tempdb数据库安装在主设备master上;
b.sybsystemprocs数据库安装在安装时选择的设备上(sysprocsdev);
c.为每个数据库创建三个预定义段:
system、default和logsegment;
d.所有用户创建数据库的默认设备是master设备;
e.如果选择安装了审计数据库sybsecurity,它位于自己的设备上。
2.设备与存储管理考虑的主要问题
(1)恢复
物理磁盘崩溃时,磁盘镜像或在单独的物理设备上保存日志为数据库恢复提供了两种机制。
(2)性能
磁盘读写速度是I/O操作的瓶颈,正确地把数据库对象放置到物理设备上有利于改进性能;
把日志和数据库对象置于单独的设备上可以提高系统性能;
把表放在一个硬盘上而把索引放在另一个硬盘上,由于把工作分置于两个硬盘驱动器上,所以可以确保物理读写速度加快;
磁盘镜像会降低磁盘写的速度。
二、设备(Device)
Sybase将数据库中的所有数据存放在设备上。
1.设备的概念
设备是Sybase预先配置的专门存放数据库的一块连续的磁盘空间,并且它被映射到一操作系统文件或一原始磁盘分区上。
它有两个对应的名称:
逻辑名和物理名。
NT仅支持设备映射到文件。
设备与数据库之间的关系:
多对多关系。
一个数据库可以被创建或扩充到多个设备上,一个设备也可以被用来存放多个数据库。
不同的设备操作系统可以对其并行地读写,因此我们可以人为地将一个数据库放置到多个数据库设备上。
设备的分类:
Database
Device和Dump
Device。
数据库设备存放数据库和事务日志,转储设备用来存放数据库或日志的备份。
2.设备的创建
命令语法:
DISK
INIT
Name=’device_name’,
Physname=’physical_name’,
Vdevno=virtual_device_number
Size=number_of_pages
[…….]
举例说明:
Name=’My_Device’,
Physname=’D:
\database\My_device.dat’,
Vdevno=3
Size=5000
注释:
逻辑名、物理名、设备虚拟号、设备大小
创建转储设备:
sp_addumpdevice{‘disk’|’tape’}
Logical_Name,
Physical_Name,
TapeSize
3.默认设备
在没有指定设备的情况下,用户创建的任何数据对象自动存放在默认设备上。
初始安装后,系统的主设备master被预指定为默认设备,因此要尽快创建自己的默认设备。
确保以下设备不是默认设备:
系统主设备、指定仅被日志使用的设备。
Sp_diskdefault
设备名[,DefaultOn|DefaultOff]
4.磁盘镜像
磁盘镜像是出于数据库安全性的考虑,当介质失败时,磁盘镜像能提供不间断恢复。
磁盘镜像是磁盘上的数据的绝对拷贝。
如果某一硬盘事故发生,则该被损坏的拷贝就自动变成离线状态,因而所有的读写都被引向未被损坏的拷贝。
Sybase的磁盘镜像是在设备级上进行的,因此磁盘镜像实质上是设备镜像。
当对某一设备进行镜像操作时,Sybase自动创建一个附加设备,由镜像处理程序将原设备上的所有数据拷贝到镜像设备上。
如果要使某一数据库成为镜像,被分配给该数据库的每一设备都必须成镜像。
Master设备在服务器中地位特殊,如果它损坏了,SQL
Server将崩溃。
因此,如果有可能总是要镜像Master设备(在另一磁盘上)。
镜像命令语法:
Disk
Mirror
Name=’device_name’,//被镜像的设备
Mirror=’physical_name’
[,writes=serial|noserial]
5.删除设备
sp_dropdevice
logical_name[,delfile]
含有数据库的设备不允许删除。
三、创建与使用段
段(Segment)是数据库设备上磁盘空间的逻辑组合,它可以看作是指向一个或多个数据库设备的标签。
利用段可以控制数据库对象的存放位置,可以将数据库对象分类存放到不同的段上。
设备与段之间的关系:
一个设备上可以创建多个段,一个段也可以覆盖多个设备。
1.使用段的优点
a.
控制空间的使用:
放在一个段上的数据库对象不会在段外增长;
b.
提高性能:
处于不同磁盘设备上的段可以并行地读写;
d.处理大表:
利用段,可以将一个大表分段放在独立的物理设备上,如将一个表的文本或图象数据存储另外的一个段上。
2.创建段
sp_addsegment
段名,数据库名,设备名
说明:
在指定设备上为某个数据库创建一个段。
●扩展段的范围
sp_exetendsegment
设备在数据库中必须可用,否则需要扩展数据库到新的设备上;
指定的段、数据库、设备必须存在。
●缩小段的范围:
sp_dropsegment
带第三个参数时,该命令并不删除段,只是段的范围缩小了。
若某个段包含了别的段要独占的设备,就需要缩小该段的范围。
3.使用段
●两个数据库放在同一设备的不同段上,它们不会相互影响;
●当数据库增加空间时,增加的空间会自动分配到它的每一个段上;
例如:
alter
my_db
data_dev=50
在data_dev设备上为my_db增加50M空间,这50M空间被自动分配到数据库的每一个段中。
注意:
如果data_dev对于数据库是新的,system和default段会自动扩展到该设备上。
可以使用alter
database命令的log
on选项分配附加的日志空间。
(1)在段中创建新对象
table
表名(列名
数据类型)[on
段名]
[clusterd|non
clusterd]index
索引名
表名(列名)[on
按照定义,聚集索引总是与表放在同一段上。
(2)在段上放置现有对象
sp_placeobject
段名,对象名
该命令并不把对象从一个数据库设备移动到另一设备上,它只影响未来的空间分配。
可以将某个大表的text字段或image字段放置到一个单独的设备段上。
Sp_placeobject
段名,“表名.字段名”
(3)在段上创建聚集索引
如果在一个段上创建表,而在另一个段上创建聚集索引,则其表与其索引一起移动,整个表将离开创建表的段而迁移到创建聚集索引的段中。
通过这种方法,可以快速而方便地把指定表移动到指定的设备上。
(4)系统预定义段
当用户创建一个数据库时,Sybase自动创建三个预定义的段:
system段:
存放系统表(包括所有用户对象的定义)
default段:
存放用户创建的各种对象,除非它们明显地指定到不同的段上。
Logsegment段:
存放数据库的事务日志。
(5)删除段
删除段是缩小段范围的一个特例:
段名,数据库名
4.使用阈值管理
阈值(Threshold)管理是一种自动监控数据库自由空间的机制,Sybase的阈值管理允许用户为数据库的某个段上的自由空间设置阈值并定义相应的存储过程。
当该段上的自由空间低于所置头阈值时,Sybase自动运行相应的存储过程。
在一个实际运行的数据库中,日志的增长速度一般要高于数据的增长,一旦日志段的自由空间用尽,SQL
Server在默认情况下会挂起所有数据操纵事务,客户端应用程序停止执行。
在每个分离的段上存储其事务日志的数据库均自动设置有最后机会阈值(Last
Chance
Threshold),其阈值是备份事务日志所需的自由空间的估计值。
当该段上的自由空间低于所置阈值时,Sybase自动运行名为sp_thresholdaction的存储过程。
该过程的名称及参数由系统预定义,内容由用户编写。
下面是一个简单示例。
CREATE
PROCEDURE
dbo.sp_thresholdaction
/*本过程参数通过位置传递,名称可以改变,但其定义及顺序不能变*/
@db_name
varchar(30),/*数据库名*/
@seg_name
varchar(30),/*段名*/
@space_lefe
int,/*剩余自由空间*/
@status
int/*最后机会阈值,其值为1,其它阈值,其值为0*/
AS
BEGIN
/*用户编写过程内容*/
dump
transaction
@db_name
with
truncate_only
END
第三讲
数据库与事务日志
一、创建用户数据库
Create
数据库名
On
设备_1=Size_1,//单位:
M
设备_2=Size_2,
……
日志设备=Log_Size
[With
Override]//在同一设备上创建数据库和事务日志时使用该选项
[For
Load]
//禁止用户访问直到数据库的装入或恢复操作完成为止
举例:
test_db
data_dev=100,//单位:
Index_dev=50
Log
log_dev=30
(1)将日志放在单独的设备上,有利于数据库性能的提高;
(2)图示:
Data_dev
Index_dev
log_dev
(3)如果将数据库和日志放在同一设备上,就不能实现增量备份;
(4)通常将System和Default段缩减范围到一个设备上,如删除设备Index_dev上的System段和Default段,创建新的段,用来存放专门的数据库对象。
二、更改数据库
1.改变数据库属主
通常用户数据库有系统管理员创建,它的默认属主是dbo。
系统过程sp_changeddbowner可改变数据库的属主关系,它必须由数据库管理员在要改变属主关系的数据库中执行。
语法如下:
sp_changeddbowner
login_name[,True]
其中参数True用于将权限一半传递给新属主。
2.扩展数据库
(1)扩展数据库空间
设备名=扩展空间
//单位:
如果扩展的设备对于数据库是新的,System和Default段会自动扩展到该设备上。
(2)扩展事务日志到新的设备上
sp_logdevice
数据库名,设备名
将数据库另外扩充5M,用于存储日志
my_dev=5
my_db,my_dev
3.删除数据库
drop
删除设备前必须删除其上的所有数据库,删除设备的命令是:
sp_dropdevice
三、事务日志
日志文件是用来记录数据库每一次修改活动的文件。
Server中的每一个数据库都有自己的日志文件,即系统表syslogs,也称为事务日志。
事务日志是撤消事务和出现故障时恢复事务的依据。
在某些情况下,事务日志比数据本身更为重要。
什么是事务?
数据库的修改是以事务为单位进行的。
一个事务就是一个操作序列,这些操作要么全做,要么全不做,它是一个不可分割的工作单位。
任何一个事务具备如下特征。
(1)执行的原子性(Atomic);
(2)保持数据的一致性(Consistency);
(3)彼此的隔离性(Isolation);
(4)作用的持久性(Durability)。
上述事务的四个特征被称为事务的ACID准则。
事务在运行过程中,SQL
Server把事务开始、事务结束以及对数据库的插入、删除和更新等每一个操作作为一个日志记录存放到事务日志中。
事务中的更新操作首先在数据库缓冲区(内存)中进行,缓冲区分别有用来记录操作活动的数据页(data
page)和日志页(log
page)。
当运行到commit
tran时,日志页首先从缓冲区写到磁盘上,而后数据页从缓冲区写到磁盘上,即遵循“先与日志(write_ahead
log)”的原则,这样保证出现故障的情况下,通过日志能够得到最大限度的恢复。
恢复必须撤消发生故障时还未提交的事务,已完成的事务若仍有未从缓冲区写到数据库设备中,还要重新运行该事务。
附:
创建与装载数据库实例
master
decl
are
@vedvno
int
select
@vdevno=max(convert(tinyint,substring(convert(binary(4),d.low),v.low,1)))+1
from
master.dbo.sysdevices
d,master.dbo.spt_values
v
where
v.type=’E’and
v.number=3
declare
@v_str
char
(2)
@v_str=convert(char
(2),@vdevno)
print
@v_str
name=”YDDATA”,
physname=”D:
\Syb_Data\YDDATA.dat”,
vdevno=@vdevno+1,
size=153600
name=”YDINDEX”,
\Syb_Data\YDINDEX.dat”,
vdevno=@vdevno+2,
size=102400
name=”YDLOG”,
\Syb_Data\YDLOG.dat”,
vdevno=@vdevno+3,
size=76800