1) 关于定时备份
chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&;topic=1233&;show=390
crontab 中可以这样写:
00 23 * * * /sybase/ASE-12_0/bin/DUMPDB.sh >;>;/sybase/ASE-12_0/install/DUMPDB.out
放那里都无所谓,一个dumpdb.sh的例子:
#SUN Solaris 8
#!/bin/ksh
export SYBASE=/sybase
export SYBASE_FTS=FTS-12_0
export PATH=/sybase/ASE-12_0/bin:/sybase/OCS-12_0/binPATH:/sybase/ASE-12_0/install:/usr/sbin
export SYBASE_OCS=OCS-12_0
export SYBASE_ASE=ASE-12_0
export LM_LICENSE_FILE=/sybase/SYSAM-1_0/licenses/license.datLM_LICENSE_FILE
export LD_LIBRARY_PATH=/sybase/ASE-12_0/lib:/usr/local/openwin/lib:/sybase/FTS-12_0/lib:/sybase/OCS-12_0/lib:/usr/local/openwin/lib:/usr/lib:/sybase/SQLRemote/libLD_LIBRARY_PATH
export SYBASE_SYSAM=SYSAM-1_0
export HOME=$SYBASE
$SYBASE_OCS/bin/isql -Usa -SSYBASE -P < dump database YOURDBNAME to "/sybdump/dump.01"
stripe on "/sybdump/dump.02"
stripe on "/sybdump/dump.03"
stripe on "/sybdump/dump.04"
stripe on "/sybdump/dump.05"
go
!
这里是一个典型的脚本,用于实现full备份!
#!/usr/bin/sh
# *************************************************************************
#for full backup after excuted dbcc operation
# *************************************************************************
SHLIB_PATH=/opt/sybase/ASE-12_0/lib:/opt/sybase/FTS-12_0/lib:/opt/sybase/OCS-12_0/lib:/usr/lib:/lib:/usr/lib/Motif1.2:/opt/sybase/SQLRemote/
lib
export SHLIB_PATH
SYBASE_OCS=OCS-12_0
export SYBASE_OCS
SYBASE=/opt/sybase
export SYBASE
ISQL="/opt/sybase/OCS-12_0/bin"
ymd=`date +%y%m%d`
bk_user="unb"
bk_pwd="******"
bk_db="SYB_HP"
cd /sybase/backup
mkdir $ymd
LOG="/sybase/backup/$ymd"
echo $ymd >;$LOG/backup.log
echo "\n11*************************" >;>;$LOG/backup.log
echo "Check database $bk_db..." >;>;$LOG/backup.log
d1=`date`
su - sybase -c "i
sql -SSYB_HP -Usa -P****** <
;$LOG/dbcc-$ymd.log 2>;&;1
dbcc traceon(3604)
go
dbcc checkdb($bk_db)
go
dbcc traceoff(3604)
go
DBCC
echo $d1,`date` >;>;$LOG/backup.log
echo "\n22*************************" >;>;$LOG/backup.log
d1=`date`
dump_file="/sybase/backup/$dump-unb-full-$ymd.dat"
echo "Dump database $bk_db to " $dump_file >;>;$LOG/backup.log
su - sybase -c "isql -SSYB_HP -Usa -P****** <;$LOG/dump-$ymd.log 2>;&;1
dump database $bk_db to "$dump_file"
go
DUMP
echo $d1,`date` >;>;$LOG/backup.log
echo "\n33*************************" >;>;$LOG/backup.log
请根据自身系统,调试后再使用!
至于备份日志的脚本与此类似,自己根据sybase的相关语法,稍加变动即可!
2) 有个关于游标的问题,请教各位大虾
chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&;topic=429&;show=390
在sybase数据库中用游标操作完表a的记录后,关闭close游标,在free游标。但接着想drop此表a,结果失败,显示的错误信息是"游标在使用"
(记得不是很清楚了,大概是这个意思)。
请碰到过这类问题的大虾支持支持。在informix和oracle中释放游标是用free,在sybase也是用free吗?
sybase 中正确操作游标的顺序是:
1、DECLARE CUR_ACCTINFO CURSOR FOR SELECT ..... (定义)
2、OPEN CUR_ACCTINFO (打开)
3、WHILE @@SQLSTATUS = 0 (判断是否成功)
BEGIN
4、 FETCH CUR_ACCTINFO INTO ....... (取数据)
IF @@SQLSTATUS <>; 0
begin
......
end
...........
5、 CLOSE CUR_ACCTINFO (关闭)
6、 DEALLOCATE CURSOR C