Sybase使用经验小结--系统维护常用命令

 

一、备份和恢复数据库

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

你可能感兴趣的:(数据库)