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

 


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

空间开销


Adaptive Server 按扩充为对象 (表、索引、文本页链)分配空间,每个 扩充为八个逻辑页,而与逻辑页大小的配置无关。也就是说,如果服务 器的逻辑页被配置为 2K,它便为每个对象分配一个 16K 的扩充;如果 服务器的逻辑页被配置为 16K,它便为每个对象分配一个 128K 的扩充。

对于系统表也是如此。如果服务器有很多小表,当服务器使用较大的逻 辑页时,空间消耗就会很大。

例如,对于逻辑页配置为 2KB 的服务器,systypes (包含约 31 个短行、 一个聚簇索引和一个非聚簇索引)将保留 3 个扩充或 48KB 内存。如果 将服务器迁移到使用 8KB 页,为 systypes 保留的空间仍为 3 个扩充,但 内存为 192KB

对于逻辑页配置为 16KB 的服务器, systypes 需要 384KB 的磁盘空间。 对于小表,如果服务器使用较大逻辑页,则最后一个扩充中的未用空间 会非常大。

较大的页大小也会对数据库产生影响。每个数据库包含系统目录及其索 引。如果从较小逻辑页大小迁移到较大逻辑页大小,则必须要考虑每个 数据库所需的磁盘空间量。


列的数量和大小


表中可创建的列的最大数量为:

所有页锁定表 (APL) DOL 锁定表的固定长度列为 1024

对于 APL 表中的可变长度列,为 254

对于 DOL 锁定表中的可变长度列,为 1024

列的最大大小取决于:

表是否包含可变长度列或固定长度列。

数据库的逻辑页大小。例如,在 2K 逻辑页的数据库中,APL 表中的 最大列大小可与单个行的大小相等,约为 1962 个字节,但要减去行 格式的开销。同样,对于 4K 逻辑页的数据库,APL 表中的最大列大 小可达 4010 个字节,但要减去行格式的开销。有关详细信息,请参 见 2-3

在尝试创建包含固定长度列的表时,如果该列的大小超出逻辑页大 小的限制, create table 将发出错误消息。


2-3:行和列的最大长度

锁定方案

页大小

最大行长度

最大列长度

2K 2048 字节)

1962

1960 字节

4K 4096 字节)

4010

4008 字节

APL

8K 8192 字节)

8106

8104 字节

16K 16384 字节)

16298

16296 字节

2K 2048 字节)

1964

1958 字节

4K 4096 字节)

4012

4006 字节

DOL 锁定表

8K 8192 字节)

8108

8102 字节

16K 16384 字节)

16300

16294 个字节 如果表不包含任何 可变长度列

16K 16384 字节)

16300 (受限于 varlen 最大起始 偏移 = 8191

8191-6-2 = 8183 字节

(如果表至少包含一 个可变长度列)。


对于逻辑页大小为 16K DOL 锁定表,固定长度列的最大大小取决于 表是否包含可变长度列。可变长度列的最大可能起始偏移为 8191。如果 表中有任何可变长度的列,则行的固定长度部分与开销的总和不能超过 8191 字节;而当表包含任何可变长度的列时,所有固定长度列的最大可

能大小限制在 8183 字节。

在表 2-3 中,确定最大列长度时需要减掉行开销占用的 6 个字节和行长

度字段占用的 2 个字节。


APL 表中的可变长度列

对于包含一个可变长度列 (如 varcharvarbinary 等)的 APL 表,每行 的最小开销如下:

初始行开销 2 个字节。

行长度 2 个字节。

行尾的列偏移表占用 2 个字节。它始终占用 n+1 个字节,其中 n 代 表行中可变长度列的数目。

单列表的最小开销为 6 个字节,再加上额外开销。开销后的最大列大小 必须小于或等于:

(列长度) + (额外开销) + 6 字节开销)


2-4APL 表中可变长度列的最大大小

页大小

最大行长度

最大列长度

2K 2048 字节)

1962

1948

4K 4096 字节)

4010

3988

8K 8192 字节)

8096

8068

16K 16384 字节)

16298

16228


超过逻辑页大小的可变长度列

如果表使用 2K 逻辑页,可创建一些行总长度超过 2K 页大小的最大长度 限制的可变长度列。这样在创建的表中,某些 (并非全部)可变长度列 就可包含最大允许大小。但是,当您发出 create table 时,会收到警告消 息,指明生成的行大小可能超出最大限值,并可能导致后续 insert update 失败。

例如,如果创建的表使用 2K 页大小,并包含长度为 1975 字节的可变长 度列, Adaptive Server 会创建该表,但要发出警告消息。插入的数据不 能超过最大行长度 (1962 字节)。


DOL 表中的可变长度列

对于包含一个可变长度列的 DOL 锁定表,每行的最小开销为:

六个字节的初始行开销。

两个字节用于存储行长度。

行尾的两个字节用于存储列偏移表。每个列偏移条目为两个字节。 这样的条目共有 n 个,其中 n 代表行中可变长度列的数目。

总开销为 10 个字节。 DOL 行没有调整表。实际的可变长度列大小为:

列长度 + 10 字节开销

2-5DOL 锁定表中可变长度列的最大大小

页大小

最大行长度

最大列长度

2K 2048 字节)

1964

1954

4K 4096 字节)

4012

4002

8K 8192 字节)

8108

8098

16K 16384 字节)

16300

16290


包含可变长度列的 DOL 锁定表的偏移必须少于 8191 个字节,才能保证 所有插入操作都成功执行。例如,以下插入操作将失败,因为列 c2c3 c4 的偏移为 9010,超过了最大限值 8191 字节:

create table t1(

c1 int not null,

c2 varchar(5000) not null c3 varchar(4000) not null c4 varchar(10) not null

... more fixed length columns) cvarlen varchar(nnn)) lock datarows


宽可变长度行


Adaptive Server 允许宽可变长度 DOL 行的仅数据锁定 (DOL) 列使用的 最大行偏移为 32767 字节,前提是其将逻辑页大小配置为 16K

可使用以下命令为每个数据库启用宽可变长度 DOL 行:

sp_dboption database_name, 'allow wide dol rows', true


image

注释 缺省情况下为临时数据库启用 allow wide dol rows。不能为 master

数据库设置 allow wide dol rows

image


sp_dboption 'allow wide dol rows' 对逻辑页大小小于 16K 的用户数据库不起 作用,因为 Adaptive Server 不能在小于 16384 字节的页上创建宽可变长 度 DOL 行。

以下示例将页大小为 16K 的服务器上的 pubs2 数据库配置为使用宽可变 长度 DOL 行:

1 pubs2 数据库启用宽可变长度行:

sp_dboption pubs2, 'allow wide dol rows', true

2 创建 book_desc 表,其中包含在 8192 行偏移后开始的宽可变长度

DOL 列:

create table book_desc (title varchar(80) not null,

title_id varchar(6) not null, author_desc char(8192) not null, book_desc varchar(5000) not null) lock datarows


批量复制宽数据 必须使用 Adaptive Server 15.7 及以后版本随附的 bcp 版本批量复制包含 宽可变长度 DOL 行的数据。必须配置用于接收数据以接受宽可变长度 DOL 行的数据库 (即, bcp 不将宽行复制到尚未为其启用 allow wide dol rows 的数据库中)。

检查降级 请参见所用平台的 《安装指南》,以了解有关如何降级使用宽可变长度 行的 Adaptive Server 的详细信息。

转储和装载宽可变长度

DOL


使用包含宽可变长度

DOL 行的代理表

数据库和事务日志转储会为要导入装载转储的数据库中的 allow wide dol rows 保留其设置 (如果此数据库没有选项集)。

例如,如果将名为 my_table_log.dmp 的事务日志转储(allow wide dol rows 已设置为 true)装载到数据库 big_database (尚未为其设置 allow wide dol rows)中,那么在装载到 big_database 中后,my_table.log 会为 allow wide dol rows 将其设置保留为 true

但是,如果数据库或事务日志转储未设置 allow wide dol rows,但用于装 载转储的数据库已进行此设置, allow wide dol rows 将保留原有设置。

不能将启用 allow wide dol rows 的数据库的转储装载到 15.7 之前的

Adaptive Server 版本上。

您可以使用包含宽可变长度 DOL 行的代理表。 创建代理表(不考虑表的行长度)时,可在控制 Adaptive Server 上执行

create table create proxy table 命令。 Adaptive Server 可在您连接到的服 务器上执行这些命令。但是, Adaptive Server 可在存储数据的服务器上 执行数据操作语句 (insertdelete),并且用户的本地服务器只设置请 求格式,然后发送该请求;本地服务器不进行任何控制。

即使数据驻留在远程服务器上, Adaptive Server 仍会按照在本地服务器 上的创建方式创建代理表。当 create proxy_table 命令创建包含宽可变长 度行的 DOL 锁定表时,仅在用来创建代理表的数据库将 allow wide dol rows 设置为 true 时,该命令才能成功执行。


image

注释 Adaptive Server 使用本地服务器的 lock scheme 配置创建代理表; 如果将 lock scheme 设置为 datarows datapages,则可创建包含 DOL 行 的代理表。

image


在代理表中插入或更新数据时, Adaptive Server 会忽略本地数据库的 allow wide dol rows 设置。包含数据的服务器决定 insert update 能否成功 执行。


转换锁定方案或使用 select into 的限制

无论是使用 alter table 更改锁定方案,还是使用 select into 将数据复制到 新表中,下列限制均适用。

对于使用除 16K 页外其它页大小的服务器, APL 表中可变长度列的最 大长度比 DOL 锁定表的最大长度小,所以可将包含最大可变长度列的 APL 表的锁定方案转换成 DOL。但不能将至少包含一个最大可变长度 列的 DOL 锁定表转换为 APL 表。

在使用 16K 页的服务器上,APL 表可存储的可变长度列的大小要比 DOL

锁定表大得多。您可以将表从 DOL 转换为 APL,但不能反向转换。

仅当源表中的数据超出目标表限制时,才会出现这些锁定方案转换限 制。如果出现这种情况,在将行格式从一种锁定方案向另一种转换时, Adaptive Server 会发出错误消息。如果表为空,则不需要进行此类数据 转换,锁更改操作将成功执行。但是,在对表执行后续 insert update 操作时,转换后表的目标方案的列或行大小限制可能会引发错误。


按可变长度列的大小组织 DOL 锁定表中的列

对于使用可变长度列的 DOL 锁定表,排列各列时要使最长的列靠近表 定义的末尾。与大列出现在表定义开始处的情况相比,前一种方式可创 建带更大行的表。例如,在 16K 页服务器中,下列表定义是可接受的:

create table t1 ( c1 int not null,

c2 varchar(1000) null, c3 varchar(4000) null,

c4 varchar(9000) null) lock datarows

但对于将来的插入操作,下列表定义通常是不可接受的。由于之前将 c4

列设置为 9000 字节,因此 c2 列的可能起始偏移将超出上限 8192 字节:

create table t2 ( c1 int not null,

c4 varchar(9000) null, c3 varchar(4000) null,

c2 varchar(1000) null) lock datarows

表创建完毕,但在将来的插入操作可能失败。


每个数据页的行数


DOL 数据页所允许的行数由下列因素决定:

页大小

用于指定行转移地址的行 ID 10 字节开销。 2-6 显示 DOL 数据页上可容纳的最大行数:

2-6:一个 DOL 数据页的最大数据行数

页大小

最大行数

2K

166

4K

337

8K

678

16K

1361


APL 数据页可拥有的最大行数为 256。由于每页需要有一个字节的行数 说明符,因此带短行的大页会产生一些未使用的空间。例如,如果将 Adaptive Server 配置为 8K 逻辑页,行长为 25 字节,则计入行偏移表和 页头后,每页将有 1275 字节的未使用空间。


其它对象和大小限制数

存储过程的最大参数数为 2048。请参见 《Transact-SQL 用户指南》的 第 16 章 “使用存储过程”。

Adaptive Server 12.5 及更高版本可存储的数据的限制与对 12.5 以前版 本所存储数据的限制不同。客户端必须能够存储和处理这些新数据限制。 如果正在使用较早版本的 Open Client Open Server,则在下列情况下, 它们不能处理数据:

升级到 Adaptive Server 12.5 及更高版本

删除和重新创建包含宽列的表

插入宽数据

请参见 Open Client Configuration Guide(《Open Client 配置指南》)的第

2 章 “Basic Configuration for Open Client”(Open Client 的基本配置)。




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