讓你提前認識軟件開發(34):數據庫的維護
第2部分 數據庫SQL語言
數據庫的維護
對於某些大型軟件產品,一旦商用,必定會存儲非常多用戶信息,這就對產品所使用的數據庫(下面簡稱業務數據庫)帶來了壓力。為了保證業務數據庫的平穩執行,須要在日常工作中對數據庫做一些主要的維護操作。
業務數據庫的維護規則例如以下:
1. 對業務數據庫必須進行定期全量備份
業務數據庫的定期備份能在數據庫被意外破壞時進行高速恢復,備份策略能夠依據數據增量大小採用周計劃或月計劃。
假如備份數據庫db_100,則Oracle、Sybase和SQL Server中的操作方法例如以下:
(1) Oracle
exp db_100/db_100 owner=db_100 buffer=8192(或64000)
file=exp_db100.dmp(或磁帶設備/dev/rmt0)
tables=
rows=y
compress=n
log= exp_db100.log
參數說明:
owner:將要卸出的username列表。
buffer:緩沖區大小。
file:由export創建的輸出文件的名字。
tables:將要卸出的表名列表。
rows:指明是否卸出表數據的行數,缺省為“y”。
compress:指明在裝入期間是否將表數據壓縮到一個區域中。
假設在卸出數據時,指定參數compress=y。那麽裝入時,就會將數據壓縮到一個初始區域中。
這樣的選擇能夠保持初始化區域的原始大小。
缺省為“y”。
log:指定一個接收實用信息和錯誤信息的文件。
(2) Sybase中數據庫的備份
dump database db_100 with /home/data/db100.dmp(或磁帶設備/dev/rmt0)
(3) SQL Server中數據庫的備份
use master
go
exec sp_addumpdevice ‘disk‘, ‘dev_db100‘,
disk =‘C:\backup\dev_db100.dat‘
go
backup database db_100 to dev_db100
go
2. 對業務數據庫定期進行數據清理,清理前必須完畢備份操作
對每天記錄增長較多的日誌表採用備份表的機制,即建立和生產表一樣結構的備份表,依據項目的須要決定生產表和備份表保留的時間。
假設1000號業務要處理主日誌生產表tb_mainlog,要求是該生產表保留2天的記錄,備份表保留90天的記錄,篩選日期的字段名為startdatetime。分批提交的間隔為60分鐘,有一個存儲過程pr_backuptable用於備份,則僅僅需例如以下調用:
exec pr_backuptable ‘tb_mainlog’,’tb_mainlog_bak’,2,90,’startdatetime’, ‘yyyy.mm.dd hh:mi:ss’,60,’’
參數說明:
參數1:生產表名
參數2:備份表名
參數3:生產表保留的天數
參數4:備份表保留的天數
參數5:篩選日期字段名
參數6:篩選日期字段的格式
參數7:分批提交的間隔(單位:分鐘)
參數8:用於進行比較的擴展條件
3. 假設數據庫沒有設置截斷日誌(或者不歸檔模式)。須要對數據庫日誌定期維護
Oracle日誌的歸檔模式的設置一般在安裝時就需進行;Sybase數據庫的選項“trunc log on chkpt”設為true,或者假設此選項設為false,則須要定期進行數據庫的日誌截斷;SQL Server數據庫的選項“autoshrink”設為true。
(1) 設置Oracle數據庫的日誌為不歸檔模式
操作步驟為:
1) 關閉數據庫
2) 按 startup mount方式啟動實例
3) 切換模式
alter database noarchivelog;
alter database open;
(2) Sybase中設置數據庫db_100中“trunc log on chkpt”為true
use master
go
sp_dboption db_100,‘trunc log on chkpt‘,true
go
use db_100
go
checkpoint
go
(3) SQL Server中設置數據庫db_100中“autoshrink”為true
sp_dboption db_100,‘autoshrink‘,true
4. 對數據庫索引進行定期維護
對Sybase,SQL Server數據庫中的表中的索引要定期進行update statistics維護。
假設索引失效。則重建索引。
比如,要更新tb_userinfo表中全部索引中全部列的統計信息。可採用下面語句:
update index statistics tb_userinfo
5. 定期查看數據庫任務的執行結果日誌和數據庫可用空間最大值
在數據庫執行過程中,要常常通過日誌來查看相關任務的執行結果是否正常。並查看數據庫剩余空間數。假設可用空間已經非常小了。則要進行一定的文件清理操作。
6. 對數據庫進行大批量的增、刪、改操作後建議對表進行一致性檢查和索引的重建
在經過大規模的操作的時候,有可能會無意中破壞掉數據表的結構。因此須要在操作完畢之後對表進行一致性檢查。假設發現表結構出現異常,則須要重建表及對應的索引。
在某些業務軟件產品中,數據的維護是一項復雜、繁重而長期的工作,相關維護經驗也僅僅有在實際操作過程中才幹夠累積起來。
(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信號:245924426,歡迎關註!)
讓你提前認識軟件開發(34):數據庫的維護