sybase數(shù)據(jù)庫(kù)中分離日志與數(shù)據(jù)文件
詳細(xì)步驟,已測(cè)試成功
1、備份數(shù)據(jù)庫(kù),包括 master 和你要分離數(shù)據(jù)與日志的應(yīng)用庫(kù),最好是備份所有數(shù)據(jù)庫(kù); 2、檢查數(shù)據(jù)庫(kù)的日志是否有單獨(dú)的存放設(shè)備,如有,則直接到第5步; 3、如沒(méi)有單獨(dú)的日志設(shè)備,則增加一個(gè)設(shè)備:disk init .....; 4、alter database db_name log on new_log_device=xxx; 5、sp_logdevice dbname,new_logdev (移動(dòng)日志設(shè)備); 6、sp_dropsegment logsegment, db_name, device_name (如果數(shù)據(jù)庫(kù)有多個(gè)設(shè)備既放數(shù)據(jù)又放日志,則要相應(yīng)的運(yùn)行幾次; 7、創(chuàng)建一個(gè)臨時(shí)表,然后往里面插入足夠的數(shù)據(jù),然后截?cái)嗳罩荆?br> use db_name go create table t1 (id int) go declare @loop int select @loop = 1 while(@loop<500) begin insert t1 values(@loop) select @loop = @loop + 1 end go dump tran db_name with truncate_only go 8、到此,數(shù)據(jù)與日志的分離已經(jīng)完成,使用sp_helpdb db_name或sp_helplog查看是否已分離。 增加和刪除 segment 并不移動(dòng)當(dāng)前的已分配空間。日志至少有一個(gè)擴(kuò)充(extend)位于以前的 segment 上(還記得嗎,為對(duì)象分配存貯單元時(shí),實(shí)際是以 extend 為單位的。)。如果當(dāng)前 extend 被填滿,需要再為日志分配時(shí),ASE會(huì)在新的 segment 上分配(segment 約束它不得不這么做)。此時(shí),截?cái)嗳罩揪涂梢曰厥找郧胺峙涞?extend 了。最后,還是要備份所有數(shù)據(jù)庫(kù). |
|