Sybase數(shù)據(jù)庫故障處理方法_第1頁
Sybase數(shù)據(jù)庫故障處理方法_第2頁
Sybase數(shù)據(jù)庫故障處理方法_第3頁
Sybase數(shù)據(jù)庫故障處理方法_第4頁
Sybase數(shù)據(jù)庫故障處理方法_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Sybase 數(shù)據(jù)庫故障處理方法一、Sybsystemprocs 庫“掛起”解決辦法1. 修改 文件, 修改 Sybase 數(shù)據(jù)庫可以修改系統(tǒng)參數(shù) .2. $ vi查找 “ allow updates ” , 將其修改為 1.( 缺省值為 0).既 allow updates to system tables=1 重新啟動系統(tǒng) .3. 用?isql 登錄至U sql server 中,修改 master 庫中 sysdatabases 表中 sybsystemprocs 庫對應(yīng)的 status 的值為 -32768.$isql- Usa - P1 update master.sysdataba

2、ses2 set status = -32768 where name = ”sybsystemprocs ”1go1shutdown with nowait2go 關(guān)閉數(shù)據(jù)庫重新啟動 .4. 用 ?isql 登錄至 sql server 中 , 修改 master 庫中 sysdatabases 表中 sybsystemprocs 庫對應(yīng)的 status 的值為 0.$isql- Usa - P1update master.sysdatabases2set status = 0 where name =”sybsystemprocs ”3go1shutdown with nowait2go

3、關(guān)閉數(shù)據(jù)庫重新啟動 .5. 將 中的” allow updates to system ” 的值改為 0.二、如何恢復(fù) master 數(shù)據(jù)庫ASE cant setup and has no valid dump of master1、編輯 RUN_servername在命令行最后加入: -T36072、單用戶模式啟動 ASE$cd install$startserver -f RUN_servername -m 3、bcp out 系統(tǒng)表$bcp master.sysdevices out /devs -Usa -P -c$bcp master.sysdatabases out /dbs -

4、Usa -P -c$bcp master.sysusages out /usages -Usa -P -c$bcp master.syslogins out /logins -Usa -P -c$bcp master.sysconfigures out /configures -Usa -P -c$bcp master.syscharsets out /charsets -Usa -P -c4、shutdownASE5、創(chuàng)建新 master 設(shè)備 $buildmaster -d -s(new_master_device_size 以 2K為單位)6、編輯 RUN_servername將指定 m

5、aster 設(shè)備指定為新創(chuàng)建的 master 設(shè)備,并刪除在第 1 步中增加的參數(shù)7、刪除 /dbs、/usages 文件中有關(guān) master、tempdb、model 的內(nèi)容。8、單用戶模式啟動 ASE$cd install $startserver -f RUN_servername -m9、bcp in 系統(tǒng)表$ bcp master.sysdevices in /devs -Usa -P -b 1 -c $bcp master.sysdatabases in /dbs -Usa -P -b 1 -c $bcp master.sysusages in /usages -Usa -P -b

6、 1 -c $bcp master.syslogins in /logins -Usa -P -b 1 -c $bcp master.sysconfigures in /configures -Usa -P -b 1 -c $bcp master.syscharsets in /charsets -Usa -P -b 1 -c10、shudown ASE11、 執(zhí)行 installmaster腳本$isql -Usa -P sp_configure allow updates,12go(3) 把 要刪除的用戶數(shù)據(jù)庫置為 suspect 狀態(tài)1use master2go1begin tran2g

7、o1update sysdatabases set status=256 2where name=pubs2 3go如果得到 (1 row affected), 則1commit 2go 否則1rollback 2go(4) 重啟 server, 并用 isql 以 sa 注冊。(5) 刪除數(shù)據(jù)庫1dbcc dbrepair(pubs2,dropdb) 2go(6) 恢復(fù)允許修改系統(tǒng)表 1sp_configure allow updates,0 2go(7) 結(jié)束四、如何做 rebuild log 注意:這個過程可能會引起數(shù)據(jù)的不一致性。(1) 賦予 sa 用戶 sybase_ts_role

8、的角色 isql -Usa -P1sp_role grant,sybase_ts_role,sa 2go1quit(2) 將數(shù)據(jù)庫置為 bypass recovery 狀態(tài) isql -Usa -P1sp_configure allow updates,1 2go1use master 2go1update sysdatabases set status=-32768 2where name=database_name 3go1shutdown with nowait2go(3) rebuild 數(shù)據(jù)庫日志 重啟 Server isql -Usa -P 1use master 2go1dbcc

9、 rebuild_log(database_name,1,1)2go1shutdown with nowait2go(4) 重啟 SQL server1use master2go1update sysdatabases set status=0 where name=database_name2go1sp_configure allow updates,02go1shutdown with nowait2go(5) 在重啟 SQLserver 之后, 如果數(shù)據(jù)庫恢復(fù)正常, rebuild log 工作將會成功 完成,否則要恢復(fù)數(shù)據(jù)庫備份,使用 dump database 或 bcp 命令。五、

10、數(shù)據(jù)庫被標(biāo)記為 suspect 時(1) 一般解決方案 現(xiàn)象: Error 926Severity Level 14Error Message TextDatabase xx cannot be opened - it has been marked SUSPECT by recover Explanation(1) 當(dāng)你使用 Transact_SQL 命令操作這個數(shù)據(jù)庫的數(shù)據(jù)時 , 出現(xiàn)這個信息 , 這是一個嚴(yán)重的錯誤 , 如果你要使用這個數(shù)據(jù)庫的數(shù)據(jù) , 必須改正這個錯誤 .(2) 啟動 Backup Server, 后備 master 數(shù)據(jù)庫 1dump database master

11、to /usr/sybase/master_dump. 2go(3) 用 isql 登錄到 SQL Server, 須用 sa 帳號 ( 本文以 pubs2 數(shù) 據(jù)庫為例 )1sp_configure allow updates, 12go1begin tran2go1update master.sysdatabases2set status = - 327683Where name=pubs24go如果得到 (1 row affected), 則 1commit 2go否則1rollback2go(4) 如果條件允許,bcp out用戶數(shù)據(jù)或dump用戶數(shù)據(jù)庫(5) 這時重新啟動 SQL S

12、erver, 再有 sa 帳號注冊到 SQL Server. 1begin tran2go1update master.sysdatabases2set status=03Where name=pubs24go如果得到 (1 row affected), 則1commit2go否則1rollback2go1sp_configure allow updates ,02go(4) 如果你的數(shù)據(jù)庫原來有 dboption( 例如 select into,trunc log on chkpt 等),你需要重新設(shè)置這些 option.(5) 運(yùn)行 dbcc 命令檢查數(shù)據(jù)庫的一致性 isql -Usa -

13、P -i -o文件示例:dbcc checkdb(pubs2)godbcc checkalloc(pubs2)godbcc checkcatalog(pubs2)gogrep Msg(6) 后備用戶數(shù)據(jù)庫1dump database pubs2 on /usr/sybase/pubs2_dump. 2go六、數(shù)據(jù)庫被標(biāo)記為 suspect 時(2) 數(shù)據(jù)庫設(shè)備損壞時的解決方 案現(xiàn)象: 926 錯誤產(chǎn)生的原因有幾種。本文討論當(dāng)數(shù)據(jù)庫設(shè)備初始 化失敗 ( 設(shè)備文件丟失或文件讀寫權(quán)限不正確 ) 時,導(dǎo)致數(shù)據(jù)庫恢復(fù)失敗,出現(xiàn) 926 錯誤的情況。(1) 請先恢復(fù)數(shù)據(jù)庫設(shè)備及讀寫權(quán)限。(2) 啟動 Ba

14、ckup Server, 后備 master 數(shù)據(jù)庫 1dump database master to /usr/sybase/master_dump. 2go(3) 用isql登錄到SQLServer,須用sa帳號(本文以pubs2 數(shù)據(jù)庫為例)1sp_c on figure allow updates, 12go1begi n tran2go1update master.sysdatabases2set status =status - 2563Where name=pubs24go如果得到(1 row affected),貝U1commit2go否則1rollback2go(4) 重新啟

15、動SQL Server,運(yùn)行dbcc命令檢查數(shù)據(jù)庫的一致性編輯生成文件:dbcc checkdb(pubs2)godbcc checkalloc(pubs2)go dbcc checkcatalog(pubs2) goisql -Usa -P -i -ogrep Msg(5) 后備用戶數(shù)據(jù)庫1dump database pubs2 on /usr/sybase/pubs2_dump.七、如何終止數(shù)據(jù)庫恢復(fù)過程當(dāng)某一正常運(yùn)行的大事務(wù) (例如:update delete操作)被終止,且重新啟動server 后,運(yùn)行該事務(wù)的數(shù)據(jù)庫處于恢復(fù)狀態(tài),通常這種狀態(tài)會持續(xù)很長時間,當(dāng)在此恢復(fù)過 程中沒有出現(xiàn)任

16、何異常時,建議用戶耐心等待恢復(fù)過程完成。同時我們提供以下方法來 終止此恢復(fù)過程,但請用戶注意這些操作將帶來數(shù)據(jù)的不一致性。必要時,希望用戶用完整、可靠的數(shù)據(jù)庫備份恢復(fù)此數(shù)據(jù)庫。(1)啟動Backup Server,后備master數(shù)據(jù)庫(這一步很重要!)1dump database master to /usr/sybase/2go 用isql登錄到SQL Server,須用sa帳號(本文以pubs2數(shù)據(jù)庫為例)1sp_c on figure allow updates, 12go1beg in tran2go1 use master2 go1update sysdatabases2set s

17、tatus = -327683Where name=pubs24go如果得到(1 row affected),貝U1commit2go否則1rollback2go 這時重新啟動SQL Server,再用sa帳號登錄到SQL Server.1dump tran pubs2 with n o_log2go1begi n tran2go1 use master2 go1update sysdatabases2set status=03Where name=pubs24go如果得到(1 row affected),貝U1commit2go否則1rollback2go1sp_c on figure al

18、low updates ,02go(4) 重新啟動server(5) 如果你的數(shù)據(jù)庫原來有 dboption(例如select into,trunc logon chkpt等),你需要重新設(shè)置這些 option.(6) 當(dāng)數(shù)據(jù)庫已經(jīng)恢復(fù)可使用狀態(tài)后,運(yùn)行dbcc命令檢查數(shù)據(jù)庫的一致性(參照如何檢查數(shù)據(jù)庫中數(shù)據(jù)一致性文章)(7) 后備用戶數(shù)據(jù)庫例如:1dump database pubs2 to /usr/sybase/2go八、如何檢查數(shù)據(jù)庫中數(shù)據(jù)的一致性數(shù)據(jù)庫一致性檢查(dbcc)提供了一些命令用于檢查數(shù)據(jù)庫的邏輯和物理 致性。Dbcc主要有兩個功能:1. 使用 checkstorage 或

19、 checktable 及 checkdb 在頁一級和行 一級檢查頁鏈及數(shù)據(jù)指針。2. 使用 checkstorage, checkalloc, 或 checkverify,tablealloc,及 indexalloc檢查頁分配。在下列情況中需要使用dbcc命令:1. 作為數(shù)據(jù)庫日常維護(hù)工作的一部分,數(shù)據(jù)庫內(nèi)部結(jié)構(gòu)的完整性 決定于sa或dbo定期地運(yùn)行dbcc檢查。2. 在系統(tǒng)報錯以后,確定數(shù)據(jù)庫是否有損壞。3. 在備份數(shù)據(jù)庫之前,確保備份的完整性。4. 如果懷疑數(shù)據(jù)庫有損壞時,例如,使用某個表時報出表損壞的 信息,可以使用dbcc確定數(shù)據(jù)庫中其他表是否也有損壞。下面是dbcc的簡單用法:d

20、bcc checktable (table_ name)檢查指定的表,檢查索引和數(shù)據(jù)頁是否正確鏈接,索引是否正確排 序,所有指針是否一致,每頁的數(shù)據(jù)信息是否合理,頁偏移是否合 理。dbcc checkdb (database, name)對指定數(shù)據(jù)庫的所有表做和checktable 一樣的檢查。dbcc checkalloc (database, namefix |no fix)檢查指定數(shù)據(jù)庫,是否所有頁面被正確分配,是否被分配的頁面沒被 使用。當(dāng)使用fix選項(xiàng)時,在檢查數(shù)據(jù)庫的同時會自動修復(fù)有問題的 頁面。(若數(shù)據(jù)庫數(shù)據(jù)量很大,則該過程會持續(xù)很長時間。)dbcc tablealloc (ta

21、ble_ namefix |no fix)檢查指定的表,是否所有頁面被正確分配,是否被分配的頁面沒被使 用。是checkalloc 的縮小版本,對指定的表做完整性檢查。當(dāng)使用 fix選項(xiàng)時,在檢查數(shù)據(jù)表的同時會自動修復(fù)數(shù)據(jù)表中有問題的頁 面。關(guān)于上述命令的其它選項(xiàng)及詳細(xì)使用方法和checkstorage,checkverify, indexalloc的詳細(xì)使用方法,請參閱有關(guān)命令手冊。舉例1: Unix平臺檢查pubs2數(shù)據(jù)庫的一致性1. 單用戶模式啟動Server:$SYBASE/i nstall startserver -f RUN_server_name -m2. viuse maste

22、rgosp_dboptio n pubs2,s in gle user,truegouse pubs2gocheckpo intgodbcc checkdb(pubs2)godbcc checkalloc(pubs2,fix)godbcc checkcatalog(pubs2)gouse mastergosp_dboptio n pubs2,s in gle user,falsegouse pubs2gocheckpo intgoquitgo3. isql -Usa -Pxxxxxx -SSYBASE 4. grep Msg舉例2: Unix平臺檢查pubs2數(shù)據(jù)庫中titles 表的一致性1

23、. viuse pubs2godbcc checktable(titles)godbcc tablealloc(titles)go2. isql -Usa -Pxxxxxx -SSYBASE grep Msg九、如何做 Rebuild Master(沒有后備 master庫,而使用命令 disk rein it,disk refit)提示1:如果有可能,在執(zhí)行這個任務(wù)之前,請先做操作系統(tǒng)級SYBASE DEVICES的后備。UNIX操作系統(tǒng)可使用命令dd。因?yàn)槿绻鹍isk rein it 使用了錯誤 的信息,那么,在執(zhí)行了 disk refit之后就會產(chǎn)生無法彌補(bǔ)的錯誤。倘若,存在一個SYBA

24、SE DEVICE的后備文件,將會給我們一個彌補(bǔ)的機(jī)會。例如: 當(dāng)disk reinit 使用了過小的size值,我們還可以重新恢復(fù) SYBASDEVICES 文件,重新做 disk reint 、disk refit 。提示2:在使用disk reinit 命令時,將覆蓋SYBASBEVICE(請參照以下語法), 安全的做法是size值使用裸分區(qū)或系統(tǒng)文件的大小的最大值。如果使用的是UNIX裸分區(qū),即使你不能確認(rèn) SYBASE DEVIC最初大小是不是最大值,都要 使用裸分區(qū)大小的最大值。步驟:1. 獲得將要被恢復(fù)的SYBASE DEVIC的信息。這些信息被用來重建 sysdevices,s

25、ysusages 以及 sysdatabases。1. 從 error log 的 server 啟動信息中獲得 SYBASE DEVICE 的設(shè)備名、指定路徑。2. 使用裸分區(qū)或系統(tǒng)文件的大小的最大值作為SYBASEDEVICE的大小。3. 以上信息也可以通過最近的sysdevices系統(tǒng)表的內(nèi)容來獲得。如果對此信息懷有疑問,還是使用以上的方法比較穩(wěn)妥。2. 做操作系統(tǒng)級的SYBASDEVICE后備。UNIX操作系統(tǒng),使用dd 命令實(shí)現(xiàn)。3. 配置一個新的 ASE Server。在以后的步驟中會用到這個新的 master。4. 如果需要,請再配置一個 Backup Server。5. 用單用戶模式啟動Server。一6. 運(yùn)行disk reinit,用來重建sysdevices系統(tǒng)表,而沒有重新初始化 SYBASE DEVICE語法如下:disk reinitn ame=device_ name,phys name=physical

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論