關(guān)鍵詞 Sybase數(shù)據(jù)庫;數(shù)據(jù)庫備份;故障恢復(fù)
一、 概述
Sybase Adaptive Server Enterprise(簡稱ASE)是sybase數(shù)據(jù)庫管理系統(tǒng)sql server的最新版本名稱,它是個多庫結(jié)構(gòu)的RDBMS。其中master數(shù)據(jù)庫、model數(shù)據(jù)庫、tempdb數(shù)據(jù)庫、sybsystemprocs系統(tǒng)過程數(shù)據(jù)庫是Sybase最重要的系統(tǒng)數(shù)據(jù)庫。湖北地稅征管信息系統(tǒng)eTax數(shù)據(jù)庫是Sybase用戶數(shù)據(jù)庫。
二、 SYBASE數(shù)據(jù)庫的備份
1.利用sybase Central工具備份
sybase Central是Adaptive Server所帶的一種圖形化工具。用sybase Central做數(shù)據(jù)庫備份工作十分簡單方便,需要注意的是在做備份工作之前,必須同時啟動數(shù)據(jù)庫主服務(wù)和備份服務(wù)。右鍵單擊欲備份的數(shù)據(jù)庫,選擇Backup,按提示步驟錄入相應(yīng)內(nèi)容即可。
2.利用SQL語句備份
首先在命令提示符下啟動isql
命令:isql –Usa –P(密碼) –S(服務(wù)器名)
go
.數(shù)據(jù)庫備份
dump database數(shù)據(jù)庫名(如:wfds)to路徑(如:“c:akwfds.dat“)
.日志備份
dump transaction 數(shù)據(jù)庫名(如:wfds) to 路徑(“c:akwfds.log“)
如果數(shù)據(jù)庫的數(shù)據(jù)段與日志段位于不同設(shè)備,則不能使用dump transaction命令復(fù)制日志,這時只有使用dump Database
命令復(fù)制包括日志在內(nèi)的整個數(shù)據(jù)庫。如master數(shù)據(jù)庫和modle數(shù)據(jù)庫均將事務(wù)日志和數(shù)據(jù)存儲在同一數(shù)據(jù)庫設(shè)備上,所
以不能單獨備份其事務(wù)日志,必須用dump Database命令備份整個數(shù)據(jù)庫,同時需要定期使用有truncate_only選項的
dump transaction命令清除數(shù)據(jù)庫事務(wù)日志。
3.遠(yuǎn)程備份
本地機配置:
(1) 本地機主服務(wù)和備份服務(wù)都必須啟動;
(2) 本地機的interfaces文件中需要增加遠(yuǎn)程機的備份服務(wù)器名。
遠(yuǎn)程機配置:
(1)遠(yuǎn)程備份服務(wù)已經(jīng)啟動;
(2)遠(yuǎn)程備份服務(wù)器名與本地服務(wù)器名需要具有不同的網(wǎng)絡(luò)名。
三. Sybase數(shù)據(jù)庫的恢復(fù)
1. master數(shù)據(jù)庫故障下,adaptive server的恢復(fù)
由于master數(shù)據(jù)庫有主設(shè)備的中央控制特性,它的表配置控制所有adaptive server功能及數(shù)據(jù)庫和數(shù)據(jù)設(shè)備,因此
master數(shù)據(jù)庫出現(xiàn)了故障對用戶來說將是災(zāi)難性的。master數(shù)據(jù)庫的損壞可能是因master設(shè)備或數(shù)據(jù)內(nèi)部損壞引起的,
一般情況下如果出現(xiàn)以下故障,可以確定master數(shù)據(jù)庫已被破壞:
.Adaptive Server不能啟動
.dbcc報告有錯誤
.有頻繁的輸入/輸出錯誤
master數(shù)據(jù)庫故障下,adaptive server的恢復(fù)過程因master數(shù)據(jù)庫備份是否存在而不同。
Master數(shù)據(jù)庫備份不存在
按以下方法恢復(fù):
.使用bldmastr命令建立一個新的master設(shè)備
假設(shè)SYBASE安裝在c:sybase下,
在c:sybaseASE-12_0in 下執(zhí)行bldmastr 命令
(bldmastr 是sybase/bin目錄下的實用程序)
.打開記事本編緝adaptive server的run file(加-d參數(shù)),使其指向新的master設(shè)備。
Run file文件在sybasease-12_0install 目錄下(如:RUN_test.bat)
.在單用戶模式下啟動server。
命令:Startserver –f run_filename –m 如下圖:
以這種方式啟動的Adaptive Server將自動配置為允許更新系統(tǒng)表,不允許其它操作。
.修改新的master數(shù)據(jù)庫大小,使其與原來的大小一致。
用bldmastr命令建立的master數(shù)據(jù)庫默認(rèn)僅有3M,需恢復(fù)到與原來一致。如:使用命令alter database master on master=77將Master數(shù)據(jù)庫恢復(fù)到80M.
.執(zhí)行disk reinit命令恢復(fù)sysdevices表的內(nèi)容
命令:Disk reinit
Name=”device_name”,
Physname=”physicalname”,
Vdevno=virtual_device_number,
Size=number_of_blocks[,vstart=virtual_address,cntrltype=controller_number]
如創(chuàng)建一個名稱為wfds的數(shù)據(jù)庫SQL語句如下:
disk init
name="wfds",
physname="c: estdatwfds.dat",
vdevno=8,
size=5120
.執(zhí)行disk refit 命令恢復(fù)sysdatabases表和sysusages表的內(nèi)容
disk refit只能由系統(tǒng)管理員從master數(shù)據(jù)庫運行,權(quán)限不能轉(zhuǎn)移給其它用戶。命令語法為:
disk refit
go
在disk refit重建系統(tǒng)表后,server將關(guān)閉。
.在單用戶模式下執(zhí)行installmaster T-SQL腳本和installmodel T—SQL腳本。
Isql –Usa -P –ic:SybasescriptsAse-12_0installmaster
sql –Usa –P –ic:SybasescriptsAse-12_0installmodel
用sp_addlogin重建登錄用戶
以常規(guī)模式重新啟動Adaptive Server
startserver –f RUN_servername
啟動后,仔細(xì)檢查adaptive server,看是否有錯誤信息,使用dbcc checkalloc對每個數(shù)據(jù)庫進(jìn)行一致性檢查,使用常
規(guī)轉(zhuǎn)儲命令對master設(shè)備做好備份,修改sa口令。
Master數(shù)據(jù)庫備份存在
如果你有master數(shù)據(jù)庫備份,adaptive server的恢復(fù)就簡單多了。前四步與master數(shù)據(jù)庫備份不存在時相同。然后,再按以下步驟進(jìn)行:
.檢查backup server的sysservers表中的內(nèi)容。
命令如下:
select * from sysservers where srvname=’syb_backup’
檢查此命令輸出結(jié)果中srvname,如果與interface文件中Backup Server不相同,則必須更新sysservers。
假設(shè)原backup server的名字為wfds_backup則執(zhí)行命令:
update sysservers set srvnetnam=’wfds_baxkup’
where srvnetname=’syb_backup’
.裝載master數(shù)據(jù)庫的備份
首先必須以單用戶模式啟動Server,其次新建的master數(shù)據(jù)庫必須大于或等于原來的master數(shù)據(jù)庫大小。命令如下:
load database 數(shù)據(jù)庫名(master) from 路徑( “c:akmaster.dat“)
恢復(fù)完master數(shù)據(jù)庫,關(guān)閉Server。
.執(zhí)行installmode T-SQL腳本,恢復(fù)model數(shù)據(jù)庫
Isql –Usa –P –ic:SybasescriptsAse-12_0installmodel
在常規(guī)模式下啟動server。
2. 非master數(shù)據(jù)庫故障下,adaptive server的恢復(fù)
設(shè)備離線(offline)故障
假設(shè)數(shù)據(jù)庫名為wfds,處理如下:
sp_configure”allow updates to system tables”,1
update sysdatabases set status=status&~256
where dbid=db_id(‘wfds’)
因為數(shù)據(jù)庫的狀態(tài)記錄在數(shù)據(jù)表sysdatabase的status字段中,根據(jù)庫被標(biāo)志為not recovered時,狀態(tài)位為64;數(shù)據(jù)庫被標(biāo)志為suspect時關(guān)態(tài)位為256;數(shù)據(jù)庫被標(biāo)志為loading時,狀態(tài)位為了32;如果發(fā)生錯誤,要手工關(guān)掉數(shù)據(jù)狀態(tài)位為256的數(shù)據(jù)庫,并重新啟動server。
設(shè)備損壞故障
首先用Drop databse命令刪損壞的數(shù)據(jù)庫,用sp_dropdevice刪除損壞的設(shè)備,再用disk init創(chuàng)建一個新設(shè)備,用create database創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)庫的大小和段都要與原庫相同。語法如下:
disk init
name="wfds",
physname="c: estdatwfds.dat",
vdevno=8,
size=5120
/*以上為建立數(shù)據(jù)庫設(shè)備sql語句*/
disk init
name="wfds",
physname="c: estlogwfds.log",
vdevno=9,
size=5120
/*以上為建立數(shù)據(jù)庫日志設(shè)備sql語句*/
create database test on source = 10
log on sourcelog = 10
/以上為建立數(shù)據(jù)庫test SQL語句*/
最后使用load database和load transaction 命令從備份中恢復(fù)數(shù)據(jù)庫及事務(wù)日志并用dbcc檢查數(shù)據(jù)庫的一致性。
四、結(jié)束語
.如果你是系統(tǒng)管理員,完整保留建立數(shù)據(jù)庫設(shè)備和數(shù)據(jù)庫的腳本是工作的重要組成部分。在出現(xiàn)災(zāi)難性故障時可使重創(chuàng)整個系統(tǒng)成為可能。
.關(guān)閉master數(shù)據(jù)庫缺省狀況,在master設(shè)備上不要建立任何用戶對象。
.定期檢查日志內(nèi)容,便于及時排錯,維持系統(tǒng)正常運轉(zhuǎn)。同時還要定期刪除舊的日志記錄,將日志文件保持在一個便于管理的水平,這樣不僅可以節(jié)省磁盤空間,也更容易定位當(dāng)前錯誤。
.在執(zhí)行災(zāi)難性事故恢復(fù)之前,按以上步驟并結(jié)合自已的工作經(jīng)驗制定一個適合系統(tǒng)需求的簡明大綱表是一個非常不錯的選擇。
.歸根到底,備份master數(shù)據(jù)庫是執(zhí)行SYBASE數(shù)據(jù)庫備份與恢復(fù)計劃的基礎(chǔ),master數(shù)據(jù)庫不僅包含整個數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu) 的詳細(xì)資料,它還跟蹤Adaptive Server數(shù)據(jù)庫、設(shè)備和組成數(shù)據(jù)庫的設(shè)備段。