Firebird 2.1数据库备份恢复时出现BLR偏移1839错误的求助
Firebird数据库删除数据后体积未缩小+Gbak恢复BLR错误解决建议
一、解决Gbak恢复时的BLR参数不匹配错误
- 检查Gbak与Firebird服务器版本一致性:必须使用和数据库服务器完全相同版本的gbak工具,跨版本备份/恢复极易触发存储过程BLR定义不兼容问题。比如数据库是Firebird 2.5.9,就用同版本的gbak,不要用3.0或4.0的工具。
- 重新编译目标存储过程:即使存储过程运行正常,元数据可能存在细微不一致,执行以下SQL刷新BLR定义:
ALTER PROCEDURE SIMPANJURNALPENJUALAN COMPILE; COMMIT; - 用gfix修复数据库元数据一致性:
- 先将数据库设为单用户模式:
gfix -shut full -user sysdba -password [你的密码] [数据库路径].fdb - 执行全量元数据检查与修复:
gfix -v -full -user sysdba -password [你的密码] [数据库路径].fdb - 恢复正常模式:
gfix -shut normal -user sysdba -password [你的密码] [数据库路径].fdb
- 先将数据库设为单用户模式:
- 重新执行备份:备份时加上
-v参数查看详细日志,确认备份过程中无存储过程相关警告:gbak -b -v -user sysdba -password [你的密码] [数据库路径].fdb [备份文件路径].fbk
二、无需备份恢复的数据库体积缩小方法
如果备份恢复遇到障碍,可直接使用gfix -shrink收缩数据库(需单用户模式):
- 切换数据库到单用户模式(命令同上)
- 执行收缩命令:
gfix -shrink -user sysdba -password [你的密码] [数据库路径].fdb - 恢复正常模式(命令同上)
该命令会将标记为可用的空白数据页释放给操作系统,直接缩小数据库文件体积,无需走备份恢复流程。
内容的提问来源于stack exchange,提问作者zami16
相关产品推荐
相关产品推荐

