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

下載本文檔

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

文檔簡介

1、v1.0可編輯可修改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.sysdatabases2>

2、; set status = -32768 where name = " sybsystemprocs ”1>go1>shutdown with nowait2>go關(guān)閉數(shù)據(jù)庫重新啟動.4. 用 isql 登錄至U sql server 中,修改 master 庫中 sysdatabases 表中sybsystemprocs 庫對應(yīng)的status 的值為0.$isql - Usa P1>update master.sysdatabases2>set status = 0 where name =" sybsystemprocs ”3>go

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

4、$bcp master.sysdatabases out /dbs -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<path_to_new_master_devi

5、ce> -s<new_master_device_size>(new_master_device_size 以 2K為單位)6、編輯 RUN_servername將指定master設(shè)備指定為新創(chuàng)建的master設(shè)備,并刪除在第1步中增加的參數(shù)7、刪除/dbs、/usages 文件中有關(guān) master > tempdb、model 的內(nèi)容。1v1.0可編輯可修改8、單用戶模式啟動ASE$cd install$startserver -f RUN_servername -m9、bcp in 系統(tǒng)表$ bcp master.sysdevices in /devs -Usa -

6、P -b 1 -c$bcp master.sysdatabases in /dbs -Usa -P -b 1 -c$bcp master.sysusages in /usages -Usa -P -b 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 腳本$is

7、ql -Usa -P < $SYBASE/scripts/installmaster12、啟動ASE三、如何刪除壞的用戶數(shù)據(jù)庫(以pubs2為例)當使用drop database無法刪除數(shù)據(jù)庫時,使用本文所示方法可 以刪除。(1)使用 isql 以 sa 注冊 SQL server(2)設(shè)置允許修改系統(tǒng)表1>sp_configure "allow updates"/2>go(3)把要刪除的用戶數(shù)據(jù)庫置為“suspect”狀態(tài)1>use master1>begin tran2>go1>update sysdatabases set s

8、tatus=2562>where name="pubs2”3>go如果得到(1 row affected), 貝1>commit2>go否則1>rollback2>go 重啟server,并用isql以sa注冊。(5)刪除數(shù)據(jù)庫1>dbcc dbrepair(pubs2,dropdb)2>go(6)恢復允許修改系統(tǒng)表1>sp_configure "allow updates",。2>go結(jié)束四、如何做rebuild log注意:這個過程可能會引起數(shù)據(jù)的不一致性。(1)賦予sa用戶sybase_ts_rol

9、e 的角色isql -Usa -P1>sp_role "grant","sybase_ts_role",sa2>go1>quit(2)將數(shù)據(jù)庫置為"bypass recovery" 狀態(tài)isql -Usa -P1>sp_configure "allow updates"/2>go1>use master2>go1>update sysdatabases set status=-327682>where name="database_name”3>

10、go1>shutdown with nowait2>go(3)rebuild 數(shù)據(jù)庫日志重啟Serverisql -Usa -P1>use master2>go1>dbcc rebuild_log(database_name,1,1)2>go1>shutdown with nowait2>go(4)重啟 SQL server1>use master2>go1>update sysdatabases set status=0 where name="database_name1>sp_configure "

11、;allow updates",。2>go1>shutdown with nowait2>go(5)在重啟SQLServer之后,如果數(shù)據(jù)庫恢復正常,rebuild log工作將會成功完成,否則要恢復數(shù)據(jù)庫備份,使用 dump database或bcp命令。五、數(shù)據(jù)庫被標記為"suspect"時(1)-一般解決方案現(xiàn)象:Error 926Severity Level 14Error Message TextDatabase 'xx' cannot be opened - it has been marked SUSPECT byr

12、ecover Explanation(1) 當你使用Transact_SQL命令操作這個數(shù)據(jù)庫的數(shù)據(jù)時,出現(xiàn)這個信息,這是一個嚴重的錯誤,如果你要使用這個數(shù)據(jù)庫的數(shù)據(jù),必須改正這個錯誤.(2) 啟動 Backup Server, 后備 master 數(shù)據(jù)庫1>dump database master to "/usr/sybase/master_dump." 2>go(3) 用isql登錄到SQL Server,須用sa帳號(本文以pubs2數(shù)據(jù)庫為例)1>sp_configure "allow updates", 12>go1&

13、gt;begin tran2>go1>update master.sysdatabases2>set status =-327682>go5v1.0可編輯可修改3>Where name="pubs2"4>go如果得到(1 row affected), 貝1>commit2>go否則1>rollback2>go(4) 如果條件允許,bcp out用戶數(shù)據(jù)或dump用戶數(shù)據(jù)庫(5) 這時重新啟動SQL Server,再有sa帳號注冊到SQL Server.1>begin tran2>go1>updat

14、e master.sysdatabases2>set status=03>Where name="pubs2"4>go如果得到(1 row affected), 貝1>commit2>go否則1>rollback2>go1>sp_configure "allow updates" ,02>go(4) 如果你的數(shù)據(jù)庫原來有dboption(例如"selectinto","trunc log on chkpt" 等),你需要重新設(shè)置這些option.(5) 運行db

15、cc命令檢查數(shù)據(jù)庫的一致性isql -Usa -P -i -o文件示例:dbcc checkdb("pubs2")godbcc checkalloc("pubs2")godbcc checkcatalog("pubs2")gogrep Msg(6) 后備用戶數(shù)據(jù)庫1>dump database pubs2 on "/usr/sybase/pubs2_dump."2>go六、數(shù)據(jù)庫被標記為“suspect”時(2)-數(shù)據(jù)庫設(shè)備損壞時的解決方案現(xiàn)象:926錯誤產(chǎn)生的原因有幾種。本文討論當數(shù)據(jù)庫設(shè)備初始化失敗

16、(設(shè)備文件丟失或文件讀寫權(quán)限不正確)時,導致數(shù)據(jù)庫恢復失敗,出現(xiàn) 926 錯誤的情況。(1) 請先恢復數(shù)據(jù)庫設(shè)備及讀寫權(quán)限。(2) 啟動 Backup Server, 后備 master 數(shù)據(jù)庫1>dump database master to "/usr/sybase/master_dump."2>go(3) 用isql登錄到SQLServer,須用sa帳號(本文以pubs2 數(shù)據(jù)庫為例)1>sp_configure "allow updates", 11>begin tran2>go1>update master.

17、sysdatabases2>set status =status - 2563>Where name="pubs2"4>go如果得到(1 row affected), 貝1>commit2>go否則1>rollback2>go(4) 重新啟動SQL Server,運行dbcc命令檢查數(shù)據(jù)庫的一致性編輯生成文件:dbcc checkdb("pubs2")godbcc checkalloc("pubs2")godbcc checkcatalog("pubs2")goisql -

18、Usa -P -i -ogrep Msg(5) 后備用戶數(shù)據(jù)庫1>dump database pubs2 on "/usr/sybase/pubs2_dump."七、如何終止數(shù)據(jù)庫恢復過程9v1.0可編輯可修改當某一正常運行的大事務(wù) (例如:update、delete操作)被終止,且重新啟動server后,運行該事務(wù)的數(shù)據(jù)庫處于恢復狀態(tài),通常這種狀態(tài)會持續(xù)很長時間,當在此恢復過程中沒有出現(xiàn)任何異常時,建議用戶耐心等待恢復過程完成。同時我們提供以下方法來終止此恢復過程,但請用戶注意這些操作將帶來數(shù)據(jù)的不一致性。必要時,希望用戶用 完整、可靠的數(shù)據(jù)庫備份恢復此數(shù)據(jù)庫。(1

19、)啟動Backup Server,后備master數(shù)據(jù)庫(這一步很重要?。?>dump database master to "/usr/sybase/"2>go(2)用isql登錄到SQL Server,須用sa帳號(本文以pubs2數(shù)據(jù)庫 為例)1>sp_configure "allow updates", 12>go1>begin tran2>go1> use master2> go1>update sysdatabases2>set status = -327683>Where n

20、ame="pubs2"4>go如果得到(1 row affected), 貝1>commit2>go否則1>rollback2>go 這時重新啟動SQL Server,再用sa帳號登錄到SQL Server.1>dump tran pubs2 with no_log2>go1>begin tran2>go1> use master2> go1>update sysdatabases2>set status=03>Where name="pubs2"4>go如果得到(

21、1 row affected),貝1>commit2>go否則1>rollback2>go1>sp_configure "allow updates" ,02>go(4) 重新啟動server(5) 如果你的數(shù)據(jù)庫原來有 dboption(例如"select into","trunc logon chkpt"等),你需要重新設(shè)置這些 option.(6)當數(shù)據(jù)庫已經(jīng)恢復可使用狀態(tài)后,運行 dbcc命令檢查數(shù)據(jù)庫的一致性(參照"如何檢查數(shù)據(jù)庫中數(shù)據(jù)一致性"文章)(7)后備用戶數(shù)據(jù)庫

22、例如:1>dump database pubs2 to "/usr/sybase/"2>go八、如何檢查數(shù)據(jù)庫中數(shù)據(jù)的一致性數(shù)據(jù)庫一致性檢查(dbcc)提供了一些命令用于檢查數(shù)據(jù)庫的邏輯和物理致性。Dbcc主要有兩個功能:1 .使用 checkstorage 或 checktable 及 checkdb 在頁一級和行一級檢查頁鏈及數(shù)據(jù)指針2 . 使用 checkstorage, checkalloc, 或 checkverify, tablealloc, 及 indexalloc檢查頁分配。在下列情況中需要使用dbcc命令:1 .作為數(shù)據(jù)庫日常維護工作的一部分,

23、數(shù)據(jù)庫內(nèi)部結(jié)構(gòu)的完整性 決定于sa或dbo定期地運行dbcc檢查。2 .在系統(tǒng)報錯以后,確定數(shù)據(jù)庫是否有損壞。3 .在備份數(shù)據(jù)庫之前,確保備份的完整性。4 .如果懷疑數(shù)據(jù)庫有損壞時,例如,使用某個表時報出表損壞的 信息,可以使用dbcc確定數(shù)據(jù)庫中其他表是否也有損壞。下面是dbcc的簡單用法:dbcc checktable (table_name)檢查指定的表,檢查索引和數(shù)據(jù)頁是否正確鏈接,索引是否正確排 序,所有指針是否一致,每頁的數(shù)據(jù)信息是否合理,頁偏移是否合 理。dbcc checkdb (database_name)對指定數(shù)據(jù)庫的所有表做和checktable 一樣的檢查。dbcc c

24、heckalloc (database_namefix|no巾x)檢查指定數(shù)據(jù)庫,是否所有頁面被正確分配,是否被分配的頁面沒被 使用。當使用"fix”選項時,在檢查數(shù)據(jù)庫的同時會自動修復有問題的 頁面。(若數(shù)據(jù)庫數(shù)據(jù)量很大,則該過程會持續(xù)很長時間。)dbcc tablealloc (table_name,fix|nofix)檢查指定的表,是否所有頁面被正確分配,是否被分配的頁面沒被使用。是checkalloc的縮小版本,對指定的表做完整性檢查。當使用"fix"選項時,在檢查數(shù)據(jù)表的同時會自動修復數(shù)據(jù)表中有問題的頁 面。關(guān)于上述命令的其它選項及詳細使用方法和chec

25、kstorage,checkverify, indexalloc 的詳細使用方法,請參閱有關(guān)命令手冊。舉例1: Unix平臺檢查pubs2數(shù)據(jù)庫的一致性1 .單用戶模式啟動Server :2 . $SYBASE/install startserver -f RUN_server_name -m3 . vi4 . use master5 . go6 . sp_dboption pubs2,"single user",true7 . go8 . use pubs29 . go10 .checkpoint11 .go12 .dbcc checkdb(pubs2)13 .go14

26、.dbcc checkalloc(pubs2fix)15 .go16 .dbcc checkcatalog(pubs2)17 .go18 .use master19 .go20.sp_dboption pubs2,"single user",false21.go22.use pubs223.go24.checkpoint25.go26.quit27.go28.isql -Usa -Pxxxxxx -SSYBASE < >29.grep Msg表的一致性舉例2: Unix平臺檢查pubs2數(shù)據(jù)庫中titles1. vi2. use pubs23. go4. dbc

27、c checktable(titles)5. go6. dbcc tablealloc(titles)7. go8. isql-Usa -Pxxxxxx -SSYBASE < >grep Msg九、如何做 Rebuild Master(沒有后備 master庫,而使用命令 diskreinit,disk refit)提示1:如果有可能,在執(zhí)行這個任務(wù)之前,請先做操作系統(tǒng)級SYBASE DEVICES的后備。UNIX操作系統(tǒng)可使用命令"dd" o因為如果disk reinit使用了錯誤的信息,那么,在執(zhí)行了 disk refit之后就會產(chǎn)生無法彌補的錯誤。倘若,存

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

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

溫馨提示

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

最新文檔

評論

0/150

提交評論