[转帖]Sybase Ase 12.5 for Linux 的使用
<span style="FONT-SIZE: 12px;">作者:田逸(<a href="mailto:sery@163.com"><font color="#003366">sery@163.com</font></a>)<br/>《开放系统世界》2005年11期<br/><br/>安装好sybase数据库服务器以后,没有什么比使用这个数据库最重要的事情了。<br/><br/>一、创建数据库<br/>但是在开始之前,很有必要定义用户数据库所需要的存储区域,而不要在服务器默认的主设备(master)上创建用户数据库.<br/><br/>创建数据库设备:通过sybase安装过程创建了master和sybsystemprocs,所有其他的数据库设备则是通过 disk init 命令来创建。我们必须保证sybase的用户对欲创建的设备的目录具有读写权限,否则就无法创建成功。先以sybase用户登陆linux系统(数据库是以sybase用户安装的,关于安装和初试配置,请参照“Redflag Server 4搭建sybase”一文),进入sybase用户的主目录 /opt/sybase,创建目录userdata;启动数据库服务,用sybase的isql连接数据库,然后执行disk init 来完成此项操作。<br/><br/>$ cd ASE-12_5/install<br/>$ ./startserver //启动sybase服务器<br/>$ cd<br/>$ mkdir userdata //创建目录用于存放用户数据库<br/>$ cd /OCS-12_5/bin<br/>$ ./isql –U sa –S SYBASE //连接数据库服务器,我的数据//库服务器名称为SYBASE,sa<br/>//密码为空<br/>$ ./isql -U sa -S SYBASE //下面是回显<br/>保密字: <br/>Msg 2401, Level 11, State 2:<br/>Server 'SYBASE':<br/>Character set conversion is not available between client character set 'gb18030'<br/>and server character set 'iso_1'.<br/>No conversions will be done.<br/>Msg 4017, Level 16, State 1:<br/>Server 'SYBASE':<br/>Neither language name in login record 'chinese' nor language name in syslogins<br/>'<NULL>' is an official language name on this SQL Server. Using server-wide<br/>default 'us_english' instead. //回显到此,进入客户操作模式<br/>1>disk init //如果输错了,按“Ctrl”+”back space”删除<br/>2>name=userdev, //命名最好便于识别为佳<br/>3>physname=”/opt/sybase/userdata/userdev.dat”, //要用绝对路径 <br/>4>size=”500M”<br/>5>go<br/><br/>1>disk init //给日志文件分配设备<br/>2>name=logdev,<br/>3>physname=”/opt/sybase/userdata/logdev.dat”,<br/>4>size=”50M”<br/>5>go<br/><br/>更改默认设备:如本文开头部分所言,为了防止用户数据库被分配到数据库系统主设备master上,应该在安装完数据库后修改默认设备—安装完sybase ASE后,master是唯一的默认设备。Sybase建议,master设备只应该提供给系统数据库而不是用户数据库。因此,对于用户数据库,我们应当单独创建设备,并且把用户设备设置成默认状态。上一步我们已经创建了用户设备“userdev”和“logdev”.其过程如下:<br/>1>sp_diskdefault ‘master’, ‘defaultoff’ //取消master的默认设备资格<br/>2>go <br/>1>sp_diskdefault ‘userdev’, ‘defaulton’ //设定uerdev为默认设备<br/>2> go<br/>1>sp_diskdefault ‘logdev’, ‘defaulton’ //设定logdev为默认设备<br/>2>go<br/>在后面创建用户数据库的过程中,如果不指定数据库设备,则该用户数据库理所当然地创建在默认设备。<br/><br/>创建数据库:本数据库创建在设备 userdev上,而在分开的设备(logdev)上创建数据库日志。<br/>1>create database mydatabase //创建一个名为mydatabase的数据库<br/>2>on userdev = “50M” //数据库的存储空间为50M,数据库设备 <br/> //是userdev,而不是master<br/>3>log on logdev=”10M” //日志文件的存储空间为10M<br/>4>go<br/>也可以用命令 create database mydatabase 来创建用户数据库mydatabase,这个数据库也会默认的创建在设备userdev上,日志文件也创建在userdev,但不幸的的是,用户创建的这个数据库将只有2M的容量,恐怕这不是创建者所期望的。因此,不管是Sybase还是我本人,都强烈建议使用上表的过程创建用户数据库,以便于这个数据库可以满足真实的应用场景。创建完数据库后,我们很想知道创建的这个数据库到底是怎么一个状况?通过系统存储过程-sp_helpdb来获得数据库的各种信息。下面是我的某个sybase服务器的范例<br/>在创建用户数据库时,应该预留足够大的空间,以便能够保留将来输入的所有数据。但是也不要把数据库定义得太大,以免在将来恢复数据时产生麻烦。究竟需要定义多大的空间才算合适,这需要数据库管理员多次试验才可以决定的。一个经验是-低估一个数据库的大小比高估要好,如果数据库空间太小了,可以很容易的扩充数据库的空间,如果空间过大,则非常麻烦。这里,我们来修改一下前面创建的数据库的空间大小,过程如下:<br/><br/>1>alter database mydatabase<br/>2>on userdev=”1024M” //由50M变成1G<br/>3>log on logdev=”50M” //由10M变成50M<br/>4>go<br/><br/>二、数据库的管理<br/>设置数据库管理员密码:在安装完sybase ASE数据库后,数据库管理员的默认管理员密码为空,基于安全考虑,必须为数据库管理员账号设置密码。先以账号sybase登录系统,然后启动Sybase数据库,用isql连接数据库服务器(操作过程如前面“创建数据库设备”一节),接着执行下面的操作:<br/><br/>1>sp_password null , dr5623H //设置新密码为“dr5623H”<br/>2>go<br/>在退出数据库,下一次客户端连接数据库时,提示用户输入密码。<br/><br/> 用户和授权:sybase ASE服务器提供一种严密的体系来保障数据的安全,并且使数据的保护级别达到非常精细的程度。在通常情况下,数据库服务器不是只给一个用户sa来使用,为了让数据库满足实际需求,需要在 sybase 数据库里添加账号/用户,为添加的用户分配适合的权限。这个操作分以下几步进行:<br/>1、 添加数据库系统的注册账号。执行存储过程sp_addlogin来完成数据库注册账号的添加,如 exec sp_addlogin sery , d7#W6g , mydatabase 表示添加一个注册账号sery,密码是“d7#W6g”,登录到默认数据库为“mydatabase”。这个操作执行完毕后,将在master数据库的syslogins表中增加一行纪录。添加数据库系统注册账号属于服务器级的安全,换句话说就是这个账号只能连接数据库服务器,但没有访问用户数据库的权力。<br/>2、 添加数据库用户。执行存储过程sp_adduser将用户直接添加到数据库,添加数据库用户属于数据库级的安全,这时才可以以用户的身份访问用户数据库。这个操作执行完毕后,将在允许访问的数据库的sysusers表中添加纪录。<br/>3、 授权。能够访问数据库但并不意味可以访问其中的数据,有时需要具备单个数据库对象的相应许可,才可以选取、更改数据库所属表中的数据信息或执行一个存储过程。这是属于对象访问级的安全。授权的格式为: grant <权限列表> on <表名> to <角色/用户>。这个操作执行完毕后,会向sysprotects表中添加纪录。<br/>接着,我们通过下面的事例来总结这3个步骤:<br/>$ cd ASE-12_5/install<br/>$ ./startserver //启动sybase服务器<br/>$ cd /OCS-12_5/bin<br/>$ ./isql –U sa –S SYBASE –P dr5623H <br/>1>sp_addlogin sery , d7#W6g , mydatabase<br/>2>go<br/>1>use mydatabase<br/>2>go<br/>1>sp_adduser sery<br/>2>go<br/>1> grant select ,insert, update on custom to sery <br/>2> go<br/>1>shutdown<br/>2>go<br/>$ ./isql –U sery –S SYBASE –P d7#W6g //以用户sery登录数<br/>//据库mydatabase<br/>1><br/>为了便于维护和管理数据库,最好让注册名和数据库用户名使用相同的名称。另外,注册用户的删除、数据库用户的删除以及授权的删除都是比较简单的了,请参照下面的操作:<br/>1>revoke select ,insert, update on custom from sery<br/>2>go<br/>1>sp_dropuser sery<br/>2>go<br/>1>sp_droplogin sery<br/>2>go<br/>要注意的是,上述操作除用户sery登录数据库外,都是在sa下完成的。<br/><br/>三、备份和恢复<br/>灾难的发生是不可预料的,作为数据库管理员,可以通过备份数据来抵御这些风险。创建备份和还原计划可能需要大量的时间和精力,但这是值得的,否则一旦灾难发生,后果真的不堪设想。因此定期备份数据库是一个重要的任务,也是一个极好的习惯。<br/><br/>备份的策略和类型:一天备份一次数据库和备份多次事务日志是个值得推荐的选择,实际上,很多系统管理员也是这样执行的。数据库备份是完全备份,而事务日志的备份是增量备份,在做一个恢复备份计划时,将完全备份和增量备份结合起来是十分必要的。<br/><br/>备份:在ASE10以前的版本,备份是由数据库服务器直接执行,这会对导致大量的系统资源争用而引起服务器处理性能下降。备份服务器是服务器上的一个单独Open server应用程序,该程序可以直接访问数据库设备,在数据库服务器运行一个备份服务器 backup server,定会带来很多额外的好处。所幸的是我们在安装 sybase ASE 12_5时已经把备份服务器默认安装好了,这里只需要启用它(.以sybase用户登陆系统,执行命令 #/opt/sybase/ASE-12_5/install/startserver –r RUN_SYBASE_BACKUP启动sybase备份服务器)。<br/>备份的过程还是有点繁复,我们还是分步骤来进行吧!<br/>1、创建备份存储设备。为安全起见,最好把数据库备份到另外的磁盘,为此,准备一个大的硬盘,分好区后(一个分区)把它挂接到文件系统,再进行创建设备的操作。当然sybase也支持直接使用原始设备。<br/># mkdir –p /sybbackup<br/># chown sybase.sybase /sybbackup<br/># mount /dev/sdc1 /sybbackup //挂接新的硬盘分区到///sybbackup<br/># su sybase<br/>$ cd /sybbackup<br/>$ touch bk_mydatabase.dat<br/>$ touch bk_log.dat<br/><br/>$ cd ASE-12_5/install<br/>$ ./startserver //启动sybase服务器<br/>$ cd /OCS-12_5/bin<br/>$ ./isql –U sa –S SYBASE –P dr5623H<br/>1>sp_addumpdevice ‘disk’,‘bk_mydatabase’,‘/sybbackup/bk_sybbackup.dat’<br/>1>go //创建备份设备bk_mydatabase<br/>1>sp_addumpdevice ‘disk’ , ‘bk_log’ , ‘/sybbackup/bk_log.dat’<br/>2>go //日志文件的存储位置<br/>2、备份数据库。使用dump database 命令备份数据库数据。<br/>1>dump database mydatabase to ‘bk_mydatabase’ with init<br/>2>go<br/>3、 备份事务日志。使用命令dump transaction.<br/>1>dump transaction mydatabase to ‘bk_log’<br/>2>go<br/>如果有多个数据库,则需要多次执行备份数据库和备份事务日志操作。备份完成后,非常有必要对备份数据进行验证,如果不这样做将可能发生可怕的后果。笔者在此建议把备份文件多做几份拷贝,放置在不同的地理位置,就算某天失火把服务器和备份烧毁了也可起死回生。<br/><br/>数据库恢复:可能需要经常备份数据库和事务日志,但不必经常进行数据库恢复操作。只有在数据库发生意外、数据库移植、试验等情况下才需要进行恢复操作。与备份相对应,恢复也可分几步进行。需要注意的是,在数据库恢复期间,不要让用户连接数据库。<br/>1、 创建数据库。与要恢复的数据库同名,如果是原数据库损坏,需要先把数据库删除,然后再创建同名数据库。<br/>2、 恢复数据库。使用命令load database命令来恢复数据库。<br/>1>load database mydatabase from ‘bk_mydatabase’2>go<br/>3、 恢复事务日志。使用命令load transaction命令来恢复事务日志。<br/>1>load transaction mydatabase from ‘bk_log’<br/>2>go<br/>4、 联机数据库。事务日志装载完毕之后,才可以使数据库成为联机状态。 <br/>1>online database mydatabase<br/>2>go</span>支持
页:
[1]