Sybase

Sybase常用命令:

  1. 启动数据库

    . /opt/sybase/SYBASE.sh
    $ isql -Usa -P111111 –SASE1 

    $ startserver -f $SYBASE/$SYBASE_ASE/install/RUN_ASE1

    $ startserver -f $SYBASE/$SYBASE_ASE/install/RUN_ASE1_BS

  2. 执行Sql脚本:isql 命令中有一个-i 的参数,可以输入脚本,批量的执行sql语句。

    isql -Usa -P password -S server_name -i scripts.sql -o err.out

    scripts.sql 就是你写的脚本,err.out可以察看执行情况。

    你也可以使用 sql advantage这样的图形工具进行。

  3. 创建数据设备

    1> disk init
    2> name=‘dbname_data1‘,
    3> physname= ‘/opt/sybase/data/dbname_data1.dat’,
    4> size=’300M’,
    5> dsync=true
    6> go
  4. 创建日志设备:

    1> disk init
    2> name=’dbname_log’,
    3> physname=’/opt/sybase/data/dbname_log.dat’,
    4> size=’300M’,
    5> dsync=true
    6> go

  5. 创建数据库:

    1> create database dbname on dbname_data1=’300M’ log on dbname_log=’300M’
    2> go

  6. 新增用户

    1> sp_addlogin ’shen’,’shen’,‘dbname’
    2> go

  7. 将用户添加到新建数据库

    1> use dbname
    2> go
    1> sp_adduser ’shenbao’
    2> go
    1> grant create table, create view, create procedure to shenbao
    2> go

  8. 增加临时数据库空间

    1> use master
    2> go
    1> disk init
    2> name=’tempdb1′,
    3> physname=’/opt/sybase/data/tempdb1.dat’,
    4> size=’300M’,
    5> dsync=true
    6> go
    1> alter database tempdb on tempdb1=’300M’
    2> go

  9. 设置数据库选项

    1> use master
    2> go
    1> sp_dboption dbname, ‘ddl in tran’,true
    2> go
    1> use dbname
    2> go
    1> checkpoint
    2> go

其它命令:

一、SQL Advantage使用

先点击server,里面点击connect连接到sybase服务端,开一个新窗口,写一些sql执行即可(ctrl+e)

二、启动和关闭数据库,查看表结构

1.看所有的库

sp_helpdb

go

2.使用一个库

use 库名(注意大小写)

go

select name from sysobjects where type = ‘U‘

go

3.查看用户下所有表名

select name from sysobjects where type=‘U‘

sp_tables

go

4.查看表结构

sp_help 表名(注意大小写)

go

5.显示结果只显示一行

set rowcount 1

go

输入你想查询的sql语句,记得最后要

set rowcount 0

go

6.启动数据库

$ startserver -f $SYBASE/$SYBASE_ASE/install/RUN_ASE1

$ startserver -f $SYBASE/$SYBASE_ASE/install/RUN_ASE1_BS

7.关闭数据库

先要看启动了什么服务

1> select srvname from sysservers

2> go

srvname                        
------------------------------ 
SYB_BACKUP                     
loopback                       
rosanljw_BS                    
rosantech                      
(4 rows affected)

关闭备份服务

1> shutdown SYB_BACKUP

2> go

关闭

1> shutdown 
2> go

如果关不上

1> sp_lock

2> go

The class column will display the cursor name for locks associated with a cursor

for the current user and the cursor id for other users.

fid    spid   loid        locktype                     table_id    page       
         row    dbname          class                         
         context                      
------ ------ ----------- ---------------------------- ----------- -----------

         ------ --------------- ------------------------------

         ---------------------------- 
      0     57         114 Sh_intent                       32000114           0

              0 master          Non Cursor Lock               
(1 row affected)

(return status = 0)

1> kill 57(spid只可以杀除自己会话以外的会话) 杀掉再shutdown就好了 
!!!如果关不动,可以用以下命令,慎用

shutdown with nowait

三、dml和ddl

1.建表

use test

go

create table table1

(test varchar(10))

go

--仿照table1建立table2

select * from table1 into table2

go

--------------------------------------------------------------------------------------

--如果不能仿照需要修改一些参数

sp_helpdb db_name    --查看SELECT into选项是否开启,没开需要手动开启

go

use master

go

sp_dboption test,‘select into‘,true        --(test为db_name)

go

checkpoint

go

use test

go

select * from table1 into table2

go

四、用户管理

1.创建登陆用户(login)

1> sp_addlogin loginname,password,defualt_database

2> go

Password correctly set.

Account unlocked.

New login created.

(return status = 0)

2.删除登陆用户(login)

1> sp_droplogin loginname

2> go

3.创建数据库用户(user)

1> sp_adduser username

2> go

New user added.

(return status = 0)

4.删除数据库用户(user)

1> sp_dropuser username

2> go

sybase数据库的用户,包含两个层面:一个是登陆号,另一个是具体DB的用户,我们登陆时,使用的是登录号,但是这个登录号可以操作哪些DB及操作权限则取决于数据库用户。一般情况下,我们可以采取相同的名字来表示登录号和数据库用户。

首先创建一个登陆号:

sp_addlogin loginame, passwd 
loginame 登录名

passwd 密码

全部语法(一般不用到)为:

sp_addlogin loginame, passwd [, defdb][, deflanguage ] [, fullname ] [, passwdexp ][, minpwdlen ] [, maxfailedlogins ]

然后创建用户:

sp_adduser loginame

这样创建当前数据库的用户,且用户名和登陆名是一样的。

全部语法为:

[dbname..]sp_adduser loginame [, username[, grpname]]

最后分配权限:

grant all | select,insert,delete,update on table_name | view_name | stored_procedure_name to username

grant all | create database,create default,create procedure,create rule,create table,create view,set proxy,set session authorizationto username

例,假如当前DB为:DB001:

sp_addlogin ‘test001‘,‘password001‘

go

sp_adduser ‘test001‘, ‘user001‘

go

grant create table to user001

go

创建了一个test001的登录名,之后为之创建一个当前数据库的用户,使这个登录名可以操作当前数据库。之后分配了创建表的权限给user001。

这个时候你就可以使用用户名‘test001‘和密码‘password001‘登陆了,并且可以在DB001中创建表了。同时由于sp_adduser 的时候没有指定grpname参数,那么默认是public用户组,这个组里的用户默认即开通了select/delete/update/insert的权限。

如果你希望去掉一些权限,请使用revoke命令,其语法了grant完全相同,你只需要将grant换成revoke即可,例:

revoke select on address to user001

禁止user001查看address表。

五、sybase ASE参数配置

(1)服务器级配置

使用存储过程sp_configure配置ASE (和oracle的show parameter很像)

1. 语法

sp_configure [configname[, configvalue] | group_name | non_unique_parameter_fragment]

2. 作用

查询服务器运行的当前值

设置服务器运行参数

用 "sp_configure mem" 可以查看带有mem关键字的参数的具体配置,然后用 "sp_configure 参数, 值" 来配置新

例1. 配置内存

1)数据库使用内存

指定ASE拥有的总的共享内存大小

sp_configure“max memory”,nnn(单位为2K)( HP平台推荐物理内存的75%,其他平台80%)

sp_configure‘allocate max shared mem’,1(数据库服务启动时就分配内存)(推荐为1)

2)配置缺省数据缓存的大小和分区

sp_cacheconfig‘default data cache’,’xxxM’

sp_cacheconfig‘default data cache’,’cache_partition=n’

(根据CPU个数以及内存大小确定,需为2的N次方)

3)配置存储过程的缓存大小

sp_configure“procedure cache size”,nnn(单位为2K)

例2. 配置CPU

sp_configure‘max online engines’,n(cpu个数> 2时推荐CPU数目减1)

sp_configure‘number of engines at startup’,n

3. 其他

1). number of devices (用户自己确定)

指定ASE的可创建和打开的数据库设备的最大号数

2). number of locks (用户自己确定)

指定ASE可同时打开的锁的最大数目

3). number of open objects (推荐8000-20000)

ASE的对象描述的缓存数

4)number of open indexes (推荐2000-5000)

ASE的索引描述的缓存数

5) stack size (如果有超长SQL和多层嵌套,推荐*2)

数据库堆栈的大小

6). default character set id(推荐使用cp936 –id 171)

数据库服务器使用的字符集

7). allow updates to system tables

指定系统管理员是否可以更改系统表中的数据

8)row lock promotion HWM,row lock promotion LWM

行锁升级为表锁的阀值

9)page lock promotion HWM,page lock promotion LWM

页锁升级为表锁的阀值

10) lock scheme

缺省的对表加的锁类型(缺省为页锁)

(2)数据库级配置

使用存储过程sp_dboption更改数据库的数据库选项

1. 语法sp_dboption[dbname, optname, {true | false}]

2. 作用

罗列出所有的数据库选项

更改某个数据库的数据库选项

3. 常见的数据库选项

trunclog on chkpt自动清日志(不能再做增量备份)

select into/bulkcopy允许快速BCP,selectinto

ddlin tran允许事务中创建对象

修改完成以后可以通过sp_helpdb查看到

例子:

1> use master

2> go

1> sp_dboptionuserdb, "trunclog on chkpt", true

2> go

数据库‘userdb‘的数据库选项‘trunclog on chkpt‘被打开。

在被改变数据库中运行CHECKPOINT命令。

(return status = 0)

1> use userdb

2> go

1> checkpoint

2> go

六、修改字符集为中文

1.先进入到中文字符集的目录,把中文加载一下

[[email protected] cp936]$ pwd

/opt/sybase/charsets/cp936

[[email protected] cp936]$ charset -Usa binary.srt cp936

Please enter sa‘s Password: 
Loading file ‘binary.srt‘.

Found a [sortorder] section.

This is Class-1 sort order.

Finished loading the Character Set Definition.

Finished loading file ‘binary.srt‘.

1 sort order loaded successfully

2. 修改默认字符集为中文

首先查一下默认的中文字符集的id

1> select name ,id from syscharsets where name=‘cp936‘

2> go

name                           id

------------------------------ ---

cp936                          171

查出id为171,最后修改字符集

1> sp_configure "default character set id",171

2> go

In changing the default sort order, you have also reconfigured SQL Server‘s

default character set.

Parameter Name                 Default     Memory Used Config Value

         Run Value   Unit                 Type

------------------------------ ----------- ----------- ------------

         ----------- -------------------- ----------

default character set id                 1           0         171

                   1 id                   static

(1 row affected)

Configuration option changed. Since the option is static, Adaptive Server must

be rebooted in order for the change to take effect.

Changing the value of ‘default character set id‘ to ‘171‘ increases the amount

of memory ASE uses by 4 K.

(return status = 0)

最后重启数据库使参数生效

七、查看数据库信息

sp_helpdb        --(查看所有数据库信息)

go

use test

go

sp_helpdbtest         --(查看test数据库详细信息)

go

八、查看ASE的远程服务器

sp_helpserver

go

九、查看数据库对象的信息

sp_help            --数据库对象名字

sp_helpdevice        --设备名字

sp_helpdb

sp_helptext        --存储过程名字

sp_spaceused         --查看一个当前库(需要use 数据库)或表占所占用的空间

sp_recompile (+usertable)    --重新编译存储过程和触发器。与该表相关联的存储过程和触发器在第一次运行时,自动重新编译

十、常用dbcc命令

dbcctraceon(3604)                     --(随后的dbcc命令结果输出到屏幕)

dbcctraceon(3605)                     --(随后的dbcc命令结果输出到错误日志文件)

dbcccheckalloc[ (database_name[, fix | nofix] ) ]     --(检查分配页)

dbcccheckcatalog[ (database_name) ]             --(检查系统表)

dbcccheckdb[ (database_name[, skip_ncindex] ) ]     --(检查数据库)

dbccchecktable( { table_name| table_id}         --(检查表)

[, skip_ncindex] )

dbcctablealloc( { table_name| table_id}         --(检查表分配页)

[, { full | optimized | fast | null }

[, fix | nofix] ] ) |

十一、常用系统表

sysdatabases        --记录所有数据库基本信息

sysusages        --数据库空间分配情况

sysdevices        --数据库设备信息

syslogins        --数据库服务器登录信息

sysusers        --数据库用户信息

sysobjects        --数据库对象表(U 用户表,P 存储过程)

sysprocesses        --进程表

十二、日常常规维护(性能优化)

1.更新统计信息

update statistics (+usertable)    --不会对表上锁,不影响业务,但比较耗资源 (optdiag)

2.整理数据库垃圾空间

重建表的聚簇索引

对行锁表执行reorg

如何加快上述操作 (配置I/O,并行)

注意:以上操作对表上锁,另外,必须有足够的空间来执行(剩余空间必须为最大表的1.2倍左右) (sp_spaceusedusertable)

3.重新编译存储过程和触发器

sp_recompile (+usertable)    --与该表相关联的存储过程和触发器在第一次运行时,自动重新编译

十三、备份和恢复

系统管理员每天必须作数据库的备份

备份的命令

1.全库备份

dump database userdb to stripe_device1 
stripe on stripe_device2

2.增量备份并删除日志

dump transaction userdb to stripe_device

3.仅删除日志(没有备份)

dump transaction userdb with truncate_only

4、日志满且truncate_only无法删除日志时

dump transaction userdb with no_log(慎用)

恢复的命令

1. load database database_name from stripe_device

恢复整个数据库

2. load transaction database_name from stripe_device

恢复日志

十四、几个常用的存储过程和命令

sp_who            (查看用户进程)

sp_lock            (查看数据库锁状况)

sp_help            (查看对象信息)

sp_helpdb        (查看数据库信息)

sp_helpdevice        (查看设备信息)

sp_spaceused        (查看表占用的空间大小)

select @@version    (查看版本号)

dbcc sqltext(@spid)    (查看@spid执行的sql语句)

sp_showplan @spid,null,null,null        (查看@spid的执行计划)

================================================================================================

************************************************************************************************

================================================================================================

修改server启动地址及端口:dscp

$dscp

>> open

ok

Session 1 InterfacesDriver>> add test

Service: [ASE]

Transport Type: [tcp]

Transport Address: 158.77.123.200 5000   --注意端口号和ip地址之间用空格分开

Transport Type: [tcp]

Transport Address:

Security Mechanism [] :

HA Failoverserver:

Retry Count:

Retry Delay:

Added test

>> exit

退出后查看 $SYBASE/interfaces 能看到添加到信息

dscp一些基本操作命令

help    查看帮助

list    显示所有的服务名

read    看具体配置

add    加一个新的

del    删除已有的

mod    修改已有的

时间: 2024-08-03 21:47:57

Sybase的相关文章

Sybase ASA 12中使用SQL查询表信息

在Sybase central工具中,我们经常能看到如下页面: 昨天正巧有个客户需要导出这么一份table的数据,于是我写了如下SQL语句来查询table信息: SELECT      tbl.table_name AS "Name",      usr.user_name AS "Owner",      'Table' AS Type, --因为查询的是Table的信息,而非View的,所以Type列中的数据一直都是'Table',这里就hard code了  

sybase表结构导出方法

sybase ASE自带了一个导出对象结构的命令行工具:ddlgen 比较详细的用法,请参照:用DDLGEN从ASE数据库中提取对象的定义语法 如果对象结构中包含中文,使用参数: -Jcp936 比较实用的用法如下: 1.导出数据库tpchdb内所有表的表结构(包括索引): ddlgen -Usa -Psybase123456 -STEST -Dtpchdb -TU -N%.% -Jcp936 -O./tables.sql 2.导出数据库tpchdb内所有视图的创建语法: ddlgen -Usa

jdbc查询sybase参数过多问题

公司的数据库一直是sybase,用起来也挺好的,最新客户现场出现一个问题,数据无法传输了,看日志非常简单,一下就定位到了原因. 很简单,参数超过了2000个,因为这个功能是根据主表的主键查询子表,方法用的是where 主表id in (?,?,?,?--)方式,参数问号最多是是2000个,不过这就奇怪了,直接使用sql查询sybase,5000个参数也没问题,看来是jdbc驱动的问题了. 我们公司用sybase也有十多年了,这方面还是很有研究的,请教了几个人,jdbc连接sybase的驱动之前用

sybase部署

部署环境: 32位SUSE10.2 linuex(IP地址192.168.117.120),ASE12.5.3 步骤 1.创建服务账户 groupadd sybase useradd -g sybase sybase 2.创建安装目录 mkdir /opt/sybase chown sybase.sybase /opt/sybase 接下来所有的操作都是在sybase用户下进行 这里我们用图形化方式做配置,所有设置下环境变量DISPLAY export DISPLAY=192.168.117.1

性能问题案例02——sybase连接堵塞问题

现象:近期现场反馈一个问题,系统在审批的时候,常常卡死,整个系统全然用不了,浏览器訪问处于loading的状态. 排查: 1.一般系统挂了首先想到内存问题,可是现象是loading,也就是说没有挂,线程正在运行,怀疑是线程被堵塞了.配置上jvisualvm监控了一下,出问题后内存没满确定不是内存问题,查看线程dump发现大部分都在运行sql查询, 初步发现是运行sql慢导致的. 2.我们用的是sybase数据库,运行了几个简单sql发现几分钟都没运行完,使用sp_sysmon "00:00:30

linux下如何启动sybase

isql -Dxxx -Uxxx -P111111 用isql连接数据库发现数据库没有启动. 如何启动sybase数据库? [TA_SYBASE][/home/bta]su - sybase  //切换到sybase用户.Password: handsome [[email protected] ~]$ pwd/sdb1/sybase//说明:sdb1为挂载虚拟机磁盘./////sdb1/sybase/ASE-12_5/install在这个路径下启动sybase.[[email protecte

Sybase查询表结构的方法(类似于Oracle的Desc)

经过我多次验证,终于找到了Sybase中查询数据库结构的方法了. 在此之前,我就很不解这Sybase数据库怎么就没有和Oracle.MySql一样简便的方法呢 desc 表名; 在网上查询之后,得到一个结果. sp_help 表名; 但是这样查出了多个结果.虽然里面有我们想要的结果,但我们只取一个,而且还在中间. 怎么办呢?看存储过程源码,把我们想要的结果截取出来吧. sp_help存储过程在sybsystemprocs库中, 源码: /* Sccsid = "%Z% generic/sproc

Sybase脚本移植到DB2中

? DB2 目前碰到一个任务,需要将原本基于Sybase的系统移植到DB2.前期工作中主要都是对SQL脚本的改写.鉴于目前对Sybase和DB2都不是很熟,所以开此记录日志.记录在过程中所遇到的各种问题. db2中的系统表介绍 DB2 Command Line Processor(DB2 CLP)是所有 DB2 产品中都有的,可以使用这个应用程序运行 DB2 命令.操作系统命令或 SQL 语句. 在 DB2 数据库被创建的时候,DB2 会创建一些系统表.这些系统表中记录了所有数据库对象的信息,表

Sybase 表分区

------------不能分区的表:系统表.正在使用的表.临时表.和有聚簇索引的表----检查sybase版本select @@version --查看分区情况(sp_helpartition 默认default,system,logsegment) ---可以查看 分区类型(partition_type),分区个数(partitions),分区的字段(partition_keys), 每个分区有多少数据(row_count), ---创建时间(create_date),所在段(segment

suse系统 sybase 12.5建库

在linux系统已经安装sybase 12.5之后,可以在命令行 执行 isql -Usa -P密码 -i  脚本文件(如下) 以下是脚本内容:(创建为yxmdb的库和user001,密码是123456的数据库用户) declare @vdevno int select @vdevno=1+max(low/power(2,24)) from master..sysdevices disk init name= "YXMDevice",physname="/home/sybas