数据库维护
当一个数据库被创建以后的工作都叫做数据库维护. 数据库维护比数据库的创建和使用更难. 数据库日常维护工作是系统管理员的重要职责。其内容主要包括以下几个部分: 一、备份系统数据 SYBASE 系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性。SQL Server 提供了两种不同类型的恢复机制:一类是系统自动完成的恢复,这种措施在每次系统启动时都自动进行,保证了在系统瘫痪前完成的事务都写到数据库设备上,而未完成的事务都被回退;另一类是人工完成的恢复,这是通过 DUMP 和 LOAD 命令来执行人工备份和恢复工作。因此定期备份事务日志和数据库是一项十分重要的日常维护工作。 1、备份数据库 每一个数据库都应在创建之后卸出,从而提供一个装入基点。在此之后按排定的时间周期表卸出。比如每周五卸出数据库。对一般数据库系统卸出数据库周期建议为每周一次。 除了按计划周期卸出数据库之外,还需在每次运行没有日志的操作后卸出数据库。例如: ·每次强制地运行了 DUMP TRAN WITH NO_LOG (因为数据库的磁盘空溢出); ·每次用 sp_dboption 允许 select into/bulkcopy 做快速拷贝,或用 SELECT INTO 命令创建一个永久性的表,或使用了 WRITETEXT 命令。 卸出数据库的命令为: DUMP DATABASE database_name TO dump_device database_name 是要卸出的数据库名称,dump_device 是卸出设备的名称。用系统过程 sp_helpdevice 可以获得设备的信息。 下面一条命令用来卸出数据库 my_db : DUMP DATABASE my_db TO db_bk_dev 2、备份事务日志 如果事务日志与数据库放在同一个设备上,则事务日志不应与数据库分开备份。master 数据库和小于 4M 的用户数据库就是这种情况。一般数据库系统的数据库和日志分别放在不同的设备上,因此,可以用 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 (备份数据库及其日志),而不用 DUMP TRAN ,事务日志将不会刷新,而变得非常庞大。 对于 master 数据库和小型数据库每次运行 DUMP DATEBASE 之后应当运行 DUMP TRANsaction 命令刷新日志 。 下面一条命令备份数据库 db160 的事务日志到备份设备上: DUMP TRANsaction db160 TO db_log_bk_dev WITH TRUNCATE_ONLY 3、备份数据库及其日志间的相互作用 在至少卸出一次数据库前,卸出事务日志是毫无意义的。下图显示了备份数据库及其日志间的关系 如果在星期二下午5:01出现非硬件故障,需要做的所有工作是装入磁带5(参见下一节:数据恢复),由于磁带5是下午5:00刚备份的,因此只有备份和装入之间的一分钟内的数据损失。 但是,如果在星期二下午4:49失效会怎么样呢?在这种情况下,要装入磁带1(在星期五下午5:00的卸出)。然后,依次装入磁带2,3以及4。这样,系统将恢复到星期二上午10:00点的状态,星期二的大部分工作丢失了。此例显示了经常卸出事务的重要性。 二、万一系统失败时恢复数据库系统 如果用户数据库存储的设备失效,从而数据库被破坏或不可存取,通过装入最新的数据库备份以及后来的事务日志备份可以恢复数据库。假设当前的事务日志存在于一个并没有毁坏的设备上,带着 WITH NO_TRUNCATE 选项的 DUMP TRANsaction 命令卸出它。 要恢复数据库按如下步骤去做: 1、如果日志存在于一个分离的设备上,用带着 NO_TRUNCATE 选项的 DUMP TRANsaction 命令卸出被毁坏的或者不可存取的用户数据库事务日志。 2、用下面的查询检查设备分配已毁坏数据库的设备使用情况。必须为同一目的赋同样的空间块。 下面的查询显示了分配给数据库 mydb 设备使用和尺寸情况: SELECT segmap,size FROM sysusages 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 命令删除毁坏设备上的数据库。如果系统报错,用DBCC DBREPAIR 命令的 DROPDB 选项。 5、删除数据库后,用 sp_dropdevice 删除毁坏了的设备。 6、用 DISK INIT 初始化新的数据库设备。 7、重建数据库。用 CREATE DATABASE 命令从老的 sysusages 表拷贝所有的行,并包含第一逻辑设备。 对上例,命令为: CREATE DATABASE mydb ON datadev1=20,datadev2=10 LOG ON logdev1=10 8、用 ALTER DATABASE 命令重建其余入口。在此例中,在datadev1上分配更多的空间,命令为: ALTER DATABASE mydb ON datadev1=2[page] 9、用 LOAD DATABASE 重新装入数据库,然后用 LOAD TRAN 装入前面卸出的日志。 LOAD DATABASE 命令语法是: LOAD DATABASE database_name FROM dump_device LOAD TRANsaction 命令的语法是: LOAD TRANsaction database_name FROM dump_device 卸出数据库和事务日志的缺省权限归数据库所有者,且可以传递给其他用户;装载数据库和事务的权限也归数据库所有者,但不能传递。 三、产生用户信息表,并为信息表授权; 系统维护人员的另一个日常事务是为用户创建新的信息表,并为之授权。创建表以及为表授权的方法已经在讲过,在此只将有关命令语法写出来。 ·创建表的命令为: CREATE TABLE table_name ( column_1 datatype [NULL | NOT NULL | IDENTITY], column_2 …… ) go 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 四、监视系统运行状况,及时处理系统错误; 系统管理员的另一项日常工作是监视系统运行情况。主要有以下几个方面: 1、监视当前用户以及进程的信息 使用系统过程:sp_who 说明:该命令显示当前系统所有注册用户及进程信息,如下表是某系统的信息。 SpidStatusLoginamehostnameblkdbnamecmd --------------------------------------------------------------- 1RunningSascosysv0MasterSELECT 2SleepingNULL0MasterNETWORK HANDLE 3SleepingNULL0MasterDEADLOCK TUNE 4SleepingNULL0MasterMIRROR HANDLER 5SleepingNULL0MasterHOUSEKEEPER 6SleepingNULL0MasterCHECKPOINT SLEEP 从左向右依次显示:进程号、当前状态、注册用户名、主机名、占用块数、数据库名以及当前命令。 如果监视时发现进程总数接近最大连接数(用系统过程:sp_configure “user conn” 查看)时,应下掉不活动或无关进程,以保证系统正常运做;另外亦可监视非法用户或用户使用不属于自己使用范围的数据库等情况。 2、监视目标占用空间情况 使用系统过程:sp_spaceused 说明:该过程显示行数、数据页数以及当前数据库中由某个目标或所有目标所占用的空间。如下表是某数据库日志表的信息: NameRow_totalreserveddataIndex_sizeunused ------------------------------------------------------------ SyslogsNot avail32KB32KB0KBNot avail 日常要监视的主要目标有:用户数据库、数据库日志表(syslogs)以及计费原始数据表等。如果发现占用空间过大,对日志表要进行转储;对其他目标则应扩充空间或清楚垃圾数据。 3、监视 SQL Server 统计数字 使用系统过程:sp_monitor 说明:sp_monitor 显示SQL Server 的历史统计数字,下表是某系统的统计数字: Last_runCurrent_runSeconds --------------------------------------------------------------- May 13 2000 1:27PMMay 13 2000 3:01PM5678 CPU_busyIO_busyIdle --------------------------------------------------------------- 16(6)-0%0(0)-0W27(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占用、收发包情况、系统读入写出情况等信息 五、保证系统数据安全,周期更改用户口令; 为保证系统数据的安全,系统管理员必须依据系统的实际情况,执行一系列的安全保障措施。其中,周期性的更改用户口令是比较常用且十分有效的措施。 更改用户口令是通过调用系统过程sp_password 来实现的。Sp_password 的语法为: sp_password caller_password,new_password [,loginame] 其中caller_password 是登录口令(老口令),new_password是新口令,loginame是登录名称。
企业在信息管理过程中,大量的数据存储、共享、访问和修改,都需要通过数据库系统来实现。数据库系统作为信息的聚集体,是计算机信息系统的核心,其性能在很大程度上影响着企业信息化水平的高低。一个公司,不管它是自己开发应用软件,还是购买第三方应用软件,都需要对数据库进行管理和维护。科学有效地管理与维护数据库系统,保证数据的安全性、完整性和有效性,己经成为现代企业信息系统建设过程中的关键环节。
数据库管理中存在的问题
随着信息网络技术的飞速发展,数据库的应用越来越广泛,但也随之产生了一系列数据管理的问题,其中,尤为突出的是数据库安全性问题。
数据库安全性问题一直是困扰数据库管理员的难题。通常数据库面临的威胁主要有:软件和硬件环境出现意外,如磁盘损坏,系统崩溃等;计算机病毒可能造成系统崩溃,进而破坏数据;对数据库的不正确访问,引发数据库死循环,造成前端系统无法使用;未经授权非法访问数据库信息,窃取其中的数据;未经授权非法修改数据库中的数据,使其数据失去真实性;通过网络对数据库进行各种非法存取;通过网络破坏数据库系统的完整性、可靠性;对网络数据库进行拒绝式服务攻击等。而对于重要部门或敏感领域的数据,则会面临更多威胁。这就需要企业信息部门通过加强对数据库的日常维护和管理,来进一步保障网络数据库的安全。
做好数据库的日常管理与维护
数据库系统在信息化建设中的重要地位和作用告诉我们,数据库的日常管理与维护不容小视。为保证数据库数据的安全,企业应该做到未雨绸缪。
(一)完善管理制度,强化监管力度。数据库系统的安全与企业自身内部的安全机制、内外网络环境、从业人员素质等密切相关。因此,企业应该完善网络系统安全规章制度,防范因制度缺陷带来的风险;企业应该规范操作流程和故障处理流程,减少人为失误与故障,提高故障处理速度,缩短故障处理时间;企业应该通过建立科学合理的责任追究机制,防止出现由于工作态度、工作作风等各种人为因素导致的数据库安全事故。
(二)采取措施,确保数据库数据的安全。保证数据库数据的安全是数据库日常管理与维护工作的首要任务,企业需要采取的安全措施主要有:
确保网络及操作系统安全。网络系统是数据库应用的外部环境和基础,网络系统安全是数据库安全的第一道屏障。从技术角度讲,网络系统层次的安全防范技术有很多种,大致可以分为防火墙、数字签名与认证、入侵检测等。操作系统是数据库系统的运行平台,能够为数据库系统提供一定程度的安全保护。操
作系统的安全控制方法主要是采用隔离控制、访问控制、信息加密和审计跟踪。主要安全技术有操作系统安全策略、安全管理策略等。
加强用户身份验证。用户身份验证是数据库系统的重要防线。利用窗体身份验证数据库程序的漏洞,进而获取存储在数据库中的用户身份验证密码,这是目前对网络数据库攻击最常见的方式。对此,企业信息部门通常使用带有salt值的单向密码哈希值,以避免用户密码在数据库中以明文形式存储,减轻字典攻击带来的威胁。
对重要数据加密。数据加密交换又称密码学,是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行交换,实现信息隐蔽,从而有效保护信息的安全不受侵犯。数据库加密要求加解密的粒度是每个记录的字段数据。采用库外口加密的方式,对密钥的管理较为简单,只需借用文件加密的密钥管理方法,将加密后的数据块纳入数据库,在算法或数据库系统中做些必要的改动就行。这样有利于公共数据字典的使用和维护系统的完整性。
做好数据库备份与恢复。数据备份是备份数据库某个时刻的数据状态,当系统出现意外时用来恢复系统。依靠网络办公的企业,其信息系统很可能随时被破坏而丢失数据。因此,数据库管理系统必须具备把数据库从错误状态恢复到某一已知的正确状态的功能,这就是数据库的恢复技术。
(三)开展数据库健康检查。为及时发现数据库系统存在的问题,在日常管理与维护中,数据管理员要对数据库开展健康检查。当前,烟草行业内大部分企业使用的数据库是IBM DB2,对该数据库进行检查时,检查内容主要包括以下七个方面——
系统环境:操作系统版本、文件系统容量、内存交换区使用率、系统性能。
数据库环境:数据库和补丁版本、是否有僵尸数据库进程、数据库节点数、是否有其他数据库产品及版本。
日志记录:db2diag.log报错、db2inst1.nfy报错、是否有需要处理的DUMP文件。
数据库健康状况:表空间利用率和状态、表空间容器利用率和状态、排序溢出、是否需要收集统计信息、是否需要数据重组、活动日志和日志所在文件系统利用率、死锁发生率、锁升级发生率、锁等待的百分比、编目Cache命中率、包Cache命中率、监视堆利用率、数据库堆利用率、数据库缓冲池命中率。
数据库维护内容:最近一次统计信息收集时间、最近一次表数据重组时间、最近一次绑定包时间、最近一次数据库备份时间。
权限管理:public组的权限是否取消。
数据库基本信息记录:数据库内存使用、环境变量。
数据库管理的意
义重大,关系到企业信息系统的正常运作,仍至整个企业的生死存亡。要做好数据库的日常管理与维护,不仅要求数据库管理员熟悉掌握专业技术知识,还要有足够的细心和高度的责任心。
加载中,请稍候......