1. 程式人生 > >Can't allocate space for object 'syslogs' in database:Sybase

Can't allocate space for object 'syslogs' in database:Sybase

使用Sybase時候,遇到下面的錯誤:
Can't allocate space for object 'syslogs' in database 'master' because 'logsegment' segment is full/has no free extents. If you ran out of space in syslogs, dump the transaction log. Otherwise, use ALTER DATABASE or sp_extendsegment to increase size of the segment.

執行下面清理log的命令:
dump transaction master with no_log


Go
dump transaction model with no_log
go
dump transaction sybsystemdb with no_log
go
dump transaction sybsystemprocs with no_log
go
dump transaction tempdb with no_log
go
解決
=================
=================

Sybase的日誌管理

sybase    central中選擇一個資料庫,然後按右鍵,然後選擇backup,點選下一步,接著選擇第二項backup    up    the    transaction    log. The transactin log records all changes to a database. 

點選下一步,接著選擇第三項Remove    then    inactive    part    of    the    log    and a new log entry records the dump. No backup performed.  或者第四項Remove    the    inactive    part    of    the    log. No log or backup performed,也可以截斷日誌。

Sybase master 庫日誌滿了應該如何清除呢?可以通過以下的方法對 master庫進行管理,如果確實沒有足夠的空間了,可以考慮對 master庫進行擴容操作。

1、簡單的情況下 dump trans with no_log 就可以了,master庫一般不會滿。

1> use master
2> go
1> checkpoint
2> go
1> dump tran master with no_log
2> go
00:00000:00011:2006/02/22 14:53:38.06 server   WARNING: *************************
**
00:00000:00011:2006/02/22 14:53:38.06 server   Attempt by user 1 to dump xact on
db master with NO_LOG
00:00000:00011:2006/02/22 14:53:38.06 server   Attempt by user 1 to dump xact on
db master with NO_LOG was successful
00:00000:00011:2006/02/22 14:53:38.06 server   WARNING: *************************
**

2、如果是windows平臺,則找到RUN_your_server_name.bat

如果是Unix平臺,則找到RUN_your_server_name檔案

編輯上面的啟動檔案,在行尾加上 -T3067

然後使用啟動檔案啟動資料庫,啟動後

dump tran master with truncate_onlyu

go

1)備份master資料庫

dump database master to '備份路徑及檔名'

2)停止sybase服務

shutdown

3)編輯sybase服務啟動檔案(在unix下一般是“RUN_服務名”的檔案,在windows下一般是“RUN_服務名.bat”的批處理檔案)。在啟動檔案的命令列最後加上 -T3607)

4)使用啟動檔案啟動服務後,再dump tran master with truncate_only

5)這時dump清理日誌一般多會成功。然後在停止shutdown服務,去掉-T3607,以正常方式啟動服務

3、不行的話,則需要建立一裝置來進行擴充套件或按以下方式重建:

1)備份master資料庫

啟動backup server,進入isql環境執行:

1>dump database master to '/sybase/master.dump'

2>go

(如果 不行的話 dump 日誌 with no log)

hut down SQL/ASE Server

1>shutdown

2>go

2)建立新的足夠大的master裝置

$buildmaster -d -ssize(size以2K為單位)

例:$buildmaster-d/sybase/data/master.dat -s102400

3)修改RUN_servername檔案

編輯RUN_server_name檔案,-d引數指向新建的裝置名。

4)單使用者模式重啟server

$startserver -f RUN_servername -m

5)執行installmaster指令碼

6)由備份檔案裝載master資料庫

1>load database master from '/sybase/master.dump'

2>go

7)修改sysdevices資訊

sp_configure 'allow updates', 1

go

begin tran

go

update sysdevices set high = 102399 , phyname = 'e:\sybase\data\master_test.dat' where name = 'master'

go

(102399=200*512-1 master裝置大小為200M)

commit tran

go

8)擴充套件master資料庫

1>alter database master on master裝置名稱=size(此值以M為單位)

2>go

例:alter database master on master=10

將master資料庫在master裝置上擴充套件10M

這個操作比較危險,注意先做好備份(比如 GHOST)