调整数据库日志空间为数据空间
1 准备工作1、备份master和用户数据库。
2、在做以下操作时,确认没有其它业务在操作。
3、将用户数据库设置为单用户状态。
sp_dboption ‘dbname’,’single’,’true’
go
use dbname
go
checkpoint
go
2 查询出日志设备文件
Sp_helpdb dbname
go
输出类似如下:
device_fragments size usage
created free kbytes
------------------------------ ------------- --------------------
------------------------- ----------------
xtpt 200.0 MB data only
Aug 10 20071:53PM 186856
xtpt 100.0 MB data only
Aug 10 20071:53PM 101936
xtpt 300.0 MB data only
Aug 10 20071:53PM 306000
xtpt 100.0 MB data only
Aug 10 20071:53PM 102000
xtpt 324.0 MB data only
Aug 10 20071:53PM 330480
xtpt_log 54.0 MB log only
Sep 10 20074:39PM not applicable
xtpt_log1 100.0 MBlog only
Sep 11 2007 10:54AM not applicable
如果只有一个数据库设备用于日志,这时候需要添加一个数据库日志设备。如果有多个日志设备,直接进行下一步操作。
3 查询日志段使用的设备名
select sysdevices.name,sysusages.* from sysusages,sysdevices where sysusages.dbid = 6 and sysusages.vstart=sysdevices.low and sysusages.segmap = 4 order by sysusages.lstart
这里查询出来有多条记录,在下一步删除日志段的时候,要从后向前删除,直道达到你的要求。
name dbid segmap lstart size
vstart pad unreservedpgs crdate
------------------------------ ------ ----------- ----------- -----------
----------- ------ ------------- --------------------------
xtpt_log 6 4 131072 6912
67108864 NULL 6885 Sep 10 20074:39PM
xtpt_log1 6 4 137984 12800
83886080 NULL 12750 Sep 11 2007 10:54AM
4 在数据库设备上删除日志段
use dbname
go
sp_dropsegment logsegment,dbname,devicename
go
例如:
use xtpt
go
sp_dropsegment logsegment,xtpt,xtpt_log1
go
5 将日志段设备扩展为数据段设备
sp_extendsegment segname,dbname,devname
例如:
sp_extendsegment default, xtpt,xtpt_log1
go
6 进行数据库检查
dbcc traceon(3604)
go
dbcc checkdb(dbname)
go
dbcc checkalloc(dbname)
go
dbcc checkdb(master)
go
dbcc checkalloc(master)
go
7 完成后的处理
重起数据库Server,将应用数据库的单用户取消。
sp_dboption ‘dbname’,’single’,’false’
go
use dbname
go
checkpoint
go
注意:
以上操作是比较危险的操作,所以请在操作前一定注意做好数据备份。
FROM:http://bbs.chinaunix.net/thread-1011484-1-1.html
作者:jarjar
页:
[1]