start以及size。
请在数据源系统上执行以下操作:
对所有的数据库进行数据一致性检查(DBCC),并后备所有的用户数据库。
保留master 数据库中数据表的内容,使用select * from table_name命令:
sysdevices,sysusages,sysdatabses
syslogins,sysservers,syssvrroles,sysloginroles,sysremotelogins
对于sysusages 表,请使用以下命令:
select * from sysusages order by dbid,lstart
对于sysdatabases 表,请使用以下命令:
select * from sysdatabases order by dbid
使用bcp命令拷贝(2)中所列出的系统表内容。
Unix:bcp master..table_name out file_name -Usa -Psa_password -c
Vms:bcp master..table_name out file_name /username="sa"/sa_password/char
保留sp_configure命令的执行结果
请在目标系统上执行以下操作:
安装并配置新的SQL Server和Backup Server。
确认所指定的master、tempdb、sybsystemprocs大小至少等于数据源系统上相应数据库的大小,同时确认
与数据源系统相同的语言模块以及字符集。
启动SQL Server,使之处于正常工作状态。参照数据源系统的配置(4中保留的执行结果)修改目标系统配
置与之相同,并确认'device'参数值至少等于源系统此参数值。
在model、sybsystemprocs数据库中任意执行几个动作以判断数据库工作正常。请不要添加用户、角色、修
改系统表。
重启SQL Server以测试新配置有效。
执行以下操作:
1> use master
2> go
1> sp_configure "allow updates",1
2> go
重启SQL Server。
使用bcp命令拷贝(2)中所列出的系统表内容。
Unix:bcp master..table_name in file_name -Usa -Psa_password -b 1 -c
Vms:bcp master..table_name in file_name /user="sa"/sa_password/char/batch=1
建数据库设备,大小至少等于源系统中相应数据库的大小。
运行create database和alter database的脚本(或者使用命令行)。注意create、alter顺序要与源系统
create、alter顺序一致,并使用与之相同的参数。完成后请对比源系统与目标系统中的sysdatabases、
sysusages,使之完全相同,否则要重新做12这步工作。(请参照N3提示)注意:
在10.0以及更高版本中segmap字段在做了数据库load之后会被修改。
在确定需要相同的dbid时,则要采用与在源系统中create、alter相同的顺序,在目标系统中做create、
alter,并且使用相同的参数值。而这种需求仅仅是当数据库中某些objects要参考不同的数据库中的
objects才会采用的。另外,这种需求只有在每一个数据库中都被采用,完成的结果才会使得sysusages表
中的segment、lastart、size字段,或者是fragment与源系统中数值相同。运行以下命令,与原系统的输
出进行比较:
select * from sysusages order by lstart
load用户数据库并执行dbcc检测。
执行以下操作:
1> sp_configure "allow updates",0
2> go
重启SQL Server。
后备master库以及用户数据库。
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系统表内容是否正确。
.如果所配置的Back