收藏本站 
广告服务 
网站地图 
>> 我们从网络和杂志上收集了近100000余篇各类电脑技术、网络技术、软件技术等方面的文章教程,我们的收录原则:不是精华拒不收录!
先飞电脑技术网技术文章
网络编程 | 网站建设 | 网络技术 | 设计教程 | 软件教学 | 程序开发 | 数据库开发 | 教育认证 | 硬件维护 | 媒体动画 | 机械电子 |
深入了解Sybase数据库的日常维护工作
[ 作者:佚名    转贴自:网络转载    阅读次数:18    更新时间:2007-8-20 12:07:00   录入:刘光勇 ]        
    数据库日常维护工作是系统管理员的重要职责。其内容主要包括以下几个部分: LcO=S#T  
一、备份系统数据 l<A$hp38TJ  
SYBASE 系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性。SQL Server 提供了两种不同类型的恢复机制:一类是系统自动完成的恢复,这种措施在每次系统启动时都自动进行,保证了在系统瘫痪前完成的事务都写到数据库设备上,而未完成的事务都被回退;另一类是人工完成的恢复,这是通过 DUMP 和 LOAD 命令来执行人工备份和恢复工作。因此定期备份事务日志和数据库是一项十分重要的日常维护工作。 1、备份数据库 H=AeqrWB5  
Z8APP8F2#%  
每一个数据库都应在创建之后卸出,从而提供一个装入基点。在此之后按排定的时间周期表卸出。比如每周五卸出数据库。对一般数据库系统卸出数据库周期建议为每周一次。 {"2XBWm9  
除了按计划周期卸出数据库之外,还需在每次运行没有日志的操作后卸出数据库。例如: M\96E?^#i  
·每次强制地运行了 DUMP TRAN WITH NO_LOG (因为数据库的磁盘空溢出); KO)BSd_t  
·每次用 sp_dboption 允许 select into/bulkcopy 做快速拷贝,或用 SELECT INTO 命令创建一个永久性的表,或使用了 WRITETEXT 命令。 oEE#P]  
卸出数据库的命令为: Ttx bR^26  
/ .eJA  
DUMP DATABASE database_name lq\d:oc8  
TO dump_device xZAI kxF J  
W gO}'U<%  
database_name 是要卸出的数据库名称,dump_device 是卸出设备的名称。用系统过程 sp_helpdevice 可以获得设备的信息。 Zx]<{f4E  
下面一条命令用来卸出数据库 my_db : _/rc\ {  
4HsD;Dw.?P  
DUMP DATABASE my_db wEp(&'_  
TO db_bk_dev 9|}-'jm4  
Z  g C  
2、备份事务日志 c;5k+so  
hiz'2sYj%  
如果事务日志与数据库放在同一个设备上,则事务日志不应与数据库分开备份。master 数据库和小于 4M 的用户数据库就是这种情况。一般数据库系统的数据库和日志分别放在不同的设备上,因此,可以用 DUMP TRAN 命令单独备份日志。 s6Q10:.  
备份事务日志的周期直接影响数据的恢复程度,因此建议每天备份。 tl5 9a92  
备份事务日志的命令格式为: *\D||[Z  
Y|BfP*9  
DUMP TRANsaction database_name %+h{5=!  
[TO dump_device] !bob3Hb  
[WITH TRUNCATE_ONLY|WITH NO_LOG|WITH NO_TRUNCATE] P=(3tyT^<h  
une.:Y%  
其中 database_name 是要备份事务的数据库名称,dump_device 是备份设备名称,仅当包含了 WITH TRUNCATE_ONLY 或 WITH NO_LOG 子句时,才可以备份到设备。 OlsvA-o  
注意:如果总是用 DUMP DATEBASE (备份数据库及其日志),而不用 DUMP TRAN ,事务日志将不会刷新,而变得非常庞大。 @~9$8tk_  
对于 master 数据库和小型数据库每次运行 DUMP DATEBASE 之后应当运行 DUMP TRANsaction 命令刷新日志 。 M4A+Z;)^5  
下面一条命令备份数据库 db160 的事务日志到备份设备上: ]c)CXyCM  
Te3L g_@ja  
DUMP TRANsaction db160 MaWpPP4j)6  
TO db_log_bk_dev M-f?8Pj(  
WITH TRUNCATE_ONLY s msHu_F,  
ji \RcB   
3、备份数据库及其日志间的相互作用 ZN~L\4n  
Y Bze0$j/  
在至少卸出一次数据库前,卸出事务日志是毫无意义的。下图显示了备份数据库及其日志间的关系 9V[]IM,76  
T=UQWWT  
如果在星期二下午5:01出现非硬件故障,需要做的所有工作是装入磁带5(参见下一节:数据恢复),由于磁带5是下午5:00刚备份的,因此只有备份和装入之间的一分钟内的数据损失。 O||\)?xm  
但是,如果在星期二下午4:49失效会怎么样呢?在这种情况下,要装入磁带1(在星期五下午5:00的卸出)。然后,依次装入磁带2,3以及4。这样,系统将恢复到星期二上午10:00点的状态,星期二的大部分工作丢失了。此例显示了经常卸出事务的重要性。 Cv| mp+  
1@-C~x"pI  
二、万一系统失败时恢复数据库系统 c% AWj  
Vww%~Ot^&  
如果用户数据库存储的设备失效,从而数据库被破坏或不可存取,通过装入最新的数据库备份以及后来的事务日志备份可以恢复数据库。假设当前的事务日志存在于一个并没有毁坏的设备上,带着 WITH NO_TRUNCATE 选项的 DUMP TRANsaction 命令卸出它。 bH25 {  
要恢复数据库按如下步骤去做: ~j #r=XI{  
1、如果日志存在于一个分离的设备上,用带着 NO_TRUNCATE 选项的 DUMP TRANsaction 命令卸出被毁坏的或者不可存取的用户数据库事务日志。 Ypt^<e  
2、用下面的查询检查设备分配已毁坏数据库的设备使用情况。必须为同一目的赋同样的空间块。 }V%35 LXo  
下面的查询显示了分配给数据库 mydb 设备使用和尺寸情况: IQMv]on!X  
w rjz>@  
SELECT segmap,size FROM sysusages rS7U-S$<  
WHERE dbid = `,("| nv\  
( SELECT dbid FROM sysdatabases WHERE name = “mydb”) 1~ H0?=}  
56"#0UX  
3、检查查询的输出。在 segmap 列的 ‘3’代表数据分配,‘4’代表日志分配。size 列代表 2K 数据块的数目。注意此信息的次序、使用和尺寸部分。例如,输出为: Fv&<kT@  
H {Z~h3c>  
segmapSize nt)W%'  
-------------------- f[D?gB{@7  
310240//实际尺寸为:20M e8KBw]S  
35120//实际尺寸为:10M ;QL,@&0|  
45120//实际尺寸为:10M qC xPItb  
31024//实际尺寸为:2M g"?X.''X  
42048//实际尺寸为:4M d:Cd%  
+Lu L# Y  
4、用 DROP DATABASE 命令删除毁坏设备上的数据库。如果系统报错,用DBCC DBREPAIR 命令的 DROPDB 选项。 z N4}Dm   
5、删除数据库后,用 sp_dropdevice 删除毁坏了的设备。 `=q e{CS3B  
6、用 DISK INIT 初始化新的数据库设备。 = ]+q,#p  
7、重建数据库。用 CREATE DATABASE 命令从老的 sysusages 表拷贝所有的行,并包含第一逻辑设备。 yz_Lm7a,  
对上例,命令为: P"s0"1J<<  
9OXP(qZr  
CREATE DATABASE mydb  ">&1h~  
ON datadev1=20,datadev2=10 HV5{a +  
LOG ON logdev1=10 .OJBT~%4t  
*?2N1*!'"=  
8、用 ALTER DATABASE 命令重建其余入口。在此例中,在datadev1上分配更多的空间,命令为: a+ju"a}  
0_F<;j_  
ALTER DATABASE mydb ON datadev1=2 He\1]wo~iD  
B4'$/?O  
9、用 LOAD DATABASE 重新装入数据库,然后用 LOAD TRAN 装入前面卸出的日志。 7Q# 9abC  
LOAD DATABASE 命令语法是: xAFGvB  
t0C[C" +  
LOAD DATABASE database_name _5yn+v{  
FROM dump_device u]Okz!}C2  
v(YYc$N<3  
LOAD TRANsaction 命令的语法是: 8a#tfZcL  
MB i}  
LOAD TRANsaction database_name FROM dump_device ![@bb~SrkC  
k"Ubh,#  
卸出数据库和事务日志的缺省权限归数据库所有者,且可以传递给其他用户;装载数据库和事务的权限也归数据库所有者,但不能传递。 NS&3=Kw<  
hF n.*a1  
二、产生用户信息表,并为信息表授权; mWb`z ?0  
系统维护人员的另一个日常事务是为用户创建新的信息表,并为之授权。创建表以及为表授权的方法已经在讲过,在此只将有关命令语法写出来。 lyhjN9  
·创建表的命令为: 2!P^h  
h5#fy~5'  
CREATE TABLE table_name vYq[=zb (  
( column_1 datatype [NULL | NOT NULL | IDENTITY], oN ZYUUov  
column_2 …… "oX~]v  
-8H( %m %  
go n9CF7r9zd  
fX<`&GX  
ALTER TABLE table_name ~d 1y9xYUs  
ADD PRIMARY KEY (column_list) 4;Ik$^#j  
go x6>;ea  
;$+=ci+vC  
·删除表的命令格式为: = ~\?G  
" G)T 3Y^  
DROP TABLE table_name (P6 Rc  
go $] eh2cOA`  
T) w|G1e)  
·为表授权的命令格式为: %Z;ck  
{YrI"u  
GRANT {ALL|permission_list} N{WmM6  
ON table_name TO user_name S~a+L`=^[,  
go 3ryY Mt!t  
^;`\{8:-  
·收回权限的命令格式为 R>Z2w.c  
Au`W%i;ZI  
REVOKE {ALL|permission_list} cun7} }  
ON table_name FROM user_name N#rU'^'  
go N]"O9n'  
<NHaEb'|  
三、监视系统运行状况,及时处理系统错误; 0{Utk#*N  
系统管理员的另一项日常工作是监视系统运行情况。主要有以下几个方面: 4DFrT\"[+  
1、监视当前用户以及进程的信息 4}@ o1{W  
使用系统过程:sp_who GNH^'  
说明:该命令显示当前系统所有注册用户及进程信息,如下表是某系统的信息。 gIgDBy$T  
SpidStatusLoginamehostnameblkdbnamecmd R6~dB2,   
--------------------------------------------------------------- E?ijUts;X  
1RunningSascosysv0MasterSELECT s<qx zv  
2SleepingNULL0MasterNETWORK HANDLE ^2 IUg@[r  
3SleepingNULL0MasterDEADLOCK TUNE bdc8szu  
4SleepingNULL0MasterMIRROR HANDLER >:kKt}CiD  
5SleepingNULL0MasterHOUSEKEEPER s}z\dvm#  
6SleepingNULL0MasterCHECKPOINT SLEEP ]Gt]o& K'  
从左向右依次显示:进程号、当前状态、注册用户名、主机名、占用块数、数据库名以及当前命令。 : W('\j  
如果监视时发现进程总数接近最大连接数(用系统过程:sp_configure “user conn” 查看)时,应下掉不活动或无关进程,以保证系统正常运做;另外亦可监视非法用户或用户使用不属于自己使用范围的数据库等情况。 x/ .]|D  
2、监视目标占用空间情况 *M7yH;s'ga  
使用系统过程:sp_spaceused .@b^5 3t7  
说明:该过程显示行数、数据页数以及当前数据库中由某个目标或所有目标所占用的空间。如下表是某数据库日志表的信息: "2] Avd{  
R 0rg}9V  
NameRow_totalreserveddataIndex_sizeunused -G-r-|[~  
------------------------------------------------------------ OGBV|\ 0  
SyslogsNot avail32KB32KB0KBNot avail Mb$!wfi  
jik-\x@6  
日常要监视的主要目标有:用户数据库、数据库日志表(syslogs)以及计费原始数据表等。如果发现占用空间过大,对日志表要进行转储;对其他目标则应扩充空间或清楚垃圾数据。 d?]Cje}%  
3、监视 SQL Server 统计数字 'tzH)R!2  
使用系统过程:sp_monitor VVM<fuZ G  
说明:sp_monitor 显示SQL Server 的历史统计数字,下表是某系统的统计数字: "2 RcLsA  
lp*6? ?  
Last_runCurrent_runSeconds ;]g h{(=  
--------------------------------------------------------------- uH ~H"m$  
May 13 2000 1:27PMMay 13 2000 3:01PM5678 %RYxDZB  
CPU_busyIO_busyIdle 3JtO--d <  
--------------------------------------------------------------- EuPG+RkFoY  
16(6)-0%0(0)-0%5727(5672)-99% .SS]jC  
Packets_receivedPackets_sentPacket_errors A[$dg Q)]  
--------------------------------------------------------------- T1]7fRf hF  
21(17)100(97)0(0) ^zc]| m  
Total_readTotal_writeTotal_errorsConnections pl NC$F`  
-------------------------------------------------------- nY?Vu u4#  
785(366)311(113)0(0)3(2) zby1 ;EB2  
Ug$ke0  
上表依次给出该系统本次运行统计的上一次时间、本次时间、间隔秒数、CPU占用、IO占用、收发包情况、系统读入写出情况等信息 5,RO g  
9 4)@r]E  
四、保证系统数据安全,周期更改用户口令; nA7,J\P  
为保证系统数据的安全,系统管理员必须依据系统的实际情况,执行一系列的安全保障措施。其中,周期性的更改用户口令是比较常用且十分有效的措施。 B*;.%  
更改用户口令是通过调用系统过程sp_password 来实现的。Sp_password 的语法为: B5bs(_h  
sp_password caller_password,new_password [,loginame] 5{!Hs }+27  
其中caller_password 是登录口令(老口令),new_password是新口令,loginame是登录名称。
【加入到收藏夹】告诉好友】【打印此文】【关闭窗口
  版权声明:本站提供的“深入了解Sybase数据库的日常维护工作”版权归文章所有者,转载请注明出处!
 ·上一篇文章:DB2数据库归档日志的管理方案简介      ·下一篇文章:快速了解Sybase数据库中的函数库
相关文章
·深入黑客内心世界 像黑客一样思考问题[31]
·Java中异常机制的深入研究[63]
·深入认识如何选择与保护密码[49]
·深入了解Flash AS中的setInterval方法[16]
·深入了解Oracle 10g中新型层次查询选项[24]
网站主页 | 收藏本页 | 联系我们 | 广告服务 | 站点地图 | 会员注册 | 招聘信息 | 内容指正

联系QQ:先飞电脑技术网站事务联系QQ,点击可以直接留言. 32933427 电话:13710542091 [世界排名] 鄂ICP备05005890号