程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> CU和個人的一點SYBASE資料整理

CU和個人的一點SYBASE資料整理

編輯:SyBase綜合文章
1、timeslice -201,current process infected錯誤,幾天出現一次,需要重
新啟動服務,同時還報好多SQL錯誤
解決方法:打Sybase補丁

2、錯誤:Recovering database 'master'
00:00000:00001:2004/03/12 10:05:27.70 server Redo pass of recovery has processed 10 committed and 0 aborted transactions.
00:00000:00001:2004/03/12 10:05:27.81 server No such message: 1105
00:00000:00001:2004/03/12 10:05:27.81 server There is no space available in SYSLOGS for process 1 to log a record for
which space has been reserved. This process will retry at intervals of one minute.
The internal error number is -4
解決方法:第一步:
認為很簡單,在啟動文件中加-T3607 -m,然後用sa進
dump tran master with no_log或
alter database master on master_dev=xxxM 即可
問題:
啟動報:Error: 3475, Severity: 21, State: 7
00:00000:00006:2004/03/12 10:38:55.71 server There is no space available in SYSLOGS for process 6 to log a record for which space has been reserved. This process will retry at intervals of one minute. The internal error number is -4.
用sa登陸進不去:報:
isql -Usa -Pxxx
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.
Msg 3475, Level 21, State 7:
There is no space available in SYSLOGS for process 6 to log a record for which
space has been reserved. This process will retry at intervals of one minute. The

internal error number is -4.
CT-LIBRARY error:
ct_connect(): user api layer: internal ClIEnt Library error: Read from t
he server has timed out.
第二步:從沒遇到這種情況 再加 -T699(Turn off transaction logging for the entire SQL dataserver)
這次sa可進
執行
alter database master on master_dev=xxxM 報和上面一樣的錯
dump tran master with no_log也不行
本想bcp系統表再重建master,總是麻煩(懶),還是生產機
第三步: 再加-T7409
執行 alter database master on master_dev=xxxM ok
問題解決
---------來自CU

3、啟動時數據庫不能回滾

解決方法:第1. 使用 install目錄下 的 RUN 文件啟動數據庫服務器(如果服務已經啟動,可跳過此步驟)
第2. 使用isql連接進入數據庫服務器
isql -Usa -Ppasswd -S server_name
1>sp_configure 'allow update',1
2>go

1>use master
2>go
1>sp_helpdb DB_NAME
2>


您正在看的sybase教程是:CU和個人的一點Sybase資料整理。
記下此處查詢出的數據庫選項 (例如:select into/bulkcopy等)

1>begin tran
2>go
1>update sysdatabases set status = -32768 where name = 'DB_NAME' (注意:一定要加上數據庫名稱條件,切記,最好使用事務)
2>go
如果顯示 (1 row affected),commit,否則 rollback
1>commit
2>go

1>shutdown with nowait
2>go

第3. 重新重復步驟1,啟動數據庫服務器,注意觀察日志中是否顯示 在 recovery database DB_NAME 時使用bypass狀態,如果正常,這種情況下,數據庫服務器應該能夠完全啟動

第4. 使用isql連接進入數據庫服務器
isql -Usa -Ppasswd -S server_name
1>use master
2>go
1>dump tran DB_NAME with no_log ( dbcc rebuild_log(DBNAME,1,1) )
2>go

1>update sysdatabases set status = 0 where name = 'DB_NAME' (注意:一定要加上數據庫名稱條件,切記)
2>go

1>shutdown with nowait
2>go

第5. 重新重復步驟1,啟動數據庫服務器,注意觀察日志中是否顯示 recovery database DB_NAME 成功,DB_NAME數據庫online

第6. 恢復數據庫選項
使用isql連接進入數據庫服務器
isql -Usa -Ppasswd -S server_name
1>use master
2>go
1>sp_dboption DB_NAME,'select into',true
2>go
1>use DB_NAME
2>go
1>checkpoint
2>go

如果有其他選項,依法處理

先試步驟四中的 dump tran with no_log 如果不行就用後面括號中那個命令 dbcc rebuild_log(DBNAME,1,1)
dbcc rebuild_log,如果還不行,只有恢復備份了

如果沒有備份,只能在重新做1到3步驟,然後使用bcp將數據庫中所有數據備份出來,然後重新創建數據庫了。

強行截斷日志的方法能夠清除系統中日志的錯誤,讓數據庫正常online,但也有可能造成數據庫中用戶表甚至系統表的損壞,
所以建議在數據庫正常online後進行全庫的DBCC檢查(比如dbcc checkdb、 dbcc checkalloc等)以確保正常運行。

-----------來自CU

4、Sybase打補丁
數據庫打補丁
下載相應的補丁,上傳到機器上的某個目錄下(自己確定),例如/ebf
cd /ebf
gzip –S filename(解壓縮為*.tar文件)(也可以在window平台上用winzip解壓縮
後再上傳)
tar –xvf *.tar
在sybase服務停掉的情況下,拷貝解開的所有文件到/Sybase目錄下
su - Sybase
cd /Sybase
cp –R /ebf/../* .

chown –R sybase:sybse /Sybase
啟動Sybase服務,執行腳本:
isql -Usa -P -n -i /Sybase/scripts/installmaster -o installmaster.txt
isql -Usa -P -n -i /Sybase/scripts/installdbccdb -o installdbccdb.txt
isql -Usa -P -n -i /Sybase/scripts/instmsgs.ebf -o instmsgs.txt
通過select @@version 確定補丁安裝成功。

------------來自CU

5、AIX上簡單的備份腳本
bktime="`date +%y%m%d%H%M`" 備份數據庫的時間
bkdbname="master" 要備份的數據庫名字
bkuser="`whoami`" 執行備份的系統用戶
cd /data 存放備份的目錄
bkname="'""/data/${bkdbname}_20${bktime}.dat""'" 備份文件名字
echo "---------backup is beging at ${bktime} by ${bkuser}--------" >> dump.log
echo "--backup name:$bkname--"


您正在看的sybase教程是:CU和個人的一點Sybase資料整理。
echo "--backup time:$bktime--"
echo "--backup dbname:$bkdbname--"
su - sybase -c "isql -Usa -P -SSybase <dump database ${bkdbname} to "${bkname}"
go
DUMP"
echo "---------backup is completed----------" >>

dump.log

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved