转:www.uplinux.net/bbs
作者:田逸(sery@163.com)
《开放系统世界》2005年11期
安装好sybase数据库服务器以后,没有什么比使用这个数据库最重要的事情了。
一、创建数据库
但是在开始之前,很有必要定义用户数据库所需要的存储区域,而不要在服务器默认的主设备(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 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>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下完成的。
三、备份和恢复
灾难的发生是不可预料的,作为数据库管理员,可以通过备份数据来抵御这些风险。创建备份和还原计划可能需要大量的时间和精力,但这是值得的,否则一旦灾难发生,后果真的不堪设想。因此定期备份数据库是一个重要的任务,也是一个极好的习惯。
备份的策略和类型:一天备份一次数据库和备份多次事务日志是个值得推荐的选择,实际上,很多系统管理员也是这样执行的。数据库备份是完全备份,而事务日志的备份是增量备份,在做一个恢复备份计划时,将完全备份和增量备份结合起来是十分必要的。
备份:在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 init
2>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 transaction命令来恢复事务日志。
1>load transaction mydatabase from ‘bk_log’
2>go
4、 联机数据库。事务日志装载完毕之后,才可以使数据库成为联机状态。
1>online database mydatabase
2>go
转贴地址:http://www.uplinux.net/bbs/viewt ... &extra=page%3D1 |