master数据库配置区域(configuration area)损坏的一种修复方法

本文提供master配置区域损坏的一种修复方法!

Sybase ASE master数据库的前2048字节存储着Sybase数据库服务器的configuration area(配置区域)。如果configuration area corrupt,那么Sybase服务器无法启动。

造成configuration area corrupt的原因一般为硬件故障。通过下面的案例分享configuration area corrupt的一种恢复方法。

背景:

版本:ASE 15.0.3 ESD#3

在通过临时设置参数upgrade version为492来重置sa口令为空时,忘记将upgrade version改回原值 (参考:将Sybase ASE登录sa的密码置为空NULL的方法)。之后重启Sybase服务器时报错:

Pre 10.0 database cannot work with this version of the server. Please upgrade the databases to 10.0 or above release and then try to start with this version of the server. Shutting down ***.

ASE配置文件(*.cfg)中大多数情况下不存在参数:upgrade version。在cfg中添加upgrade version=15000后,启动时仍然报上面的master数据库版本低于10.0的错误。

通过比较多个版本的configuration area,发现master数据库的第1805和第1806字节表示upgrade version,15000的十六进制形式为:0x3A98,则将第1805字节改为98,第1806字节改为3A(此处master为linux平台上的数据库)。改为之后启动报错:

The configuration area in device '/home/sybase/data/master.dat' appears to be corrupt. The server cannot continue and will shut down.

看来仅仅修改2个字节的内容无法验证通过,那么通过替换master数据库头部2048字节呢? 我测试是可行的!

步骤:

1、使用相同版本的dataserver(ASE 15.0.3 ESD#3) 创建一个新的master库

dataserver -d /home/sybase/data/new.master.dat -b 51200 -z 4k

页面大小要与源环境相同,master设备大小不必与源环境相同

2、将新master库的configuration area拷贝到文件config_block.out

dd if=new.master.dat  of=config_block.out bs=2048 count=1

3、覆盖源环境的master设备的前2048字节内容

dd if=config_block.out  of=master.dat bs=2048 count=1 conv=notrunc

一定要加conv=notrunc,这样不会截断master.dat第2048字节后的内容。

4、使用修改后的master.dat成功启动

个人感觉,如果启动Sybase ASE服务器时仅仅报错:The configuration area in device '/home/sybase/data/master.dat' appears to be corrupt. The server cannot continue and will shut down.而没有其它信息,那么使用替换configuration area的方法可行性比较高。

如果在报The configuration area in device '/home/sybase/data/master.dat' appears to be corrupt. The server cannot continue and will shut down.之前还有其他信息,比如:

os_create_region: can't allocate 37076992 bytes
kbcreate: couldn't create kernel region.
kistartup: could not create shared memory

可能的原因是:操作系统共享内存配置值太低,尤其在Linux平台上。

Linux平台上增加共享内存方法:编辑/etc/sysctl.conf,修改kernel.shmmax值(字节为单位),sysctl -p生效。或者临时设定/proc/sys/kernel/shmmax。

  • 本文链接地址:https://www.dbainfo.net/one-way-to-recover-master-configuration-area.htm
  • 本文为dbainfo个人原创,请在尊重作者劳动成果的前提下进行转载;
  • 转载务必注明原始出处 : Sybase数据库技术,数据库恢复专家
  • 对《master数据库配置区域(configuration area)损坏的一种修复方法》有何疑问或见解,请在本文下方发表;
  • 对网站还有其他问题或建议,请提交在留言板,谢谢!
    1. 强子
      2015-04-16 17:11:38

      高大上哟

    :wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)