• (转)sybase教程


    (转)sybase教程
     作者: jack  来源: armsun.net

     概述
    70年代,随着大型共享数据库应用的普及,美国SYBASE公司基于当时的关系代数理论所提出的数据库关系模型,开发了Sybase数据库系统;
    Sybase是基于SQL(Structured Query Language)的著名关系模型数据库系统,是世界上最流行的DBMS软件之一;它能在多种计算机硬件平台上运行,并能通过连网形成分布式数据库环境;
    SQL Server是指运行在主机上,能提供SQL语言查询、修改或控制数据库中内容等操作的一个服务进程,形象地把它理解为一个数据库服务器;一般地数据库服务器有Data Server 和 Backup Server两个服务进程组成。数据库就是一系列表格(关系)所描述的客观世界中事实的集合;Sybase中的系统数据库基本包括有:master、model、sysprocs、tempdb,其它为用户库。
    Sybase Adaptive Server Enterprise 12.5是Sybase公司开发的智能型数据库。

    现场Sybase数据库系统结构

    1.1 参考资料
    《SYBASE 数据库维护 快速参考手册 Version 1.1》,SYBASE公司出版

    2 基础操作、配置和维护
    2.1 安装Sybase 12.5
    包括安装前环境配置、安装过程说明、安装成功测试、卸载等。
    (详细请参考V1.00》)

    2.2 访问SQL Server
    在安装配置好的Sybase服务器,可以通过以下操作开始访问SQL Server进行数据的查询和控制等操作:
    ? % isql –U用户名 –S服务名
    password: //该处输入该明户的密码

    2.3 Sybase的启动和关闭
    2.3.1 启动Sybase数据库
    在$SYBASE/ASE-12_5/install目录下执行startserver命令启动Sybase数据库,如:
    %$SYBASE/ASE-12_5/install/startserver -f RUN_服务名
    %$SYBASE/ASE-12_5/install/Startserver –f RUN_服务名_BAKUP

    2.3.2 关闭Sybase数据库
    使用isql命令登录Sybase数据库系统,在查询sysservers表查看可关闭的服务,如
    isql –Usa -Sjoli
    Password:
    1> select * from sysservers
    2> go
    一般需要关闭的服务有:系统备份服务、系统主服务
    在isql提示里先关闭系统备份服务(默认为SYB_BACKUP),再关闭主服务(默认可以不输入主服务名),如:
    1>shutdown SYB_BACKUP
    2>go
    1>shutdown
    2>go

    2.4 Sybase用户管理
    2.4.1 创建登录用户(login)
    sp_addlogin login_name,passwd[,defaultdb[,deflanguage[,fullname]]]
    例子:
    1> sp_addlogin joli,joli,joli_db
    2> go


    2.4.2 删除登录用户(login)
    例子:
    1> sp_droplogin test
    2> go
    2.4.3 创建数据库用户(user)
    sp_adduser login_name[,name_in_db[,grpname]]
    例子:
    1> sp_adduser joli,joli
    2> go
    2.4.4 删除数据库用户(user)
    例子:
    1> sp_dropuser test
    2> go
    2.4.5 修改该用户为该数据库dbo
    例子:
    1>use joli_db
    3> sp_changedbowner joli

    2.4.6 查看数据库用户信息
    sp_displaylogin [login_name]
    sp_helpuser
    例子:
    1> sp_helpuser
    2> go
    1> sp_displaylog joli
    2> go
    1> sp_who
    2> go

    2.4.7 修改用户口令
    如果是修改sa口令,可用sa用户登录,然后执行以下命令修改
    1>sp_password “旧命令 | null”,”new_password”
    2>go
    如果不是sa用户,则使用希望修改口令的user登录数据库,然后执行
    1> sp_password 旧命令,新命令
    2> go

    2.4.8 修改系统缺省设备
    ? 关闭创建数据库master缺省设备:
    ? 1>exec sp_diskdefault "master","defaultoff"
    ? 指定user_db_dev为缺省设备:
    ? 1>exec sp_diskdefault "user_db_dev","defaulton"


    2.5 创建、删除、修改Sybase设备、数据库
    2.5.1 创建设备
    例子:
    1> disk init
    2> name="lwz_dev",
    3> physname="/opt/sybase-12.5/data/lwz.dat",
    4> vdevno=2,
    5> size=512000
    6> go

    说明:
    物理设备名称为:joli_dev
    物理设备文件路径为:/opt/Sybase/joli/joli_dev.dat
    设备编号(该号不能重复)为:9
    大小(单位为2K)为:1000M
    (一般为用户数据库创建一个数字设备后,再单独为用户数据库创建一个日志设备)

    2.5.2 镜像设备
    例子:
    1> disk mirror
    2> name="joli_dev",
    3> mirror="/opt/sybase/joli/joli_dev_mirror.dat"
    4> go

    说明:
    创建设备joli_dev的镜像,镜像后的镜像设备为/opt/sybase/joli/joli_dev_mirror.dat。
    检查某设备是否被镜像,可使用“sp_helpdevice 设备名”查看。

    2.5.3 终止设备镜像
    终止设备可分为:终止主设备和终止次设备两类,同时还可选择是临时性终止还是永久性终止。(如果是永久终止,还需要在操作系统上删除物理设备文件)
    disk unmirror
    name="设备名"
    [,side=”{primary|secondary}]”
    [,mode={retain|remove}]
    //终止主/次设备:primary/secondary (缺省次)
    //临时/永久终止:retain/remove (缺省临时)

    例子:
    1)临时终止主设备
    1> disk unmirror
    2> name="joli_dev",
    3> side="primary",
    4> mode=retain
    5> go
    2)永久终次主设备
    1> disk unmirror
    2> name="joli_log_dev",
    3> side="primary",
    4> mode=remove
    5> go

    ? 恢复临时终止的镜像:
    例子:
    1> disk remirror
    2> name="joli_dev"
    3> go

    2.5.4 删除设备
    需要确定该设备上没有数据库。
    例子:
    1> sp_dropdevice test_dev
    2> go
    再删除操作系统设备文件。

    2.5.5 查看设备状态
    例子:
    1> sp_helpdevice [设备名]
    2> go
    说明:
    可查看设备是否镜像(相关镜像类型、是否有临时取消镜像等)等配置。

    2.5.6 创建数据库
    例子:
    1> create database lwz on lwz_dev=1024 log on lwzdev_log_dev=200
    2> go

    说明:
    创建用户数据库joli_db,该数据库数据存储在设备joli_dev设备上,可使用大小为50M;日志存储在joli_log_dev设备上,可使用大小为20M。

    2.5.7 扩展数据库:
    alter database db_name on device_name=size,device_name=size log on device_name=size,device_name=size
    例子:
    1> alter database joli_db on joli_dev=10 log on joli_log_dev=5
    2> go
    说明:
    数据库joli_db在设备数字joli_dev上扩展10M,在日志设备joli_log_dev上扩展5M。

    2.5.8 删除数据库:
    例子:
    3> drop
    database joli_db
    4> go

    2.5.9 上线数据库
    例子:
    1> online database db_name
    2> go

    2.5.10 检查数据库状态
    ? 一般性检查
    1>sp_helpdb
    2>go
    ? 系统性检查
    所有库检查:
    1> dbcc checkdb
    2> go
    指定用户数据库检查:
    1> dbcc checkalloc(db_name )
    2> go

    2.6 Sybase日志管理
    在创建用户数据库的时候,应尽量为事务日志创建独立的日志设备(一般创建为数据库大小的20%),这样可以单独备份事务日志、防止数据库溢满、可以看到事务日志的占用情况及可以镜像等。
    dump transaction db_name with truncate_only //不备份事务日志,直接清除。
    dump transaction db_name with no log
    dump transaction db_name to “路径/名字” //备份事务日志
    ? 检查log大小
    1> dbcc checktable(syslogs)
    2> go
    快速查看log大小
    1> select data_pgs(8,doa mpg)  from sysindexes where id=8
    3> go

    2.7 修改Sybase系统缺省参数
    可修改$SYBASE/ASE-12_5目录 “服务名.cfg”文件,重新启动Sybase服务来修改Sybase系统参数。
    也可使用Sp_configure来修改部分动态参数。
    ? 查询当前所有的参数配置
    1>sp_configure
    2>go
    ? 查询可动态修改的参数
    1>sp_configure “abcdef”
    2>go
    ? 查询特定参数的配置情况
    1>sp_configure “参数名
    2>go”
    ? 修改可动态配置的参数
    1> sp_configure “参数名”,值
    2> go

    一般可视情况酌情修改以下参数:
    cache size、number of open databases、number of open objects、number of open indexes、partition groups、number of large i/o buffers、number of devices、default network packet size、max network packet size、number of remote connections、number of remote logins、number of worker processes。

    2.8 修改数据库个例配置
    每个在设备上创建的数据库,都可设置如下参数:
    abort tran on log full、 allow nulls by default、 auto identity、 dbo use only、 ddl in tran、 disable alias access、 identity in nonunique index、 no chkpt on recovery、 no free space acctg、 read only、 select into/bulkcopy/pllsort、 single user、 trunc log on chkpt、 trunc. log on chkpt.、 unique auto_identity index
    可通过sp_dboption [db_name,"option_name",{true|false}]命令来修改这些参数的配置。
    例子:
    1> use master
    2> go
    1> sp_dboption joli_db,"trunc log on chkpt",true
    2> go
    说明:
    检查点时,清除以前的日志。如果设置为off,则一直保留日志,继续增长,直到使用dump transaction命令。

    2.9 网络服务配置
    ? UNIX
    在$SYBASE目录下,interfaces文件提供用户服务名的配置。一般通过执行命令dsedit来做修改。
    执行dsedit后,根据提示,一步一步的添加、修改即可完成配置。
    ? Windows
    启动dsedit,选择server object->add,向server中新添一个数据源,在其属性“server address”中输入IP,Port(注意,IP地址和端口号间用“,”分隔,比如192.168.2.98,4100)。

    2.10 检查数据库的版本
    1> Select @@version
    2> go

    2.11 数据库坏页最小影响维护
    在数据库发生可疑坏时,会脱机整个数据库(缺省),可以设置只脱机该可疑页(系统数据库不能改变)。
    sp_setsuspect_granularity [dbname [,{"database"|"page"}[,"read_only"]]]
    sp_setsuspect_threshold [dbname [,threshold]]
    (必须具有sa_role且在master数据库中使用)
    ? 查看、修改数据库当前脱机设置
    1) 查看设置为数据库脱机还是页脱机
    1> sp_setsuspect_granularity joli_db
    2> go
    2) 设置数据库为页脱机
    1>p_setsuspect_granularity joli_db,”page”
    3) 查看设置的最大脱机页(缺省最大可可疑20页,超出该20页,一样会脱机数据库)
    1> sp_setsuspect_threshold joli_db
    2>go
    4) 修改数据库最大可脱机页为300
    1> sp_setsuspect_threshold joli_db,300
    2>go
    ? 显示可疑页:sp_listsuspect_db
    ? 详细显示数据库可疑页信息:sp_listsuspect_page [dbname]
    ? 使数据库所有页联机联机:sp_forceonline_db dbname,{"sa_on"|"sa_off"|"all_users"}
    ? 使指定页联:sp_forceonline_page dbname,pgid {"sa_on"|"sa_off"|"all_users"} (//必须sa_sole在master中执行。)
    2.12 其他常用维护
    1) 可以执行命令$SYBASE/sybcent32/scjview使用图形界面进行维护。
    2) 查看$SYBASE/ASE-12_5/install目录下的日志文件(*.log)。
    3) 使用一些过程:sp_reportstats、sp_helpdb、sp_helpsegment segment_name(system,log,default)(sp_helpsegment logsegment检查可用于日志增长的空间)、sp_spaceused(sp_spaceused syslogs检查日志大小)、dbcc checkdb & dbcc checkcatalog & dbcc checkalloc、sp_lock等;也可以查询一些系统表:syslogs、master .. sysdevices、master .. sysusages、syssegments、sysindexes、sysdatabases等。
    4) 查看当前启动的服务:showserver。
    5) >dbcc traceon (3604) 将信息显示在控制台和写入errorlog文件。;>go;>dbcc memusage;>go;>dbcc traceoff (3604);>go
    use xxdb
    checkpoint
    sp_dboption mydb,"single user","true"
    设置单用户模式
    sp_logiosize "8k"
    设置I/O为8K缓冲池

    3 备份设置
    3.1 备份到磁盘
    ? 本地磁盘备份
    例子:
    1> dump database joli_db to “备份目标绝对路径/备份文件名”
    2> go

    还可使用如下命令进行远程备份
    dump database_name to “/u01/data/0102.dmp” at remote_server
    dump transaction database_name to “/u01/log/0102.dmp” at remote_server

    3.2 备份到磁带
    dump database database_name to “/dev/nrmt4” with init //初始化(设备被覆盖)
    dump database database_name to “/dev/nrmt4” //默认 noinit nounload
    dump database datbase_name to “/dev/nrmt4” with unload //磁带回卷并卸下
    dump database 数据库名 to “/dev/rmt/0”
    dump transaction 数据库名 to “dev/rmt/0” with no_truncate

    3.3 恢复数据库
    ? load database 数据库名 from “dev/rmt/0”

    3.4 建立自动备份
    可先把Sybase数据库备份到本地磁盘,压缩后再备份到磁带上。
    1) 创建一个本地目录或者远程目录的备份设备。
    2) 创建一备份用户。
    3) 编写备份脚本,并指定自动备份定时crontab任务。

    无法备份解决
    sp_dropserver SYB_BACKUP
    go
    sp_addserver SYB_BACKUP,null,jack_BACKUP #jack_BACKUP改成你的备份数据库名
    go


    作者:海阔天

    欢迎转载!转载请注明出处:

    www.cnblogs.com/yxsylyh

  • 相关阅读:
    UVA 1515 Pool construction 最大流跑最小割
    BZOJ 1060: [ZJOI2007]时态同步 树形DP
    Codeforces Round #282 (Div. 1)B. Obsessive String KMP+DP
    BZOJ 4027: [HEOI2015]兔子与樱花 贪心
    BZOJ 2435: [Noi2011]道路修建 dfs搜图
    HDU 5297 Y sequence 容斥/迭代
    HDU 5296 Annoying problem dfs序 lca set
    HDU 5289 Assignment RMQ
    343D/Codeforces Round #200 (Div. 1) D. Water Tree dfs序+数据结构
    php mysqli扩展库之预处理操作
  • 原文地址:https://www.cnblogs.com/yxsylyh/p/sybase.html
Copyright © 2020-2023  润新知