第 1 章
搭建 Sybase ASE 环境
1.1 什么是 Sybase ASE
1.1.1 ASE 名称的来历
很多人以为 Sybase 只有一种数据库,这种看法是错误的。实际上,Sybase 有三种类型的数据
库产品。ASE 是它的企业级数据库,其全称是 Adaptive Server Enterprise,它主要面向企业级应用。
ASE
最早的时候并不叫做 ASE。1987 年 5 月,Sybase 公司推出 Sybase SQL Server 1.0,它基于
Client/Server
架构,是业界最早实现此架构的数据库产品。其间,Sybase 与微软有过合作,共同开
发基于 Windows 平台的 SQL Server。1994 年,合作终止,Windows 上的最后一个版本是 Sybase SQL
Server 4.21
。其后,他们各自开发独立版本的 SQL Server。于是出现了两个 SQL Server,一个是
Microsoft SQL Server
,一个是 Sybase SQL Server,后来,Sybase 为了与微软的 Microsoft SQL Server
以示区分,将 SQL Server 改名为 ASE。它除了是 Adaptive Enterprise Server 的首字母缩写外,同时
也是 Sybase 的后三个字母。这就是 Sybase ASE 这个名称的来历。它也是通常人们所说 Sybase 数
据库的真实产品名称。
Sybase
还有另外两个数据库产品,一个是 IQ,主要面向数据仓库;另一个是 ASA,主要面向
移动和嵌入式数据库,它占领了移动和嵌入式数据库的绝大部分市场。
目前 ASE 的正式版本已经发展到 15.7 版本。
1.1.2 Sybase ASE 的体系结构
Sybase ASE
是一个支持分布式 Client/Server 体系的企业级数据库服务器。其基本体系结构如图
1
Chapter
1-1
所示。
图 1-1 Sybase ASE 体系结构
ASE
包含多个部件,用于有效的管理维护和监控系统性能。例如,你可以使用 Backup Server
来进行数据的备份与恢复;使用 Monitor Server 来监控 Server 端的活动。另外,ASE 支持分布式事
务处理,它是由 ASE 的分布式事务管理器部件来实现的。此外,ASE 15.0 还支持全文检索服务。
ASE
还支持 Java 应用程序的创建和使用,你可以使用 Sybase EJB Server 来创建 EJB 应用,并
可以使用 Sybase EJB Server 来访问 ASE 中的数据。
目前,ASE 数据库支持包括 Windows NT/2000/XP/2003、Linux 以及各种 UNIX(HP UNIX、
IBM AIX
、Solaris 等)的几乎所有主流操作系统。
同时,ASE 支持各种形式的客户端访问,如 Open Client 客户端应用、Java 客户端应用,还有
其他形式的应用:ODBC、OLEDB、JDBC。ASE 使用 JConnect 作它的 JDBC 驱动。这些客户端与
ASE
服务器之间通过采用特定的网络协议进行通信。ASE 目前采用的就是 TDS 5.0 协议(TDS 协
议在 Microsoft SQL Server 中也被使用,不过,它们自定义的版本是 TDS 8.0)。
ASE
服务器包括几个重要的部件,如 Backup Server 和 Monitor Server。服务器当中最核心的部
件就是 Sybase ASE,实际上内部仍叫做 Sybase SQL Server。这些部件的主要功能如下:
1
.Sybase Backup Server:备份和恢复数据库中的数据。
2
.Sybase 分布式事务管理器:管理 ASE 环境中的分布式事务。
3
.Sybase XP Server:支持在 ASE 环境中运行扩展存储过程。
1
Chapter
5
.Sybase 全文检索专用数据存储:用于对 ASE 中存储的数据进行全文检索。
1.2 安装 Sybase ASE
在安装 ASE 数据库之前,我们应该知道 Sybase ASE 数据库是一个支持很多不同平台的产品。
对于各种不同的平台,不管是 Windows、Linux、Solaris 或是其他 UNIX,它们都有各自不同的地
方,安装起来也就有少许不同的安装细节。但在各种平台下安装 ASE 仍然有很多相同点,值得您
考虑。
首先,最重要的一点是安装 ASE 的计划。要想成功地安装 ASE,需要有一个比较完备的安装
计划,在安装过程当中,许多问题的决定都会影响到将来 ASE 的运行。也许对于开发测试环境来
说影响不大,可是对于生产环境而言,这些决定无疑将影响深远。在安装之前,您需要预先考虑清
楚如下问题的答案:
Sybase ASE
需要安装到哪个分区的哪个目录下?
要使用裸设备还是要使用文件系统(非 Windows 平台下)?
Master
物理设备创建的位置和大小确定了吗?
Sybsystemprocs
物理设备的位置和大小确定了吗?
如果您准备安装审计功能,那么 Sysaudits 物理设备的位置和大小确定了吗?
您打算在 ASE 数据库里使用哪种字符集和排序方式?
您打算让 ASE 数据库支持什么样的网络协议和网络地址?
您打算让 ASE 数据库使用多大的页大小?
上面有些问题在安装完以后还会再次发生,比如,创建数据库要使用裸设备还是使用文件系
统?而另一些问题基本上只发生在安装时刻。比如,使用哪种字符集和排序方式?
下面,我们就分步介绍如何安装 ASE 数据库。
1.2.1 获取安装文件
如果已经购买了 ASE 产品,自然就有完整的安装文件,还可以得到相应的 license。对于普通
的学习者而言,虽然从外界很难找到 Sybase ASE 的下载地址,但是我们可以直接从 Sybase 网站
(http://www.sybase.com)上下载。其基本过程如下:
进入 http://www.sybase.com/developer/downloads,右端有一个 login,会提示你注册一个
SDN
用户,注册时用户名使用邮箱名即可。
使用刚注册的用户名登录,进入 http://www.sybase.com/developer/downloads,会发现有一
个列表,内容如图 1-2 所示。
1
Chapter
图 1-2 数据库管理相关软件
在后续的页面中,再进入链接 Adaptive Server Enterprise Evaluation Options。
图 1-3 ASE Evaluation 选项
我们选择 Developer Edition 选项,会出现如图 1-4 所示的内容。
图 1-4 ASE Developer Edition 注册下载
这时我们单击“Register and Download Now!”链接,有两个选框:是否同意使用的声明,
都选上。
接着会让你填一个表单,把必填项都填上,不是美国的用户,省份信息可以不填。提交以
后,在新的结果页面末尾会出现类似如图 1-5 所示的内容。
图 1-5 各平台下的 ASE Developer Edition
1
Chapter
最后,我们可以从上图中找到自己感兴趣的 ASE 版本执行下载。图 1-5 中对 Linux 提供
了三个版本。默认的 x86 是指 32 位的 x86 体系。Windows 版本提供的是 32 位的 ASE
(ase1502_winx86_dev.zip)。
最终下载开发版 ASE,Windows 下选择 Windows 版本,32 位 Linux 选择 x86 Linux Server 即
可。当然,Linux 还有一些准备工作。经过 ASE 认证的 Linux 主要有两个版本,一个是 SuSE 9.0
企业版,另一个是 RedHat 3.0 或者 4.0 的企业版。
从功能上来说,开发版与企业版几乎没什么区别,唯一的区别是它没有有效的 license,只有
60
天的有效使用期限。不过对于普通的学习者而言,60 天的使用周期已经足够。对于获取其他
Sybase
产品都可以使用相同的方法。
1.2.2 准备工作
如果有文档,仔细阅读 Sybase ASE 在目标平台下边的安装文档,各个平台下的准备工作还是
有较大差异的。
接着确定下述内容:
逻辑页大小。
系统数据库的物理设备信息(类型、大小、位置)。
服务器名字。
网络相关信息(IP 地址或主机名、端口号、命名管道地址)。
SySAM
(Sybase 软件财产管理器)的激活码或者 License 文件,这对于已经购买了 Sybase
产品的用户来说,肯定不是问题,如果没有也没关系,可以使用试用版本。
字符集、排序方式和默认语言集。
备份服务器/XP 服务器/监控服务器/历史服务器相关信息(服务器名、网络信息)。
安全配置(是否需要使用 SSL)。
事先决定好上述内容,可以做到安装过程事半功倍。
逻辑页大小:ASE 允许在安装的时候确定逻辑页的大小,默认值为 2KB,可供选择的值还有
4KB
、8KB、16KB。它要求各系统数据库的最小页大小,如表 1-1 所示。
表 1-1 系统最小页大小需求
master
sybsystemprocs
其他系统数据库(model 等)
页大小
设备大小
数据库
设备大小
数据库
设备大小
数据库
2K 24MB 13MB 120MB 120MB 3MB 3MB 4K 45MB 26MB 6MB 6MB 8K 89MB 52MB 12MB 12MB 16K 177MB 104MB 24MB 24MB1
Chapter
物理设备:在安装过程当中,系统将初始化主设备,包括为 master、sybsystemdb、tempdb 提
供公共默认的设备,同时也会让你选择 sybsystemprocs 的设备信息相关参数。
从 ASE 12.0 开始,用户可以自己选择将设备创建在裸分区还是文件系统上,这取决于目标平
台是否支持裸分区。所有 UNIX(包括 Linux 平台)都支持裸分区,而在 Windows 平台上,目前还
不支持裸分区,通常推荐基于 NTFS 文件系统创建文件系统设备。
基于表 1-1,我们推荐 master 设备最小值为 50MB,便于系统扩展和升级。sybsystemprocs 数据库
也可以存放到 master 设备上,但它最好还是与 master 数据库分开来放,可将它放到一个单独的设备上。
由于 Sybase 官网在不断整合,可能原下载地址:http://www.sybase.com/developer/downloads 无
法得到您想要的下载。为方便读者下载,在本书源码的 readme 文件里列出了 CSDN 上的下载地址。
另 外 , 您 还 可 以 尝 试 从 百 度 网 盘 里 得 到 下 载 : ① http://pan.baidu.com/share/link?shareid=
200108&uk=2047101729
(Linux 平台:Sybase/ase1503_linx86_32_2.tgz);②http://pan.baidu.com/share/
link?shareid=200109&uk=2047101729
(Windows 平台:Sybase/ase1503_winx86_32_2.zip)。
需要提醒的是,master 设备不要创建得过大,master 设备过大将会延长恢复数据库的时间。最
好将 master 设备专用于系统数据库(除 sybsystemprocs 数据库外,它需要单独的一个设备),并且
不要将用户数据库放到 master 设备上。这样的设置将有利于系统管理和数据库的恢复。
服务器名:对主服务器则言,UNIX 下的默认服务器名形式是“SYB_<机器名>”,NT 下,默
认的服务器名就是机器名。
对于备份服务器而言,默认服务器名是“SYB_<机器名>_BACK”(NT 下,则为<机器名>_BS)。
对于 XP 服务器和监控服务器,都有类似的命名方式。服务器名最好是全部采用大写形式。
网络信息:ASE 支持两类网络:TCP/IP 和命名管道(适用于 NT 下边)。TCP/IP 是 ASE 客户
端最常用的通信协议。各服务器进程都需要单独的端口号,主服务器默认端口为 5000,备份服务
器为 5001,监控服务器为 5002,而 XP 服务器为 5004。
SySAM:主要为 ASE 提供 license 检查,系统启动的过程中,会自动检查所安装的 ASE 有哪
些特性有对应的 license,只有具有对应 license 的那些特性才被使用。比如,我们如果什么 license
都没有,那么安装的应该是开发版,那么一些重要的高级特性便被禁止使用,如分布式事务、Java
存储过程等。对一般用户而言,我们只要理解 SySAM 的这个功能就好了。
排序方式:ASE 严格按照指定的排序方式对表数据进行排序,所有的 order by 及 group by 查
询都会用到排序。ASE 默认的排序方式是二进制排序,简单地按照字节的 ASCII 码对应的数值进
行大小比较,因此大写字母会排在前头,而小写字母会排在后边,因为所有的大写字母的 ASCII
码值比小写字母要小。为此,ASE 还支持多种不同的排序方式,以满足不同的应用需求。
以上资源只可用于测试、学习或者开发环境,切不可直接用于商业生产环境,正式的商业生产环境需要购买 SAP/Sybase 公司的正式授权。注意
1
Chapter
1.2.3 使用图形界面安装
在获取 ASE 安装文件之后,将其解压,运行其中的 setup.exe,即可启动图形界面进行安装(如
图 1-6 所示)。
单击“下一步”按钮,可以选择 Evaluation Edition 或者 Developer Edition,如图 1-7 所示。前
者的功能要全一些,后者功能会有些限制。我们这里选择 Evaluation Edition。单击“下一步”按钮,
选择地区,如图 1-8 所示,再单击“下一步”按钮。
图 1-6 安装的首页面
图 1-7 安装选项
进入图 1-9 以后,指定要安装的目录,这里指定安装目录为 D:\sybase。单击“下一步”按钮
进入图 1-10。
图 1-8 选择地区
图 1-9 指定安装目录
如果指定“典型”安装,安装完以后,可能会发现有些内容并没有安装进去。所以,最好的方
1
Chapter
式是选择“定制”,进入图 1-7,你会发现,默认情况下,Sybase Server 下的 ASE Web Service、Job
Schedule
、Connection 下边的 XA Interface 库、Embedded SQL/*、ASE Data Providers 下边的 OLEDB、
ADO.NET
、jConnect for JDBC 下边的 Free Utilities for jConnect(jiSQL, RIBO)、Shared 目录、ASE
Administrator Tools
下的 Microsoft Cluster Server Resource,这些模块都不会安装到系统当中。我们
将这些重要的模块都选上,以便于后续的实践练习,如图 1-11 所示。单击“下一步”按钮。
图 1-10 指定安装类型
图 1-11 自定义安装的组件
进入图 1-12 之后,可以选择不进行电子邮件警报。接着单击“下一步”按钮,进入图 1-13,
选择是否在安装过程中配置 ASE 中的几个 Server 部件(Adaptive Server、Backup Server、Monitor
Server
、Job Scheduler、Web Service 等)。如果不选择,可以在安装完软件之后手动创建。比较方
便的是一次性都选上。单击“下一步”按钮。
图 1-12 设定邮件警报
图 1-13 是否在安装过程中配置服务器
1
Chapter
进入图 1-15,发现系统为我们设置了默认的参数值。后续过程是不断地单击“下一步”按钮,
直至安装顺利结束。
图 1-14 是否自定义配置 Server
图 1-15 系统为 ASE 安装设置默认的参数值
在 Windows 平台上,从图 1-15 开始,后续的创建 ASE 中几个 Server 的工作都会比较顺利。
对于 Linux 用户而言,安装之前,还需要一些额外的准备工作。
对于大多数 Linux 版本而言,操作系统共享内存默认值为 32MB。对于具有 2K 页的默认服
务器,Adaptive Server 要求的最小操作系统共享内存为 64MB。如果打算增大 ASE 的内在使用,
则需要一个更高的值。
使用 sysctl(8) 方法可检查和调节操作系统共享内存参数。
若要检查当前共享内存大小,请输入:
# /sbin/sysctl kernel.shmmax若要调节当前共享内存大小,请输入:
# /sbin/sysctl -w kernel.shmmax=nnn其中 nnn 是以字节为单位的新的内存大小(至少 64MB,即 67108864 字节)。若要保证每次
启动系统时都应用所设置的值,应将上述命令行添加到 /etc/rc.d/rc.local 文件中。或者直接修改
/etc/sysctl.conf
文件,添加内容 kernel.shmmax=67108864,重启以后即生效。
在 SuSE 系统上,该文件为/etc/init.d/boot.local。
对 于 SuSE 10.0 或 者 RHEL 4.0 及 以 上 版 本 , 有 一 个 环 境 变 量 需 要 设 定 , 即
LD_POINTER_GUARD
,它的值必须为 1。
在 Linux RHEL Update 3.0 及更高版本上,在多个引擎上运行的 Adaptive Server 15.0 版本会要
求禁用安全功能 Exec-Shield。
1 Chapter
禁用 Exec-Shield 的方法是:
1
.在 /etc/sysctl.conf 中添加以下命令行:
kernel.exec-shield=0
kernel.exec-shield-randomize=0
2
.以超级用户身份输入:
/sbin/sysctl -P
有关其他信息,请参见位于 http://www.redhat.com/f/pdf/rhel/WHP0006US_Execshield.pdf 上
的 Red Hat web 站点。
如果调整 SHMMAX 参数后,服务器重新启动失败,可能还需要增加另一个内核参数
SHMALL
的值,该参数为可分配的共享内存的最大量。其值位于文件 /proc/sys/kernel/shmall 中。
此任务需要 root 用户权限。
同时,如果系统安装了防火墙,一定要开放系统默认的几个端口,客户端无法远程访问 ASE
的几个 Server。
还需要注意安装用户使用的语言问题,建议在安装时,将环境变量 LANG 值设为 C,待安装
完以后,再设定为目标值。
以中文为例,可能在 Linux 系统里得到下述 locale 值:
iihero@seanlinux:~> locale LANG=zh_CN.UTF-8 LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MONETARY="zh_CN.UTF-8" LC_MESSAGES="zh_CN.UTF-8" LC_PAPER="zh_CN.UTF-8" LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" LC_TELEPHONE="zh_CN.UTF-8" LC_MEASUREMENT="zh_CN.UTF-8" LC_IDENTIFICATION="zh_CN.UTF-8" LC_ALL=这里建议在安装完 ASE 之后,在用户环境变量里,将 LANG 设为 zh_CN.GBK。因为 ASE 15.0
目前并不支持 zh_CN.UTF-8 这个 LANG,可以从安装完以后的$SYBASE/locales/locales.dat 里的
[linux]
下与中文有关的几个 locale 项得到印证:
locale = CHINESE, chinese, eucgb locale = zh_CN, chinese, eucgb
locale = zh_CN.gb18030, chinese, gb18030 locale = zh_CN.GB18030, chinese, gb18030 locale = zh_CN.gbk, chinese, eucgb
1
Chapter
locale = zh_TW, tchinese, big5 locale = zh_TW.euctw, tchinese, euccns
1.2.4 ASE 的静默安装
作为企业级数据库,ASE 同样支持静默安装(Silent Install)方式。静默安装方式是使安装所
有的参数都形成一个文件,作为安装命令的输入。如何得到这个文件呢?
首次安装时,使用 setupconsole.exe-options-record c:\ASE_silentinstall.txt 命令得到静默安装的
参数文件。安装到末尾之前,不要选择安装数据库服务,其他所有的构件都选上,这样会得到一个
完整的参数文件。
安装完成以后,就得到了样本参数文件。一般情况下,只需要注意如下内容的调整:
-P installLocation="D:\sybase" ##可以改为你想要的目录 -W installSoftwareLicenseType.type=developer ##改为真正想用的 license 类型 -W sysamLicense.proceedWithoutLicense=false -W sysamLicense.useExistingLicenseServer=false -W sysamLicense.licenseFile= ##如果有 license 文件,给出全路径默认直接用 Developer 类型的 license 即可。可以一路安装下去。
静默安装的命令是:
setupConsole.exe –silent -options c:\ase1503_silentinstall.txt
-W SybaseLicense.agreeToLicense=true -G replaceExistingResponse="yesToALL"。
它最大的好处是可以自动执行,中间不需要人工干预,对于 DBA 来说非常便利。只要有了安
装文件和静默安装参数文件,一个命令就可以完成 ASE 的安装。所以,从某种意义上来说,静默
安装也是 DBA 应该掌握的一个基本技巧。
1.2.5 安装完成时 ASE 的目录结构
安装完以后,系统中将会在 Sybase ASE 的安装目录(这里是 D:\sybase)下生成如下子目录:
1
._jvm:存放 Java 虚拟机,ASE 的 GUI 管理都使用 Java。
2
.ASE-15_0:这是 ASE 服务器的核心子目录,通常它对应于环境变量%SYBASE_ASE%。
3
.ASEP:这是 ASE 的 GUI 管理器的 plugin 目录。
4
.charsets:该目录用于存储 ASE 支持的所有字符集。
5
.collate:用于存储排序相关信息。
6
.data:ASE 数据库的系统库的存放位置,你会发现里边有默认的 master.dat、sysproc.dat、
sybmgmtdb.dat
、sybsysdb.dat 等设备文件(其他数据库可能称之为数据文件,含义是一
样的)。
1
Chapter
当然,在 Linux/UNIX 下,只会有 ODBC 目录(注意,ASE 是支持 Linux/UNIX 下的 ODBC
访问的)。
8
.DBISQL:该目录是 dbisql 的工具目录。
9
.ini:该目录在 Windows 下独有。这是 ASE 系统中配置文件的存储目录,其中有一个很重
要的配置文件 sql.ini。在 Linux/UNIX 下,该配置文件直接对应于$SYBASE/interfaces。
10
.jConnect-6_0:这是 ASE 的 JDBC 驱动库目录。
11
.jutils-2_0:这是很有用的小工具 jisql 和 ribo 的存储目录。
12
.locales:用于存储语言和字符集的对应关系。
13
.OCS-15_0:这是 OpenClient/OpenServer 库目录,它对应于环境变量%SYBASE_OCS%。
14
.RPL-15_0:该目录用于存放复制服务工具。
15
.Shared 目录:ASE 的 GUI 管理工具 Sybase Central 就存放在这里,它的运行要依赖于_jvm
目录中的 Java 虚拟机。
16
.SYSAM-2_0:该目录存放 ASE 的相关 license 或 key 文件。
17
.UAF-2_0:Sybase Unified Agent,它是一个可供 Web 访问的应用服务器。便于用户通过
Web
来管理 ASE 数据库。
18
.WS-15_0:用于支持 Web Services 的目录,对应于环境变量%SYBASE_WS%。
我们在 Windows 下直接运行 set syb 命令(Linux 下使用命令 env|grep SYB),可以得到相关的
Sybase
环境变量:
D:\>set syb SYBASE=D:\sybase SYBASE_ASE=ASE-15_0 SYBASE_JRE=D:\sybase\Shared\Sun\jre142_013 SYBASE_OCS=OCS-15_0 SYBASE_SYSAM2=SYSAM-2_0 SYBASE_UA=D:\sybase\UAF-2_0 SYBASE_WS=WS-15_0 SYBROOT=D:\sybase D:\>set ds DSLISTEN=SEANLAPTOP DSQUERY=SEANLAPTOP这些环境变量对于 ASE 的运行来说相当重要。我们在%SYBASE%目录下边,还看到有一个批
处理文件 ASE150.bat,里边有完整的环境变量信息。
在 Windows 下,系统会为 Adaptive Server、Backup Server、XP Server、Monitor Server 创建服
务,服务的名称如图 1-16 所示。
1
Chapter
图 1-16 ASE 数据库安装后创建的服务
在 UNIX/Linux 下,我们一定要把相关的 Sybase 环境变量添加到用户的 profile 当中。以 SuSE
Linux
为例,我们先进入安装目录$SYBASE,看看环境变量文件 SYBASE.sh 的内容(以 Borne Shell
为例)。
PATH="/opt/sybase/OCS-15_0/bin":$PATH export PATH LD_LIBRARY_PATH="/opt/sybase/OCS-15_0/lib:/opt/sybase/OCS-15_0/lib3p":$LD_LIBRARY_PATH export LD_LIBRARY_PATH INCLUDE="/opt/sybase/OCS-15_0/include":$INCLUDE export INCLUDE LIB="/opt/sybase/OCS-15_0/lib":$LIB export LIB SYBASE_JRE="/opt/sybase/shared/jre142_013" export SYBASE_JRE SYBASE_SYSAM2="SYSAM-2_0" export SYBASE_SYSAM2 PATH="/opt/sybase/UAF-2_0/bin":$PATH export PATH SYBASE_UA="/opt/sybase/UAF-2_0" export SYBASE_UA PATH="/opt/sybase/DBISQL/bin":$PATH export PATH SCROOT="/opt/sybase/shared/sybcentral43" export SCROOT PATH="/opt/sybase/ASEP/bin":$PATH export PATH PATH="/opt/sybase/RPL-15_0/bin":$PATH export PATH SYBASE_WS="WS-15_0" export SYBASE_WS PATH="/opt/sybase/ASE-15_0/jobscheduler/bin":$PATH export PATH LD_LIBRARY_PATH="/opt/sybase/DataAccess/ODBC/lib":$LD_LIBRARY_PATH export LD_LIBRARY_PATH SYBROOT="/opt/sybase" export SYBROOT我们要把上述内容复制到用户环境变量文件~/.bashrc 当中。同时,最好能同时添加环境变量
DSQUERY
和 DSLISTEN 的值:
1
Chapter
export DSQUERY=SEANLINUX export DSLISTEN=SEANLINUX
这两个环境变量的值的好处在于使用 isql 连接本机数据库时,不用再输入-s 参数及其值。
这些环境变量非常重要,Sybase ASE 的启动和运行,基本上都离不开这些环境变量。Sybase
的软件当中,所有环境变量在所有平台上全都是大写。UNIX 平台使用$前缀表示环境变量,Windows
平台使用%符号对来描述环境变量。几个通用的环境变量的作用和含义如下:
1
.SYBASE:安装 Sybase 软件使用的根目录。
2
.DSQUERY:本机上的客户端连接时用以连接的默认服务名。
3
.DSLISTEN:本机上的服务器用以监听的服务名,如果在 Runserver 文件中没有指定-s 值
时,就启用这个环境变量的值。
4
.SYBASE_ASE:Adaptive Server Enterprise 服务器文件存放的子目录名。
5
.SYBASE_EJB:EJB 服务器文件存放的子目录名。
6
.SYBASE_OCS:Open Client/Open Server(简称 OCS)文件存放的子目录名。
7
.SYBASE_SYSAM:Software Asset Manager(SAM)文件存放的子目录名。
在$SYBASE 目录下边有一系列子目录,有一些是产品相关的,有一些是公用的。某些公用的
子目录,比如字符集(charsets)、排序(collate)、本地化(locales)、已安装(installed)可能包含
多个 Sybase 产品(如 ASE、ASA(SQL Anywhere)、IQ(Adaptive Server IQ)、RS(Replication Server)
以及其他)的相关信息。与具体产品相关的那些环境变量的值通常会带有产品的名字和相应的主版
本号(如 ASE-15_0 或 REP-15_0)。下边这些子目录名就是安装 ASE 15.0 的时候产生的。
ASE-15_0
:它对应于$SYBASE_ASE,是 ASE 15.0 产品的顶级子目录,显然 ASE 12.5 将
对应于目录 ASE-12_5。
EJB-15_0
:它对应于$SYBASE_EJB,是 EJB 15.0 安装的顶级子目录。
jconnect-5_5
:是 ASE jdbc 驱动的安装目录。
jutils-2_0
:是 jisql、Ribo 工具的安装目录。
OCS-15_0
:对应于$SYBASE_OCS 是 Open Client/Open Server 15.0 安装的顶级子目录,
Open Client/Open Server 12.5.x
对应的目录应该是 OCS-12_5。
SYSAM-1_0
:是 SAM 的顶级子目录。
1.2.6 手动创建服务器
我们完全可以用命令行来创建 ASE 中的几个服务器程序。
以 Linux 为例,假设安装完 Sybase ASE 以后,SYBASE 指向目录:/testarea/ase1502/ase1502_
esd1_c2
。我们在目录$SYBASE/ASE-15_0/bin 下边创建一个配置文件,名为 sqlsrv.rs:
sybinit.release_directory: /testarea/ase1502/ase1502_esd1_c2 sybinit.product: sqlsrv
1 Chapter sqlsrv.server_name: BJEASLINUX1B sqlsrv.new_config: yes sqlsrv.do_add_server: yes sqlsrv.network_protocol_list: tcp sqlsrv.network_hostname_list: bjeaslinux1 sqlsrv.network_port_list: 5000 sqlsrv.server_page_size: USE_DEFAULT sqlsrv.force_buildmaster: no sqlsrv.master_device_physical_name: /testarea/ase1502/ase1502_esd1_c2/data/master.dat sqlsrv.master_device_size: 120 sqlsrv.master_database_size: 50 sqlsrv.errorlog: USE_DEFAULT sqlsrv.do_upgrade: no sqlsrv.sybsystemprocs_device_physical_name: /testarea/ase1502/ase1502_esd1_c2/data/sybsystemprocs.dat sqlsrv.sybsystemprocs_device_size: 195 sqlsrv.sybsystemprocs_database_size: 190 sqlsrv.sybsystemdb_device_physical_name: /testarea/ase1502/ase1502_esd1_c2/data/sybsystempdb.dat sqlsrv.sybsystemdb_device_size: USE_DEFAULT sqlsrv.sybsystemdb_database_size: USE_DEFAULT sqlsrv.default_backup_server: BJEASLINUX1_BS
我们注意到这个文件是为 sqlsrv 服务而创建的,第二行 sybinit.product 就表明该文件所创建的
服务器。
server_name
指的就是创建的服务名,它将被注册到 interfaces 文件当中。
在这里,我们依次指定了所需要的网络相关参数(支持的协议、主机名、端口号)、服务器逻
辑页大小(这里采用默认大小,实际上为 2KB),然后是 master 数据库的设备物理位置、大小以及
数据库本身大小(上述值比第 1 节中的推荐值要大一些),然后指定 sybsystemprocs 和 sybsystemdb
两个数据库的设备位置、设备文件大小以及数据库的大小。最后,还要指定 sqlsrv 服务对应的备份
服务器 default_backup_server 的名字,这里是默认值 BJEASLINUX1_BS。
接着在此目录下,首先加载 SYBASE.sh 中定义的有关环境变量,然后通过可执行程序 srvbuild
来创建相应服务。
[xionghe@bjeaslinux1 bin]$source ../../SYBASE.sh [xionghe@bjeaslinux1 bin]$./srvbuild -r sqlserver.rs Building Adaptive Server 'BJEASLINUX1B': Writing entry into directory services... Directory services entry complete. Building master device... Master device complete.
Writing RUN_BJEASLINUX1B file... RUN_BJEASLINUX1B file complete. Starting server...
1
Chapter
sysprocs device and sybsystemprocs database created.
Running installmaster script to install system stored procedures... installmaster: 10% complete. installmaster: 20% complete. installmaster: 30% complete. installmaster: 40% complete. installmaster: 50% complete. installmaster: 60% complete. installmaster: 70% complete. installmaster: 80% complete. installmaster: 90% complete. installmaster: 100% complete. installmaster script complete. Creating two-phase commit database... Two phase commit database complete.
Installing common character sets (Code Page 437, Code Page 850, ISO Latin-1, Macintosh and HP Roman-8)...
Character sets installed.
Setting server name in Adaptive Server... Server name added.
Server 'BJEASLINUX1B' was successfully created. [xionghe@bjeaslinux1 bin] isql –Usa
1> sp_password null, 'sybase1', sa 2> go
Password correctly set. (return status = 0)
最终使用 sp_password,将 sa 用户的密码设置为 sybase1。
创建一个 XP Server,配置文件 xp.rs:
sybinit.release_directory: /testarea/ase1502/ase1502_esd1_c2 sybinit.product: xp xp.server_name: BJEASLINUX1_XP xp.new_config: yes xp.do_add_xp_server: yes xp.do_upgrade: no xp.network_protocol_list: tcp xp.network_hostname_list: bjeaslinux1 xp.network_port_list: 5003 sqlsrv.related_sqlsrvr: BJEASLINUX1B sqlsrv.sa_login: sa sqlsrv.sa_password: sybase1这里需要提醒的是,为避免出问题,最好创建的服务器名都采用大写的形式,NT 平台也不例
外,如这里将 XP 服务器名设为 BJEASLINUX1_XP,而不是小写形式 bjeaslinux1_xp。
创建备份服务器,其配置文件 backupsvr.rs 如下:
sybinit.boot_directory: /linuxtea4_rel1/ase1502_esd1_c2 sybinit.release_directory: /linuxtea4_rel1/ase1502_esd1_c21 Chapter sybinit.product: bsrv sqlsrv.sa_password: sqlsrv.sa_login: sa bsrv.do_add_backup_server: yes bsrv.server_name: BJEASLINUX1_BS bsrv.errorlog: /linuxtea4_rel1/ase1502_esd1_c2/ASE-15_0/install/bsrv.log bsrv.network_port_list: 5001 bsrv.network_hostname_list: bjeaslinux1 bsrv.network_protocol_list: tcp bsrv.character_set: cp850 bsrv.language: us_english bsrv.network_name_alias_list: bsrv.notes: bsrv.connect_retry_delay_time: 5 bsrv.connect_retry_count: 5 bsrv.addl_cmdline_parameters: bsrv.new_config: yes bsrv.do_upgrade: no
在这里,我们还可以指定备份服务器用到的字符集和语言集。
创建监控服务器 Monitor Server,其配置文件 mon.rs 内容如下:
sybinit.release_directory: /testarea/ase1502/ase1502_esd1_c2 sybinit.product: msrv msrv.server_name: BJEASLINUX1_MS msrv.new_config: yes msrv.do_add_monitor_server: yes msrv.do_upgrade: no msrv.network_protocol_list: tcp msrv.network_hostname_list: bjeaslinux1 msrv.network_port_list: 5004 msrv.errorlog: USE_DEFAULT sqlsrv.related_sqlsrvr: bjeaslinux1 sqlsrv.sa_login: sa sqlsrv.sa_password: sybase1
创建过程如下:
[xionghe@bjeaslinux1 bin]$ ./srvbuild -r mon.rs Building Monitor Server 'BJEASLINUX1_MS': Writing entry into directory services... Directory services entry complete. Writing RUN_BJEASLINUX1_MS file... RUN_BJEASLINUX1_MS file complete.
Installing required script(s) in related Adaptive Server... installmon: 10% complete.
installmon: 20% complete. installmon: 30% complete.
1 Chapter installmon: 40% complete. installmon: 50% complete. installmon: 60% complete. installmon: 70% complete. installmon: 80% complete. installmon: 90% complete. installmon: 100% complete. Script executed. Starting server... Server started.
Server 'BJEASLINUX1_MS' was successfully created.
ASE
中的四个服务器程序都可以通过 srvbuild 命令及对应的配置文件手工创建,这种创建
过程还能加深对 ASE 服务器程序的理解,知道这些程序至少需要哪些有用的参数以及这些参数
的意义。
还可以注意到,UNIX/Linux 下首次安装完 ASE 以后,在$SYBASE/$SYBASE_ASE 目录下,
有下述几个资源文件:bsrv.res、js.res、msrv.res、sqlsrv.res、xp.res,它们分别对应 Backup Server、
JSAgent Server
、Monitor Server、Adaptive Server、XP Server。
这几个文件都可以作为参考。有时第一次安装,这几个资源文件对应的 Server 可能都没有创
建成功,在修改了具体的系统参数或环境变量,并清除文件$SYBASE/$SYBASE_ASE/interfaces 中
的内容以后,我们还可以通过 srvbuild 对它们进行重建。
在 Windows 下,没有 srvbuild 命令,但其实同样可以通过脚本和命令来进行手工创建。目前
这个命令并没有见诸文档,使用的是命令 sybatch.exe。在%SYBASE%\%SYBASE_ASE%\sample\
server
目录下边有几个示例资源文件,或者如同上边介绍的,第一次安装时装数据库服务,直接用
$SYBASE/$SYBASE_ASE
下边的几个资源文件作参考。
取一个样例文件 sybase_ase.res,内容如下:
## --- This is a "sybatch.exe" sample resource file. --- #
# This sample resource file will configure a new # 2k pagesize Adaptive Server "SYBASE". # sybinit.boot_directory: C:\Sybase sybinit.release_directory: C:\Sybase sqlsrv.do_add_server: yes sqlsrv.network_hostname_list: localhost sqlsrv.network_port_list: 5000 sqlsrv.network_protocol_list: tcp sqlsrv.notes: sqlsrv.connect_retry_delay_time: 5 sqlsrv.connect_retry_count: 5 sqlsrv.new_config: yes
1 Chapter # sqlsrv.server_name: SYBASE sqlsrv.sa_password: sqlsrv.sa_login: sa sqlsrv.server_page_size: 2k # # --- Set up master ---- # sqlsrv.master_device_physical_name: C:\Sybase\data\master.dat sqlsrv.master_device_size: 30 sqlsrv.master_db_size: 13 sqlsrv.disk_mirror_name: # # --- Set up sybsystemprocs ---- # sqlsrv.do_create_sybsystemprocs_device: yes sqlsrv.sybsystemprocs_device_physical_name: C:\Sybase\data\sysprocs.dat sqlsrv.sybsystemprocs_device_size: 132 sqlsrv.sybsystemprocs_db_size: 132 sqlsrv.sybsystemprocs_device_logical_name: sysprocsdev # # --- Set up sybsystemdb ---- # sqlsrv.do_create_sybsystemdb: yes sqlsrv.do_create_sybsystemdb_db_device: yes sqlsrv.sybsystemdb_db_device_physical_name: C:\Sybase\data\sybsysdb.dat sqlsrv.sybsystemdb_db_device_physical_size: 5 sqlsrv.sybsystemdb_db_size: 5 sqlsrv.sybsystemdb_db_device_logical_name: systemdbdev # sqlsrv.errorlog: C:\Sybase\ASE-15_0\install\sybase.log sqlsrv.sort_order: binary sqlsrv.default_characterset: cp850 sqlsrv.default_language: us_english # sqlsrv.preupgrade_succeeded: no sqlsrv.network_name_alias_list: sqlsrv.resword_conflict: 0 sqlsrv.resword_done: no sqlsrv.do_upgrade: no sqlsrv.characterset_install_list: sqlsrv.characterset_remove_list: sqlsrv.language_install_list: sqlsrv.language_remove_list: sqlsrv.shared_memory_directory: sqlsrv.addl_cmdline_parameters: sqlsrv.eventlog: yes sqlsrv.atr_name_shutdown_required: yes
1 Chapter sqlsrv.atr_name_qinstall: no # sybinit.charset: cp850 sybinit.language: us_english sybinit.resource_file: sybinit.log_file: sybinit.product: sqlsrv # sqlsrv.default_backup_server: SYBASE_BS # # optimize ASE # sqlsrv.do_optimize_config: yes sqlsrv.avail_physical_memory: 2048 sqlsrv.avail_cpu_num: 1 sqlsrv.tempdb_device_physical_name: C:\Sybase\data\tempdb.dat sqlsrv.tempdb_device_size: 100 sqlsrv.tempdb_database_size: 100 sqlsrv.application_type: MIXED
通常,要想一次构建成功,我们要作如下修改:
(1)安装目录保持一致。
sybinit.boot_directory: D:\Sybase sybinit.release_directory: D:\Sybase所有的 C:\Sybase 目录都得调成现在安装的位置,包括数据文件。
(2)sysprocs.dat 文件原值 132 太小,改成至少 136。
sqlsrv.do_create_sybsystemprocs_device: yes sqlsrv.sybsystemprocs_device_physical_name: D:\Sybase\data\sysprocs.dat sqlsrv.sybsystemprocs_device_size: 150 sqlsrv.sybsystemprocs_db_size: 150 sqlsrv.sybsystemprocs_device_logical_name: sysprocsdev(3)字符集,这个是大家比较关心的,默认的是 iso_1, english。
sqlsrv.sort_order: binary sqlsrv.default_characterset: utf8 sqlsrv.default_language: us_english字符集要一步调整到位,这样比图形界面安装要节省很多时间。以下是 Windows 下一次手动
创建 ASE 服务的输出结果:
D:\sybase\ASE-15_0\bin>sybatch.exe -r d:\SOFT\sybatch_ase.resCONNECTIVITY ERROR: Open Client message: 'ct_connect(): network packet layer: in ternal net library error: Net-Lib protocol driver call to connect two endpoints
1
Chapter
Failed to connect to the server - Error is 10061 //由于目标机器积极拒绝,无法连接 。
'.
CONNECTIVITY ERROR: Initialization of auditinit connectivity module failed. Running task: update Sybase Server entry in interfaces file.
Task succeeded: update Sybase Server entry in interfaces file. Running task: create the master device.
Building the master device ...Done
Task succeeded: create the master device.
Running task: update Sybase Server entry in registry. Task succeeded: update Sybase Server entry in registry. Running task: start the Sybase Server.
waiting for server 'SYBASE' to boot... waiting for server 'SYBASE' to boot... waiting for server 'SYBASE' to boot... waiting for server 'SYBASE' to boot... waiting for server 'SYBASE' to boot... Task succeeded: start the Sybase Server. Running task: create the sybsystemprocs database. sybsystemprocs database created.
Task succeeded: create the sybsystemprocs database. Running task: install system stored procedures. Installing system stored procedures : 10% complete... Installing system stored procedures : 20% complete... Installing system stored procedures : 30% complete... Installing system stored procedures : 40% complete... Installing system stored procedures : 50% complete... Installing system stored procedures : 60% complete... Installing system stored procedures : 70% complete... Installing system stored procedures : 80% complete... Installing system stored procedures : 90% complete... Installing system stored procedures : 100% complete... Task succeeded: install system stored procedures. Running task: set permissions for the 'model' database. Task succeeded: set permissions for the 'model' database. Running task: set local Adaptive Server name.
Task succeeded: set local Adaptive Server name. Running task: set the XP Server for the Adaptive Server. Task succeeded: set the XP Server for the Adaptive Server.
前边的 auditinit 错误不影响结果,可以忽略。
当然我们还可以使用图形界面方式来创建全新的 Server。
Windows
下,通过菜单命令 Sybase→Adaptive Server Enterprise→Server Config 进入创建 Server
的界面。
1
Chapter
UNIX/Linux
下,在拥有了合适的环境变量以后,进入$SYBASE/$SYBASE_ASE/bin,运
行./asecfg,如图 1-17 和图 1-18 所示。
图 1-17 配置 ASE 服务器
图 1-18 asecfg 首页面
你会发现 asecfg 不仅可以配置一个新的 Server,还可以进行升级,设置安装好的 Server 的字
符集相关信息,也可以编辑 interfaces 文件。
双击 Configure a new server 按钮,进入图 1-19。
图 1-19 选择待创建的 Server 类型
在图 1-19 中,我们选择要创建一个 Adaptive Server,并输入 Server 名字 SEANDEMO。然后
单击 OK 按钮,进入下一步,如图 1-20 所示。
我们在这里设定有关 Adaptive Server SEANDEMO 的一些参数:
ASE
页大小默认为 2KB,也可以设定为 4KB、8KB、16KB。我们这里设定为 4KB,意思
是 SEANDEMO 下各个数据库的每个物理页大小都为 4KB。
1 Chapter
Server
—SEANLINUX,它占用了默认的设备路径/opt/Sybase/data/master.dat。
Port number
:这里指定一个不同于默认端口 5000 的值—7000,避免冲突。
图 1-20 Adaptive Server 的相关参数
其他几个参数值都采用窗口中给定的默认值。然后单击“Build Server!”按钮,还会提示“端
口号可能有冲突”,确认以后,即可以进入 Server 的创建过程,如图 1-21 所示。
图 1-21 Server 创建成功
1 Chapter
这时并没有完全创建完,我们会发现,系统默认安装的是通用字符,代码页 850、437 等,而不是
我们通常所要的中文。单击 OK 按钮以后,系统会提示你是否要设置语言相关选项,如图 1-22 所示。
图 1-22 语言设置
假设我们这里将新建 Adaptive Server 中的语言设置成中文,则确认此提示,进入具体的语言
设置,如图 1-23 所示。
图 1-23 设置语言选项
我们将默认语言 English 改为 Chinese,将默认字符 cp850 改为 GB 18030-2000,对应的字符集
排序规则也相应地改为 GB18030 的二进制排序方式。单击 OK 按钮以后,即可完成中文字符集的
设置。当然,为了支持中文,也可将默认字符集改为 UTF-8。最后得到成功的提示。
我们可以在 Linux 机器 seanlinux 上进行简单的测试:
iihero@seanlinux:/opt/sybase/ASE-15_0/bin> isql -Usa -SSEANDEMO 保密字:
1
Chapter
2> go
1> insert into #t values('中文测试') 2> go (1 row affected) 1> select * from #t 2> go id --- 中文测试 (1 row affected) 1>
1.2.7 验证服务器是否在运行
一旦 ASE 服务器启动以后,管理员有必要确认 ASE 是否启动成功,服务器是否存在 ASE 服
务进程。
在 Windows 各平台下,我们有多种方式可以判断 ASE 是否已经启动。
第一种方法是在服务的控制台管理器里查看 Sybase SQL Server _ <servername>的状态是否为
已启动(这里 servername 是实际的 ASE 数据库服务名)。这种方法适用于通过服务方式来启动 ASE
的情形。
第二种方法是通过任务管理器,直接查看是否有我们需要的 sqlsrvr.exe 进程,如果 ASE 启动
成功,则该进程肯定存在。
第三种方法是通过查询对应端口号的进程 ID,再查询对应 ID 的进程名,看是否是我们启动的
ASE
服务器进程 sqlsrvr.exe。请看下边的查询过程:
C:\Documents and Settings\hex>netstat -ano | grep 5000
TCP 127.0.0.1:1369 127.0.0.1:5000 ESTABLISHED 5532 TCP 127.0.0.1:1370 127.0.0.1:5000 ESTABLISHED 5532 TCP 127.0.0.1:1371 127.0.0.1:5000 ESTABLISHED 5532 TCP 127.0.0.1:1372 127.0.0.1:5000 ESTABLISHED 5532 TCP 127.0.0.1:1373 127.0.0.1:5000 ESTABLISHED 5532 TCP 127.0.0.1:1374 127.0.0.1:5000 ESTABLISHED 5532 TCP 127.0.0.1:1375 127.0.0.1:5000 ESTABLISHED 5532 TCP 127.0.0.1:1376 127.0.0.1:5000 ESTABLISHED 5532 TCP 127.0.0.1:5000 0.0.0.0:0 LISTENING 7844 TCP 127.0.0.1:5000 127.0.0.1:1369 ESTABLISHED 7844 TCP 127.0.0.1:5000 127.0.0.1:1370 ESTABLISHED 7844 TCP 127.0.0.1:5000 127.0.0.1:1371 ESTABLISHED 7844 TCP 127.0.0.1:5000 127.0.0.1:1372 ESTABLISHED 7844 TCP 127.0.0.1:5000 127.0.0.1:1373 ESTABLISHED 7844 TCP 127.0.0.1:5000 127.0.0.1:1374 ESTABLISHED 7844 TCP 127.0.0.1:5000 127.0.0.1:1375 ESTABLISHED 7844 TCP 127.0.0.1:5000 127.0.0.1:1376 ESTABLISHED 7844 C:\Documents and Settings\hex>tasklist | grep 7844
1
Chapter
sqlsrvr.exe 7844 0 3,692 K C:\Documents and Settings\hex>tasklist | grep 5532
jsagent.exe 5532 0 400 K
我们先用 netstat -nao | grep 5000,查出所有与端口 5000 相关的进程。其中,ID 为 7844 的进程
正在监听(listening),顺便我们还查出了 5532 进程正在建立到 5000 商品上的连接。再通过 tasklist,
查询得到对应的进程名。
这里用到了 grep 命令,通过安装工具包 MKS Tookit,可以得到全套的仿 UNIX 命令集。
在我们的工作中,我还经常用到另外一个工具 Debugging tools for Windows,这个工具里边也
有功能很强大的命令 tlist(列出所有正在运行的线程信息)。前边的 tasklist 命令完全可以使用 tlist
来代替,非常方便。
在 UNIX/Linux 平台下,执行$SYBASE/$SYBASE_ASE/install 目录下的可执行程序 showserver,
可以得到已经运行的 ASE 服务器程序的列表。
1.2.8 修改 sa 用户口令
刚安装完的 ASE 一点安全性也没有,因为超级用户 sa 的口令密码为空,这无论是在测试环境
还是生产环境里都是无法接受的。
使用 isql 连接数据库:
D:\SybaseASE\ini>isql -Usa -Sxionghe
保密字为:
1>
然后直接运行以下代码:
1> sp_password null, 'sybase1', sa 2> go
Password correctly set. (return status = 0)
这样即把密码从空改为 sybase1 了。
也许有人会问,想把密码再改回 NULL,如何操作?
运行以下代码:
1> sp_password 'sybase1',null,sa 2> go Msg 10317, Level 14, State 1:Server 'XIONGHE', Procedure 'sp_password', Line 118:
The specified password is too short. Passwords must be at least 6 character(s) long. Msg 17720, Level 16, State 1:
1
Chapter
Error: Unable to set the Password. (return status = 1)
1>
这里提示说密码太短。ASE 安装时默认的密码长度至少为 6(sa 默认密码为 NULL,岂不是有
违此规定?有些自相矛盾)。解决的办法是修改此限制,首先将密码最短长度改为 0,再修改密码。
1> sp_configure minimum 2> go
Parameter Name Default Memory Used Config Value --- --- --- minimum password length 6 0
Run Value Unit Type --- --- --- 6 6 bytes dynamic (1 row affected)
(return status = 0)
> sp_configure "minimum password length", 0 2> go
Parameter Name Default Memory Used Config Value --- --- --- minimum password length 6 0
Run Value Unit Type --- --- --- 0 0 bytes dynamic (1 row affected)
Configuration option changed. ASE need not be rebooted since the option is dynamic.
Changing the value of 'minimum password length' does not increase the amount of memory Adaptive Server uses.
(return status = 0)
1> sp_password 'sybase1', null, sa 2> go
Password correctly set. (return status = 0)
即又将密码恢复为 null 了。
1.2.9 Runserver 文件
服务器创建完毕,会生成相应的 Runserver 文件,它包含了主要的启动参数。该文件通过这些
参数启动 dataserver 进程。这些参数主要有服务器名、master 设备的物理位置、errorlog 文件的物理
位置、页大小、共享内存的位置等。Runserver 文件的默认名为 RUN_<SERVERNAME>,统一创
1 Chapter
建在物理目录$SYBASE/$SYBASE_ASE/install 下。
值得注意的是,在 NT 平台下虽然也创建了 Runserver 文件,但是实际的启动参数都保存在注
册表中。我们从服务控制台里启动 ASE 的服务不会用到这个文件。这个批处理文件主要用于需要
紧急重启的场合,改变该文件当中的设置不会影响正常的服务启动。
也就是说,启动 ASE 所使用的 Runserver 文件和启动 Sybase ASE 服务所使用的参数来源于不
同的地方,前者的参数来源于文件本身,后者的参数来源于注册表,相应的注册表项是
HKEY_LOCAL_MACHINE\SOFTWARE\SYBASE\Server\<servername>\Parameters
NT
下的 Runserver 文件示例如下:
rem
rem Backup Server Information:
rem name: SEANLAPTOP rem server page size: 2048 rem master device size: 120
rem errorlog: D:\sybase\ASE-15_0\install\SEANLAPTOP.log rem interfaces: D:\sybase\ini\sql.ini
rem
D:\sybase\ASE-15_0\bin\sqlsrvr.exe -dD:\sybase\data\master.dat –sSEANLAPTOP -eD:\sybase\ASE-15_0\install\SEANLAPTOP.log -iD:\sybase\ini -MD:\sybase\ASE-15_0
UNIX
下的 Runserver 文件示例如下:
#!/bin/sh #
# ASE page size (KB): 2k
# Master device path: /opt/sybase/data/master.dat
# Error log path: /opt/sybase/ASE-15_0/install/SEANLINUX.log # Configuration file path: /opt/sybase/ASE-15_0/SEANLINUX.cfg # Directory for shared memory files: /opt/sybase/ASE-15_0 # Adaptive Server name: SEANLINUX
# /opt/sybase/ASE-15_0/bin/dataserver \ -d/opt/sybase/data/master.dat \ -e/opt/sybase/ASE-15_0/install/SEANLINUX.log \ -c/opt/sybase/ASE-15_0/SEANLINUX.cfg \ -M/opt/sybase/ASE-15_0 \ -sSEANLINUX \
需要注意的是,UNIX/Linux 对文件名是区分大小写的。
Runserver
中会用到下述参数:
-c
:配置文件.cfg 的位置和名称。
-d
:master 设备的位置和名称。
-e
:错误日志文件的位置和名称。
1 Chapter
-i
:interfaces 文件的位置和名称。
-M
:共享内存目录的路径。
-r
:master 镜像的路径。
-s
:服务器名。
-z
:服务器逻辑页的大小,只作文档记录用,实际启动用的页大小是配置文件中的页大小。
-m
:master 恢复模式,用于单用户启动 Server,以恢复出错的 Master 数据库。
-p
:密码恢复模式,用于在启动时生成一个 SSO 密码,便于恢复你想要的 sa 用户密码。
-u
:登录解锁模式,在启动时对一个已经锁定的用户进行解锁。
1.3 如何卸载已经安装的 Sybase ASE
有时候,我们还需要卸载已经安装的 Sybase ASE 数据库,原因可能多种多样,比如:
1
.数据库的安装位置不合要求。
2
.数据库的有关参数配置不理想。
3
.想抛弃旧版本的数据库,装一个新版本的数据库。
在 Windows 平台下,正确的使用方法是,先停掉所有的 ASE 相关服务:BCKServer、MONServer、
SQLServer
、Unified Agent 以及 XPServer。然后再通过添加/删除程序面板,来删除 Sybase ASE 数
据库,最后重启机器即可。
如果是手动删除,那么在停掉所有的 ASE 相关服务以后,通过运行 regedt32 进入系统注册表,
首先备份整个注册表。然后查找 Sybase 关键字,清除注册表中 Sybase ASE 数据库的相关注册项:
HKEY_LOCAL_MACHINE\SOFTWARE\Sybase\SQLServer
、HKEY_LOCAL_MACHINE\SYSTEM\
CurrentControlSet\Services\SYB_<servername>
、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Enum\Root\LEGACY_SYB_<servername>
等。
尤其是相关服务的注册项,如 LEGACY_SYBSQL_<servername>,在注册表中无法直接删除,
如图 1-24 所示。
图 1-24 删除服务项
这时,我们通过修改注册项的权限,让 Everyone 用户组能“完全控制”该注册项,从而可以
删除该项,如图 1-25 所示。其他服务相关注册项可采用同样的方法进行删除。
1
Chapter
图 1-25 设置删除服务项时的用户权限
清理完注册表相关项之后,重启机器,就可以直接删除 ASE 原有目录,完成 ASE 的卸载。
在 UNIX/Linux 平台下,通过 showserver 查询得到所有的 ASE 相关进程,退出这些进程,然
后手动删除 ASE 安装目录,即可卸载整个 ASE。
1.4 忘记了 sa 用户密码
这一节是专为粗心的 ASE 数据库管理员写的。对 ASE 数据库中的用户而言,最重要的用户
是 sa,在安装完之后,它的密码一般要熟记起来。当然也有可能忘了 sa 的密码,ASE 为管理员
提供了恢复和重置 sa 用户的密码的功能。这样不至于因为忘了 sa 的密码,就要重新安装整个数
据库。
解决遗忘 sa 密码的办法是:进入%SYBASE%\%SYBASE_ASE%\install 目录,你会发现有一个
文件,名为 RUN_<servername>.bat,这里<servername>为 SEANLAPTOP,这个文件就是启动 ASE
Server
的批处理文件,内容如下:
rem
d:\ASE150\ASE-15_0\bin\sqlsrvr.exe -dd:\ASE150\data\master.dat -sSEANLAPTOP -ed:\ASE150\ASE-15_0\install\ SEANLAPTOP.log -id:\ASE150\ini -Md:\ASE150\ASE-15_0
我们在这个文件的末尾加上-psa:
rem
d:\ASE150\ASE-15_0\bin\sqlsrvr.exe -dd:\ASE150\data\master.dat -sSEANLAPTOP -ed:\ASE150\ASE-15_0\install\ SEANLAPTOP.log -id:\ASE150\ini -Md:\ASE150\ASE-15_0 -psa
1
Chapter
然后运行这个批处理文件,你会发现命令行窗口中有大量的提示信息:
……
ta cache for database 'sybsystemprocs'.
00:00000:00001:2008/08/29 21:42:12.90 kernel Failed to log the current message in the Windows NT event log
00:00000:00001:2008/08/29 21:42:12.90 server Completed cleaning up the default data cache for database 'sybsystemprocs'.
00:00000:00001:2008/08/29 21:42:12.90 kernel Failed to log the current message in the Windows NT event log
00:00000:00001:2008/08/29 21:42:12.90 server Checking external objects. 00:00000:00001:2008/08/29 21:42:12.90 kernel Failed to log the current message in the Windows NT event log
00:00000:00001:2008/08/29 21:42:12.93 server The transaction log in the databas e 'sybsystemprocs' will use I/O size of 2 Kb.
00:00000:00001:2008/08/29 21:42:12.93 kernel Failed to log the current message in the Windows NT event log
00:00000:00001:2008/08/29 21:42:16.10 server Database 'sybsystemprocs' is now o nline.
00:00000:00001:2008/08/29 21:42:16.10 kernel Failed to log the current message in the Windows NT event log
New SSO password for sa:kdoatlovavedb7
00:00000:00010:2008/08/29 21:42:16.29 kernel network name sean-laptop, interfac e IPv4, address 192.168.1.3, type nlwnsck, port 5000, filter NONE
00:00000:00010:2008/08/29 21:42:16.29 kernel Failed to log the current message in the Windows NT event log
00:00000:00001:2008/08/29 21:42:17.00 server The wash size of the 2K buffer poo l in cache default data cache has been changed from 1638 Kb to 984 Kb due to a c hange in the size of the pool.
00:00000:00001:2008/08/29 21:42:17.00 kernel Failed to log the current message in the Windows NT event log
00:00000:00001:2008/08/29 21:42:17.01 server Recovery has tuned the size of '16 K' pool in 'default data cache' to benefit recovery performance. The original co nfiguration will be restored at the end of recovery.
00:00000:00001:2008/08/29 21:42:17.01 kernel Failed to log the current message in the Windows NT event log
00:00000:00001:2008/08/29 21:42:17.01 server Recovery has tuned the size of '2K ' pool in 'default data cache' to benefit recovery performance. The original con figuration will be restored at the end of recovery.
00:00000:00001:2008/08/29 21:42:17.01 kernel Failed to log the current message in the Windows NT event log
… …
你会发现中间带黑体的那一行(找里边的内容可能需要一点耐心,实在不行,可以将输出重定
向到一个文本文件,在这个文件文件里查找 New SSO 的特定字符串),系统将 sa 用户的密码重置
1
Chapter
为 kdoatlovavedb7,有了这个密码,就可以使用 isql 登录并修改 sa 的密码了,如要将 sa 的密码改
为 sybase1,然后关闭 ASE 服务器,命令如下:
C:\Documents and Settings\hex>isql -Usa -Pkdoatlovavedb7 1> sp_password 'kdoatlovavedb7', 'sybase1', sa
2> go 口令设置正确 (return status = 0) 1> quit
C:\Documents and Settings\hex>isql -Usa -Psybase1 1> shutdown
2> go
服务器 SHUTDOWN 被请求 ASE正在终止此进程 CT-LIBRARY error:
ct_results(): 网络包层: 内部 net library 错误: 由于断开,使得 Net-Library 的操作中断