ps -Al 查看sybase 服务
./isql -S[服务名] —U[用户名]
./isql -Sbcndb -Usa
/opt/sybase/bin
使用命令:
>dump database [数据库名] to "[文件路径+文件名.dat]"
>go
★☆注:多数数据库都会存在备份服务的错误提示,这时只需要重启备份服务就可以了
备份出来的文件使用zip压缩:
# zip [文件名.dat] [文件名.zip]
然后拷贝到想要存放的服务器上
在新的服务器上建设备,建库
load数据库:
>load database [数据库名] from "[文件路径+文件名.dat]"
>go
>online database [数据库名]
>go
看到Database 'kjdbs' is now online.则说明加载成功
可以测试一下连接数据库看是否正常
总结:dump备份只能整体备份一个数据库,且只能从低版本的数据库上向同等或者高版本的数据库上load,不能向下load;在向不同版本的数据库load数据的时候会出现数据转换的提示,没有关系,这是正常的。由于是整库备份,所以服务的server page大小将对load产生影响,不同的server page的服务的数据库将不能进行dump、load备份。
——————————————————————————————————————————
bcp用来备份数据库表
使用命令:
# ./bcp [数据库名]..[表名] out [路径+文件名.dat] -c -S[服务名] -Usa -P[密码]
★☆注:bcp为一个外部工具,所以在工具所在目录下执行,而不是在isql里
将所bcp下来的文件zip压缩
拷到新服务器上
在新服务器上建库,建表
修改库的bulkcopy属性:
>use master
>go
>sp_dboption [数据库名] , "select into/bulkcopy" , true
>go
Database option 'select into/bulkcopy/pllsort' turned ON for database [数据库名].
Running CHECKPOINT on database [数据库名] for option 'select into/bulkcopy/pllsort'
to take effect.
(return status = 0)
1> use [数据库名]
2> go
1> checkpoint
2> go
然后退出isql
执行bcp工具来导入表:
# bcp [数据库名]..[表名] in [路径+文件名.dat] -c -S[服务名] -Usa -P[密码]
常用数据备份格式为:
bcp
即可。
其中
如果为数据恢复只需要将out
可用如下方法生成一个可以一次导出一个数据库中所有表的数据的执行脚本。
编辑一个如下文本文件
use
go
select
go
用如下格式执行:
isql
i参数后为输入文件,o参数后文件为输入文件执行后得到的输出文件。
执行后可以得到一个后缀名为
备份得到的数据文件如果需要重新往数据库中恢复,只需要将上面操作步骤中BCP命令中的out
注意:在对正式数据做操作前最好先作一些测试。
总结:bcp是一个用来导出备份单个数据库表的外部工具,表结构和索引在不同版本的数据库不同,所以不同版本之间使用bcp备份表也会存在问题,同样是向下兼容,从sybase12.5上bcp下来的表在sybase11.9上不一定能够导入。由于bcp是将单个表备份,其不受服务的server page影响,但是必须要按照原表的字段,完全一样的建立新表。
===========删除数据库
当使用drop database无法删除数据库时,可以使用如下方法可以删除:
(以pubs2为例)
(1)使用isql以sa注册ASE
(2)设置允许修改系统表
1>;sp_configure "allow updates",1
2>;go
(3)把 要删除的用户数据库置为"suspect"状态
1>;use master
2>;go
1>;begin tran
2>;go
1>;update sysdatabases set status=256
2>;where name="pubs2"
3>;go
如果得到(1 row affected),则
1>;commit
2>;go
否则
1>;rollback
2>;go
(4)重启server,并用isql以sa注册。
(5)删除数据库
1>;dbcc dbrepair(pubs2,dropdb)
2>;go
(6)恢复允许修改系统表
1>;sp_configure "allow updates",0
2>;go
(7)结束