4. 基本用法

本节旨在帮助您快速入门 Sybase 特有的部分。您仍然需要了解一些关于关系数据库、创建表、设计数据库等方面的知识。您将学习如何启动和停止服务器、执行命令以及一些关于备份的知识。

4.1. 启动和停止服务器

启动服务器使用 startserver 工具。在安装过程中,会创建一个名为RUN_然后是服务器名称的脚本文件。由于文件名会因您的服务器名称而异,因此通常将其称为RUN_SERVER文件。要启动服务器,请确保所有环境变量(特别是$SYBASE)都已正确设置。使用 showserver 检查服务器是否已在运行 - 两次启动服务器没有风险,但您可能会收到一些关于主设备已被使用的令人困惑的错误消息。假设服务器未启动,请执行以下操作:startserver -f RUN_SYBASE假设您在安装时将服务器命名为 "SYBASE",这应该会让以时间戳开头的各种消息滚动显示在屏幕上,并希望以关于默认字符集和排序顺序的消息结束。如果没有,请仔细阅读消息以查找任何错误。如果它们已滚动出您的屏幕缓冲区,您可以读取错误日志文件,该文件位于与RUN_SERVER文件相同的目录中。

4.2. 连接到服务器

一旦服务器启动并运行,您就可以尝试连接到它。首先使用最简单的工具,这也是 Sybase 管理和使用的传统实用程序:isql。它需要许多参数,如实用程序指南中所列,但我们只需要几个。像这样进行您的第一次连接:isql -Usa -P -Sserver-S参数替换为您在安装过程中选择的逻辑服务器名称。

Caution记住更改空的 sa 密码
 

参数-U是登录名,我们在这里以 "sa" 登录,它是 Sybase 相当于 "root" 的用户。 使用-P参数指定的密码为空,这是此用户的默认密码。 应该很明显,您不希望将您最强大的登录名保留为空密码。请注意,ASE 登录名独立于 OS 登录名和密码。

结果应该是一个简单的提示符

1>

如果连接不成功,请确保服务器正在运行,并且端口已通过 netstat -na 报告为 LISTENING 状态。

现在您可以开始输入 T-SQL 命令,并使用关键字 "go" 作为终止符。
isql -Usa -P -SSERVER
1> select @@version
2> go
 -----------------------------------------------------------------------------------------------------------------------------------------------
 Adaptive Server Enterprise/12.5.0.3/EBF 10980 ESD#1/P/Linux Intel/Linux 2.4.18-18.7.xsmp i686/rel12503/1919/32-bit/OPT/Mon Mar 24 20:49:12 2003

(1 row affected)

4.3. 您的第一个有用的命令

首先要做的是为 "sa" 设置密码,然后创建一个权限较低的新登录名,我们可以用它来玩。默认情况下,您在登录后会被放置在master数据库中。我们将使我们的新登录名默认为示例数据库,以避免错误地在 master 数据库中创建对象。 因此,我们首先通过调用存储过程 sp_password 并使用旧密码和新密码作为参数来为 sa 设置密码
1> exec sp_password NULL, "Secr3t"
2> go
Password correctly set.
(return status = 0)
现在 sa 有了一个新密码,从旧的 null 默认值更改而来。我们使用 sp_addlogin 添加一个新登录名
1> exec sp_addlogin "sybtest", "SomePass"
2> go
Password correctly set.
Account unlocked.
New login created.
(return status = 0)
我们可以通过告诉 isql 使用 exit 命令断开连接来注销。
1> exit
由于这不是 T-SQL 命令,而是针对 isql 的指令,因此我们无需使用“go”终止。

isql命令也可以被非交互地使用以适用于T-SQL的脚本到服务器。与服务器一起提供的脚本之一是installpubs2,位于脚本目录中。 这是一个非常简单的示例数据库,适用于书店或出版社,保存有关书籍、作者、出版商等的数据。 它用于 Sybase 手册和培训课程,也用于一些 SQL 书籍。 除了他们添加的 Northwind 示例数据库之外,Microsoft SQL Server 还包含一个类似的数据库。 为了创建数据库,请使用-i参数来读取脚本。 首先查看该文件,以便您了解其正在执行的基本操作。 它将创建一个名为 pubs2 的数据库以及几个填充有数据的表。 现在是执行脚本的时候了。 我们将以 sa 的身份执行此操作,sa 也将成为数据库的所有者(dbo - 数据库所有者)。 我们将输出重定向到我们称为errors.out的文件。 该-e参数告诉 isql 也将 T-SQL 命令回显到同一文件中,从而提供更多输出,但可以更轻松地将任何错误与导致它们的命令相匹配。
bash$ cd $SYBASE/$SYBASE_ASE/scripts
bash$ isql -Usa -PSecr3t -SSYBASE -iinstallpubs2 -e -oerrors.out
为了允许我们的新登录名拥有此示例数据库的完整权限,我们将数据库的所有权更改为新登录名。 让我们看看如何使用 sp_changedbowner 放弃数据库
isql -Usa -PSecr3t -SSYBASE
1> use pubs2
2> go
1> exec sp_changedbowner sybtest
2> go
DBCC execution completed. If DBCC printed error messages, contact a user with
System Administrator (SA) role.
Database owner changed.
(return status = 0)
我们现在可以作为我们的新用户以交互方式登录并检查已安装的内容。
1> exit
bash$ isql -Usybtest -PSomePass -SSYBASE
1> use pubs2
2> go
1> sp_help
2> go
[Lots of output deleted - the command displays all objects in the current database]
(请注意,我们实际上不必使用“exec”来执行存储过程,服务器会假定任何非关键字都是过程。)
1> quit
作为 sa 登录名的最后一个命令,为了使我们继续使用新的登录名时生活更加方便 - 我们使新的 pubs2 数据库成为默认数据库。
1> exit
bash$ isql -Usa -PSecr3t -SSYBASE
1> sp_modifylogin sybtest, "defdb", "pubs2"
2> go
Default database changed.
(return status = 0)

4.4. 停止服务器

为了以受控方式停止服务器,请以 sa 身份登录并发出 shutdown 命令。
bash$ isql -Usa -PSecr3t -SSYBASE
1> shutdown
2> go
Server SHUTDOWN by request.
The SQL Server is terminating this process.
CT-LIBRARY error:
        ct_results(): network packet layer: internal net library error: Net-Library operation terminated due to disconnect
您将立即断开连接,并且 isql 会打印一条消息以警告您这一事实。 您可以检查错误日志,查找有关服务器已关闭的消息,并且可以使用 showserver 验证该进程是否不再运行。

4.5. 维护

作为数据库管理员的最重要方面之一可能是备份。 关系数据库的 I/O 负载意味着硬盘驱动器几乎没有休息时间,一旦驱动器发生故障,数据库就需要进行严重的灾难恢复。 即使是错误输入的命令也可能导致需要恢复到以前的备份生成。 为此,使用了一个单独的服务器应用程序,称为备份服务器。 默认情况下,它与您的服务器同名,扩展名为 BCK。 使用 startserver -f RUN_SYBASE_BCK 启动它。 键入到 isql 提示符中的某些命令将从数据服务器进程转发到备份服务器进程,然后它将继续进行实际备份(在 Sybase 术语中,这是一个数据库转储),而数据库中的处理过程将继续不受影响。 您应该安排数据库转储(通常通过 cron)在低活动时段运行。 典型的完整数据库备份只需这样完成
isql -Usa -PSecr3t -SSYBASE
1> dump database pubs2 to "/mnt/backup/pubs2.bkp"
2> go
Backup Server session id is:  8.  Use this value when executing the
'sp_volchanged' system stored procedure after fulfilling any volume change
request from the Backup Server.
Backup Server: 4.41.1.1: Creating new disk file /mnt/backup/pubs2.bkp.
Backup Server: 6.28.1.1: Dumpfile name 'pubs2011710275E  ' section number 1
mounted on disk file '/mnt/backup/pubs2.bkp'
Backup Server: 4.58.1.1: Database pubs2: 396 kilobytes DUMPed.
Backup Server: 4.58.1.1: Database pubs2: 602 kilobytes DUMPed.
Backup Server: 3.43.1.1: Dump phase number 1 completed.
Backup Server: 3.43.1.1: Dump phase number 2 completed.
Backup Server: 3.43.1.1: Dump phase number 3 completed.
Backup Server: 4.58.1.1: Database pubs2: 610 kilobytes DUMPed.
Backup Server: 3.42.1.1: DUMP is complete (database pubs2).
1>
您可以使用 load database 命令将其恢复到您的数据库中。

随着时间的推移,当用户在数据库中进行修改、添加、删除或更改数据时,所有操作都会被写入事务日志。 这会跟踪更改,以便可以通过隐式或显式回滚来撤消这些更改,或者用于启动时的撤消/重做阶段。 出于多种原因,此事务日志通常应放置在自己的设备上,但是可以在单个混合日志和数据设备上创建一个小型测试数据库。

除了扩展 I/O 的性能优势之外,将日志和数据分开的一个原因是出于恢复目的。 您可以根据您的恢复需求,定期将此更改日志转储到数据库。 结合完整的数据库转储,此事务日志转储现在构成增量备份。 如果需要还原,您可以加载数据库转储,然后加载所有后续事务日志转储。 甚至还有一个“until_time”选项可用于 load 命令,使您可以指定要还原到的确切时间,从而放弃在该时间之后所做的任何错误。 转储日志的语法类似
isql -Usa -PSecr3t -SSYBASE
1> dump transaction database to "/mnt/backup/dbtrandump2003_08_27_T23_32.bkp"
2> go
请注意,我们无法对 pubs2 执行此操作,因为它不是使用单独的日志片段创建的。

除非您不断转储事务日志,否则它会不断增长,直到填满其空间并开始报告错误 1105。 在情况未解决的情况下,用户将被暂停并显得挂起。 将事务日志转储到文件或磁带,或者如果您不使用增量备份,则只需截断它。
isql -Usa -PSecr3t -SSYBASE
1> dump transaction pubs2 with truncate_only
2> go
1>
您应该阅读的其他维护命令包括

4.6. 其他 Sybase 实用程序

还有一些其他外部实用程序很有用。 基于 Java 的应用程序需要安装 JDBC 驱动程序,它包含在产品名称 jConnect 下的较新服务器中。 还有一个单独的 CD,随附 ASE 11.9.2.x 和 12.5.0.x,名为 "PC Client CD"。 这是一组基于 Windows 的管理工具,将 CD 放入您的 Windows 框中,安装程序将启动,以便您可以从 CD 中选择组件。