snow888 发表于 2009-09-10 17:22

如何修复 master ?

:em17:

在目录下直接把设备文件 rm 掉了。

PS:不是俺干的,是一个小兄弟干的 。

WFCJZ 发表于 2009-09-10 21:05

如何恢复master数据库

ASE can't setup and has no valid dump of master
1、编辑RUN_servername
在命令行最后加入:-T3607
2、单用户模式启动ASE
$cd install
$startserver -f RUN_servername -m
3、bcp out系统表
$bcp master..sysdevices out /directory.spec/devs -Usa -P -c
$bcp master..sysdatabases out /directory.spec/dbs -Usa -P -c
$bcp master..sysusages out /directory.spec/usages -Usa -P -c
$bcp master..syslogins out /directory.spec/logins -Usa -P -c
$bcp master..sysconfigures out /directory.spec/configures -Usa -P -c
$bcp master..syscharsets out /directory.spec/charsets -Usa -P -c
4、shutdownASE
5、创建新master设备
$buildmaster -d<path_to_new_master_device> -s<new_master_device_size>
(new_master_device_size以2K为单位)
6、编辑RUN_servername
将指定master设备指定为新创建的master设备,并删除在第1步中增加的参数。
7、删除/directory.spec/dbs、/directory.spec/usages文件中有关master、tempdb、model的内容。
8、单用户模式启动ASE
$cd install
$startserver -f RUN_servername -m
9、 bcp in系统表
$ bcp master..sysdevices in /directory.spec/devs -Usa -P -b 1 -c
$bcp master..sysdatabases in /directory.spec/dbs -Usa -P -b 1 -c
$bcp master..sysusages in /directory.spec/usages -Usa -P -b 1 -c
$bcp master..syslogins in /directory.spec/logins -Usa -P -b 1 -c
$bcp master..sysconfigures in /directory.spec/configures -Usa -P -b 1 -c
$bcp master..syscharsets in /directory.spec/charsets -Usa -P -b 1 -c
10、shudown ASE
11、执行installmaster脚本
$isql -Usa -P < $SYBASE/scripts/installmaster
12、启动ASE

chuxu 发表于 2009-09-11 11:10

步骤:

获得将要被恢复的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检查。
对所有库做后备。

WFCJZ 发表于 2009-09-11 12:54

向CHUXU学习!:wink:

snow888 发表于 2009-09-11 22:12

能不能直接从 master 中把设备配置删除,然后重建这个设备啊。

上面的方法太繁琐。

我记得以前做过一个,好像执行一个什么命令后,master 系统数据库就可以像普通的数据库那样,使用标准的 sql 进行修改了。

俺只要把那个记录从 sysdevices 表中删除就 OK 了。

chuxu 发表于 2009-09-14 09:04

你说的是sp_configure "allow update to system tables",1 ?
页: [1]
查看完整版本: 如何修复 master ?