WEB开发网
开发学院数据库Sybase CU和个人的一点SYBASE资料整理 阅读

CU和个人的一点SYBASE资料整理

 2006-02-23 21:42:52 来源:WEB开发网   
核心提示:1、timeslice -201,current process infected错误,几天出现一次,CU和个人的一点SYBASE资料整理,需要重 新启动服务,同时还报好多SQL错误 解决方法:打SYBASE补丁2、错误:Recovering database 'master' 00:00000:000

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> 
记下此处查询出的数据库选项 (例如: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--" 
echo "--backup time:$bktime--" 
echo "--backup dbname:$bkdbname--" 
su - sybase -c "isql -Usa -P -SSYBASE <<DUMP 
dump database ${bkdbname} to "${bkname}" 
go 
DUMP" 
echo "---------backup is completed----------" >> dump.log

Tags:CU 个人 一点

编辑录入:coldstar [复制链接] [打 印]
赞助商链接