第 2 部分 数据库 SQL 语言
数据库维护
对于一些大型软件产品,一旦商业化,必然会存储大量的用户信息,这给产品所使用的数据库(以下简称业务数据库)带来压力。 为了保证业务数据库的顺利运行,在日常工作中需要对数据库进行一些基本的维护操作。
业务数据库的维护规则如下:
1、必须定期对业务数据库进行全量备份
定期备份业务数据库,可以在数据库意外损坏时快速恢复。 备份策略根据数据增量的大小可以采用周计划或月计划。
如果备份数据库db_100,在Oracle、Sybase、SQL Server中的操作如下:
(1)Oracle用户态备份
exp db_100/db_100 所有者=db_100 缓冲区=8192(或 64000)
file=exp_db100.dmp(或磁带设备 /dev/rmt0)
表=
行=y
压缩=n
日志= exp_db100.log
参数说明:
所有者:要卸载的用户名列表。
缓冲区:缓冲区大小。
file:导出创建的输出文件的名称。
tables:要卸载的表名列表。
rows:表示是否卸载表数据的行数。 默认为“y”。
compress:加载时是否将表数据压缩到某个区域。 如果卸载数据时指定参数compress=y,则加载时数据将被压缩到初始区域。 此选择保持初始化区域的原始大小。 默认为“y”。
log:指定一个文件来接收有用信息和错误消息。
(2)Sybase数据库的备份
使用 /home/data/db100.dmp(或磁带设备 /dev/rmt0)转储数据库 db_100
(3) SQL Server数据库的备份
使用大师
去
执行 sp_addumpdevice '磁盘', 'dev_db100',
磁盘='C:\backup\dev_db100.dat'
去
将数据库 db_100 备份到 dev_db100
去
2、定期对业务数据库进行数据清理游戏开发 数据库3D交通工具,清理前必须完成备份操作。
对于每天有大量记录的日志表采用备份表机制,即建立与生产表结构相同的备份表,并根据需要确定生产表和备份表的保留时间项目的。
假设1000号业务需要处理主日志生产表tb_mainlog。 要求是生产表保留2天的记录游戏开发 数据库,备份表保留90天的记录。 过滤日期的字段名为startdatetime,批量提交间隔为60分钟。 有一个存储过程 pr_backuptable 是用来备份的,所以只需要调用它,如下:
exec pr_backuptable 'tb_mainlog','tb_mainlog_bak',2,90,'startdatetime','yyyy.mm.dd hh:mi:ss',60,''
参数说明:
参数1:生产表名称
参数2:备份表名
参数3:生产表保留天数
参数4:备份表保留天数
参数5:过滤日期字段名称
参数6:过滤日期字段的格式
参数7:批量提交的时间间隔(单位:分钟)
参数8:扩展比较条件
3、如果数据库没有设置截断日志(或者不归档模式),则需要定期维护数据库日志
Oracle日志归档模式的设置一般需要在安装时进行; Sybase数据库的“trunc log on chkpt”选项设置为true,或者该选项设置为false,则需要定期截断数据库日志; 将 SQL Server 数据库选项“autoshrink”设置为 true。
(1)设置Oracle数据库日志为非归档模式
步骤是:
1)关闭数据库
2)按照启动挂载方式启动实例
3)切换模式
更改数据库 noarchivelog;
改变数据库打开;
(2)在Sybase中将数据库db_100中的“trunc log on chkpt”设置为true
使用大师
去
sp_dboption db_100,'在 chkpt 上截断日志',true
去
使用db_100
去
检查站
去
(3) 在SQL Server中将数据库db_100中的“autoshrink”设置为true
sp_dboption db_100,'自动收缩',true
4.定期维护数据库索引
对于Sybase和SQL Server数据库,表中的索引必须定期更新并维护统计信息。 如果索引失败,则重建索引。
例如,要更新 tb_userinfo 表中所有索引中所有列的统计信息,请使用以下语句:
更新索引统计信息 tb_userinfo
5、定期检查数据库任务的运行结果日志以及数据库的最大可用空间
在数据库操作过程中,应经常查看日志,查看相关任务的运行结果是否正常2d素材,并检查数据库的剩余空间。 如果可用空间已经很小,则必须执行某些文件清理操作。
6、对数据库进行大规模增删改操作后,建议检查表的一致性并重建索引。
在大规模操作过程中,数据表的结构可能会被无意中破坏,因此需要在操作完成后对表进行一致性检查。 如果发现表结构异常,则需要重建表和相应的索引。
在一些商业软件产品中,数据维护是一项复杂、艰巨、长期的工作,相关的维护经验只能在实际操作中积累。