SQLAnwhere数据库的unload/reload主要用于数据库的物理重建,有时候能把数据库文件收缩得非常小,同时性能也得到提升。
本文来源于一个实际的生产环境示例。原始的db文件达到6.6G, log文件,达到145G. 经过unload/reload之后,db文件只有79M,而事务log文件只有4.4M.
请看下边的操作步骤:
1. 执行unload并reload, 新建一个数据库文件e:\default.db
E:\Sybase\UnwiredPlatform\Servers\SQLAnywhere12\BIN64>dbunload -c "uid=dba;pwd=sql;dbf=E:\Sybase\UnwiredPlatform\Data\CDB\default.db" -an e:\default.db
2. 重新指定log位置,(因为原来的log就在 d:\DbTxLogs\default.log下边),而unload/reload操作只会把log文件放到db的当前目录下边
E:\Sybase\UnwiredPlatform\Servers\SQLAnywhere12\BIN64>dblog -t d:\DbTxLogs\default.log e:\default.db
SQL Anywhere Transaction Log Utility Version 12.0.1.3769
"e:\default.db" was using log file "default.log"
"e:\default.db" is using no log mirror file
"e:\default.db" is now using log file "d:\DbTxLogs\default.log"
Transaction log starting offset is 0000548524
Transaction log current relative offset is 0002443703
3. copy default.db and default.log to the original location.恢复到原来位置
4. 看看对应的文件的大小:
E:\Sybase\UnwiredPlatform\Servers\SQLAnywhere12\BIN64>dir E:\Sybase\UnwiredPlatf
orm\Data\CDB\default.*
Volume in drive E is Local Disk
Volume Serial Number is FE06-8788
Directory of E:\Sybase\UnwiredPlatform\Data\CDB
01/15/2013 11:10 PM 79,192,064 default.db (新生成的)
01/15/2013 11:02 PM 6,684,798,976 default.db.old (老的)
2 File(s) 6,763,991,040 bytes
0 Dir(s) 91,734,462,464 bytes free
E:\Sybase\UnwiredPlatform\Servers\SQLAnywhere12\BIN64>dir D:\DbTxLogs\default.*
Volume in drive D is Local Disk
Volume Serial Number is E2FD-6D0E
Directory of D:\DbTxLogs
01/15/2013 11:10 PM 4,456,448 default.log (新生成的)
01/15/2013 11:02 PM 145,142,382,592 default.log.old (老的)
2 File(s) 145,146,839,040 bytes
0 Dir(s) 1,814,528 bytes free
对于生产环境,除了定期备份,定期进行unload/reload也是很有意义的。ASA其实也可以用于中等规模的系统应用当中。操作非常方便。在移动应用中更是大显身手。
阅读(5347) | 评论(0) | 转发(0) |