五月天无码视频在线_超碰免费公开视人人_黄片在线 在线播放_无套内谢丰满熟女

[軟件知識(shí)專題]SQL數(shù)據(jù)庫(kù)日常維護(hù)方法

2013-07-04 14:02:48      訪問(wèn):

【內(nèi)容導(dǎo)讀】 SQL數(shù)據(jù)庫(kù)的日常維護(hù)
數(shù)據(jù)庫(kù)日常維護(hù)工作是系統(tǒng)管理員的重要職責(zé)。其內(nèi)容主要包括以下幾個(gè)部分:
一、備份系統(tǒng)數(shù)據(jù)
SYBASE 系統(tǒng)的備份與恢復(fù)機(jī)制保證了在系統(tǒng)失敗時(shí)重新獲取數(shù)據(jù)的可能性。SQL Server 提供了兩種不同類型的恢復(fù)機(jī)制:一類是系統(tǒng)自動(dòng)完成的恢復(fù),這種措施在每次系統(tǒng)啟動(dòng)時(shí)都自動(dòng)進(jìn)行,保證了在系統(tǒng)癱瘓前完成的事務(wù)都寫到數(shù)據(jù)庫(kù)設(shè)備上,而未完成的事務(wù)都被回退;另一類是人工完成的恢復(fù),這是通過(guò) DUMP 和 LOAD 命令來(lái)執(zhí)行人工備份和恢復(fù)工作。因此定期備份事務(wù)日志和數(shù)據(jù)庫(kù)是一項(xiàng)十分重要的日常維護(hù)工作。
1、備份數(shù)據(jù)庫(kù)
每一個(gè)數(shù)據(jù)庫(kù)都應(yīng)在創(chuàng)建之后卸出,從而提供一個(gè)裝入基點(diǎn)。在此之后按排定的時(shí)間周期表卸出。比如每周五卸出數(shù)據(jù)庫(kù)。對(duì)一般數(shù)據(jù)庫(kù)系統(tǒng)卸出數(shù)據(jù)庫(kù)周期建議為每周一次。
除了按計(jì)劃周期卸出數(shù)據(jù)庫(kù)之外,還需在每次運(yùn)行沒(méi)有日志的操作后卸出數(shù)據(jù)庫(kù)。例如:
·每次強(qiáng)制地運(yùn)行了 DUMP TRAN WITH NO_LOG (因?yàn)閿?shù)據(jù)庫(kù)的磁盤空溢出);
·每次用 sp_dboption 允許 select into/bulkcopy 做快速拷貝,或用 SELECT INTO 命令創(chuàng)建一個(gè)永久性的表,或使用了 WRITETEXT 命令。
卸出數(shù)據(jù)庫(kù)的命令為:
DUMP DATABASE database_name
TO dump_device
database_name 是要卸出的數(shù)據(jù)庫(kù)名稱,dump_device 是卸出設(shè)備的名稱。用系統(tǒng)過(guò)程 sp_helpdevice 可以獲得設(shè)備的信息。
下面一條命令用來(lái)卸出數(shù)據(jù)庫(kù) my_db :
DUMP DATABASE my_db
TO db_bk_dev
2、備份事務(wù)日志
如果事務(wù)日志與數(shù)據(jù)庫(kù)放在同一個(gè)設(shè)備上,則事務(wù)日志不應(yīng)與數(shù)據(jù)庫(kù)分開(kāi)備份。master 數(shù)據(jù)庫(kù)和小于 4M 的用戶數(shù)據(jù)庫(kù)就是這種情況。一般數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)庫(kù)和日志分別放在不同的設(shè)備上,因此,可以用 DUMP TRAN 命令單獨(dú)備份日志。
備份事務(wù)日志的周期直接影響數(shù)據(jù)的恢復(fù)程度,因此建議每天備份。
備份事務(wù)日志的命令格式為:
DUMP TRANsaction database_name
[TO dump_device]
[WITH TRUNCATE_ONLYWITH NO_LOGWITH NO_TRUNCATE]
其中 database_name 是要備份事務(wù)的數(shù)據(jù)庫(kù)名稱,dump_device 是備份設(shè)備名稱,僅當(dāng)包含了 WITH TRUNCATE_ONLY 或 WITH NO_LOG 子句時(shí),才可以備份到設(shè)備。
注意:如果總是用 DUMP DATEBASE (備份數(shù)據(jù)庫(kù)及其日志),而不用 DUMP TRAN ,事務(wù)日志將不會(huì)刷新,而變得非常龐大。
對(duì)于 master 數(shù)據(jù)庫(kù)和小型數(shù)據(jù)庫(kù)每次運(yùn)行 DUMP DATEBASE 之后應(yīng)當(dāng)運(yùn)行 DUMP TRANsaction 命令刷新日志 。
下面一條命令備份數(shù)據(jù)庫(kù) db160 的事務(wù)日志到備份設(shè)備上:
DUMP TRANsaction db160
TO db_log_bk_dev
WITH TRUNCATE_ONLY
3、備份數(shù)據(jù)庫(kù)及其日志間的相互作用
在至少卸出一次數(shù)據(jù)庫(kù)前,卸出事務(wù)日志是毫無(wú)意義的。下圖顯示了備份數(shù)據(jù)庫(kù)及其日志間的關(guān)系
如果在星期二下午5:01出現(xiàn)非硬件故障,需要做的所有工作是裝入磁帶5(參見(jiàn)下一節(jié):數(shù)據(jù)恢復(fù)),由于磁帶5是下午5:00剛備份的,因此只有備份和裝入之間的一分鐘內(nèi)的數(shù)據(jù)損失。
但是,如果在星期二下午4:49失效會(huì)怎么樣呢?在這種情況下,要裝入磁帶1(在星期五下午5:00的卸出)。然后,依次裝入磁帶2,3以及4。這樣,系統(tǒng)將恢復(fù)到星期二上午10:00點(diǎn)的狀態(tài),星期二的大部分工作丟失了。此例顯示了經(jīng)常卸出事務(wù)的重要性。
二、萬(wàn)一系統(tǒng)失敗時(shí)恢復(fù)數(shù)據(jù)庫(kù)系統(tǒng)
如果用戶數(shù)據(jù)庫(kù)存儲(chǔ)的設(shè)備失效,從而數(shù)據(jù)庫(kù)被破壞或不可存取,通過(guò)裝入最新的數(shù)據(jù)庫(kù)備份以及后來(lái)的事務(wù)日志備份可以恢復(fù)數(shù)據(jù)庫(kù)。假設(shè)當(dāng)前的事務(wù)日志存在于一個(gè)并沒(méi)有毀壞的設(shè)備上,帶著 WITH NO_TRUNCATE 選項(xiàng)的 DUMP TRANsaction 命令卸出它。
要恢復(fù)數(shù)據(jù)庫(kù)按如下步驟去做:
1、如果日志存在于一個(gè)分離的設(shè)備上,用帶著 NO_TRUNCATE 選項(xiàng)的 DUMP TRANsaction 命令卸出被毀壞的或者不可存取的用戶數(shù)據(jù)庫(kù)事務(wù)日志。
2、用下面的查詢檢查設(shè)備分配已毀壞數(shù)據(jù)庫(kù)的設(shè)備使用情況。必須為同一目的賦同樣的空間塊。
下面的查詢顯示了分配給數(shù)據(jù)庫(kù) mydb 設(shè)備使用和尺寸情況:
SELECT segmap,size FROM sysusages
WHERE dbid =
( SELECT dbid FROM sysdatabases WHERE name = “mydb”)
3、檢查查詢的輸出。在 segmap 列的 ‘3’代表數(shù)據(jù)分配,‘4’代表日志分配。size 列代表 2K 數(shù)據(jù)塊的數(shù)目。注意此信息的次序、使用和尺寸部分。例如,輸出為:
segmapSize
--------------------
310240//實(shí)際尺寸為:20M
35120//實(shí)際尺寸為:10M
45120//實(shí)際尺寸為:10M
31024//實(shí)際尺寸為:2M
42048//實(shí)際尺寸為:4M
4、用 DROP DATABASE 命令刪除毀壞設(shè)備上的數(shù)據(jù)庫(kù)。如果系統(tǒng)報(bào)錯(cuò),用DBCC DBREPAIR 命令的 DROPDB 選項(xiàng)。
5、刪除數(shù)據(jù)庫(kù)后,用 sp_dropdevice 刪除毀壞了的設(shè)備。
6、用 DISK INIT 初始化新的數(shù)據(jù)庫(kù)設(shè)備。
7、重建數(shù)據(jù)庫(kù)。用 CREATE DATABASE 命令從老的 sysusages 表拷貝所有的行,并包含第一邏輯設(shè)備。
對(duì)上例,命令為:
CREATE DATABASE mydb
ON datadev1=20,datadev2=10
LOG ON logdev1=10
8、用 ALTER DATABASE 命令重建其余入口。在此例中,在datadev1上分配更多的空間,命令為:
ALTER DATABASE mydb ON datadev1=2
9、用 LOAD DATABASE 重新裝入數(shù)據(jù)庫(kù),然后用 LOAD TRAN 裝入前面卸出的日志。
LOAD DATABASE 命令語(yǔ)法是:
LOAD DATABASE database_name
FROM dump_device
LOAD TRANsaction 命令的語(yǔ)法是:
LOAD TRANsaction database_name
FROM dump_device
卸出數(shù)據(jù)庫(kù)和事務(wù)日志的缺省權(quán)限歸數(shù)據(jù)庫(kù)所有者,且可以傳遞給其他用戶;裝載數(shù)據(jù)庫(kù)和事務(wù)的權(quán)限也歸數(shù)據(jù)庫(kù)所有者,但不能傳遞。
三、產(chǎn)生用戶信息表,并為信息表授權(quán);
系統(tǒng)維護(hù)人員的另一個(gè)日常事務(wù)是為用戶創(chuàng)建新的信息表,并為之授權(quán)。創(chuàng)建表以及為表授權(quán)的方法已經(jīng)在講過(guò),在此只將有關(guān)命令語(yǔ)法寫出來(lái)。
·創(chuàng)建表的命令為:
CREATE TABLE table_name
( column_1 datatype [NULL NOT NULL IDENTITY],
column_2 ……

go
ALTER TABLE table_name
ADD PRIMARY KEY (column_list)
go
·刪除表的命令格式為:
DROP TABLE table_name
go
·為表授權(quán)的命令格式為:
GRANT {ALLpermission_list}
ON table_name TO user_name
go
·收回權(quán)限的命令格式為
REVOKE {ALLpermission_list}
ON table_name FROM user_name
go
四、監(jiān)視系統(tǒng)運(yùn)行狀況,及時(shí)處理系統(tǒng)錯(cuò)誤;
系統(tǒng)管理員的另一項(xiàng)日常工作是監(jiān)視系統(tǒng)運(yùn)行情況。主要有以下幾個(gè)方面:
1、監(jiān)視當(dāng)前用戶以及進(jìn)程的信息
使用系統(tǒng)過(guò)程:sp_who
說(shuō)明:該命令顯示當(dāng)前系統(tǒng)所有注冊(cè)用戶及進(jìn)程信息,如下表是某系統(tǒng)的信息。
SpidStatusLoginamehostnameblkdbnamecmd
---------------------------------------------------------------
1RunningSascosysv0MasterSELECT
2SleepingNULL0MasterNETWORK HANDLE
3SleepingNULL0MasterDEADLOCK TUNE
4SleepingNULL0MasterMIRROR HANDLER
5SleepingNULL0MasterHOUSEKEEPER
6SleepingNULL0MasterCHECKPOINT SLEEP
從左向右依次顯示:進(jìn)程號(hào)、當(dāng)前狀態(tài)、注冊(cè)用戶名、主機(jī)名、占用塊數(shù)、數(shù)據(jù)庫(kù)名以及當(dāng)前命令。
如果監(jiān)視時(shí)發(fā)現(xiàn)進(jìn)程總數(shù)接近最大連接數(shù)(用系統(tǒng)過(guò)程:sp_configure “user conn” 查看)時(shí),應(yīng)下掉不活動(dòng)或無(wú)關(guān)進(jìn)程,以保證系統(tǒng)正常運(yùn)做;另外亦可監(jiān)視非法用戶或用戶使用不屬于自己使用范圍的數(shù)據(jù)庫(kù)等情況。
2、監(jiān)視目標(biāo)占用空間情況
使用系統(tǒng)過(guò)程:sp_spaceused
說(shuō)明:該過(guò)程顯示行數(shù)、數(shù)據(jù)頁(yè)數(shù)以及當(dāng)前數(shù)據(jù)庫(kù)中由某個(gè)目標(biāo)或所有目標(biāo)所占用的空間。如下表是某數(shù)據(jù)庫(kù)日志表的信息:
NameRow_totalreserveddataIndex_sizeunused
------------------------------------------------------------
SyslogsNot avail32KB32KB0KBNot avail
日常要監(jiān)視的主要目標(biāo)有:用戶數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)日志表(syslogs)以及計(jì)費(fèi)原始數(shù)據(jù)表等。如果發(fā)現(xiàn)占用空間過(guò)大,對(duì)日志表要進(jìn)行轉(zhuǎn)儲(chǔ);對(duì)其他目標(biāo)則應(yīng)擴(kuò)充空間或清楚垃圾數(shù)據(jù)。
3、監(jiān)視 SQL Server 統(tǒng)計(jì)數(shù)字
使用系統(tǒng)過(guò)程:sp_monitor
說(shuō)明:sp_monitor 顯示SQL Server 的歷史統(tǒng)計(jì)數(shù)字,下表是某系統(tǒng)的統(tǒng)計(jì)數(shù)字:
Last_runCurrent_runSeconds
---------------------------------------------------------------
May 13 2000 1:27PMMay 13 2000 3:01PM5678
CPU_busyIO_busyIdle
---------------------------------------------------------------
16(6)-0%0(0)-0%5727(5672)-99%
Packets_receivedPackets_sentPacket_errors
---------------------------------------------------------------
21(17)100(97)0(0)
Total_readTotal_writeTotal_errorsConnections
--------------------------------------------------------
785(366)311(113)0(0)3(2)
上表依次給出該系統(tǒng)本次運(yùn)行統(tǒng)計(jì)的上一次時(shí)間、本次時(shí)間、間隔秒數(shù)、CPU占用、IO占用、收發(fā)包情況、系統(tǒng)讀入寫出情況等信息
五、保證系統(tǒng)數(shù)據(jù)安全,周期更改用戶口令;
為保證系統(tǒng)數(shù)據(jù)的安全,系統(tǒng)管理員必須依據(jù)系統(tǒng)的實(shí)際情況,執(zhí)行一系列的安全保障措施。其中,周期性的更改用戶口令是比較常用且十分有效的措施。
更改用戶口令是通過(guò)調(diào)用系統(tǒng)過(guò)程sp_password 來(lái)實(shí)現(xiàn)的。Sp_password 的語(yǔ)法為:
sp_password caller_password,new_password [,loginame]
其中caller_password 是登錄口令(老口令),new_password是新口令,loginame是登錄名稱。