远程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. 实用程序指南

 


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

语句高速缓存


语句高速缓存用于保存高速缓存的 SQL 语句。 Adaptive Server 将比 较传入的 SQL 语句和已缓存的 SQL 语句,如果两者相同,则执行 已保存的 SQL 语句的计划通过这种机制,应用程序就可以在多次执 行同一语句时分摊查询编译的开销。


设置语句高速缓存


通过语句高速缓存, Adaptive Server 可将新收到的即席 SQL 语句和 已高速缓存的 SQL 语句进行比较。如果找到匹配项, Adaptive Server 则使用在最初执行时已高速缓存的计划。这样,由于已有一 个现成的计划,因此 Adaptive Server 就不必重新编译 SQL 语句了。

语句高速缓存是服务器范围的资源,可从过程高速缓存内存池分配 和使用内存。可以使用 statement cache size 配置参数动态设置语句 高速缓存的大小。


image

注释 如果释放或减少语句高速缓存的内存量,则在 Adaptive Server 重新启动前,分配的原始内存不会被释放。

image


语法如下所示,其中 size_of_cache 是大小,以 2K 页为单位:

sp_configure "statement cache size", size_of_cache

例如,若要将语句高速缓存设置为 5000 2K 页,请输入:

sp_configure "statement cache size", 5000

请参见 《系统管理指南,卷 1》中的第 5 章 “设置配置参数”。 配置语句高速缓存使用的内存时,应考虑以下事项:

分配给过程高速缓存内存池的内存量是 statement cache size 配置 参数和 procedure cache size 配置参数的总和。语句高速缓存内存 来自于过程高速缓存内存池。

statement cache size 限制已高速缓存的 SQL 文本和计划可以使用 的过程高速缓存的内存量。 Adaptive Server 用于语句高速缓存 的内存不能超过用 statement cache size 配置参数配置的内存。

@@nestlevel 包含用户会话中当前执行的嵌套级别,初始值为 0。 每当存储过程或触发器调用另一个存储过程或触发器,嵌套级 别就会增加一级。创建高速缓存的句时,嵌套级别也会增加一 级。如果超过了最大值 16,事务中止。


所有过程高速缓存内存 (包括由 statement cache size 配置参数 分配的内存)都可供存储过程使用。存储过程可能会根据最近 使用最少的 (LRU) 策略替换高速缓存的语句。

增加 max memory 配置参数,增加的量为对语句高速缓存配置的 量。例如,如果最开始已将语句高速缓存大小配置为 100 2K 页,则应将 max memory 增加同等数量。

如果已使用 statement cache size 配置参数,则可在会话级使用 set statement cache 来禁用和启用语句高速缓存。缺省情况下,如 果已在服务器级配置了语句高速缓存,则会在会话级予以启用。

因为每个高速缓存的语句都要消耗一个对象描述符,所以还必 须使用 number of open objects 配置参数相应地增加对象描述符的 数量。要估计允许的高速缓存的 SQL 语句数量,请参见

64 页的 “语句高速缓存大小调整


即席查询处理


Adaptive Server 高速缓存语句时,它会将语句从即席查询更改为轻 量存储过程。例如,如果不高速缓存调用缺省值或规则的语句,那 么在该语句所属的批处理中发出 sp_bindefault sp_bindrule 时, Adaptive Server 会发出错误消息 540。然而,如果高速缓存该语句, Adaptive Server 会将缺省值或规则绑定到该列。

将语句作为存储过程高速缓存并执行时, Adaptive Server 可能会发 出运行时错误而不是规范化错误。例如,如果未高速缓存语句,则 以下查询引发错误号 241 ;但是如果高速缓存了语句,则引发 Truncation error 并中止命令。

create table t1(c1 numeric(5,2) go

insert t1 values(3.123) go

使用语句高速缓存处理即席 SQL 语句:

1 Adaptive Server 分析语句。

如果语句应进行高速缓存 (请参见 64 页的 “高速缓存条 件 ), Adaptive Server 将从语句中计算出一个散列值。 Adaptive Server 利用此散列值在语句高速缓存中搜索匹配的语 句 (请参见 63 页的 “语句匹配标准 )。

如果在语句高速缓存中找到匹配项,Adaptive Server 将跳至 步骤 4

如果未找到匹配项,则 Adaptive Server 继续执行步骤 2


2 Adaptive Server 高速缓存 SQL 语句文本。

3 Adaptive Server 使用轻量存储过程包装 SQL 语句,并将所有局 部变量更改为过程参数。轻量过程的内部表示此时尚未编译到 计划中。

4 Adaptive Server SQL 语句转换成相应的轻量过程的 execute

语句。

如果高速缓存中没有计划,Adaptive Server 将编译过程并高 速缓存计划。Adaptive Server 使用为局部变量指定的运行期 值编译计划。

如果计划存在但无效, Adaptive Server 将使用高速缓存的

SQL 语句的文本返回步骤 3

5 Adaptive Server 然后执行编译好的过程。替换轻量过程将使

@@nestlevel 全局变量递增。


语句匹配标准


Adaptive Server 按照 SQL 文本、登录名(特别是如果两个用户都有 sa_role 角色时)、用户 ID、数据库 ID 和会话状态设置,将即席 SQL 语句与高速缓存的语句进行匹配。相关的会话状态包括以下 set 命 令参数的设置:

forceplan

jtc

parallel_degree

prefetch

quoted_identifier

table count

transaction isolation level

chained (事务模式)

这些参数的设置决定了 Adaptive Server 为高速缓存的语句生成的计 划的行为。请参见 《参考手册:命令》。


image

注释 如果启用语句高速缓存,您必须在其自身的批处理中配置 set chained on/off

image


高速缓存条件


Adaptive Server 根据以下条件高速缓存语句:

• Adaptive Server 当前高速缓存至少使用了一个表引用的 selectupdatedelete insert select 语句。

如果启用了 abstract plan dump abstract plan load 参数,则不会 高速缓存语句。即,不能同时启用语句高速缓存以及 abstract plan load abstract plan dump at 配置参数

• Adaptive Server 不会高速缓存 select into 语句、游标语句、动态 语句、纯文本的 insert (不是 insert select)语句,以及存储过 程、视图、触发器内的语句。引用临时表的语句不会被高速缓 存,带有以二进制大对象 (BLOB) 数据类型传输的语言参数的 语句也会被高速缓存。还有特别大的语句也不会被高速缓存。 此外,作为 if exists if not exists 条件子句一部分的 select 语句也 不会被高速缓存。


语句高速缓存大小调整


每个高速缓存的语句需要语句高速缓存内大约 1K 的内存,具体数 量取决于 SQL 文本的长度。每个高速缓存的计划需要过程高速缓存 内至少 2K 的内存。要估计所需的语句高速缓存内存,对于每条要 高速缓存的语句应考虑以下事项:

• SQL 语句的长度 (以字节为单位),向上取整为最邻近的 256

的整数倍。

大约 100 字节的开销。

过程高速缓存中计划的大小。此大小与仅包含高速缓存的语句 的存储过程计划的大小相等。对于两个或更多用户正在同时使 用的单个高速缓存的语句可能存在重复的计划。


监控语句高速缓存


sp_sysmon 可报告语句高速缓存和存储过程的执行情况。语句高速 缓存由以下计数器实施监控:

Statements Cached — 添加到高速缓存中的 SQL 语句的数目。这 个数目通常与 Statements Not Found 数目相同。较小的 statements cached 值意味着语句高速缓存中充满了活动语句。

Statements Found in Cache — 重复使用查询计划的次数。较低的 高速缓存命中次数可能表示语句高速缓存太小。



SQLStatement Cache:

Statements Not Found — 表示没有重复的 SQL 语句。 statements found in cache statements not found 之和是已提交的合格 SQL 语 句的总数。

Statements Dropped — 已从高速缓存中删除的语句的数目。较大 的值可能表示过程高速缓存内存量不足或者语句高速缓存太小。

Statements Restored — 利用 SQL 文本重新生成的查询计划的数 目。较大的值表示过程高速缓存大小不足。

Statements Not Cached — 如果启用语句高速缓存,Adaptive Server 本应高速缓存的语句的数目。但是, Statements Not Cached 并不 表示本应高速缓存的唯一 SQL 语句的数目。

下面是 sp_sysmon 的输出样本:

Statements

Cached

0.0

0.0

0

n/a

Statements

Found in Cache

0.7

0.0

2

n/a

Statements

Not Found

0.0

0.0

0

n/a

Statements

Dropped

0.0

0.0

0

n/a

Statements

Recompiled

0.3

0.0

1

n/a

Statements

Not Cached

1.3

0.0

4

n/a


清除语句高速缓存


运行 dbcc purgesqlcache 可将所有 SQL 语句从语句高速缓存中删除。 任何当前正在运行的语句不会被移除。

必须具有 sa_role 角色才能运行 dbcc purgesqlcache


输出语句摘要


dbcc prsqlcache


运行 dbcc prsqlcache 可输出语句高速缓存中的语句摘要。oid 选项用于 指定要输出的语句的对象 ID printopt 选项用于指定是输出跟踪描 述(指定 0)还是输出 showplan 选项(指定 1)。如果不包括 oid printopt 的任何值,dbcc prsqlcache 将显示语句高速缓存的全部内容。

必须具有 sa_role 角色才能运行 dbcc prsqlcache。 此命令将提供高速缓存中的所有语句的信息:

Start of SSQL Hash Table at 0xfc67d830

Memory configured:1000 2k pages Memory used:18 2k pages Bucket# 625 address 0xfc67ebb8


SSQL_DESC 0xfc67f9c0

ssql_name *ss1248998166_0290284638ss* ssql_hashkey 0x114d645e ssql_id 1248998166

ssql_suid 1 ssql_uid 1 ssql_dbid 1 ssql_status 0x28 ssql_parallel_deg 1 ssql_tab_count 0 ssql_isolate 1 ssql_tranmode 0

ssql_keep 0 ssql_usecnt 1 ssql_pgcount 8 SQL TEXT:select * from sysobjects where name like "sp%"


Bucket# 852 address 0xfc67f2d0 SSQL_DESC 0xfc67f840

ssql_name *ss1232998109_1393445479ss* ssql_hashkey 0x530e4a67 ssql_id 1232998109

ssql_suid 1 ssql_uid 1 ssql_dbid 1 ssql_status 0x28 ssql_parallel_deg 1 ssql_tab_count 0 ssql_isolate 1 ssql_tranmode 0

ssql_keep 0 ssql_usecnt 1 ssql_pgcount 3 SQL TEXT:select name from systypes where allownulls = 0


End of SSQL Hash Table


DBCC execution completed.If DBCC printed error messages, contact a user with

或者可以获得有关特定对象 ID 的信息:

dbcc prsqlcache (1232998109, 0)

SSQL_DESC 0xfc67f840

ssql_name *ss1232998109_1393445479ss* ssql_hashkey 0x530e4a67 ssql_id 1232998109

ssql_suid 1 ssql_uid 1 ssql_dbid 1 ssql_status 0x28 ssql_parallel_deg 1 ssql_tab_count 0 ssql_isolate 1 ssql_tranmode 0

ssql_keep 0 ssql_usecnt 1 ssql_pgcount 3 SQL TEXT:select name from systypes where allownulls = 0


DBCC execution completed.If DBCC printed error messages, contact a user with System Administrator (SA) role.

下面的示例将 showplan 输出的 printopt 参数指定为 1

dbcc prsqlcache (1232998109, 1)

SSQL_DESC 0xfc67f840

ssql_name *ss1232998109_1393445479ss* ssql_hashkey 0x530e4a67 ssql_id 1232998109

ssql_suid 1 ssql_uid 1 ssql_dbid 1 ssql_status 0x28 ssql_parallel_deg 1 ssql_tab_count 0 ssql_isolate 1 ssql_tranmode 0


ssql_keep 0 ssql_usecnt 1 ssql_pgcount 3 SQL TEXT:select name from systypes where allownulls = 0


QUERY PLAN FOR STATEMENT 1 (at line 1).


STEP 1

The type of query is SELECT. FROM TABLE

systypes Nested iteration. Table Scan.

Forward scan.


Positioning at start of table.

Using I/O Size 2 Kbytes for data pages.

With LRU Buffer Replacement Strategy for data pages. DBCC execution completed.If DBCC printed error messages, contact a user with

System Administrator (SA) role.


显示高速缓存语句的 SQL 计划

可以使用下列函数查看高速缓存语句的计划:

show_plan(spid, batch_id, context_id, statement_number)

其中:

spid — 任何用户连接的进程 ID

batch_id — 批处理的唯一编号。

context_id — 每个过程 (或触发器)的唯一编号。

statement_number — 当前语句在批处理内的编号。

对于未能正确执行的语句,您可以通过变更优化程序设置或指定抽 象计划来更改计划。

如果将现有 show_plan 参数中的第一个 int 变量指定为 “-1”,则

show_plan 会将第二个参数视为 SSQLID


image

注释 语句高速缓存中的单个条目可以与多个可能不同的 SQL 计划 相关联。 show_plan 只显示其中一个计划。

image




--------------------------------------华丽的分割线-------------------------------------------------------------------------
之前就已经研发成功了能够从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等等。
+-------------------------------------华丽的分割线-------------------------------------------------------------------------