SYBASE 管理

安装好sybase数据库服务器以后,没有什么比使用这个数据库最重要的事情了。

 

一、创建数据库

但是在开始之前,很有必要定义用户数据库所需要的存储区域,而不要在服务器默认的主设备(master)上创建用户数据库.

 

创建数据库设备:通过sybase安装过程创建了mastersybsystemprocs,所有其他的数据库设备则是通过 disk init 命令来创建。我们必须保证sybase的用户对欲创建的设备的目录具有读写权限,否则就无法创建成功。先以sybase用户登陆linux系统(数据库是以sybase用户安装的,关于安装和初试配置,请参照“Redflag Server 4搭建sybase”一文),进入sybase用户的主目录 /opt/sybase,创建目录userdata;启动数据库服务,用sybaseisql连接数据库,然后执行disk init 来完成此项操作。

[sybase@sybase sybase]$ cd ASE-12_5/install

[sybase@sybase install]$ ./startserver      //启动sybase服务器

[sybase@sybase sybase]$ cd

[sybase@sybase sybase]$ mkdir userdata    //创建目录用于存放用户数据库

[sybase@sybase sybase]$ cd /OCS-12_5/bin

[sybase@sybase bin]$ ./isql –U sa –S SYBASE //连接数据库服务器,我的数据//库服务器名称为SYBASE,sa

//密码为空

[sybase@sybase bin]$ ./isql -U sa -S SYBASE   //下面是回显

保密字:

Msg 2401, Level 11, State 2:

Server 'SYBASE':

Character set conversion is not available between client character set 'gb18030'

and server character set 'iso_1'.

No conversions will be done.

Msg 4017, Level 16, State 1:

Server 'SYBASE':

Neither language name in login record 'chinese' nor language name in syslogins

'<NULL>' is an official language name on this SQL Server.  Using server-wide

default 'us_english' instead.                //回显到此,进入客户操作模式

1>     disk init                   //如果输错了,按“Ctrl+”back space”删除

2>     name=userdev,             //命名最好便于识别为佳

3>     physname=”/opt/sybase/userdata/userdev.dat”,     //要用绝对路径

4>     size=”500M”

5>     go

 

1>     disk init                    //给日志文件分配设备

2>     name=logdev,

3>     physname=”/opt/sybase/userdata/logdev.dat”,

4>     size=”50M”

5>     go

 

 

更改默认设备:如本文开头部分所言,为了防止用户数据库被分配到数据库系统主设备master上,应该在安装完数据库后修改默认设备安装完sybase ASE后,master是唯一的默认设备。Sybase建议,master设备只应该提供给系统数据库而不是用户数据库。因此,对于用户数据库,我们应当单独创建设备,并且把用户设备设置成默认状态。上一步我们已经创建了用户设备“userdev”和“logdev.其过程如下:

1>       sp_diskdefault  ‘master’, ‘defaultoff’  //取消master的默认设备资格

2>       go                            

1>       sp_diskdefault  ‘userdev’, ‘defaulton’  //设定uerdev为默认设备

2>       go

1>  sp_diskdefault  ‘logdev’, ‘defaulton’   //设定logdev为默认设备

2>  go

  在后面创建用户数据库的过程中,如果不指定数据库设备,则该用户数据库理所当然地创建在默认设备。

 

创建数据库:本数据库创建在设备 userdev上,而在分开的设备(logdev)上创建数据库日志。

1>     create database mydatabase   //创建一个名为mydatabase的数据库

2>     on userdev = “50M”          //数据库的存储空间为50M,数据库设备      

                          //userdev,而不是master

3>     log on logdev=”10M”             //日志文件的存储空间为10M

4>     go

  也可以用命令 create database mydatabase 来创建用户数据库mydatabase,这个数据库也会默认的创建在设备userdev上,日志文件也创建在userdev,但不幸的的是,用户创建的这个数据库将只有2M的容量,恐怕这不是创建者所期望的。因此,不管是Sybase还是我本人,都强烈建议使用上表的过程创建用户数据库,以便于这个数据库可以满足真实的应用场景。创建完数据库后,我们很想知道创建的这个数据库到底是怎么一个状况?通过系统存储过程-sp_helpdb来获得数据库的各种信息。下面是我的某个sybase服务器的范例:

1> sp_helpdb

2> go

 name                     db_size       owner                    dbid 

         created          

         status                                                                                                

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

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

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

 master                         12.0 MB sa                            1

         Jun 28, 2005     

         mixed log and data                                                                                    

 model                           4.0 MB sa                            3

         Jun 28, 2005     

         mixed log and data                                                                                    

 myfirstdatabase               110.0 MB sa                            4

         Jul 08, 2005     

         no options set                                                                                         

 secdatadb                      98.0 MB sa                            5

         Jul 08, 2005     

         no options set                                                                                         

 sybsystemdb                     4.0 MB sa                        31513

         Jun 28, 2005     

         mixed log and data                                                                                    

 sybsystemprocs                120.0 MB sa                        31514

         Jun 28, 2005     

         trunc log on chkpt, mixed log and data                                                                

 tempdb                          4.0 MB sa                            2

         Aug 13, 2005     

         select into/bulkcopy/pllsort, trunc log on chkpt, mixed log and data                                    

(1 row affected)

(return status = 0)

1>

  在创建用户数据库时,应该预留足够大的空间,以便能够保留将来输入的所有数据。但是也不要把数据库定义得太大,以免在将来恢复数据时产生麻烦。究竟需要定义多大的空间才算合适,这需要数据库管理员多次试验才可以决定的。一个经验是-低估一个数据库的大小比高估要好,如果数据库空间太小了,可以很容易的扩充数据库的空间,如果空间过大,则非常麻烦。这里,我们来修改一下前面创建的数据库的空间大小,过程如下:

1>     alter database mydatabase

2>     on userdev=”1024M”               //50M变成1G

3>     log on logdev=”50M”               //10M变成50M

4>     go

二、数据库的管理

设置数据库管理员密码:在安装完sybase ASE数据库后,数据库管理员的默认管理员密码为空,基于安全考虑,必须为数据库管理员账号设置密码。先以账号sybase登录系统,然后启动Sybase数据库,isql连接数据库服务器(操作过程如前面“创建数据库设备”一节),接着执行下面的操作:

1>     sp_password null , "dr5623H"    //设置新密码为“dr5623H

2>     go

  在退出数据库,下一次客户端连接数据库时,提示用户输入密码。

 

  用户和授权sybase ASE服务器提供一种严密的体系来保障数据的安全,并且使数据的保护级别达到非常精细的程度。在通常情况下,数据库服务器不是只给一个用户sa来使用,为了让数据库满足实际需求,需要在 sybase 数据库里添加账号/用户,为添加的用户分配适合的权限。这个操作分以下几步进行:

1、  添加数据库系统的注册账号。执行存储过程sp_addlogin来完成数据库注册账号的添加,如 exec sp_addlogin sery , d7#W6g , mydatabase 表示添加一个注册账号sery,密码是“d7#W6g,登录到默认数据库为“mydatabase”。这个操作执行完毕后,将在master数据库的syslogins表中增加一行纪录。添加数据库系统注册账号属于服务器级的安全,换句话说就是这个账号只能连接数据库服务器,但没有访问用户数据库的权力。

2、  添加数据库用户。执行存储过程sp_adduser将用户直接添加到数据库,添加数据库用户属于数据库级的安全,这时才可以以用户的身份访问用户数据库。这个操作执行完毕后,将在允许访问的数据库的sysusers表中添加纪录。

3、  授权。能够访问数据库但并不意味可以访问其中的数据,有时需要具备单个数据库对象的相应许可,才可以选取、更改数据库所属表中的数据信息或执行一个存储过程。这是属于对象访问级的安全。授权的格式为: grant  <权限列表> on <表名>  to <角色/用户>。这个操作执行完毕后,会向sysprotects表中添加纪录。

  接着,我们通过下面的事例来总结这3个步骤:

[sybase@sybase sybase]$ cd ASE-12_5/install

[sybase@sybase install]$ ./startserver      //启动sybase服务器

[sybase@sybase sybase]$ cd /OCS-12_5/bin

[sybase@sybase bin]$ ./isql –U sa –S SYBASE –P dr5623H

1>     sp_addlogin sery , d7#W6g , mydatabase

2>     go

1> use mydatabase

2> go

1> sp_adduser sery

2> go

1> grant select ,insert, update on custom to sery

2> go

1>     shutdown

2>     go

[sybase@sybase bin]$ ./isql –U sery –S SYBASE –P d7#W6g  //以用户sery登录数

//据库mydatabase

1>

  为了便于维护和管理数据库,最好让注册名和数据库用户名使用相同的名称。另外,注册用户的删除、数据库用户的删除以及授权的删除都是比较简单的了,请参照下面的操作:

1>     revoke select ,insert, update on custom from sery

2>     go

1>     sp_dropuser sery

2>     go

1>     sp_droplogin sery

2>     go

  需要注意的是,上述操作除用户sery登录数据库外,都是在sa下完成的。

 

 

 

Sybase服务器的启动与停止
1)启动:
$cd $SYBASE/ASE-12_5/install
$startserver -f RUN_server_name
$startserver -f RUN_backup_server_name
2)停止:
$SYBASE/$SYBASE_OCS/bin/isql -Usa -Ppassword -Sserver_name
1>shutdown backup_server_name
2>go
1>shutdown
2>go

六、安装后的系统配置(必须调整的参数)
$isql -Usa -Ppassword -Sserver_name
1)配置内存:
sp_configure "max memory", mmm (单位为2k)
go
sp_configure "allocate max shared mem", 1
go
上面命令配置sybase使用mmm*2k内存,通常配置为系统内存的60-70%,重起生效

max memory生效后,配置data cache和procedure cache:
sp_cacheconfig "default data cache", "xxxM"
go
通常配置为max memory的50%,以M为单位
sp_configure "procedure cache size", yyy
go
通常配置为max memory的20%,以2k为单位

2)配置CPU:
1>sp_configure "max online engines", n
2>go
1>sp_configure "number of engines at startup", n
2>go
若系统CPU数大于两个配置为系统实际CPU数-1,重起生效

3)其它:
1>sp_configure "allocate max shared mem", 0
2>go
静态内存参数生效后,该参数置为0,不必重起
1>sp_configure "number of locks", 100000
2>go
按应用实际要求修改,随时可配置
1>sp_configure "number of user connections", 50
2>go
按应用实际要求修改,随时可配置

七、配置文件样本
1)sql.rs文件的样本:
sybinit.release_directory: $SYBASE(sybase安装目录)
sybinit.product: sqlsrv
sqlsrv.server_name: SYBASE(根据需要改写DATA SERVER的名字)
sqlsrv.new_config: yes
sqlsrv.do_add_server: yes
sqlsrv.network_protocol_list: tcp
sqlsrv.network_hostname_list: HOSTNAME(对应IP:本机IP,应已记录在/etc/hosts中)
sqlsrv.network_port_list: 4100
sqlsrv.server_page_size: 4096(服务器页大小)
sqlsrv.force_buildmaster: yes
sqlsrv.master_device_physical_name: /dev/rsyb_master(master设备的逻辑卷名)
sqlsrv.master_device_size: 200(至少要比逻辑卷小2兆,主设备至少为30兆)
sqlsrv.master_database_size: 120
sqlsrv.errorlog: USE_DEFAULT
sqlsrv.do_upgrade: no
sqlsrv.sybsystemprocs_device_physical_name: /dev/rsyb_proc(sysprocs设备的逻辑卷名)
sqlsrv.sybsystemprocs_device_size: 200(至少比逻辑卷小2兆,设备大小至少为80兆)
sqlsrv.sybsystemprocs_database_size: 120(数据库的大小至少为80兆)
sqlsrv.sybsystemdb_device_physical_name: USE_DEFAULT
sqlsrv.sybsystemdb_device_size: USE_DEFAULT
sqlsrv.sybsystemdb_database_size: USE_DEFAULT
sqlsrv.default_backup_server: SYBASE_backup(根据需要改写BACKUP SERVER的名字)

注意:sqlsrv.sybsystemprocs_device_size、sqlsrv.sybsystemdb_device_size两个参数数值要略小于实际sybsystemprocs及sybsystemdb所建逻辑卷的大小(10M左右)。

2)backup.rs文件的样本:
sybinit.release_directory: $SYBASE(sybase安装目录)
sybinit.product: bsrv
bsrv.server_name: SYBASE_backup(根据需要改写BACKUP SERVER的名字)
bsrv.new_config: yes
bsrv.do_add_backup_server: yes
bsrv.do_upgrade: no
bsrv.network_protocol_list: tcp
bsrv.network_hostname_list: HOSTNAME(对应IP:本机IP,应已记录在/etc/hosts中)
bsrv.network_port_list: 4200
bsrv.language: USE_DEFAULT
bsrv.character_set: USE_DEFAULT
bsrv.tape_config_file: USE_DEFAULT
bsrv.errorlog: USE_DEFAULT
sqlsrv.related_sqlsrvr: SYBASE(根据需要改写DATA SERVER的名字)
sqlsrv.sa_login: sa
sqlsrv.sa_password: USE_DEFAULT


 

 

 

查看目前数据库的日志空间使用率

use databasename

dbcc checktable('syslogs')

go


 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值