数据库维护:数据库日常维护




数据库日常维护(参考)
数据库日常维护工作是系统管理员重要职责其内容主要包括以下几个部分:
、备份系统数据
SYBASE系统备份和恢复机制保证了在系统失败时重新获取数据可能性SQLServer提供了两种区别类型恢复机制:类是系统自动完成恢复这种措施在每次系统启动时都自动进行保证了在系统瘫痪前完成事务都写到数据库设备上而未完成事务都被回退;另类是人工完成恢复这是通过DUMP和LOAD命令来执行人工备份和恢复工作因此定期备份事务日志和数据库是项十分重要日常维护工作

1、备份数据库

个数据库都应在创建的后卸出从而提供个装入基点在此的后按排定时间周期表卸出比如每周 5卸出数据库般数据库系统卸出数据库周期建议为每周
除了按计划周期卸出数据库的外还需在每次运行没有日志操作后卸出数据库例如:
·每次强制地运行了DUMPTRANWITHNO_LOG(数据库磁盘空溢出);
·每次用sp_dboption允许selecto/bulkcopy做快速拷贝或用SELECTINTO命令创建个永久性或使用了WRITETEXT命令
卸出数据库命令为:

DUMPDATABASEdatabase_name
TOdump_device

database_name是要卸出数据库名称dump_device是卸出设备名称用系统过程sp_helpdevice可以获得设备信息
下面条命令用来卸出数据库my_db:

DUMPDATABASEmy_db
TOdb_bk_dev

2、备份事务日志

如果事务日志和数据库放在同个设备上则事务日志不应和数据库分开备份master数据库和小于4M用户数据库就是这种情况般数据库系统数据库和日志分别放在区别设备上因此可以用DUMPTRAN命令单独备份日志
备份事务日志周期直接影响数据恢复程度因此建议每天备份
备份事务日志命令格式为:

DUMPTRANsactiondatabase_name
[TOdump_device]
[WITHTRUNCATE_ONLY|WITHNO_LOG|WITHNO_TRUNCATE]

其中database_name是要备份事务数据库名称dump_device是备份设备名称仅当包含了WITHTRUNCATE_ONLY或WITHNO_LOG子句时才可以备份到设备
注意:如果总是用DUMPDATEBASE(备份数据库及其日志)而不用DUMPTRAN事务日志将不会刷新而变得非常庞大
对于master数据库和小型数据库每次运行DUMPDATEBASE的后应当运行DUMPTRANsaction命令刷新日志
下面条命令备份数据库db160事务日志到备份设备上:

DUMPTRANsactiondb160
TOdb_log_bk_dev
WITHTRUNCATE_ONLY

3、备份数据库及其日志间相互作用

在至少卸出次数据库前卸出事务日志是毫无意义下图显示了备份数据库及其日志间关系

如果在星期 2下午5:01出现非硬件故障需要做所有工作是装入磁带5(参见下节:数据恢复)由于磁带5是下午5:00刚备份因此只有备份和装入的间分钟内数据损失
但是如果在星期 2下午4:49失效会如何样呢?在这种情况下要装入磁带1(在星期 5下午5:00卸出)然后依次装入磁带23以及4这样系统将恢复到星期 2上午10:00点状态星期 2大部分工作丢失了此例显示了经常卸出事务重要性

2、万系统失败时恢复数据库系统

如果用户数据库存储设备失效从而数据库被破坏或不可存取通过装入最新数据库备份以及后来事务日志备份可以恢复数据库假设当前事务日志存在于个并没有毁坏设备上带着WITHNO_TRUNCATE选项DUMPTRANsaction命令卸出它
要恢复数据库按如下步骤去做:
1、如果日志存在于个分离设备上用带着NO_TRUNCATE选项DUMPTRANsaction命令卸出被毁坏或者不可存取用户数据库事务日志
2、用下面查询检查设备分配已毁坏数据库设备使用情况必须为同赋同样空间块
下面查询显示了分配给数据库mydb设备使用和尺寸情况:

SELECTsegmapsizeFROM sysusages
WHEREdbid=
(SELECTdbidFROMsysdatabasesWHEREname=“mydb”)

3、检查查询输出在segmap列‘3’代表数据分配‘4’代表日志分配size列代表2K数据块数目注意此信息次序、使用和尺寸部分例如输出为:

segmapSize
--------------------
310240//实际尺寸为:20M
35120//实际尺寸为:10M
45120//实际尺寸为:10M
31024//实际尺寸为:2M
42048//实际尺寸为:4M

4、用DROPDATABASE命令删除毁坏设备上数据库如果系统报错用DBCCDBREPAIR命令DROPDB选项
5、删除数据库后用sp_dropdevice删除毁坏了设备
6、用DISKINIT化新数据库设备
7、重建数据库用CREATEDATABASE命令从老sysusages表拷贝所有并包含第逻辑设备
对上例命令为:

CREATEDATABASEmydb
ONdatadev1=20datadev2=10
LOGONlogdev1=10

8、用ALTERDATABASE命令重建其余入口在此例中在datadev1上分配更多空间命令为:

ALTERDATABASEmydbONdatadev1=2

9、用LOADDATABASE重新装入数据库然后用LOADTRAN装入前面卸出日志


LOADDATABASE命令语法是:

LOADDATABASEdatabase_name
FROMdump_device

LOADTRANsaction命令语法是:

LOADTRANsactiondatabase_name
FROMdump_device

卸出数据库和事务日志缺省权限归数据库所有者且可以传递给其他用户;装载数据库和事务权限也归数据库所有者但不能传递

2、产生用户信息表并为信息表授权;
系统维护人员个日常事务是为用户创建新信息表并为的授权创建表以及为表授权思路方法已经在讲过在此只将有关命令语法写出来
·创建表命令为:

CREATETABLEtable_name
(column_1datatype[NULL|NOTNULL|IDENTITY]
column_2……
)
go

ALTERTABLEtable_name
ADDPRIMARYKEY(column_list)
go

·删除表命令格式为:

DROPTABLEtable_name
go

·为表授权命令格式为:

GRANT{ALL|permission_list}
ONtable_nameTOuser_name
go

·收回权限命令格式为

REVOKE{ALL|permission_list}
ONtable_nameFROMuser_name
go


3、监视系统运行状况及时处理系统
系统管理员项日常工作是监视系统运行情况主要有以下几个方面:
1、监视当前用户以及进程信息
使用系统过程:sp_who
介绍说明:该命令显示当前系统所有注册用户及进程信息如下表是某系统信息
SpidStatusLoginamehostnameblkdbnamecmd
---------------------------------------------------------------
1RunningSascosysv0MasterSELECT
2SleepingNULL0MasterNETWORKHANDLE
3SleepingNULL0MasterDEADLOCKTUNE
4SleepingNULL0MasterMIRRORHANDLER
5SleepingNULL0MasterHOUSEKEEPER
6SleepingNULL0MasterCHECKPOINTSLEEP
从左向右依次显示:进程号、当前状态、注册用户名、主机名、占用块数、数据库名以及当前命令
如果监视时发现进程总数接近最大连接数(用系统过程:sp_configure“userconn”查看)时应下掉不活动或无关进程以保证系统正常运做;另外亦可监视非法用户或用户使用不属于自己使用范围数据库等情况
2、监视目标占用空间情况
使用系统过程:sp_spaceused
介绍说明:该过程显示行数、数据页数以及当前数据库中由某个目标或所有目标所占用空间如下表是某数据库日志表信息:

NameRow_totalreserveddataIndex_sizeunused
------------------------------------------------------------
SyslogsNotavail32KB32KB0KBNotavail

日常要监视主要目标有:用户数据库、数据库日志表(syslogs)以及计费原始数据表等如果发现占用空间过大对日志表要进行转储;对其他目标则应扩充空间或清楚垃圾数据
3、监视SQLServer统计数字
使用系统过程:sp_monitor
介绍说明:sp_monitor显示SQLServer历史统计数字下表是某系统统计数字:

Last_runCurrent_runSeconds
---------------------------------------------------------------
May1320001:27PMMay1320003:01PM5678
CPU_busyIO_busyIdle
---------------------------------------------------------------
16(6)-0%0(0)-0%5727(5672)-99%
Packets_receivedPackets_sentPacket_errors
---------------------------------------------------------------
21(17)100(97)0(0)
Total_readTotal_writeTotal_errorsConnections
--------------------------------------------------------
785(366)311(113)0(0)3(2)

上表依次给出该系统本次运行统计次时间、本次时间、间隔秒数、CPU占用、IO占用、收发包情况、系统读入写出情况等信息

4、保证系统数据安全周期更改用户口令;
为保证系统数据安全系统管理员必须依据系统实际情况执行系列安全保障措施其中周期性更改用户口令是比较常用且十分有效措施
更改用户口令是通过系统过程sp_password来实现Sp_password语法为:
sp_passwordcaller_password,_password[,loginame]
其中caller_password是登录口令(老口令)_password是新口令loginame是登录名称




jazy 回复于:2002-09-20 17:05:20不错!很完整!

但是般来说采用增量备份虽然节省空间但是不太安全顺序有误可能恢复起来比较麻烦!

dxgmaomao 回复于:2002-09-20 22:07:22感谢版主呵!

月冷西湖 回复于:2002-09-21 19:09:22不客气


Tags:  数据库维护计划器 数据库维护员 数据库维护计划 数据库维护

延伸阅读

最新评论

发表评论