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

下載本文檔

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

文檔簡(jiǎn)介

------------------------------------------------------------------------Sybase數(shù)據(jù)庫(kù)故障處理方法Sybase數(shù)據(jù)庫(kù)故障處理方法一、Sybsystemprocs庫(kù)“掛起”解決辦法修改Sybase.cfg文件,修改Sybase數(shù)據(jù)庫(kù)可以修改系統(tǒng)參數(shù).$viSybase.cfg查找“allowupdates”,將其修改為1.(缺省值為0).既allowupdatestosystemtables=1重新啟動(dòng)系統(tǒng).用

isql登錄到sqlserver中,修改master庫(kù)中sysdatabases表中sybsystemprocs庫(kù)對(duì)應(yīng)的status的值為-32768.$isql–Usa–Pupdatemaster..sysdatabasessetstatus=-32768wherename=”sybsystemprocs”1>go1>shutdownwithnowait2>go關(guān)閉數(shù)據(jù)庫(kù)重新啟動(dòng).用

isql登錄到sqlserver中,修改master庫(kù)中sysdatabases表中sybsystemprocs庫(kù)對(duì)應(yīng)的status的值為0.$isql–Usa–P1>updatemaster..sysdatabases2>setstatus=0wherename=”sybsystemprocs”3>go1>shutdownwithnowait2>go關(guān)閉數(shù)據(jù)庫(kù)重新啟動(dòng).將Sybase.cfg中的”allowupdatestosystem”的值改為0.二、如何恢復(fù)master數(shù)據(jù)庫(kù)ASEcan'tsetupandhasnovaliddumpofmaster1、編輯RUN_servername在命令行最后加入:-T36072、單用戶模式啟動(dòng)ASE$cdinstall$startserver-fRUN_servername-m3、bcpout系統(tǒng)表$bcpmaster..sysdevicesout/directory.spec/devs-Usa-P-c$bcpmaster..sysdatabasesout/directory.spec/dbs-Usa-P-c$bcpmaster..sysusagesout/directory.spec/usages-Usa-P-c$bcpmaster..sysloginsout/directory.spec/logins-Usa-P-c$bcpmaster..sysconfiguresout/directory.spec/configures-Usa-P-c$bcpmaster..syscharsetsout/directory.spec/charsets-Usa-P-c4、shutdownASE5、創(chuàng)建新master設(shè)備$buildmaster-d<path_to_new_master_device>-s<new_master_device_size>(new_master_device_size以2K為單位)6、編輯RUN_servername將指定master設(shè)備指定為新創(chuàng)建的master設(shè)備,并刪除在第1步中增加的參數(shù)。7、刪除/directory.spec/dbs、/directory.spec/usages文件中有關(guān)master、tempdb、model的內(nèi)容。8、單用戶模式啟動(dòng)ASE$cdinstall$startserver-fRUN_servername-m9、bcpin系統(tǒng)表$bcpmaster..sysdevicesin/directory.spec/devs-Usa-P-b1-c$bcpmaster..sysdatabasesin/directory.spec/dbs-Usa-P-b1-c$bcpmaster..sysusagesin/directory.spec/usages-Usa-P-b1-c$bcpmaster..sysloginsin/directory.spec/logins-Usa-P-b1-c$bcpmaster..sysconfiguresin/directory.spec/configures-Usa-P-b1-c$bcpmaster..syscharsetsin/directory.spec/charsets-Usa-P-b1-c10、shudownASE11、執(zhí)行installmaster腳本$isql-Usa-P<$SYBASE/scripts/installmaster12、啟動(dòng)ASE三、如何刪除壞的用戶數(shù)據(jù)庫(kù)?(以pubs2為例)當(dāng)使用dropdatabase無(wú)法刪除數(shù)據(jù)庫(kù)時(shí),使用本文所示方法可以刪除。(1)使用isql以sa注冊(cè)SQLserver(2)設(shè)置允許修改系統(tǒng)表1>sp_configure"allowupdates",12>go(3)把要?jiǎng)h除的用戶數(shù)據(jù)庫(kù)置為"suspect"狀態(tài)1>usemaster2>go1>begintran2>go1>updatesysdatabasessetstatus=2562>wherename="pubs2"3>go如果得到(1rowaffected),則 1>commit 2>go否則 1>rollback 2>go(4)重啟server,并用isql以sa注冊(cè)。(5)刪除數(shù)據(jù)庫(kù)1>dbccdbrepair(pubs2,dropdb)2>go(6)恢復(fù)允許修改系統(tǒng)表1>sp_configure"allowupdates",02>go(7)結(jié)束四、如何做rebuildlog注意:這個(gè)過(guò)程可能會(huì)引起數(shù)據(jù)的不一致性。(1)賦予sa用戶sybase_ts_role的角色isql-Usa-P1>sp_role"grant","sybase_ts_role",sa2>go1>quit(2)將數(shù)據(jù)庫(kù)置為"bypassrecovery"狀態(tài)isql-Usa-P1>sp_configure"allowupdates",12>go1>usemaster2>go1>updatesysdatabasessetstatus=-327682>wherename="database_name"3>go1>shutdownwithnowait2>go(3)rebuild數(shù)據(jù)庫(kù)日志重啟Serverisql-Usa-P1>usemaster2>go1>dbccrebuild_log(database_name,1,1)2>go1>shutdownwithnowait2>go(4)重啟SQLserver1>usemaster2>go1>updatesysdatabasessetstatus=0wherename="database_name"2>go1>sp_configure"allowupdates",02>go1>shutdownwithnowait2>go(5)在重啟SQLserver之后,如果數(shù)據(jù)庫(kù)恢復(fù)正常,rebuildlog工作將會(huì)成功完成,否則要恢復(fù)數(shù)據(jù)庫(kù)備份,使用dumpdatabase或bcp命令。五、數(shù)據(jù)庫(kù)被標(biāo)記為"suspect"時(shí)(1)----一般解決方案現(xiàn)象:Error926SeverityLevel14ErrorMessageTextDatabase'xx'cannotbeopened-ithasbeenmarkedSUSPECTbyrecoverExplanation(1)當(dāng)你使用Transact_SQL命令操作這個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)時(shí),出現(xiàn)這個(gè)信息,這是一個(gè)嚴(yán)重的錯(cuò)誤,如果你要使用這個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù),必須改正這個(gè)錯(cuò)誤.(2)啟動(dòng)BackupServer,后備master數(shù)據(jù)庫(kù) 1>dumpdatabasemasterto"/usr/sybase/master_dump.19991201" 2>go(3)用isql登錄到SQLServer,須用sa帳號(hào)(本文以pubs2數(shù)據(jù)庫(kù)為例)1>sp_configure"allowupdates",12>go1>begintran2>go1>updatemaster..sysdatabases2>setstatus=-327683>Wherename="pubs2"4>go 如果得到(1rowaffected),則 1>commit 2>go 否則 1>rollback 2>go(4)如果條件允許,bcpout用戶數(shù)據(jù)或dump用戶數(shù)據(jù)庫(kù)(5)這時(shí)重新啟動(dòng)SQLServer,再有sa帳號(hào)注冊(cè)到SQLServer.1>begintran2>go1>updatemaster..sysdatabases2>setstatus=03>Wherename="pubs2"4>go 如果得到(1rowaffected),則 1>commit 2>go 否則 1>rollback 2>go1>sp_configure"allowupdates",02>go(4)如果你的數(shù)據(jù)庫(kù)原來(lái)有dboption(例如"selectinto","trunclogonchkpt"等), 你需要重新設(shè)置這些option..(5)運(yùn)行dbcc命令檢查數(shù)據(jù)庫(kù)的一致性 isql-Usa-P-idbcc.sql-odbcc.out dbcc.sql文件示例: dbcccheckdb("pubs2") go dbcccheckalloc("pubs2") go dbcccheckcatalog("pubs2") go grepMsgdbcc.out(6)后備用戶數(shù)據(jù)庫(kù) 1>dumpdatabasepubs2on"/usr/sybase/pubs2_dump.19991201" 2>go六、數(shù)據(jù)庫(kù)被標(biāo)記為"suspect"時(shí)(2)----數(shù)據(jù)庫(kù)設(shè)備損壞時(shí)的解決方案現(xiàn)象:926錯(cuò)誤產(chǎn)生的原因有幾種。本文討論當(dāng)數(shù)據(jù)庫(kù)設(shè)備初始化失敗(設(shè)備文件丟失或文 件讀寫權(quán)限不正確)時(shí),導(dǎo)致數(shù)據(jù)庫(kù)恢復(fù)失敗,出現(xiàn)926錯(cuò)誤的情況。(1)請(qǐng)先恢復(fù)數(shù)據(jù)庫(kù)設(shè)備及讀寫權(quán)限。(2)啟動(dòng)BackupServer,后備master數(shù)據(jù)庫(kù) 1>dumpdatabasemasterto"/usr/sybase/master_dump.19991201" 2>go(3)用isql登錄到SQLServer,須用sa帳號(hào)(本文以pubs2數(shù)據(jù)庫(kù)為例)1>sp_configure"allowupdates",12>go1>begintran2>go1>updatemaster..sysdatabases2>setstatus=status-2563>Wherename="pubs2"4>go 如果得到(1rowaffected),則 1>commit 2>go 否則 1>rollback 2>go(4)重新啟動(dòng)SQLServer,運(yùn)行dbcc命令檢查數(shù)據(jù)庫(kù)的一致性 編輯生成dbcc.sql文件: dbcccheckdb("pubs2") go dbcccheckalloc("pubs2") go dbcccheckcatalog("pubs2") go isql-Usa-P-idbcc.sql-odbcc.out grepMsgdbcc.out(5)后備用戶數(shù)據(jù)庫(kù) 1>dumpdatabasepubs2on"/usr/sybase/pubs2_dump.19991201"七、如何終止數(shù)據(jù)庫(kù)恢復(fù)過(guò)程

當(dāng)某一正常運(yùn)行的大事務(wù)(例如:update、delete操作)被終止,且重新啟動(dòng)server后,運(yùn)行該事務(wù)的數(shù)據(jù)庫(kù)處于恢復(fù)狀態(tài),通常這種狀態(tài)會(huì)持續(xù)很長(zhǎng)時(shí)間,當(dāng)在此恢復(fù)過(guò)程中沒(méi)有出現(xiàn)任何異常時(shí),建議用戶耐心等待恢復(fù)過(guò)程完成。同時(shí)我們提供以下方法來(lái)終止此恢復(fù)過(guò)程,但請(qǐng)用戶注意這些操作將帶來(lái)數(shù)據(jù)的不一致性。必要時(shí),希望用戶用完整、可靠的數(shù)據(jù)庫(kù)備份恢復(fù)此數(shù)據(jù)庫(kù)。(1)啟動(dòng)BackupServer,后備master數(shù)據(jù)庫(kù)(這一步很重要?。?>dumpdatabasemasterto"/usr/sybase/master.dup"2>go(2)用isql登錄到SQLServer,須用sa帳號(hào)(本文以pubs2數(shù)據(jù)庫(kù)為例)1>sp_configure"allowupdates",12>go

1>begintran

2>go

1>usemaster

2>go

1>updatesysdatabases

2>setstatus=-32768

3>Wherename="pubs2"

4>go如果得到(1rowaffected),則1>commit

2>go否則1>rollback

2>go(3)這時(shí)重新啟動(dòng)SQLServer,再用sa帳號(hào)登錄到SQLServer.

1>dumptranpubs2withno_log

2>go

1>begintran

2>go

1>usemaster2>go

1>updatesysdatabases

2>setstatus=0

3>Wherename="pubs2"

4>go如果得到(1rowaffected),則1>commit

2>go否則1>rollback

2>go1>sp_configure"allowupdates",0

2>go(4)重新啟動(dòng)server(5)如果你的數(shù)據(jù)庫(kù)原來(lái)有dboption(例如"selectinto","trunclogonchkpt"等),你需要重新設(shè)置這些option..(6)當(dāng)數(shù)據(jù)庫(kù)已經(jīng)恢復(fù)可使用狀態(tài)后,運(yùn)行dbcc命令檢查數(shù)據(jù)庫(kù)的一致性(參照"如何檢查數(shù)據(jù)庫(kù)中數(shù)據(jù)一致性"文章)(7)后備用戶數(shù)據(jù)庫(kù)例如:

1>dumpdatabasepubs2to"/usr/sybase/pubs2.dup"

2>go八、如何檢查數(shù)據(jù)庫(kù)中數(shù)據(jù)的一致性

數(shù)據(jù)庫(kù)一致性檢查(dbcc)提供了一些命令用于檢查數(shù)據(jù)庫(kù)的邏輯和物理一致性。Dbcc主要有兩個(gè)功能:使用checkstorage或checktable及checkdb在頁(yè)一級(jí)和行一級(jí)檢查頁(yè)鏈及數(shù)據(jù)指針。使用checkstorage,checkalloc,或checkverify,tablealloc,及indexalloc檢查頁(yè)分配。在下列情況中需要使用dbcc命令:作為數(shù)據(jù)庫(kù)日常維護(hù)工作的一部分,數(shù)據(jù)庫(kù)內(nèi)部結(jié)構(gòu)的完整性決定于sa或dbo定期地運(yùn)行dbcc檢查。在系統(tǒng)報(bào)錯(cuò)以后,確定數(shù)據(jù)庫(kù)是否有損壞。在備份數(shù)據(jù)庫(kù)之前,確保備份的完整性。如果懷疑數(shù)據(jù)庫(kù)有損壞時(shí),例如,使用某個(gè)表時(shí)報(bào)出表?yè)p壞的信息,可以使用dbcc確定數(shù)據(jù)庫(kù)中其他表是否也有損壞。下面是dbcc的簡(jiǎn)單用法:dbccchecktable(table_name)

檢查指定的表,檢查索引和數(shù)據(jù)頁(yè)是否正確鏈接,索引是否正確排序,所有指針是否一致,每頁(yè)的數(shù)據(jù)信息是否合理,頁(yè)偏移是否合理。dbcccheckdb(database_name)

對(duì)指定數(shù)據(jù)庫(kù)的所有表做和checktable一樣的檢查。dbcccheckalloc(database_name,fix|nofix)

檢查指定數(shù)據(jù)庫(kù),是否所有頁(yè)面被正確分配,是否被分配的頁(yè)面沒(méi)被使用。當(dāng)使用"fix"選項(xiàng)時(shí),在檢查數(shù)據(jù)庫(kù)的同時(shí)會(huì)自動(dòng)修復(fù)有問(wèn)題的頁(yè)面。(若數(shù)據(jù)庫(kù)數(shù)據(jù)量很大,則該過(guò)程會(huì)持續(xù)很長(zhǎng)時(shí)間。)dbcctablealloc(table_name,fix|nofix)

檢查指定的表,是否所有頁(yè)面被正確分配,是否被分配的頁(yè)面沒(méi)被使用。是checkalloc的縮小版本,對(duì)指定的表做完整性檢查。當(dāng)使用"fix"選項(xiàng)時(shí),在檢查數(shù)據(jù)表的同時(shí)會(huì)自動(dòng)修復(fù)數(shù)據(jù)表中有問(wèn)題的頁(yè)面。關(guān)于上述命令的其它選項(xiàng)及詳細(xì)使用方法和checkstorage,checkverify,indexalloc的詳細(xì)使用方法,請(qǐng)參閱有關(guān)命令手冊(cè)。舉例1:Unix平臺(tái)檢查pubs2數(shù)據(jù)庫(kù)的一致性單用戶模式啟動(dòng)Server:

$SYBASE/installstartserver-fRUN_server_name-mvidbcc_db.sql

usemaster

go

sp_dboptionpubs2,"singleuser",true

go

usepubs2

go

checkpoint

go

dbcccheckdb(pubs2)

go

dbcccheckalloc(pubs2,fix)

go

dbcccheckcatalog(pubs2)

go

usemaster

go

sp_dboptionpubs2,"singleuser",false

go

usepubs2

go

checkpoint

go

quit

goisql-Usa-Pxxxxxx-SSYBASE<dbcc_db.sql>dbcc_db.outgrepMsgdbcc_db.out舉例2:Unix平臺(tái)檢查pubs2數(shù)據(jù)庫(kù)中titles表的一致性vidbcc_table.sql

usepubs2

go

dbccchecktable(titles)

go

dbcctablealloc(titles)

goisql-Usa-Pxxxxxx-SSYBASE<dbcc_table.sql>dbcc_table.outgrepMsgdbcc_table.out九、如何做RebuildMaster(沒(méi)有后備master庫(kù),而使用命令diskreinit,diskrefit)

提示1:如果有可能,在執(zhí)行這個(gè)任務(wù)之前,請(qǐng)先做操作系統(tǒng)級(jí)SYBASEDEVICES的后備。UNIX操作系統(tǒng)可使用命令"dd"。因?yàn)槿绻鹍iskreinit使用了錯(cuò)誤的信息,那么,在執(zhí)行了diskrefit之后就會(huì)產(chǎn)生無(wú)法彌補(bǔ)的錯(cuò)誤。倘若,存在一個(gè)SYBASEDEVICES的后備文件,將會(huì)給我們一個(gè)彌補(bǔ)的機(jī)會(huì)。例如:當(dāng)diskreinit使用了過(guò)小的size值,我們還可以重新恢復(fù)SYBASEDEVICES文件,重新做diskreint、diskrefit。提示2:在使用diskreinit命令時(shí),將覆蓋SYBASEDEVICE(請(qǐng)參照以下語(yǔ)法),安全的做法是size值使用裸分區(qū)或系統(tǒng)文件的大小的最大值。如果使用的是UNIX裸分區(qū),即使你不能確認(rèn)SYBASEDEVICE最初大小是不是最大值,都要使用裸分區(qū)大小的最大值。步驟:獲得將要被恢復(fù)的SYBASEDEVICE的信息。

這些信息被用來(lái)重建sysdevices,sysusages以及sysdatabases。從errorlog的server啟動(dòng)信息中獲得SYBASEDEVICE的設(shè)備名、指定路徑。使用裸分區(qū)或系統(tǒng)文件的大小的最大值作為SYBASEDEVICE的

大小。以上信息也可以通過(guò)最近的sysdevices系統(tǒng)表的內(nèi)容來(lái)獲得。如果

對(duì)此信息懷有疑問(wèn),還是使用以上的方法比較穩(wěn)妥。做操作系統(tǒng)級(jí)的SYBASEDEVICE后備。UNIX操作系統(tǒng),使用"dd"命令實(shí)現(xiàn)。配置一個(gè)新的ASEServer。在以后的步驟中會(huì)用到這個(gè)新的master。如果需要,請(qǐng)?jiān)倥渲靡粋€(gè)BackupServer。用單用戶模式

溫馨提示

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

評(píng)論

0/150

提交評(píng)論