提示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(表示為日志行)的行等等。