數據庫維護
當一個數據庫被創建以后一個很重要的工作——數據庫維護.
數據庫日常維護工作是系統管理員的重要職責。其內容主要包括以下幾個部分:
一、備份系統數據
SYBASE 系統的備份與恢復機制保證了在系統失敗時重新獲取數據的可能性。SQL Server 提供了兩種不同類型的恢復機制:一類是系統自動完成的恢復,這種措施在每次系統啟動時都自動進行,保證了在系統癱瘓前完成的事務都寫到數據庫設備上,而未完成的事務都被回退;另一類是人工完成的恢復,這是通過 DUMP 和 LOAD 命令來執行人工備份和恢復工作。因此定期備份事務日志和數據庫是一項十分重要的日常維護工作。
1、備份數據庫
每一個數據庫都應在創建之后卸出,從而提供一個裝入基點。在此之后按排定的時間周期表卸出。比如每周五卸出數據庫。對一般數據庫系統卸出數據庫周期建議為每周一次。
2、備份事務日志
如果事務日志與數據庫放在同一個設備上,則事務日志不應與數據庫分開備份。master 數據庫和小于 4M 的用戶數據庫就是這種情況。一般數據庫系統的數據庫和日志分別放在不同的設備上,因此,可以用 DUMP TRAN 命令單獨備份日志。
備份事務日志的周期直接影響數據的恢復程度,因此建議每天備份。
3、備份數據庫及其日志間的相互作用
在至少卸出一次數據庫前,卸出事務日志是毫無意義的。
二、萬一系統失敗時恢復數據庫系統
如果用戶數據庫存儲的設備失效,從而數據庫被破壞或不可存取,通過裝入最新的數據庫備份以及后來的事務日志備份可以恢復數據庫。假設當前的事務日志存在于一個并沒有毀壞的設備上,帶著 WITH NO_TRUNCATE 選項的 DUMP TRANsaction 命令卸出它。
要恢復數據庫按如下步驟去做:
1、如果日志存在于一個分離的設備上,用帶著 NO_TRUNCATE 選項的 DUMP TRANsaction 命令卸出被毀壞的或者不可存取的用戶數據庫事務日志。
2、用下面的查詢檢查設備分配已毀壞數據庫的設備使用情況。必須為同一目的賦同樣的空間塊。 下面的查詢顯示了分配給數據庫 mydb 設備使用和尺寸情況:
SELECT segmap,size FROM sysusages
WHERE dbid = ( SELECT dbid FROM sysdatabases WHERE name = “mydb”)
3、檢查查詢的輸出。在 segmap 列的 ‘3’代表數據分配,‘4’代表日志分配。size 列代表 2K 數據塊的數目。注意此信息的次序、使用和尺寸部分。例如,輸出為:
segmapSize
310240//實際尺寸為:20M
35120//實際尺寸為:10M
45120//實際尺寸為:10M
31024//實際尺寸為:2M
42048//實際尺寸為:4M
4、用 DROP DATABASE 命令刪除毀壞設備上的數據庫。如果系統報錯,用DBCC DBREPAIR 命令的 DROPDB 選項。
5、刪除數據庫后,用 sp_dropdevice 刪除毀壞了的設備。
6、用 DISK INIT 初始化新的數據庫設備。
7、重建數據庫。用 CREATE DATABASE 命令從老的 sysusages 表拷貝所有的行,并包含第一邏輯設備。
對上例,命令為:
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 重新裝入數據庫,然后用 LOAD TRAN 裝入前面卸出的日志。
LOAD DATABASE 命令語法是:
LOAD DATABASE database_name
FROM dump_device
LOAD TRANsaction 命令的語法是:
LOAD TRANsaction database_name
FROM dump_device
卸出數據庫和事務日志的缺省權限歸數據庫所有者,且可以傳遞給其他用戶;裝載數據庫和事務的權限也歸數據庫所有者,但不能傳遞。
三、產生用戶信息表,并為信息表授權;
系統維護人員的另一個日常事務是為用戶創建新的信息表,并為之授權。創建表以及為表授權的方法已經在講過,在此只將有關命令語法寫出來。
四、監視系統運行狀況,及時處理系統錯誤;
系統管理員的另一項日常工作是監視系統運行情況。主要有以下幾個方面:
1、監視當前用戶以及進程的信息
使用系統過程:sp_who以保證系統正常運做;另外亦可監視非法用戶或用戶使用不屬于自己使用范圍的數據庫等情況。
2、監視目標占用空間情況
使用系統過程:sp_spaceused 日常要監視的主要目標有:用戶數據庫、數據庫日志表(syslogs)以及計費原始數據表等。如果發現占用空間過大,對日志表要進行轉儲;對其他目標則應擴充空間或清楚垃圾數據。
3、監視 SQL Server 統計數字
使用系統過程:sp_monitor