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