Q.如何做Rebuild Master(没有后备master库,而使用命令disk reinit,disk refit)?
A.提示1:
如果有可能,在执行这个任务之前,请先做操作系统级SYBASE DEVICES的后备。UNIX操作系统可使用命 令"dd"。因为如果disk reinit使用了错误的信息,那么,在执行了disk refit之后就会产生无法弥补的 错误。倘若,存在一个SYBASE DEVICES的后备文件,将会给我们一个弥补的机会。例如:当disk reinit 使用了过小的size值,我们还可以重新恢复SYBASE DEVICES文件,重新做disk reint、disk refit。
提示2:
在使用disk reinit命令时,将覆盖SYBASE DEVICE(请参照以下语法),安全的做法是size值使用裸分 区或系统文件的大小的最大值。如果使用的是UNIX裸分区,即使你不能确认SYBASE DEVICE最初大小是不 是最大值,都要使用裸分区大小的最大值。
步骤:
.获得将要被恢复的SYBASE DEVICE的信息。 这些信息被用来重建sysdevices,sysusages以及sysdatabases。 .从error log的server启动信息中获得SYBASE DEVICE的设备名、指定路径。 .使用裸分区或系统文件的大小的最大值作为SYBASE DEVICE的 大小。 .以上信息也可以通过最近的sysdevices系统表的内容来获得。如果 对此信息怀有疑问,还是使用以上的方法比较稳妥。 .做操作系统级的SYBASE DEVICE后备。UNIX操作系统,使用"dd"命令实现。 .配置一个新的ASE Server。在以后的步骤中会用到这个新的master。 .如果需要,请再配置一个Backup Server。 .用单用户模式启动Server。 .运行disk reinit,用来重建sysdevices系统表,而没有重新初始化SYBASE DEVICE。 语法如下: disk reinit name="device_name", physname="physical_name", vdevno=virtual_device_number, size=number_of_blocks 完成后,请查看error log。 .确认重建的sysdevices系统表中信息正确: ——select * from sysdevices 比较表中的信息是否与error log或者保留的sysdevices中的信息相同。 .运行disk refit,用来重建sysdevices以及sysdatabases。 用法如下: use master go disk refit go 查看error log中是否有错误提示。 .当disk refit完成后,会自动shut down ASE Server。 .确认重建的系统表的信息是否正确: ——单用户模式启动ASE Server ——select * from sysusages、select * from sysdatabases ——sysusages系统表看起来是否正确?可以和以前保留的的信息进行比较。如果没有这种可能,那么应该 保证不出现显而易见的错误。例如:是否缺少dbid;是否缺行;是否对于一个数据库来说只有segmap=4(表 示为日志行)的行等等。 ——sysdatabases系统表看起来是否正确?是不是没有显而易见的错误? 11、 启动ASE Server,查看是否所有的数据库都已经正常恢复。 .对所有的库做dbcc检查。 .对所有库做后备。
Q.如何移植master设备?
A.以下步骤说明了如何将master设备移植到不同的磁盘上。请注意,在执行buildmaster之前,要停止SQL Server的应用。
成功的关键在于,新建的sysusages系统表中每一行内容与旧的sysusages系统表内容相符。
.对master库做dbcc检查,并后备master库。 .执行select * from table_name命令,并保留其输出内容。其中,table_name包括:sysdevices、 sysusages、sysdatabases。同样,可以使用bcp命令来实现。 .执行sp_configure命令,并保留其输出内容。 .拷贝$SYBASE/server_name.cfg文件,以做保留。 .Shut down SQL/ASE Server。 .执行以下命令,创建一个新的master设备: UNIX:buildmaster -d -ssize VMS:buildmaster /disk= /size=size (size以页为单位,1页=2K) .编辑RUN_server_name文件,-d(UNIX)或/device(VMS)参数指向新建的设备名。 .单用户模式启动SQL/ASE Server: UNIX:startserver -f RUN_sever_name -m VMS:startserver /server=server_name /masterrecover .执行select * from sysdevices命令,并保留其输出内容。 .确认新建的sysusages系统表中每一行内容与旧的sysusages系统表内容相符,而且在配置好Server之后, 没有做过alter database,那么系统表sysusages的内容是正确的。如果做过alter database,则要按原来 的顺序执行这 些脚本,如果没有脚本,就要到保存的sysusages系统表的信息中找到alter database 的参数。 .Shutdown SQL/ASE Server,并用单用户模式启动Server,查看sysusages系统表内容是否正确。 .如果所配置的Backup Server名称不是SYB_BACKUP,则要执行: 1> sp_configure "allow updates",1 2> go 1> update sysservers set srvnetname="name in interfaces file" where srvname="SYB_BACKUP" 2> go .装载master库。如果新master设备的大小与旧设备大小不同,则Server会Shut down。请注意新的系统表 将会被重写,而且你需要调整Sysdevices系统表中master设备的大小。请执行以下两步: .用单用户模式启动Server. .如果新设备大小与旧设备大小不同,请执行: 1> sp_configure "allow updates",1 2> go 1> update sysdevices set high=nnnn where name="master" 2> go 其中nnnn是以页(2K)为单位的master设备的大小,此值可以从保留的sysdevices系统表的信息中找到。 如果 所建的设备比旧设备大,请执行: 1)创建一个与master设备差不多大的数据库,这样做的目的是重新初始化分 配页,使得整个master设备 可用。 2)删除这个数据库。 .重启Server。 .后备master数据库。 注意:
.在装载master库之前要确定SQL Server此时的字符集和语言模块与后备master库时的字符集和语言模块相同。 .在执行此任务之前和完成以后使用sp_helpsort查看字符集与语言模块是否相同。
|