程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> sybase ASE tempdb庫損壞修復

sybase ASE tempdb庫損壞修復

編輯:SyBase教程


sybase ASE tempdb庫損壞修復   最近公司的blog系統由於sql腳本訪問性能低下,原因一:寫的sql腳本實在夠復雜,子句嵌套子句,多表關聯,一個語句一長串腳本。原因二:開發過程中,多次強調的系統上線前需要把新增加的DAO層腳本發給我們DBA人員檢查過,分析過效率如何,趁此也可以進行表結構的設計優化,可惜這個步驟沒有貫徹執行,導致全表掃描的腳本也有諸多上線。由於這兩個原因導致了,在sql執行過程中產生的worktable龐大,吃tempdb沒每秒幾兆增長,而且執行sql駐留時間過長後,tempdb無法釋放。導致10g的tempdb經常滿,而導致數據庫掛起,我們DBA在忙著抓取低效sql同時只能通過進程管理以及先添加tempdb空間來暫時解決這個問題,突然今天下午數據庫訪問出問題了,通過後台日志查看確定在訪問tempdb時候出現錯誤。數據庫問題重現。
  根據以往曾經處理過的經驗,決定進行tempdb的重建修復,然後進行系統數據字典信息轉儲來恢復用戶庫,下面是這次重建tempdb,轉儲恢復用戶庫的過程步驟: 1.導出備份系統數據字典信息 bcp master..sysusages out sysusages.txt -c  -Sblog_sbar -Usa -P123456 bcp master..sysdevices out sysdevices.txt -c -Sblog_sbar -Usa -P123456 bcp master..sysdatabases out sysdatabases.txt -c -Sblog_sbar -Usa -P123456 bcp master..syslogins out syslogins.txt -c -Sblog_sbar -Usa -P123456 bcp master..sysconfigures out sysconfigures.txt -c -Sblog_sbar -Usa -P123456   www.2cto.com   2.移走備份系統庫以及用戶庫設備文件 mkdir datbak mv *.dat databak   3.備份配置文件 mv blog_sbar.cfg blog_sbar.cfg.bak   3.重建服務 清空interfaces的內容 srvbuildres -r ~/rs/blog_sbar.rs srvbuildres -r ~/rs/blog_sbar_BACKUP.rs   4.字符集設置 cd ~/charsets/utf8/ charset  -Sblog_sbar -Usa -P binary.srt utf8 isql -Sblog_sbar -Usa -P sp_configure "default character set id",190 --完成後重新啟動兩次 vi ~/locales/locales.dat   5.導入備份的系統數據字典信息 先設置系統數據字典允許修改 isql -Sblog_sbar -Usa -P sp_configure "allow updates to system tables",1 delete from sysconfigures; go  www.2cto.com   exit 去掉txt文件中關於服務剛創建時的系統信息,master,model,tempdb,systemproc.... bcp master..sysusages in sysusages.txt -c  -Sblog_sbar -Usa -P bcp master..sysdevices in sysdevices.txt -c -Sblog_sbar -Usa -P bcp master..sysdatabases in sysdatabases.txt -c -Sblog_sbar -Usa -P bcp master..syslogins in syslogins.txt -c -Sblog_sbar -Usa -P bcp master..sysconfigures in sysconfigures.txt -c -Sblog_sbar -Usa -P   6.添加tempdb空間 disk init name  = 'tempdb',physname = '/sda/blog_sbar/tempdb.dat',size  = '10240M',cntrltype= 0,dsync = false go alter database tempdb on tempdb=10240 with override go 7.剝離tempdb占用master的8m設備空間,進行tempdb優化 use tempdb    go  sp_dropsegment "default",tempdb,master go sp_dropsegment logsegment,tempdb,master go sp_dropsegment system,tempdb,master go  www.2cto.com   use master go sp_configure "allow updates to system tables",1 go delete from sysusages where dbid=2 and lstart=0----dbid=2是tempdb,lstart=0是master設備 go update sysusages set lstart=0 where dbid=2 ----這裡只考慮一個tempdb設備,多個則不更新 go sp_configure "allow updates to system tables",0 ----恢復系統表不允許修改   以上的處理步驟同樣適用於其他的系統數據庫的恢復。     摘自小寶老豆的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved