《2022年数据库日常维护 3》由会员分享,可在线阅读,更多相关《2022年数据库日常维护 3(7页珍藏版)》请在金锄头文库上搜索。
1、数据库日常维护 (参考 ) 数据库日常维护工作是系统管理员的重要职责。其内容主要包括以下几个部分:一、备份系统数据SYBASE 系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性。SQL Server 提供了两种不同类型的恢复机制:一类是系统自动完成的恢复,这种措施在每次系统启动时都自动进行,保证了在系统瘫痪前完成的事务都写到数据库设备上,而未完成的事务都被回退;另一类是人工完成的恢复,这是通过DUMP 和 LOAD 命令来执行人工备份和恢复工作。因此定期备份事务日志和数据库是一项十分重要的日常维护工作。1、备份数据库每一个数据库都应在创建之后卸出,从而提供一个装入基点。在此之后按排定
2、的时间周期表卸出。比如每周五卸出数据库。对一般数据库系统卸出数据库周期建议为每周一次。除了按计划周期卸出数据库之外,还需在每次运行没有日志的操作后卸出数据库。例如: 每次强制地运行了DUMP TRAN WITH NO_LOG (因为数据库的磁盘空溢出); 每次用sp_dboption 允许select into/bulkcopy 做快速拷贝,或用SELECT INTO 命令创建一个永久性的表,或使用了WRITETEXT 命令。卸出数据库的命令为:DUMP DATABASE database_name TO dump_device database_name 是要卸出的数据库名称,dump_de
3、vice 是卸出设备的名称。用系统过程sp_helpdevice 可以获得设备的信息。下面一条命令用来卸出数据库my_db :DUMP DATABASE my_db TO db_bk_dev 2、备份事务日志名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 如果事务日志与数据库放在同一个设备上,则事务日志不应与数据库分开备份。master 数据库和小于4M 的用户数据库就是这种情况。一般数据库系统的数据库和日志分别放在不同的设备上
4、,因此,可以用DUMP TRAN 命令单独备份日志。备份事务日志的周期直接影响数据的恢复程度,因此建议每天备份。备份事务日志的命令格式为:DUMP TRANsaction database_name TO dump_device WITH TRUNCATE_ONLY|WITH NO_LOG|WITH NO_TRUNCATE 其中 database_name 是要备份事务的数据库名称,dump_device 是备份设备名称,仅当包含了WITH TRUNCATE_ONLY 或 WITH NO_LOG 子句时,才可以备份到设备。注意:如果总是用DUMP DATEBASE (备份数据库及其日志),而不
5、用DUMP TRAN ,事务日志将不会刷新,而变得非常庞大。对于 master 数据库和小型数据库每次运行DUMP DATEBASE 之后应当运行DUMP TRANsaction 命令刷新日志。下面一条命令备份数据库db160 的事务日志到备份设备上:DUMP TRANsaction db160 TO db_log_bk_dev WITH TRUNCATE_ONLY 3、备份数据库及其日志间的相互作用在至少卸出一次数据库前,卸出事务日志是毫无意义的。下图显示了备份数据库及其日志间的关系如果在星期二下午5:01 出现非硬件故障,需要做的所有工作是装入磁带5(参见下一节:数据恢复),由于磁带 5
6、是下午 5:00 刚备份的,因此只有备份和装入之间的一分钟内的数据损失。但是,如果在星期二下午4:49 失效会怎么样呢?在这种情况下,要装入磁带1(在星期五下午5:00 的卸出)。然后,依次装入磁带2,3 以及 4。这样,系统将恢复到星期二上午10:00 点的状态,星期二的大部分工作丢失了。此例显示了经常卸出事务的重要性。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 二、万一系统失败时恢复数据库系统如果用户数据库存储的设备失效
7、,从而数据库被破坏或不可存取,通过装入最新的数据库备份以及后来的事务日志备份可以恢复数据库。假设当前的事务日志存在于一个并没有毁坏的设备上,带着WITH NO_TRUNCATE 选项的DUMP TRANsaction 命令卸出它。要恢复数据库按如下步骤去做:1、如果日志存在于一个分离的设备上,用带着NO_TRUNCATE 选项的DUMP TRANsaction 命令卸出被毁坏的或者不可存取的用户数据库事务日志。2、用下面的查询检查设备分配已毁坏数据库的设备使用情况。必须为同一目的赋同样的空间块。下面的查询显示了分配给数据库mydb 设备使用和尺寸情况:SELECT segmap,size FR
8、OMsysusages WHERE dbid = ( SELECT dbid FROM sysdatabases WHERE name = “mydb ” )3、检查查询的输出。在segmap 列的 ,3?代表数据分配, ,4?代表日志分配。 size 列代表2K 数据块的数目。注意此信息的次序、使用和尺寸部分。例如,输出为:segmapSize - 310240/实际尺寸为: 20M 35120/实际尺寸为: 10M 45120/实际尺寸为: 10M 31024/实际尺寸为: 2M 42048/实际尺寸为: 4M 4、用 DROP DATABASE 命令删除毁坏设备上的数据库。如果系统报错,
9、用DBCC DBREPAIR 命令的DROPDB 选项。5、删除数据库后,用sp_dropdevice 删除毁坏了的设备。6、用 DISK INIT 初始化新的数据库设备。7、重建数据库。 用 CREATE DATABASE 命令从老的sysusages 表拷贝所有的行, 并包含第一逻辑设备。对上例,命令为:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - CREATE DATABASE mydb ON datadev1=20,d
10、atadev2=10 LOG ON logdev1=10 8、用 ALTER DATABASE 命令重建其余入口。在此例中,在datadev1上分配更多的空间,命令为:ALTER DATABASE mydb ON datadev1=2 9、用 LOAD DATABASE 重新装入数据库,然后用LOAD TRAN 装入前面卸出的日志。LOAD DATABASE 命令语法是:LOAD DATABASE database_name FROM dump_device LOAD TRANsaction 命令的语法是:LOAD TRANsaction database_name FROM dump_dev
11、ice 卸出数据库和事务日志的缺省权限归数据库所有者,且可以传递给其他用户;装载数据库和事务的权限也归数据库所有者,但不能传递。二、产生用户信息表,并为信息表授权;系统维护人员的另一个日常事务是为用户创建新的信息表,并为之授权。创建表以及为表授权的方法已经在讲过,在此只将有关命令语法写出来。 创建表的命令为:CREATE TABLE table_name ( column_1 datatype NULL | NOT NULL | IDENTITY ,column_2 )go 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精
12、心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - ALTER TABLE table_name ADD PRIMARY KEY (column_list )go 删除表的命令格式为:DROP TABLE table_name go 为表授权的命令格式为:GRANT ALL|permission_list ON table_name TO user_name go 收回权限的命令格式为REVOKE ALL|permission_list ON table_name FROM user_name go 三、监视系统运行状况,及时处理系统错误;系统管理员
13、的另一项日常工作是监视系统运行情况。主要有以下几个方面:1、监视当前用户以及进程的信息使用系统过程: sp_who 说明:该命令显示当前系统所有注册用户及进程信息,如下表是某系统的信息。SpidStatusLoginamehostnameblkdbnamecmd - 1RunningSascosysv0MasterSELECT 2SleepingNULL0MasterNETWORK HANDLE 3SleepingNULL0MasterDEADLOCK TUNE 4SleepingNULL0MasterMIRROR HANDLER 名师资料总结 - - -精品资料欢迎下载 - - - - -
14、- - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 5SleepingNULL0MasterHOUSEKEEPER 6SleepingNULL0MasterCHECKPOINT SLEEP 从左向右依次显示:进程号、当前状态、注册用户名、主机名、占用块数、数据库名以及当前命令。如果监视时发现进程总数接近最大连接数(用系统过程:sp_configure “user conn” 查看)时,应下掉不活动或无关进程,以保证系统正常运做;另外亦可监视非法用户或用户使用不属于自己使用范围的数据库等情况。2
15、、监视目标占用空间情况使用系统过程: sp_spaceused 说明:该过程显示行数、数据页数以及当前数据库中由某个目标或所有目标所占用的空间。如下表是某数据库日志表的信息:NameRow_totalreserveddataIndex_sizeunused - SyslogsNot avail32KB32KB0KBNot avail 日常要监视的主要目标有:用户数据库、数据库日志表(syslogs)以及计费原始数据表等。如果发现占用空间过大,对日志表要进行转储;对其他目标则应扩充空间或清楚垃圾数据。3、监视SQL Server 统计数字使用系统过程: sp_monitor 说明: sp_mon
16、itor 显示 SQL Server 的历史统计数字,下表是某系统的统计数字:Last_runCurrent_runSeconds - May 13 2000 1:27PMMay 13 2000 3: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 名师资料总结 - - -精品资料欢迎下载 - - - - - -
17、 - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - - 785(366)311(113)0(0)3(2) 上表依次给出该系统本次运行统计的上一次时间、本次时间、 间隔秒数、 CPU 占用、IO 占用、收发包情况、系统读入写出情况等信息四、保证系统数据安全,周期更改用户口令;为保证系统数据的安全,系统管理员必须依据系统的实际情况,执行一系列的安全保障措施。其中,周期性的更改用户口令是比较常用且十分有效的措施。更改用户口令是通过调用系统过程sp_password 来实现的。 Sp_password 的语法为:sp_password caller_password,new_password ,loginame 其中 caller_password 是登录口令(老口令),new_password 是新口令, loginame 是登录名称。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -