三、利用做bcp备份脚本的方法做数据库碎片整理。
Sybase数据库作为联机事务处理应用服务器,每天应用程序都对数据库做大量的插入、修改和删除等操作,不可避免的在数据库的物理存储介质上留下页碎片和扩展单元碎片,从而影响数据库的存储效率和运行速度。具体表现为:业务繁忙时出现死锁(dead lock),数据库的输入/输出资源被大量占用,业务处理速度慢。其解决办法是:
1、 清空数据库中的所有表,命令格式:
| isql -Uusername -Ppassword -I truncate.sql -o error.truncate |
2、 删除所有表的索引和主键:
| isql -Uusername -Ppassword -I dropindex.sql -o error.dropindex |
3、 导入数据:./bcpin
4、 添加索引和主键:
| isql -Uusername -Ppassword -I addindex.sql -o error.addindex |
5、 更新数据库状态:
| 1> update statistics tablename 2> go |
上述操作都是针对数据库中的所有用户表进行的,利用做bcp备份脚本的方法做出相应的脚本,使繁琐的数据库维护变得简便易行,还克服了直接使用isql语句操作风险大、没有操作日志的毛病。
笔者在实际工作中,使用第一种方法对生产机做日常全量备份,日终通过unix的crontab定时批量作业bcp出全部数据。使用高档PC server 搭建模拟运行环境,在需要的情况下导入生产机数据,处理运行中后台server的各种问题,待研究出解决办法后再在生产机上做相应调整,这样做风险小,效果好。
