zoukankan      html  css  js  c++  java
  • 让你提前认识软件开发(34):数据库的维护

    第2部分 数据库SQL语言

    数据库的维护

     

            对于某些大型软件产品,一旦商用,必定会存储非常多用户信息,这就对产品所使用的数据库(下面简称业务数据库)带来了压力。为了保证业务数据库的平稳执行,须要在日常工作中对数据库做一些主要的维护操作。

            业务数据库的维护规则例如以下:

    1. 对业务数据库必须进行定期全量备份

            业务数据库的定期备份能在数据库被意外破坏时进行高速恢复,备份策略能够依据数据增量大小採用周计划或月计划。

            假如备份数据库db_100,则OracleSybaseSQL Server中的操作方法例如以下:

            (1) Oracle用户模式的备份

    exp db_100/db_100 owner=db_100 buffer=8192(64000)

    file=exp_db100.dmp(或磁带设备/dev/rmt0)

    tables=

    rows=y

    compress=n

    log= exp_db100.log

     

           參数说明:

           owner:将要卸出的username列表。

           buffer:缓冲区大小。

           file:由export创建的输出文件的名字。

           tables:将要卸出的表名列表。

           rows:指明是否卸出表数据的行数,缺省为“y”。

           compress:指明在装入期间是否将表数据压缩到一个区域中。

    假设在卸出数据时,指定參数compress=y。那么装入时,就会将数据压缩到一个初始区域中。

    这样的选择能够保持初始化区域的原始大小。

    缺省为“y”。

           log:指定一个接收实用信息和错误信息的文件。

     

          (2) Sybase中数据库的备份

    dump database db_100 with /home/data/db100.dmp(或磁带设备/dev/rmt0)

     

          (3) SQL Server中数据库的备份

    use master

    go

    exec sp_addumpdevice 'disk', 'dev_db100',

    disk ='C:ackupdev_db100.dat'

    go

    backup database db_100 to dev_db100

    go

     

    2. 对业务数据库定期进行数据清理,清理前必须完毕备份操作

            对每天记录增长较多的日志表採用备份表的机制,即建立和生产表一样结构的备份表,依据项目的须要决定生产表和备份表保留的时间。

            假设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) startup mount方式启动实例

            3) 切换模式

    alter database noarchivelog;

    alter database open;

     

            (2) Sybase中设置数据库db_100中“trunc log on chkpt”为true

    use master

    go

    sp_dboption db_100,'trunc log on chkpt',true

    go

    use db_100

    go

    checkpoint

    go

     

            (3) SQL Server中设置数据库db_100中“autoshrink”为true

    sp_dboption db_100,'autoshrink',true

     

    4. 对数据库索引进行定期维护

            对SybaseSQL Server数据库中的表中的索引要定期进行update statistics维护。

    假设索引失效。则重建索引。

            比如,要更新tb_userinfo表中全部索引中全部列的统计信息。可採用下面语句:

    update index statistics tb_userinfo

     

    5. 定期查看数据库任务的执行结果日志和数据库可用空间最大值

            在数据库执行过程中,要常常通过日志来查看相关任务的执行结果是否正常。并查看数据库剩余空间数。假设可用空间已经非常小了。则要进行一定的文件清理操作。

     

    6. 对数据库进行大批量的增、删、改操作后建议对表进行一致性检查和索引的重建

            在经过大规模的操作的时候,有可能会无意中破坏掉数据表的结构。因此须要在操作完毕之后对表进行一致性检查。假设发现表结构出现异常,则须要重建表及对应的索引。

     

            在某些业务软件产品中,数据的维护是一项复杂、繁重而长期的工作,相关维护经验也仅仅有在实际操作过程中才干够累积起来。

     

     

    (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
  • 相关阅读:
    抽象类、接口
    静态联编、动态联编
    多态
    QML、Qt Quick
    重载、多态、继承、封装
    异步消息postEvent更新界面
    联合体union
    使用 Git@OSC 管理代码
    excel数据生成sql insert语句
    excel数据生成sql insert语句
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6943258.html
Copyright © 2011-2022 走看看