ehxz 发表于 2007-11-6 15:17:31

调整数据库日志空间为数据空间

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]
查看完整版本: 调整数据库日志空间为数据空间