远程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 首先在 sysdatabases 中为新数据库添加一个条目。然后,它 检查 master..sysdevices 以确保 create database 中指定的设备名实际存 在而且是数据库设备。如果未指定数据库设备或如果使用了 default 选项,Adaptive Server 将在 master..sysdevices master..sysusages 中 查找所有设备上可用于缺省存储的可用空间。它按照设备名的字母 顺序执行此检查。

Adaptive Server 从其收集指定存储量的存储空间不必是连续的。数 据库存储空间甚至可以从多个数据库设备抽取。数据库被作为逻辑 单元对待,即使它存储在多个数据库设备上。

数据库的每一存储必须至少是一个分配单元。每个分配单元的第一 页是分配页。它并不象其它页那样包含数据库行,但却包含一个显 示剩余页如何使的数组。


sysusages


数据库存储信息列于 master..sysusages 中。master..sysusages 中的每 一行表示一个指派给数据库的空间分配。这样,每次 create database alter database 指派一个磁盘空间段给数据库时,每个数据库在 sysusages 中有一行。

安装 Adaptive Server 时,sysusages 包含有关这些数据库的行:

masterdbid 1

临时数据库 tempdbdbid 2

modeldbid 3

sybsystemdbdbid 31513

sybsystemprocsdbid 31514

如果从早期版本升级 Adaptive Server,数据库 sybsystemdb

sybsystemprocs 可能具有不同的数据库 ID

如果安装了审计功能,sybsecurity 数据库将为 dbid 5

创建新数据库或扩大现有数据库时,新的行增加到 sysusages 中以表 示新的数据库分配。

下面是 sysusages 在包含五个系统数据库和一个用户数据库的 Adaptive Server 中的显示情况。用户数据库是使用 log on 选项创建的,并使 用 alter database 扩展了一次。它的数据库 ID ( dbid ) 4

order

by 1

dbid

segmap

lstart

size

vdevno

vstart

----

---------

----------

--------

--------

-----------

1

7

0

6656

0

4

2

7

0

2048

0

8196

3

7

0

1536

0

6660

4

3

0

5120

2

0

4

4

5120

2560

3

0

4

3

7680

5120

2

5120

31513

7

0

1536

0

10244

31514

7

0

63488

1

0

order

by 1

dbid

segmap

lstart

size

vdevno

vstart

----

---------

----------

--------

--------

-----------

1

7

0

6656

0

4

2

7

0

2048

0

8196

3

7

0

1536

0

6660

4

3

0

5120

2

0

4

4

5120

2560

3

0

4

3

7680

5120

2

5120

31513

7

0

1536

0

10244

31514

7

0

63488

1

0

select dbid, segmap, lstart, size, vdevno, vstart from sysusages


在此示例中,lstart size 列说明了逻辑页,其大小可在 2KB - 16KB 之间变化。vstart 列说明了虚拟页(其大小始终是 2KB)。下面的全 局变量显示页大小信息:

@@maxpagesize — 逻辑页大小


@@pagesize — 虚拟页大小

以下示例将数据库 ID 与其名称相匹配,显示 size 列所表示的兆字节 数,显示列表中每个 vdevno 的逻辑设备名,并计算分配给每个数据 库的总兆字节数。本例的输出仅显示 dbid 4 的结果,且结果已被重 新设定了格式以提高可读性:

select dbid, db_name(dbid) as 'database name', lstart, size / (power(2,20)/@@maxpagesize) as 'MB', d.name

from sysusages u, sysdevices d where u.vdevno = d.vdevno

and d.status & 2 = 2

order by 1

compute sum(size / (power(2,20)/@@maxpagesize)) by dbid

dbid database name lstart MB device name

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

4 test 0 10 datadev

4 test 5120 5 logdev

4 test 7680 10 datadev


Compute Result:

----------- 25


以下示例说明了在添加段时,sysusages 表中的 segmap 值的变化情 况。在该示例中,服务器最初包括缺省数据库、一个名为 testdb 的 用户数据库(仅数据数据库)和 testlog 设备上的一个日志,如以下 sysusages 表的输出所示:

select dbid, segmap from master..sysusages where dbid = 6 dbid segmap

------ ----------- 6 3

6 4

如果您向测试数据库添加用户段 newseg,并在 newseg 上创建表 abcd, 然后再次选择 sysusages 中的段信息:

sp_addsegment newseg, testdb, datadev create table abcd ( int c1 ) on newseg

select dbid, segmap from sysusages where dbid=6

dbid segmap

------ ----------- 6 11

6 4


注意,用户数据库的段映射从值 3 更改为值 11,这表明用户数据库 的段映射会在重新配置数据库时发生变化。

若要确定段的状态,请运行:

sp_helpsegment

segment name status

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

0 system 0

1 default 1

2 logsegment 0

3 newseg 0


newseg 段不是缺省池的一部分。

如果向 testdb 数据库再添加一个段 newseg1,并再次选择 sysusages

中的段信息,则 newseg 的段映射即从 11 更改为 27

sp_addsegment newseg1, testdb, datadev

select dbid, segmap from sysusages dbid segmap

------ ----------- 6 27

6 4


segmap


segmap 显示它所表示的数据库片段的允许存储。您应使用用于段管 理的存储过程来控制此掩码中的位值。掩码中有效位的编号来自于 本地数据库中的 syssegments。(“本地”数据库是您当前正在使用 的数据库:或者是登录时使用缺省数据库,或者是通过 use database 最近使用的数据库)

Adaptive Server 提供了三个已命名的段:

system ,即段 0

default ,即段 1

logsegment ,即段 2

使用 sp_addsegment 创建其它段。如果您在 model 数据库中创建段, 这些段会存在于随后创建的所有数据库中。如果在任何其它数据库 中创建段,这些段只存在于该数据库中。不同数据库中的不同段名 称可以具有相同的段号。例如,数据库 testdb 中的 newseg1 和数据 库 mydb 中的 mysegment 可以同时具有段号 4


segmap 列是链接到用户数据库 syssegments 表中 segment 列的位屏 蔽。因为每个用户数据库中的 logsegment 为段 2,而且这些用户数 据库将其日志放在单独的设备上,所以 segmap 中包含 4 (2 2 ),表示 在 log on 语句中指定的设备;包含 3,表示包含系统段 (2 0 = 1) + 缺 省段 (2 1 = 2) 的数据段。

包含数据或日志的段的某些可能值为:

image

值 段

image

3 仅数据(系统和缺省段)

image

4 仅日志

image

7 数据和日志

image


大于 7 的数值表明这是用户定义的段。 9 章“创建和使用段” 中 有关段的教程部分对 segmap 列进行了更加完整的说明。

以下查询说明 master..sysusages 中的段和 segmap 中的 syssegments 之间的联系。查询列出了当前数据库的段映射,显示了 syssegments 中的每个段号都将成为 master..sysusages 中的位号:

select dbid, lstart, segmap, name as 'segment name' from syssegments s, master..sysusages u

order

by 1,2

dbid

lstart

segmap

segment name

-----

------

--------

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

4

0

3

system

4

0

3

default

4

5120

4

logsegment

4

7680

3

system

4

7680

3

default

order

by 1,2

dbid

lstart

segmap

segment name

-----

------

--------

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

4

0

3

system

4

0

3

default

4

5120

4

logsegment

4

7680

3

system

4

7680

3

default

where u.segmap & power(2,s.segment) != 0 and dbid = db_id()


本示例显示,lstart 0 对应的磁盘片段和 lstart 7680 对应的片段 使用 system 段(编号 0)和 default 段(编号 1),而 lstart 5120 对 应的片段使用 logsegment 段(编号 2)。此数据库是同时使用 create database on log on 子句创建的,之后使用 alter database on 子 句进行了一次扩展。

因为 sysusages segmap 使用 int 数据类型,它只能包含 32 位,因此 数据库无法容纳 32 个以上的段(编号 0 - 31)。由于 segmap 是一个 带符号的数量(也就是说,它可以显示为正数也可以显示为负数), 段 31 被理解为一个非常大的负数,因此在使用段 31 的数据库中使 用 segmap 时,以上查询会发生算术溢出。


lstartsize vstart


lstart 列 — 此分配单元在数据库中的起始页号。每个数据库起始 于逻辑地址 0。如果对数据库进行了其它分配,如 dbid 7 所示的 情况,lstart 列会反映出来。

size 列 — 指派到同一数据库的连续页的数目。数据库该部分的 结束逻辑地址可通过在 lstart size 中增加数值来确定。

vstart 列 — 指派到该数据库的块开始的地址。

vdevno — 该数据库片段所在的设备。




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