sybase數據庫中分離日志與數據文件詳細步驟,已測試成功
1、備份數據庫,包括 master 和你要分離數據與日志的應用庫,最好是備份所有數據庫;
2、檢查數據庫的日志是否有單獨的存放設備,如有,則直接到第5步;
3、如沒(méi)有單獨的日志設備,則增加一個(gè)設備:disk init .....;
4、alter database db_name log on new_log_device=xxx;
5、sp_logdevice dbname,new_logdev (移動(dòng)日志設備);
6、sp_dropsegment logsegment, db_name, device_name (如果數據庫有多個(gè)設備既放數據又放日志,則要相應的運行幾次;
7、創(chuàng )建一個(gè)臨時(shí)表,然后往里面插入足夠的數據,然后截斷日志;
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、到此,數據與日志的分離已經(jīng)完成,使用sp_helpdb db_name或sp_helplog查看是否已分離。
增加和刪除 segment 并不移動(dòng)當前的已分配空間。日志至少有一個(gè)擴充(extend)位于以前的 segment 上(還記得嗎,為對象分配存貯單元時(shí),實(shí)際是以 extend 為單位的。)。如果當前 extend 被填滿(mǎn),需要再為日志分配時(shí),ASE會(huì )在新的 segment 上分配(segment 約束它不得不這么做)。此時(shí),截斷日志就可以回收以前分配的 extend 了。最后,還是要備份所有數據庫.