Sybase數(shù)據(jù)庫維護(hù)篇-高級_第1頁
Sybase數(shù)據(jù)庫維護(hù)篇-高級_第2頁
Sybase數(shù)據(jù)庫維護(hù)篇-高級_第3頁
Sybase數(shù)據(jù)庫維護(hù)篇-高級_第4頁
Sybase數(shù)據(jù)庫維護(hù)篇-高級_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

培訓(xùn)計(jì)劃

培訓(xùn)內(nèi)容培訓(xùn)目標(biāo)培訓(xùn)對象培訓(xùn)內(nèi)容Sybase數(shù)據(jù)庫簡介Sybase產(chǎn)品(ASA,ASE,IQ)ASE它是基于客戶/服務(wù)器體系結(jié)構(gòu)的數(shù)據(jù)庫OLTP1:OracleServer是一個(gè)真正的多進(jìn)程數(shù)據(jù)庫引擎,Sybase數(shù)據(jù)庫管理系統(tǒng)采用的是單進(jìn)程多線程的引擎結(jié)構(gòu)。2:Sybase的數(shù)據(jù)庫引擎還代替操作系統(tǒng)來管理一部分硬件資源,如端口、內(nèi)存、硬盤,繞過了操作系統(tǒng)這一環(huán)節(jié),提高了性能。數(shù)據(jù)庫(raid0,1,5)數(shù)據(jù)庫設(shè)備分配結(jié)構(gòu)數(shù)據(jù)庫page分配結(jié)構(gòu)Sybase的多庫結(jié)構(gòu)

安裝Sybase數(shù)據(jù)庫時(shí)自動(dòng)生成的下列系統(tǒng)數(shù)據(jù)庫:●主數(shù)據(jù)庫master:數(shù)據(jù)庫全面控制和管理用戶數(shù)據(jù)庫以及SQLSERVER上的一切操作?!衲P蛿?shù)據(jù)庫model:為新建的用戶數(shù)據(jù)庫提供一個(gè)原形●系統(tǒng)過程數(shù)據(jù)庫sybsystemprocs:SYBASE的系統(tǒng)存儲(chǔ)過程被儲(chǔ)存在這個(gè)數(shù)據(jù)庫中●臨時(shí)數(shù)據(jù)庫tempdb:作為臨時(shí)表和其他的臨時(shí)工作空間提供一個(gè)存儲(chǔ)區(qū)域。TEMPDB的空間為全體數(shù)據(jù)庫用戶共享也可選擇下列數(shù)據(jù)庫:●安全審核數(shù)據(jù)庫sybsecurity:包含SQLSERVER的審計(jì)系統(tǒng)●示例數(shù)據(jù)庫pubs2:這是一個(gè)樣本庫

●命令語法數(shù)據(jù)庫sybsyntax:為用戶提供聯(lián)機(jī)幫助用戶數(shù)據(jù)庫用戶數(shù)據(jù)庫是指用Createdatabase命令創(chuàng)建的數(shù)據(jù)庫。使用”use數(shù)據(jù)庫名”來切換不同的數(shù)據(jù)庫執(zhí)行sp_changedbowner改變數(shù)據(jù)庫的屬主關(guān)系建議事務(wù)日志放在單獨(dú)的設(shè)備上(log)master庫

它是管理和控制用戶數(shù)據(jù)庫以及維護(hù)服務(wù)器正常運(yùn)行的核心數(shù)據(jù)庫,它包含許多系統(tǒng)表和系統(tǒng)過程,從總體上控制用戶數(shù)據(jù)庫和SQLServer的操作,構(gòu)成了SYBASE系統(tǒng)的數(shù)據(jù)字典,它保存了大量的系統(tǒng)信息,如服務(wù)器配置、用戶、設(shè)備等。在master數(shù)據(jù)庫中不允許普通用戶在其中創(chuàng)建數(shù)據(jù)庫對象,否則會(huì)使得master數(shù)據(jù)庫的事務(wù)日志很快變滿。如果事務(wù)日志用盡,就無法使用dumptransaction命令釋放master數(shù)據(jù)庫中的空間。master數(shù)據(jù)庫主要記錄信息為:

登錄帳號(SQL服務(wù)器用戶名);syslogins,sysremolelogins正在執(zhí)行的過程;sysprocesses可修改的環(huán)境變量;sysconfigures系統(tǒng)錯(cuò)誤信息;sysmessagesSQL服務(wù)器上每個(gè)數(shù)據(jù)庫的信息;sysdatabases每個(gè)數(shù)據(jù)庫占用的存儲(chǔ)空間;sysusages系統(tǒng)上安裝的設(shè)備及磁帶信息;sysdevices活動(dòng)鎖信息;syslocksTEMPDB庫

它是個(gè)臨時(shí)數(shù)據(jù)庫,為服務(wù)器運(yùn)行與處理提供一個(gè)共享的存儲(chǔ)區(qū)域,如groupby和orderby的中間結(jié)果就存放在這里。Tempdb的空間為服務(wù)器中所有數(shù)據(jù)庫的所有用戶所共享。每次重啟SQLServer,服務(wù)器的一個(gè)自動(dòng)進(jìn)程都拷貝model數(shù)據(jù)庫到tempdb數(shù)據(jù)庫,并清除tempdb中原來的內(nèi)容。因此tempdb中的用戶表都是臨時(shí)的。臨時(shí)表分為兩類:可共享的和不可共享的。不可共享的臨時(shí)表在由createtable中將符號#置于表名之前創(chuàng)立;可共享的臨時(shí)表通過createtable中指定表名前綴tempdb..而創(chuàng)立。不可共享的臨時(shí)表SQLServer自動(dòng)為其添加數(shù)字后綴名,且它只存在于當(dāng)前會(huì)話中數(shù)據(jù)庫有關(guān)概念(segment/device)數(shù)據(jù)庫設(shè)備從邏輯上被劃分為數(shù)據(jù)庫段以允許將某一特定的對象放置在指定的段上(創(chuàng)建對象時(shí)指定),一數(shù)據(jù)庫設(shè)備可擁有多達(dá)192個(gè)段,一段可使用255個(gè)邏輯設(shè)備上的存儲(chǔ)空間。當(dāng)用戶創(chuàng)建一個(gè)數(shù)據(jù)庫時(shí),SQLSERVER會(huì)自動(dòng)在該數(shù)據(jù)庫中創(chuàng)建三個(gè)段:SYSTEM、LOGSEGMENT、DEFAULT,這三個(gè)段分別用來存儲(chǔ)數(shù)據(jù)庫的系統(tǒng)表、事務(wù)日志和其他數(shù)據(jù)庫對象提高性能:處于不同磁盤設(shè)備上的段可以并行地讀寫;處理大表:利用段,可以將一個(gè)大表分段放在獨(dú)立的物理設(shè)備上。所謂數(shù)據(jù)庫設(shè)備,不是指一個(gè)可識(shí)別的物理設(shè)備,而是指用于存儲(chǔ)數(shù)據(jù)庫和數(shù)據(jù)庫對象的磁盤原始分區(qū)或操作系統(tǒng)文件。初始化數(shù)據(jù)庫設(shè)備使用DISKINIT命令:DISKINITNAME=設(shè)備名,PHYSNAME=物理設(shè)備名,VDEVNO=虛擬設(shè)備號,SIZE=塊數(shù)數(shù)據(jù)庫有關(guān)概念(segment/device)SybasesegmentsTable創(chuàng)建于segment上每個(gè)db最多可有32個(gè)segments創(chuàng)建段:sp_addsegment‘seg',‘db_name',‘device_name‘注:創(chuàng)建表需要指定索引和數(shù)據(jù)的存放段名稱Device和segment關(guān)系:單個(gè)device上可以創(chuàng)建多個(gè)segment,單個(gè)segment可以跨越多個(gè)deviceTable和segment關(guān)系: 單個(gè)segment上創(chuàng)建多個(gè)table,單個(gè)table可以跨越多個(gè)segment(分區(qū)表)。數(shù)據(jù)庫對象(1)表(Tables)(2)視圖(Views):視圖是一個(gè)虛擬表,其內(nèi)容由查詢定義。同真實(shí)的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫中以存儲(chǔ)的數(shù)據(jù)值集形式存在。行和列數(shù)據(jù)來自由定義視圖的查詢所引用的表,并且在引用視圖時(shí)動(dòng)態(tài)生成。對其中所引用的基礎(chǔ)表來說,視圖的作用類似于篩選。作用:安全;可使復(fù)雜的查詢易于理解和使用

Index與性能索引(index):索引就是加快檢索表中數(shù)據(jù)的方法。在數(shù)據(jù)庫中,索引也允許數(shù)據(jù)庫程序迅速地找到表中的數(shù)據(jù),而不必Tablescan。

1.索引可以加快數(shù)據(jù)庫的檢索速度2.索引降低了數(shù)據(jù)庫插入、修改、刪除等維護(hù)任務(wù)的速度3.索引創(chuàng)建在表上,不能創(chuàng)建在視圖上

4.索引既可以直接創(chuàng)建(createindex),也可以間接創(chuàng)建(主鍵約束或者唯一性鍵約束時(shí))Sybase支持三種不同類型的索引,一是復(fù)合索引,即包含幾個(gè)列的索引;二是唯一性索引,即任意兩行中的索引列不能有相同的取值;三是簇類索引(Clusteredindexes)和非簇類索引(Nonclusteredindexs),Index與性能-2a)普通索引(createindex)和唯一性索引(createUNIQUEindex)b)單個(gè)索引和組合索引(最多16個(gè)字段組成)c)聚簇索引CLUSTERED和非聚簇索引UNCLUSTERED:聚簇索引:即物理索引,與基表的物理順序相同(不斷重排表行的物理順序以使其與邏輯索引順序相一致),數(shù)據(jù)值的順序總是按照順序排列.即索引樹的葉級頁包含實(shí)際的數(shù)據(jù).非聚簇索引:索引順序與數(shù)據(jù)物理排列順序無關(guān),即葉級頁指向表中的記錄.,一個(gè)表最多可建249個(gè)非聚簇索引.可以這么理解聚簇索引:索引的葉節(jié)點(diǎn)就是數(shù)據(jù)節(jié)點(diǎn)。而非聚簇索引的葉節(jié)點(diǎn)仍然是索引節(jié)點(diǎn),只不過有一個(gè)指針指向?qū)?yīng)的數(shù)據(jù)塊.每個(gè)表最多只能建立一個(gè)簇類索引,非簇類索引則可建立多個(gè)。與非簇類索引相比,簇類索引的檢索速度要快。應(yīng)當(dāng)在建立任何非簇類索引以前建立簇類索引。Index與性能-31:選擇Clustered索引的建議:主鍵時(shí)常作為where子句的條件

某一列經(jīng)常以這樣的格式出現(xiàn)在where表達(dá)式中(x<=column<="y)"

某一列非常頻繁地被訪問

某列被用作orderby或groupby某列很少被改寫

某列常出現(xiàn)在join中。

2:選擇Non-Clustered索引的建議:某列常用于Aggregate函數(shù)(如Sum,)

某列常用于join,orderby,groupby。

查尋檢索出的數(shù)據(jù)不超過表中數(shù)據(jù)量的20%Index與性能-4維護(hù)索引統(tǒng)計(jì)表:

數(shù)據(jù)庫擁有者必須用命令維護(hù)統(tǒng)計(jì)表。updatestatisticstable_name[index_name]

索引優(yōu)化調(diào)整

用這條命令可以改善創(chuàng)建索引的性能,減少建索引所用的時(shí)間。在SQLSERVER11.x版本中可以調(diào)整如下參數(shù):sp_configure"extenti/obuffers",nnnn帶來的影響是增加了extenti/obuffers大小,在SQLServer使用內(nèi)存不變情況下,減少了procedure和datacathe,而且同一時(shí)刻僅有一個(gè)用戶能用到extentbuffer。性能

sp_configure'maxmemory'先調(diào)整內(nèi)存值重新啟動(dòng)serversp_cacheconfig‘defaultdatacache’,‘500000’調(diào)整‘defaultdatacache‘為500Msybase目錄結(jié)構(gòu)它是個(gè)臨時(shí)數(shù)據(jù)庫,為服務(wù)器運(yùn)行與處理提供一個(gè)共享的存儲(chǔ)區(qū)域,如groupby和orderby的中間結(jié)果就存放在這里。Tempdb的空間為服務(wù)器中所有數(shù)據(jù)庫的所有用戶所共享。每次重啟SQLServer,服務(wù)器的一個(gè)自動(dòng)進(jìn)程都拷貝model數(shù)據(jù)庫到tempdb數(shù)據(jù)庫,并清除tempdb中原來的內(nèi)容。因此tempdb中的用戶表都是臨時(shí)的。臨時(shí)表分為兩類:可共享的和不可共享的。不可共享的臨時(shí)表在由createtable中將符號#置于表名之前創(chuàng)立;可共享的臨時(shí)表通過createtable中指定表名前綴tempdb..而創(chuàng)立。不可共享的臨時(shí)表SQLServer自動(dòng)為其添加數(shù)字后綴名,且它只存在于當(dāng)前會(huì)話中由于這些表都是臨時(shí)的,所以每當(dāng)用戶退出或系統(tǒng)失敗,這些表都將消失。數(shù)據(jù)庫屬性數(shù)據(jù)庫屬性:語法:sp_dboption[dbname,optin_name,{true|false}]aborttranonlogfull日志滿時(shí)事物中斷

allownullsbydefault允許缺省值為空

dbouseonly只有庫的屬主才可以使用此庫

ddlintran是否允許在事物中使用DDL語句

nochkptonrecovery庫恢復(fù)時(shí)是否做checkpoint

nofreespaceacctg是否計(jì)算段的空閑空間(可以加快庫的恢復(fù)時(shí)間)

readonly只讀

selectinto/bulkcopy/pllsort是否允許BCP批量copy

singleuser是否只允許單用戶訪問

trunclogonchkpt

數(shù)據(jù)庫全局變量sybase的全局變量格式為@@變量名Select@@error:檢查最近執(zhí)行的語句錯(cuò)誤狀態(tài)=0:成功,否則為錯(cuò)誤號Select@@rownum:上一個(gè)語句影響的行數(shù)Select@@sqlstatus:上次的語句狀態(tài)信息Select@@servername:服務(wù)器名Select@@version:版本

Select@@language:使用的語言

Select@@spid:當(dāng)前DBServer服務(wù)進(jìn)程ID

Select@@max_connections:可連接的最大連接數(shù)

Select@@identity:上次用insert時(shí)插入表的identiy值Select@@client_csname:客戶端的字符集名稱Select@@total_read/write:自啟動(dòng)以來sqlserver從磁盤讀/寫的頁數(shù)Sybase事務(wù)日志-1每一個(gè)數(shù)據(jù)庫,無論是系統(tǒng)數(shù)據(jù)庫,還是用戶數(shù)據(jù)庫,都有自己的transactionlog,每個(gè)庫都有syslogs表。Log記錄用戶對數(shù)據(jù)庫修改的操作,所以如果不用命令清除,log會(huì)一直增長直至占滿空間。清除log可用dumptransaction命令;或者開放數(shù)據(jù)庫選項(xiàng)trunclogonchkpt,數(shù)據(jù)庫會(huì)每隔一段間隔自動(dòng)清除log。管理好數(shù)據(jù)庫log是用戶操作數(shù)據(jù)庫必須考慮的一面。

事務(wù)在運(yùn)行過程中,SQLServer把事務(wù)開始、事務(wù)結(jié)束以及對數(shù)據(jù)庫的插入、刪除和更新等每一個(gè)操作作為一個(gè)日志記錄存放到事務(wù)日志中。事務(wù)中的更新操作首先在數(shù)據(jù)庫緩沖區(qū)(內(nèi)存)中進(jìn)行,緩沖區(qū)分別有用來記錄操作活動(dòng)的數(shù)據(jù)頁(datapage)和日志頁(logpage)。當(dāng)運(yùn)行到committran時(shí),日志頁首先從緩沖區(qū)寫到磁盤上,而后數(shù)據(jù)頁從緩沖區(qū)寫到磁盤上,即遵循“先與日志(write_aheadlog)”的原則,這樣保證出現(xiàn)故障的情況下,通過日志能夠得到最大限度的恢復(fù)?;謴?fù)必須撤消發(fā)生故障時(shí)還未提交的事務(wù)。Sybase事務(wù)日志-2Transactionlogs和checkpoint進(jìn)程

heckpoint命令的功能是強(qiáng)制所有“臟”頁(自上次寫入數(shù)據(jù)庫設(shè)備后被更新過的頁)寫入數(shù)據(jù)庫設(shè)備。自動(dòng)的checkpoint間隔是由SQLServer根據(jù)系統(tǒng)活動(dòng)和系統(tǒng)表sysconfigures中的恢復(fù)間隔(recoveryinterval)值計(jì)算出的。Transactionlog的大小update,insert和delete的頻率

每個(gè)transaction中數(shù)據(jù)的修改量

SQLServer系統(tǒng)參數(shù)recoveryinterval值

log是否存到介質(zhì)上用于數(shù)據(jù)庫恢復(fù)

檢測log的大小在syslogs表用sp_spaceused命令Sp_helpsegment“l(fā)ogsegment”Sybase事務(wù)日志-3log的清除

執(zhí)行命令dumptransaction截?cái)嗳罩?:dumptransactionwithtruncate_only命令和trunclogonchkpt一樣,只是清除log而不保留log到備份設(shè)備上。2:dumptransactionwithno_log也可以截?cái)嗳罩救裟阍趯?shù)據(jù)庫的修改發(fā)生時(shí)使用dumptransactionwithno_log,你就會(huì)冒整個(gè)數(shù)據(jù)庫崩潰的風(fēng)險(xiǎn)。在多數(shù)情況下,它們被反映成813或605錯(cuò)誤。為了在數(shù)據(jù)庫被修改時(shí),刪除transactionlog中的不活躍部分可使用dumptransactionwithtruncate_only。3:正常應(yīng)該是需要備份,應(yīng)做dumptransactiondatabase_nametodumpdevice。Sybase事務(wù)日志-4管理大的transactions有些操作是大批量地修改/bcp數(shù)據(jù),log增長速度十分快,未完成之前就可能使log滿,引起1105錯(cuò)誤1:為避免這些情況,我們可以把這個(gè)大的transaction分成幾個(gè)小的transactions,并執(zhí)行dumptransaction動(dòng)作。例如:1>usemaster

2>go

1>sp_dboptiondatabase_name,trunc,true

2>go

1>usedatabase_name

2>go

1>checkpoint

2>go

Bcp...-b100(onunix)

一個(gè)批執(zhí)行100行拷貝Sybase事務(wù)日志-5增加閾值(sp_addthreshold)例如:sp_addthresholdpubs2,logsegment,200,dump_transaction

其中,存儲(chǔ)過程定義為:createproceduredump_transaction

@dbnamevarchar(30),

@segmentnamevarchar(30),

@space_leftint,

@statusint

as

dumptransaction@dbnameto"/dev/rmtx"那么,當(dāng)日志段上可用空間小于200頁時(shí),SQLServer運(yùn)行存儲(chǔ)過程dump_transaction,將pubs2數(shù)據(jù)庫的日志轉(zhuǎn)儲(chǔ)到另一臺(tái)設(shè)置上。數(shù)據(jù)庫鎖

數(shù)據(jù)庫行/頁/表鎖為了在使用的一個(gè)表中改變加鎖類型,可以采用如下的句法格式:altertable<tablename>lock[allpages|datapages|datarows]在索引頁面中不會(huì)破壞事務(wù)加鎖。相反,而是采用了一種稱之為鎖存的機(jī)制。鎖存是一種類似于旋轉(zhuǎn)鎖(spinlocks)的同步方法sp_configurenumberofpre-allocatedextent設(shè)置為16也將對系統(tǒng)性能有明顯的積極的效果,減小鎖資源的競爭。共享鎖、排他鎖,死鎖數(shù)據(jù)庫的鎖存技術(shù)將那些在索引頁中發(fā)生死鎖的情形盡量排除掉。減小死鎖的方法:1:盡量對數(shù)據(jù)多次并發(fā)訪問2:配置“帶有加鎖方式的讀提交”("readcommittedwithlock”),并可用如下的命令加以配置:sp_configure‘readcommittedwithlock’,0|1數(shù)據(jù)庫死鎖

可能發(fā)生的死鎖的原因:1:插入與非群聚性的索引訪問2:數(shù)據(jù)更新的范圍當(dāng)?shù)谝粋€(gè)用戶到達(dá)所確定的頁面邊緣,即該范圍即將終止,下一批所組塊并妨礙的頁面范圍即將開始之時(shí),就可能發(fā)生死鎖。3:按照不同順序訪問表即使訪問行是不同的,對表按照任何不一致的順序進(jìn)行訪問,也會(huì)意味著可能發(fā)生死鎖。4:如何查鎖阻塞Sp_whosp_lock,select*fromsysprocesseswhereblocked>05:如何查鎖的表名

sp_lock查其中table_id=XXXXXXX對應(yīng)的表select*fromsysobjectswhereid=XXXXXXX數(shù)據(jù)庫的備份和恢復(fù)

數(shù)據(jù)庫的備份:必須啟動(dòng)backupserver由于文件的大小超出了操作系統(tǒng)的用戶最大文件限制。而有些操作系統(tǒng)不支持大于2GB的文件,這時(shí)可以使用BackupServer將一個(gè)數(shù)據(jù)庫后備到多個(gè)文件中。dumpdatabasepubs2to"/usr/sybase/pubs2_dump.1"stripeon"/usr/sybase/pubs2_dump.2"stripeon"/usr/sybase/pubs2_dump.3"go

這種方法還可以提高后備及恢復(fù)的速度,但注意恢復(fù)也必須用相應(yīng)多的設(shè)備。例如:1>loaddatabasepubs2from"/usr/sybase/pubs2_dump.1"2>stripeon"/usr/sybase/pubs2_dump.2"3>stripeon"/usr/sybase/pubs2_dump.3"4>go如何生成bcp命令文件以pubs2為例編輯一個(gè)文本文件select.sql,內(nèi)容如下:

setnocounton

usepubs2

go

select"bcppubs2.."+name+"out"+name+".bcp-Usa-P-c"

fromsysobjectswheretype="U"

go檢查修改服務(wù)器基本配置參數(shù)內(nèi)存配置:sp_configure“totalmemory”,new_value

(修改內(nèi)存配置,new_value的單位為2K)CPU數(shù):sp_configure“maxonlineengines”,cpu_number(修改CPU配置,cpu_number小于等于實(shí)際cpu數(shù))并發(fā)用戶連接數(shù):sp_configure“numberofuserconnections”

(檢查當(dāng)前的并發(fā)用戶連接數(shù))sp_configure"numberoflock"sp_configure"procedurecachesize"sp_configure"numberofuser"sp_configure"numberofopendatabases"sp_configure"numberofopenobjects",150000sp_configure"numberofopenindexes",150000如何解決數(shù)據(jù)庫被掛起的問題1現(xiàn)象:Error926

SeverityLevel14

ErrorMessageText

Database'xx'cannotbeopened-ithasbeenmarkedSUSPECTbyrecoverExplanation(一):你使用Transact_SQL命令操作這個(gè)數(shù)據(jù)庫的數(shù)據(jù)時(shí),出現(xiàn)這個(gè)信息,這是一個(gè)嚴(yán)重的錯(cuò)誤,如果你要使用這個(gè)數(shù)據(jù)庫的數(shù)據(jù),必須改正這個(gè)錯(cuò)誤.

(二):啟動(dòng)BackupServer,后備master數(shù)據(jù)庫

1>dumpdatabasemasterto"/usr/sybase/master.dup"

2>go(三)用isql登錄到SQLServer,須用sa帳號(本文以pubs2數(shù)據(jù)庫為例)1>sp_configure“allowupdates”,1允許修改mask庫

2>go

1>begintran

2>go

1>usemaster

2>go

1>updatesysdatabases

2>setstatus=-32768

3>Wherename="pubs2"

4>go

如何解決數(shù)據(jù)庫被掛起的問題2如果得到(1rowaffected),則1>commit

2>go否則1>rollback

2>go(四)重新啟動(dòng)SQLServer.

注:SQLServer重新啟動(dòng)之后,當(dāng)發(fā)現(xiàn)數(shù)據(jù)庫本身存在不可恢復(fù)的問題時(shí),如數(shù)據(jù)頁損壞等,且沒有完好的數(shù)據(jù)庫備份,一定要用bcp...out備份用戶數(shù)據(jù)庫數(shù)據(jù)。此時(shí),以下步驟省略,并按照“如何刪除壞的用戶數(shù)據(jù)庫”文章刪除此數(shù)據(jù)庫。之后重建此數(shù)據(jù)庫,恢復(fù)備份。否則,按以下步驟繼續(xù)操作:

用sa帳號注冊到SQLServer.

1>begintran

2>go

1>usemaster

2>go

如何解決數(shù)據(jù)庫被掛起的問題31>updatesysdatabases

2>setstatus=0

3>Wherename="pubs2"

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

1>commit

2>go否則1>rollback

2>go

1>sp_configure“allowupdates”,0不允許修改mask庫

2>go(五)重新啟動(dòng)SQLServer.(六)如果你的數(shù)據(jù)庫原來有dboption(例如"selectinto","trunclogonchkpt"等),你需要重新設(shè)置這些option.(七)數(shù)據(jù)庫已經(jīng)恢復(fù)可使用狀態(tài)后,運(yùn)行dbcc命令檢查數(shù)據(jù)庫的一致性(八)備份用戶數(shù)據(jù)庫:

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

2>go如何終止數(shù)據(jù)庫恢復(fù)過程1當(dāng)某一正常運(yùn)行的大事務(wù)(例如:update、delete操作)被終止,且重新啟動(dòng)server后,運(yùn)行該事務(wù)的數(shù)據(jù)庫處于恢復(fù)狀態(tài),通常這種狀態(tài)會(huì)持續(xù)很長時(shí)間,當(dāng)在此恢復(fù)過程中沒有出現(xiàn)任何異常時(shí),建議耐心等待恢復(fù)過程完成。同時(shí)提供以下方法來終止此恢復(fù)過程,但請注意這些操作將帶來數(shù)據(jù)不一致性。必要時(shí),希望用戶用完整、可靠的數(shù)據(jù)庫備份恢復(fù)此數(shù)據(jù)庫。

(1)啟動(dòng)BackupServer后,備份master數(shù)據(jù)庫(2)用isql登錄到SQLServer,須用sa帳號(本文以pubs2數(shù)據(jù)庫為例)1>sp_configure"allowupdates",1

2>go

1>begintran

2>go

1>usemaster

2>go

1>updatesysdatabases

2>setstatus=-32768

3>Wherename="pubs2"

4>go如果得到(1rowaffected),則commit提交,否則rollback

如何終止數(shù)據(jù)庫恢復(fù)過程2(3)這時(shí)重新啟動(dòng)SQLServer,再用sa帳號登錄到SQLServer.

1>dumptranpubs2withno_log

2>go

1>begintran

2>go

1>usemaster

2>go

1>updatesysdatabases

2>setstatus=0

3>Wherename="pubs2"

4>go

如果得到(1rowaffected),則commit提交,否則rollback(4)如果你的數(shù)據(jù)庫原來有dboption(例如"selectinto","trunclogonchkpt"等),你需要重新設(shè)置這些option..(5)當(dāng)數(shù)據(jù)庫已經(jīng)恢復(fù)可使用狀態(tài)后,運(yùn)行dbcc命令檢查數(shù)據(jù)庫的一致性(參照"如何檢查數(shù)據(jù)庫中數(shù)據(jù)一致性"文章)(6)備份用戶數(shù)據(jù)庫

如何刪除壞的用戶數(shù)據(jù)庫當(dāng)使用dropdatabase無法刪除數(shù)據(jù)庫時(shí),使用本文所示方法可以刪除。(1)設(shè)置允許修改系統(tǒng)表

1>sp_configure"allowupdates",1

2>go(2)把要?jiǎng)h除的用戶數(shù)據(jù)庫置為"suspect"狀態(tài)

1>usemaster

2>go

1>begintran

2>go

1>updatesysdatabasessetstatus=256

2>wherename="pubs2"

3>go如果得到(1rowaffected),則則commit提交,否則rollback(3)重啟server,并用isql以sa注冊。(4)刪除數(shù)據(jù)庫

1>dbccdbrepair(pubs2,dropdb)

2>go(5)恢復(fù)允許修改系統(tǒng)表

1>sp_configure"allowupdates",0

2>go

數(shù)據(jù)一致性檢查1數(shù)據(jù)庫一致性檢查(dbcc)提供了一些命令用于檢查數(shù)據(jù)庫的邏輯和物理一致性。Dbcc主要有兩個(gè)功能:使用checkstorage或checktable及checkdb在頁一級和行一級檢查頁鏈及數(shù)據(jù)指針。

使用checkstorage,checkalloc,或checkverify,tablealloc,及indexalloc檢查頁分配。

在下列情況中需要使用dbcc命令:作為數(shù)據(jù)庫日常維護(hù)工作的一部

溫馨提示

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

評論

0/150

提交評論