远程Sybase数据库技术支持,联系手机:13811580958,QQ:289965371!

 

随着Sybase被完全整合到SAP下,Sybase原来的支持网站被SAP Support Portal取代。
只有购买了SAP服务的用户才能使用账号登录SAP Support Portal进行介质下载、补丁升级、报Incident等。
目前,原Sybase所有产品(包括:Adaptive Server Enterprise、Sybase IQ、Replication Server、PowerDesigner等)的官方手册仍然可以从http://infocenter.sybase.com/help/index.jsp进行浏览或下载。暂不清楚该网站http://infocenter.sybase.com/help/index.jsp何时会被完全迁移到SAP Support上!
Sybase官方手册英文版有html和pdf两种格式,而中文版手册只有pdf一种格式。为了国内Sybase用户更方便、快捷地搜索Sybase常见产品的官方手册内容,特将中文版Sybase官方手册转为html格式!
Sybase产品官方手册中文版的html格式所有内容的版权归SAP公司所有!本博客站长是Sybase数据库的铁杆粉丝!

如有Sybase数据库技术问题需要咨询,请联系我!

  QQ :289965371 点击这里给我发消息
  Email:

以下官方手册为ASE 15.7 ESD#2中文版:

  1. 新增功能公告 适用于 Windows、Linux 和 UNIX 的 Open Server 15.7 和 SDK 15.7
  2. 新增功能摘要
  3. 新增功能指南
  4. ASE 15.7 发行公告
  5. 配置指南(windows)
  6. 安装指南(windows)
  7. 参考手册:构件块
  8. 参考手册:命令
  9. 参考手册:过程
  10. 参考手册:表
  11. Transact-SQL® 用户指南
  12. 系统管理指南,卷 1
  13. 系统管理指南,卷 2
  14. 性能和调优系列:基础知识
  15. 性能和调优系列:锁定和并发控制
  16. 性能和调优系列:监控表
  17. 性能和调优系列:物理数据库调优
  18. 性能和调优系列:查询处理和抽象计划
  19. 性能和调优系列:使用 sp_sysmon 监控 Adaptive Server
  20. 性能和调优系列:利用统计分析改进性能
  21. 程序员参考 jConnect for JDBC 7.0.7
  22. Adaptive Server Enterprise 中的 Java
  23. 组件集成服务用户指南
  24. Ribo 用户指南
  25. 内存数据库用户指南
  26. Sybase Control Center for Adaptive Server® Enterprise
  27. 安全性管理指南
  28. 实用程序指南

 


< 上一个 | 内容 | 下一步 >

配置 SMP 环境


配置 SMP 环境与配置单处理器环境相似,尽管 SMP 计算机的功能 通常更为强大而且可以处理更多的用户。 SMP 环境提供了控制引擎 数的其它功能。


线程池


线程池将 CPU 资源组合在一起,它包含用于执行与其关联的 Adaptive Server 任务的线程。线程承载执行用户任务、运行特定作 业 (如信号处理)和处理来自工作队列的请求的引擎。 Adaptive Server 包含系统定义的线程池和用户创建的线程池 (如果有)。

image

image

注释 只有在 Adaptive Server 配置为线程模式时,线程池才可用。 包含引擎的线程池称为引擎池,它们执行具有内核进程 ID (KPID)

Adaptive Server 任务。 Adaptive Server 将引擎指派给引擎池中的 每个线程。

Adaptive Server 支持两种类型的线程:

引擎 (或多路复用)线程 — 执行数据库查询进程,可在多个 数据库进程之间共享。多路复用线程运行与其它任务共享一个 或多个线程的任务。缺省况下,用户和服务任务是多路复用型 的。多路复用任务在消耗完定义的时间片后或阻塞时必须退让。 因为引擎会指派给所有多路复用线程,所以多路复用线程相当 于进程模式中的引擎。

运行完毕 (RTC) 线程 — 由系统任务使用,不在多个任务之间共 享。 RTC 线程运行单个任务,直到任务完成,不受 Adapative Server 调度的影响。

RTC 线程运行的任务在线程完成之前不能自行从线程的日程表 中删除,不因时间片退让,在阻塞时仍保持与线程的连接。如 果所有 RTC 线程当前都在运任务,那么 RTC 任务在线程执行任 务期间可能需要等待。

创建线程池时,不能指定线程的类型。用户创建的线程池始终是多 路复用型的。


Adaptive Server 包含以下系统定义的线程池:

syb_default_pool — 缺省引擎线程池。 syb_default_pool 中的每个 线程都是引擎。所有用户任务和所有多路复用型系统任务 (如 管家)都在 syb_default_pool 中运行。然而,您可以通过创建其 它线程池,将一些任务从 syb_default_pool 中移出。

syb_system_pool — 用于系统线程的 RTC 线程池。syb_system_pool 中的每个线程都专用于运行一个特定任务。 syb_system_pool 至 少包含一个用于系统时钟和其它异步信号的线程。所有 I/O 处 理线程都在 syb_system_pool 中运行。

syb_blocking_pool — 一个 RTC 池,Adaptive Server 使用它处理多 路复用任务的阻塞调用请求,阻塞调用请求通常是指可能导致 多路复用 (或引擎)线程阻塞较长时间的操系统调用。 syb_blocking_pool 中的线程消耗的 CPU 资源通常很少。

线程池由它们的属性定义,一些属性是由 Adaptive Server 自动指派 的,其它属性由用户在创建线程池时确定。线程池属性包括:

ID — 系统指派给线程池的 IDAdaptive Server 在启动期间可能 会为线程池指派新的 ID,因此 Sybase 建议您不要对线程池 ID 进行静态引用。

Name — 线程池名称。只有系统线程池能以 syb_ 前缀开头。

Description — (可选)线程池说明,最多 255 个字符。

Type — 它的值只能是 Engine RTC 中的一个。

Current number of threads — 池当前包含的线程数 (在池更改大 小时可能会有一小段时间不同于池中配置的线程数)。

Configured number of threads — 为线程池配置的线程数。

idle timeout — 线程空闲多长时间后进入休眠状态 (以微秒为 单位)。

Adaptive Server 在配置文件中记录线程池配置。下面的示例显示了 三个缺省线程池 ( syb_blocking_poolsyb_system_pool syb_default_pool ) 和一个用户创建的名为 big_pool 的线程池:

[Thread Pool:big_pool]

description = Big thread pool number of threads = 15


[Thread Pool:syb_blocking_pool] number of threads = 20


[Thread Pool:syb_default_pool] number of threads = 1


可使用 sp_helpthread monThreadPool 监控表查看当前的线程池配 置。在启动 Adaptive Server 之前可在配置文件中编辑线程池信息, 也可以使用 alter thread pool 更改线程池配置。

请参见 《系统管理指南,卷 2》中的第 3 章 “配置内存”。


管理引擎


在进程模式中配置引擎


为了获得 SMP 系统的最佳性能,必须保持正确的引擎数。

一个引擎代表一定数量的 CPU 处理能力。它是像内存一样的可配置 资源。


image

注释 Adaptive Server 使用一种负载平衡算法在引擎间均匀地分配 负载。在进程模式中,如果服务器连接使用组件集成服务 (CIS), 它们就会关联到单个引擎,并且不能从一个引擎迁移到另一引擎。 该限制不适用于线程模式。

image


第一次安装 Adaptive Server 时,系统配置为单个引擎。若要使用多 个引擎,请在第一次重新启动服务器时重新设置引擎数。在其它时 间,您可能还要重设置引擎数。例如,您可能需要设置:

如果当前性能不能满足应用程序的要求,并且计算机上有足够 的 CPU,则需要增加引擎数。

如果 Adaptive Server 没有完全利用现有引擎,则需减少引擎数。 运行引擎时会涉及到开销, Adaptive Server 运行不需要的额外 引擎时会浪费资源。


在线程模式中配置引擎


可在配置文件中编辑线程池信息,也可以使用 create thread poolalter thread pool drop thread pool 管理线程池。请参见 45 页的 “配置线程池

max online engines 控制 Adaptive Server 可用的引擎总数。


可以使用 sp_configure 重新设置 max online engines。例如,若要将引 擎数设置为 3,请发出:

sp_configure "max online engines", 3

重新启动服务器以重新设置引擎数。


选择正确的引擎数


Adaptive Server 选择正确的引擎数很重要:

配置的引擎数不能多于 CPU。如果某个 CPU 脱机,可能需要使 用 sp_engine (在进程模式中)或 alter thread pool (在线程模式 中)减少引擎的数目。

在线程模式中, Adaptive Server 可以使用其它操作系统线程处 理 I/O 操作。在 I/O 较高的情况下,必须确保 Adaptive Server 具 有足够的 CPU,以便这些线程可正常运行。例如,如果 Adaptive Server 在具有 8 CPU 的系统上处理高 I/O,则在进程模式下可 能需要 8 个引擎才能获得最佳性能,但在线程模式下只需 7 个 引擎。如果 I/O 线程与引擎线程争用 CPU 时间,则性能可能会 显著降低。

引擎数应当与可用的 CPU 的数量一样。如果客户端或其它非 Adaptive Server 进程执行大量处理,那么每个 CPU 一个引擎可 能就太多了。操作系统可能会占其中一个 CPU 的一部分。

有足够的引擎。开始使用几个引擎,然后在现有 CPU 几乎被完 全使用时再添加引擎。如果引擎太少,则会超出现有引擎的处 理能力,并且可能会产生颈。

Sybase 建议您仅配置节点所需的引擎数。引擎多不一定能提高性能。 通常,对于 Adaptive Server 来说, 4 个引擎中 80% 处于忙碌状态时 比 8 个引擎中 40% 处忙碌状态时的性能要好。


启动和停止引擎


可以使用 sp_engine 启动和停止 Adaptive Server 引擎。


image

注释 Adaptive Server 必须配置为进程模式才能使用 sp_engineAdaptive Server 配置为内核模式时,可使用 createalter drop thread 配置内存池。请参见 45 页的 “配置线程池

image


监控引擎状态


在使引擎联机或脱机之前,请检查当前正在运行的引擎的状态。

sysengines status 列中包含以下一种状态:

online — 表示引擎处于联机状态。

in offline — 表示已经运行了 sp_engine offline。引擎仍被分配给服 务器,但它的任务正在迁移到其它引擎。

in destroy — 表示所有任务均已成功迁移出引擎,并且服务器正 在等待操作系统级别的任务释放引擎。

in create — 表示正在使引擎联机。

dormant — 表示 sp_engine offline 不能迁移该引擎中的所有任务。 如果任务自行终止 (由于超时),引擎会切换到永久脱机状 态。休眠的引擎只处理引起休眠状态的那些任务;这些引擎不 能用于处理任何其它任务。

以下命令显示了引擎数、状态、密切连接的任务数量以及引擎被联 机的时间:

select engine, status, affinitied, starttime from sysengines

engine status affinitied starttime

------ ------------ ----------- --------------------------

0

online

12

Mar

5

2007

9:40PM

1

online

9

Mar

5

2007

9:41PM

2

online

12

Mar

5

2007

9:41PM

3

online

14

Mar

5

2007

9:51PM

4

online

8

Mar

5

2007

9:51PM

5

in offline

10

Mar

5

2007

9:51PM


使用 sp_engine 启动和停止引擎

使用 sp_engine 可以动态停止或启动引擎。利用该命令,系统管理 员可以在处理要求随时间不断变化时,重新配置 CPU 资源。

sp_engine 的语法为:

sp_engine { online| [offline | can_offline] [, engine_id] | [ shutdown, engine_id]



sp_engine "online", 1

例如,以下命令使引擎 1 联机。消息是平台特定的 (在本例中,使 用了 Sun Solaris):

02:00000:00000:2001/10/26 08:53:40.61 kernel Network and device connection limit is 3042.

02:00000:00000:2001/10/26 08:53:40.61 kernel SSL Plus security modules loaded successfully.

02:00000:00000:2001/10/26 08:53:40.67 kernel engine 1, os pid 8624 online 02:00000:00000:2001/10/26 08:53:40.67 kernel Enabling Sun Kernel asynchronous disk I/O strategy

00:00000:00000:2001/10/26 08:53:40.70 kernel ncheck:Network fc0330c8 online

可以使用 can_offline 检查是否可以使特定的引擎脱机。例如,若要 检查是否可以使引擎 1 脱机,请使用:

sp_engine can_offline, 1

如果可以使指定的引擎脱机, sp_engine 指定返回码 0。如果不指定 engine_idsp_engine 将显示 sysengines engine_id 最高的引擎的 状态。

可以使引擎联机的前提条件是:max online engines 大于当前具有 online

状态的引擎的数目,并且有足够的 CPU 可用来支持额外的引擎。

若要使某个引擎脱机,请输入引擎 ID。例如,若要使引擎 1 脱机, 请使用:

sp_engine offline, 1

Adaptive Server 将等到与该引擎相关联的所有任务都完成后,才会 使该引擎脱机,并返回一条类似以下内容的消息:

01:00000:00000:2001/11/09 16:11:11.85 kernel Engine 1 waiting for affinitied process(es) before going offline

00:00000:00000:2001/11/09 16:16:01.90 kernel engine 1, os pid 21127 offline

不能使引擎 0 脱机。

sp_engine “shutdown” 将强制与指定引擎相关联的所有任务在五秒内 完成,然后关闭该引擎。引擎进入休眠状态时或者要使引擎脱机 时,可以使用 sp_engine shutdownsp_engine 会注销所有阻止引擎 正常脱机的任何其余进程。以下命令关闭引擎 1

sp_engine "shutdown", 1

请参见 《参考手册:过程》。


网络连接和引擎之间的关系


(仅进程模式)由于操作系统对 UNIX 上每个进程中文件描述符数 目的限制,引擎数的减少会使服务器可以具有的网络连接数减少。 在 Windows 平台上,络连接数与引擎数无关。

对于为服务器到服务器的远程过程调用创建的网络连接 (例如,到 Replication Server XP Server 的连接),没有办法对其进行迁移, 因此不能使正在管理这些连接之一的引擎脱机。


逻辑进程管理和 dbcc engine(offline)

如果正在使用逻辑进程管理将特定的登录或应用程序绑定到引擎组, 则需小心地使用 dbcc engine(offline)。如果将引擎组的所有引擎脱 机,则:

登录或应用程序可以在任何引擎上运行

一条建议消息被发送到登录到服务器的连接

因为当客户端登录时会指派引擎关联,所以如果使用 dbcc engine("online") 将引擎组中的引擎再次联机,则不迁移已登录的用户。


管理用户连接 (仅进程模式)

在进程模式期间,如果 SMP 系统支持网络关联迁移 (网络 I/O 从一 个引擎移动到另一个引擎的进程。支持此迁移的 SMP 系统允许 Adaptive Server 将网络 I/O 负载分配给所有引擎),每个引擎都处理 其自己各个连接的网络 I/O。登录时,Adaptive Server 会将客户端连 接任务从引擎 0 迁移到当前服务的连接数最的引擎。客户端任务将 在该引擎 (网络密切连接)上运行网络 I/O,直到该连接终止。若 要确定您的 SMP 系统是否支持此迁移,请参见所用平台的相应配置 文档。

通过将网络 I/O 分配给各个引擎,Adaptive Server 能够处理更多的用 户连接。每个进程对打开文件描述符的最大数的限制将不再限制连 接的数量。线性添更多的引擎会增加存储在全局变量

@@max_connections 中的文件描述符的最大数目。

如果增加了引擎数,重新启动服务器之后 Adaptive Server 会将增大 的 @@max_connections 值输出到标准输出和错误日志文件。可以使 用以下命令来查询该值:

select @@max_connections


这个数目表示操作系统对于您的进程所允许的最大文件描述符数, 减去以下由 Adaptive Server 使用的文件描述符:

引擎 0 上的每个主网络监听器使用的一个描述符 (该 Adaptive Server interfaces 文件条目中每一 “master”行使用一个描述符)

每个引擎的标准输出使用的一个描述符

每个引擎的错误日志文件使用的一个描述符

每个引擎的网络密切连接迁移通道使用的两个描述符

每个引擎用于配置的一个描述符

每个引擎用于 interfaces 文件的一个描述符 例如,如果为 Adaptive Server 配置了一个引擎,而且

@@max_connections 的值等于 1019,再增加一个引擎会将

@@max_connections 的值增大到 2039 (如果只有一个主网络监听器)。

可以配置 number of user connections 参数以利用增大的

@@max_connections 限制。不过,每次使用 max online engines 减少 引擎数时,也必须相应地调整 number of user connections 的值。对 max online engines number of user connections 的重新配置并不是动 态的,因此必须重新启动服务器才能更改这些配置值。请参见 《系 统管理指南,卷 1》中的第 5 章 “设置配置参数”。


image

注释 由于线程模式运行单个进程,因此每进程描述符限制将限制 Adaptive Server 可以支持的用户连接数。可能需要调整启动 Adaptive Server shell 中可用的文描述符数,这可能需要操作系统管理员帮 助提高硬限制。

image


影响 SMP 系统的配置参数

部分配置参数 (例如 spinlock ratio)仅适用于 SMP 系统。请参见

《系统管理指南,卷 1》中的第 5 章 “设置配置参数”。


配置 spinlock ratio 参数


Spinlock ratio 参数指定内部系统资源的数量,例如,由一个螺旋锁 保护的内部表或高速缓存中的行数。螺旋锁是一种简单的锁定机制, 用于阻止某一进程访问当前正由另一进程使用的系统资源。在释放 锁之前,试图问资源的所有进程必须等待。


Spinlock ratio 配置参数只在多重处理系统中有意义。仅配置了一个 引擎的 Adaptive Server 只有一个螺旋锁,而不管为 spinlock ratio 配 置参数指定的值是多少。

5-1 列出了由螺旋锁保护的系统资源以及可用来更改缺省 spinlock ratio 的配置参数。

5-1Spinlock ratio 配置参数

image

配置参数 被保护的系统资源

image

lock spinlock ratio 锁定散列桶的数量

image

open index hash spinlock ratio 索引元数据描述符散列表

image

open index spinlock ratio 索引元数据描述符

image

open object spinlock ratio 对象元数据描述符

image

partition spinlock ratio 内部分区高速缓存中的行

image

user log cache spinlock ratio 用户日志高速缓存

image


spinlock ratio 参数指定的值定义特定资源与螺旋锁的比率,而不 是螺旋锁的数量。例如,如果将 spinlock ratio 的值指定为 100,则 Adaptive Server 为每 100 个资源分配一个螺旋锁。由 Adaptive Server 分配的螺旋锁的数量取决于资源的总数和所指定的比率。为 spinlock ratio 指定的值越低,螺旋锁的数量就越高。

螺旋锁以循环方式或按顺序指派给系统资源:


循环指派


元数据高速缓存螺旋锁(由 open index hash spinlock ratioopen index spinlock ratio open object spinlock ratio 参数配置)使用循环指派方法。

5-2 说明了循环指派方法的一个示例,显示了螺旋锁和索引元数 据描述符之间的关系。


5-3:螺旋锁和索引描述符之间的关系

image

螺旋锁 1 保护索引描述符 159


image

螺旋锁 2 保护索引描述符 2610


索引 描述符 1


索引 描述符 2


索引 描述符 5


image

索引 描述符 6


索引 描述符 9


image

索引 描述符 10


索引

. . . 描述符

397


image

索引

. . . 描述符

398


image

螺旋锁 3 保护索引描述符 3711

索引 描述符 3

image

索引 描述符 7

image

索引 描述符 11


. . .

image

索引 描述符 399


image

螺旋锁 4 保护索引描述符 4812

索引 描述符 4

image

索引 描述符 8

image

索引 描述符 12

image

索引

. . . 描述符

400


假设有 400 个索引元数据描述符,即索引描述符内部表中有 400 行。

您已将比率设置为 100。这意味着总共有 4 个螺旋锁:螺旋锁 1

护第 1 行,螺旋 2 保护第 2 行,螺旋锁 3 保护第 3 行,螺旋锁 4

护第 4 行。之后,螺旋锁 1 保护下一个可用索引描述符,即索引描 述符 5,直到每个索引描述符都一个螺旋锁保护。这种循环指派描 述符的方法减少了螺旋锁争用的可能性。


顺序指派


表锁螺旋锁 (由 table lock spinlock ratio 参数配置)使用顺序指派方 法。 table lock spinlock ratio 的缺省配置为 20,即给每个螺旋锁指派 内部散列表中的 20 行。这些行按顺序分为:第一个螺旋锁保护前

20 行,第二个螺旋锁保护第二个 20 行,依此类推。

从理论上讲,使用一个螺旋锁保护一个资源将提供螺旋锁的最小争 用,并且将导致最高的并发性。在大多数情况下,这些 spinlock ratio 的缺省值对系统来说可能是最佳的。只有在有螺旋锁争用的情 况下才更改该比率。

使用 sp_sysmon 可获取有关螺旋锁争用的报告。请参见 《性能和调 优系列:使用 sp_sysmon 监控 Adaptive Server》。



--------------------------------------华丽的分割线-------------------------------------------------------------------------
之前就已经研发成功了能够从Sybase SQL Anywhere的DB文件中恢复数据的工具:ReadASADB。
此工具支持ASA v5.0,v6.0,v7.0,v8.0,v9.0,v10.0,v11.0,v12.0等版本。
恢复Sybase SQL Anywhere的工具在国内应该算首创。

ReadASADB功能
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具

  1. 适用于所有的SQL Anywhere版本    包括:5.x,6.x,7.x,8.x,9.x,10.x,11.x,12.x
  2. 适用于所有的UltraLite版本
  3. 能够恢复出来表结构和数据
  4. 能够恢复自定义数据类型
  5. 能够恢复存储过程等对象的语法
  6. 能够导出到目标数据库
  7. 能够导出到SQL文件并生成导入脚本
  8. 支持多种字符集  包括:cp850、cp936、gb18030、utf8等
  9. 能够恢复未加密或者简单加密类型的数据
  10. 简单易用
  11. 限制:不支持AES加密的数据文件
请参考:研发成功了从Sybase SQL Anywhere的DB文件上恢复数据的工具
            SQL Anywhere数据库非常规恢复工具ReadASADB使用介绍

ReadASADB适用场景

各种误操作:

  1. 误截断表(truncate table)
  2. 误删除表(drop table)
  3. 错误的where条件误删数据
  4. 误删除db或log文件
  5. 误删除表中的字段

本工具的应用场景:

1.因为物理磁盘故障、操作系统、系统软件方面或者掉电等等原因导致的Sybase SQL Anywhere数据库无法打开的情况;
2.误操作,包括truncate table,drop table,不正确的where条件导致的误删除等;
Sybase SQL Anywhere无法打开时,比较常见的错误是:Assertion failed。
如:
1、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Checkpoint log: invalid bitmap page -- transaction rolled back
2、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Page number on page does not match page requested -- transaction rolled back
3、Internal database error *** ERROR *** Assertion failed:200502 (9.0.2.2451) Checksum failure on page 23 -- transaction rolled back
4、File is shorter than expected
5、Internal database error *** ERROR *** Assertion failed: 201116 Invalid free list index page found while processing checkpoint log -- transaction rolled back
6、*** ERROR *** Assertion failed: 51901 Page for requested record not a table page or record not present on page等等。
+-------------------------------------华丽的分割线-------------------------------------------------------------------------