一、创建数据库
但是在开始之前,很有必要定义用户数据库所需要的存储区域,而不要在服务器默认的主设备(master)上创建用户数据库.
创建数据库设备:通过sybase安装过程创建了master和sybsystemprocs,所有其他的数据库设备则是通过 disk init 命令来创建。我们必须保证sybase的用户对欲创建的设备的目录具有读写权限,否则就无法创建成功。先以sybase用户登陆linux系统(数据库是以sybase用户安装的,关于安装和初试配置,请参照“redflag server 4搭建sybase”一文),进入sybase用户的主目录 /opt/sybase,创建目录userdata;启动数据库服务,用sybase的isql连接数据库,然后执行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 c is not available between client character set 'gb18030'
and server character set 'iso_1'.
no c 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’, ‘default //设定uerdev为默认设备
2> go
1> sp_diskdefault ‘logdev’, ‘default //设定logdev为默认设备
2> go
在后面创建用户数据库的过程中,如果不指定数据库设备,则该用户数据库理所当然地创建在默认设备。
创建数据库:本数据库创建在设备 userdev上,而在分开的设备(logdev)上创建数据库日志。
1> create database mydatabase //创建一个名为mydatabase的数据库
2> on userdev = “50m” //数据库的存储空间为50m,数据库设备
//是userdev,而不是master
3> log on logdev=”10m” //日志文件的存储空间为10m4> 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 opti set
secdatadb 98.0 mb sa 5
jul 08, 2005
no opti 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变成50m4> 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> shutdown2> 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 sery2> go
需要注意的是,上述操作除用户sery登录数据库外,都是在sa下完成的。
三、备份和恢复
灾难的发生是不可预料的,作为数据库管理员,可以通过备份数据来抵御这些风险。创建备份和还原计划可能需要大量的时间和精力,但这是值得的,否则一旦灾难发生,后果真的不堪设想。因此定期备份数据库是一个重要的任务,也是一个极好的习惯。
备份的策略和类型:一天备份一次数据库和备份多次事务日志是个值得推荐的选择,实际上,很多系统管理员也是这样执行的。数据库备份是完全备份,而事务日志的备份是增量备份,在做一个恢复备份计划时,将完全备份和增量备份结合起来是十分必要的。
备份:在ase10以前的版本,备份是由数据库服务器直接执行,这会对导致大量的系统资源争用而引起服务器处理性能下降。备份服务器是服务器上的一个单独open server应用程序,该程序可以直接访问数据库设备,在数据库服务器运行一个备份服务器 backup server,定会带来很多额外的好处。所幸的是我们在安装 sybase ase 12_5时已经把备份服务器默认安装好了,这里只需要启用它(.以sybase用户登陆系统,执行命令 #/opt/sybase/ase-12_5/install/startserver ╟r run_sybase_backup启动sybase备份服务器)。
备份的过程还是有点繁复,我们还是分步骤来进行吧!
1、创建备份存储设备。为安全起见,最好把数据库备份到另外的磁盘,为此,准备一个大的硬盘,分好区后(一个分区)把它挂接到文件系统,再进行创建设备的操作。当然sybase也支持直接使用原始设备。
[sybase@root /]# mkdir ╟p /sybbackup
[sybase@root /]# chown sybase.sybase /sybbackup
[sybase@root /]# mount /dev/sdc1 /sybbackup //挂接新的硬盘分区到///sybbackup
[sybase@root /]# su sybase
[sybase@sybase sybase]$ cd /sybbackup
[sybase@sybase sybbackup]$ touch bk_mydatabase.dat
[sybase@sybase sybbackup]$ touch bk_log.dat
[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_addumpdevice ‘disk’,‘bk_mydatabase’,‘/sybbackup/bk_sybbackup.dat’
1> go //创建备份设备bk_mydatabase
1> sp_addumpdevice ‘disk’ , ‘bk_log’ , ‘/sybbackup/bk_log.dat’
2> go //日志文件的存储位置
2、备份数据库。使用dump database 命令备份数据库数据。
1> dump database mydatabase to ‘bk_mydatabase’ with init2> go
3、 备份事务日志。使用命令dump transaction.
1> dump transaction mydatabase to ‘bk_log’2> go
如果有多个数据库,则需要多次执行备份数据库和备份事务日志操作。备份完成后,非常有必要对备份数据进行验证,如果不这样做将可能发生可怕的后果。笔者在此建议把备份文件多做几份拷贝,放置在不同的地理位置,就算某天失火把服务器和备份烧毁了也可起死回生。
数据库恢复:可能需要经常备份数据库和事务日志,但不必经常进行数据库恢复操作。只有在数据库发生意外、数据库移植、试验等情况下才需要进行恢复操作。与备份相对应,恢复也可分几步进行。需要注意的是,在数据库恢复期间,不要让用户连接数据库。
1、 创建数据库。与要恢复的数据库同名,如果是原数据库损坏,需要先把数据库删除,然后再创建同名数据库。
2、 恢复数据库。使用命令load database命令来恢复数据库。
1> load database mydatabase from ‘bk_mydatabase’2> go
3、 恢复事务日志。使用命令load transacti
1> load transaction mydatabase from ‘bk_log’
2> go
4、 联机数据库。事务日志装载完毕之后,才可以使数据库成为联机状态。
1> database mydatabase2> go
2005-9-21 于北京通州