以下步驟說明了如何將master設備移植到不同的磁盤上。在執行此項任務的同時,請參看Sybase的相關文檔(Technical Documents#1324 entitled "Segment Remapping with Load database When Moving a Database")。請注意,在執行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)刪除這個數據庫。