一、备份和恢复数据库
1) 备份过程
a、备份前一般先清一下日志,可以使得备份出来的完整数据文件最小
dump tran databasename with truncate_only
b、备份
dump database databasename to "d:databakrr_bak.dat"
2) 恢复数据库备份
a) 用isql连接sql server,命令:isql -Usa -P -S Servername.
b) 恢复数据库使用load database命令。其语法为: load database 数据库名 from 转储设备名
比如: load database databasename from "d:databakrr_bak.dat"
c)、将恢复的数据库置成 online
在isql或者Sql advantage中执行:online database retailration。
也可以直接在Sybase Central Java Edition图形化客户端下面操作,完成这步工作。
二、bcp的用法
除了整库的备份/恢复,对于有大量的数据的物理表,可能经常需要使用bcp进行导入导出,sybase的bcp命令和SQL SEVER的类似,其语法大概是:
bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
{in | out | queryout | format} data_file
[-m max_errors] [-f format_file] [-e err_file]
[-F first_row] [-L last_row] [-b batch_size]
[-q] [-C code_page] [-t field_term] [-r row_term]
[-i input_file] [-o output_file] [-a packet_size]
[-S server_name[instance_name]] [-U login_id] [-P password]
[-T] [-v] [-R] [-k] [-E] [-h "hint [,...n]"]
常用的命令方式如下:
1、导出
bcp dbname..tablename out filename -Uusername -P password -Sservername -c -J utf8
2、导入
bcp dbname..tablename in filename -Uusername -P -Sservername -c -J utf8
三、修复identity跳跃的办法
在sybase中用自增加的数字做表的主键的时候,经常会遇到令人头痛的值跳跃问题,ID从几百跳到几百亿、几千亿。原因是Sybase的每次为 identity 种子预先分一个数字段,如果不进行设置的话这个预分的数字段会非常的大,如果运行中Sybase实例出现问题的话,整个预分的数字段都会弃用,从上个数字段最大值之后接着分。针对这个问题,网上有一些解决办法,最简单的就是在建表语句中加入 "with identity_gap=n",为每个表指定每次预分的数字段的长度:
create table TEST(
OID numeric(20) identity,
ITEMCODE numeric(20) not null,
MONTH nvarchar(6) not null,
constraint PK_EITEMFHIS primary key (OID)
) with identity_gap=10
四、清空数据库日志
dump tran databasename with truncate_only
五、identity列增加、修改
1、允许/不允许插入
set IDENTITY_INSERT tablename on
...
set IDENTITY_INSERT tablename off
2、允许/不允许更新
set IDENTITY_UPDATE tablename on
...
set IDENTITY_UPDATE tablename off
命令行登录
isql -Sservername -Usa -P
安装字符集
charset -Usa -Ppassword -Sservername binary.srt utf8
charset -Usa -Ppassword -Sservername nocase.srt utf8
设置字符集
sp_configure 'default charac',173
设置排序
sp_helpsort
sp_configure 'default sortorder_id',101
Sybase数据库数据和日志空间不能自动扩展,需要手工管理。
数据库备份恢复
dump database dbname to "c:\\xxx.dmp" --注意文件生成在数据库服务器端
load database dbname from "c:\\xxx.dmp"
online database dbname
表数据备份恢复
bcp dbname..tablename {out|in} c:\XXX -Usa -Ppassword –Sservername -Jutf8 –c -y
use dbname
go
select 'bcp dbname..' + name + ' out c:\' + name + ' -Usa -P -Ssname -c' from sysobjects where type = 'U'
go
在isql中执行脚本文件
isql -Usa -P -Sservername -Ddbname -iInputfile -oOutputfile
配置Adaptive Server核心参数
sp_configure "max online engines", 1 go
sp_configure "max memory", 393216 go
sp_configure "number of user connections", 300 go
sp_configure "number of open objects", 1500 go
sp_configure "number of open indexes", 1000 go
sp_configure "lock wait period", 300 go
sp_configure "number of devices", 20 go
sp_addserver 'SYB_BACKUP',NULL,'SYB_BACKUP' go
创建数据库
disk init name ="dbname", physname="d:/sybase/data/dbname.dat", size=262144 go
disk init name ="dbname_log", physname="d:/sybase/data/dbname_log.dat", size=524288 go
create database DBNAME on dbname = 512 log on dbname_log = 1024 go
sp_addlogin dbname, dbname,DBNAME,us_english use DBNAME go
sp_changedbowner dbname go