Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104985858
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Sybase

2008-04-10 20:15:16

 来源:九尾狐IT    作者:sb3000sp

sybase中,如何分离日志与数据在同一设备的数据库? 详细步骤,已测试成功

1、备份数据库,包括 master 和你要分离数据与日志的应用库,最好是备份所有数据库;

2、检查数据库的日志是否有单独的存放设备,如有,则直接到第5步;

3、如没有单独的日志设备,则增加一个设备:disk init .....;

4、alter database db_name log on new_log_device=xxx

5、sp_logdevice dbname,new_logdev (移动日志设备)

6、sp_dropsegment logsegment, db_name, device_name (如果数据库有多个设备既放数据又放日志,则要相应的运行几次

7、创建一个临时表,然后往里面插入足够的数据,然后截断日志

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、到此,数据与日志的分离已经完成,使用sp_helpdb db_name或sp_helplog查看是否已分离。

增加和删除 segment 并不移动当前的已分配空间。日志至少有一个扩充(extend)位于以前的 segment 上(还记得吗,为对象分配存贮单元时,实际是以 extend 为单位的。)。如果当前 extend 被填满,需要再为日志分配时,ASE会在新的 segment 上分配(segment 约束它不得不这么做)。此时,截断日志就可以回收以前分配的 extend 了。

最后,还是要备份所有数据库.

阅读(401) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~