ehxz 发表于 2013-2-1 04:56:38

系统崩溃了,没有备份,但设备文件还存在,如何恢复sybase

 有的时候,系统崩溃了,手上也没有数据库的备份或者是备份太旧了,但侥幸的是设备还在,并且是完整的,这时可以通过文件COPY的方式恢复数据库。
情况一、应用的设备是完整的,但没有master了:
  1.重新创建 master 设备
   buildmaster -dthe_full_path_of_master_device -sthe_size  12.5版本以下
   dataserver -b (Windows: sqlsrvr -b) 12.5(含12.5)以上  
  2.检查并修改 RUN_XXX 文件,指向新创建的 master.dat,并增加 -T3608
  3.命令行启动服务
  4.调整 master 库的大小(可选)
   5.根据已有的所有数据和日志设备重新构建master..sysdevices 数据
   disk reinit name="device_name", physname="full_path_of_device", vdevno=device_no,size=size_of_device
    6.重新构建 master..sysusages 数据
   disk refit
  8.修改恢复回来的数据库名
  10.创建登录和用户
  11.去除 RUN_XXX 文件中的 -T3608 标志,重启动服务
/******disk reinit和disk refit命令实际是根据数据和日志文件的信息重写设备信息、数据库信息等,填充sysdevices、sysdatabases和sysusages三张表,近似于MS SQLSERVER里的附加数据库。
情况二、所有设备,包括 master,均是完整的:
    这种情况是最简单的,只需要先备份设备文件(包括master,copy 到安全的地方),然后重新安装系统,建服务(保持页面大小、编码和排序与以前一样),然后停止服务,按原目录将所有设备文件拷贝回来,再重启服务即可。新建的服务名可与旧服务不同。建议把服务名.cfg 也复制过来,省掉参数配置。
  
情况三、所有设备,包括 master,均是完整的,但不知道位置等配置信息
    这种情况下要恢复数据库就需要原来的设备使用情况表了。重新安装系统,建服务,然后按原设备情况建设备(大小、位置保持和原来一致),接下来根据记录下来的设备使用情况建库,顺序以及占用的空间要和以前的一致。然后停服务,将应用的数据库设备复制回来,重启服务即可。
      如果一些信息没有记录,实际可以手工清除sysdatabases、sysdevices、sysusages几张表,然后手工修复,最后完成整库的修复,具体步骤是:
1、重新安装系统,建服务
2、修改系统参数使能修改系统表参数
sp_configure 'allow updates', 1
go
begin tran
go
3、清除sysusages表里关于使用信息
select name,dbid from dbo.sysdatabases
go
delete from sysdevices where dbid =”old_db_dbid”
/****依次清除所有的旧数据库使用信息********/
go
4、清除sysdatabases用户数据库的信息
select name from dbo.sysdatabases
go
delete from dbo.sysdatabases where name=”old_db_name”
/****依次清除所有的旧数据库使用信息********/
go
5、清除sysdevices表里关于设备信息
select name from dbo.sysdevices
go
delete from sysdevices where name =”old_dev_name”
/****依次清除所有的旧设备信息********/
go
6、剩下的工作相同于情况一里5以后的工作
本方法可以保存master库里的登录等信息

iamabigking 发表于 2013-3-7 13:14:51

这个是个好东西,收藏了~
页: [1]
查看完整版本: 系统崩溃了,没有备份,但设备文件还存在,如何恢复sybase

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com