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

 


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

挂起和恢复对数据库的更新

quiesce database hold 用于在对每个数据库设备执行磁盘取消镜像或 外部复制时,阻塞对一个或多个数据库的更新。因为在此期间未执 行任何写入,所以数据库的外部副本 (辅助映像)与主映像一致。 当数据库处于抑制状态时,允许对数据库上的操作进行只读查询。 若要恢复对数据库的更新,请在完成外部复制操作后,发出 quiesce database release 命令。可将数据库的外部副本装载到辅助服务器上, 确保拥有与主映像一致的事务性副本。可从一个 isql 连接发出 quiesce database hold,然后用另一 isql 连接登录并发出 quiesce database release。 请参见 《参考手册:命令》。


image

注释 tag_name 必须遵循标识符规则。必须为 quiesce database...hold quiesce database...release 使用相同的 tag_name

image


例如,若要挂起对 pubs2 数据库的更新,请输入:

quiesce database pubs_tag hold pubs2

Adaptive Server 将如下消息写入错误日志:

QUIESCE DATABASE command with tag pubs_tag is being executed by process 9. Process 9 successfully executed QUIESCE DATABASE with HOLD option for tag pubs_tag.Processes trying to issue IO operation on the quiesced database(s) will be suspended until user executes Quiesce Database command with RELEASE option.

pubs2 数据库的任何更新都将延迟到数据库释放,届时更新将会 完成。若要释放 pubs2 数据库,请输入:

quiesce database pubs_tag release

释放数据库之后,可以使用 -q 参数弹出辅助服务器,但前提是使用 了 for external dump 子句。恢复使数据库达成事务性一致,或者可以 等到数据库进入联机状态,再应用事务日志。


使用 quiesce database 的准则

使用 quiesce database 的最简单方式是完全复制整个安装,这可确保 系统映射保持一致。当将包含这些映射的系统数据库作为 quiesce database hold 的数据库集的一部分实际进行复制时,这些映射将转 至辅助安装中。当源安装中的所有用户数据库作为同一组的一部分 被复制时,实现这些映射。 quiesce database 允许在单个操作中存在 八个数据库名称。如果源安装具有八个以上的数据库,则可以发出 quiesce database hold 的多个实例以便为多组数据库创建多个并发抑 制状态。

要创建新的源安装,可以使用几乎相同的脚本创建主安装和辅助安 装。辅助安装的脚本可能在传递到 disk init 命令的物理设备名称中有 所不同。此方法要求,对主服务器上系统设备的更新要通过同样的 更改反映到辅助服务器上。例如,如果在主服务器上执行 alter database 命令,那么在辅助服务器上也必须用相同的参数执行相同 的命令。此方法要求,数据库设备由卷管理器支持,卷管理器可为 主服务器和辅助服务器显示设备的相同物理设备名称 (物理上不同 且单独的)。

您的节点可能为制作数据库设备的外部副本开发自己的过程。然 而, Sybase 建议:

master 数据库包括在 quiesce database 的数据库列表中。

任何无法向磁盘中的抑制数据库进行写入的进程都可能拥有阻 止其它进程执行的资源。例如,如果某进程修改事务中的数据 库页,但无法在 commit 期间刷新日志页,则该进程可能拥有排 它页锁,并且可能会阻止读者尝试在 quiesce database 操作执行 期间获取同一页上的共享页锁。

虽然当您抑制系统数据库 (sybsystemprocssybsystemdb sybsecurity,前提是审计处于启用状态)时可能会发生此问题, 但当您由于 master 数据库包含许多常使用的系统表而 quiesce master 数据库时,此问题最严重。例如,如果某进程使用 create login 修改 syslogins,但无法在抑制 master 数据库期间提交事 务,则为修改 syslogins 而获取的排它锁会阻止任何登录,这是 因为这些登录必须在 syslogins 上获取共享页锁。


image

注释 抑制 master 数据库或任何系统数据库可能会大大影响服 务器性能,这是因为,这样做会阻止任何尝试更新已抑制数据 库的进程。

image

在主服务器上和辅助服务器上使用相同字符串命名设备。


使主安装和辅助安装中的 mastermodel sybsystemprocs 系统 数据库的环境相同。需特别注意的是,复制的数据库的 sysusages 映射和数据库 ID 在主服务器和辅助服务器上必须相 同,这两种服务器的数据库 ID sysdatabases 中也必须相同。

保持 syslogins.suid sysusers.suid 之间的映射在辅助服务器中 一致。

如果主服务器和辅助服务器共享一个 master 的副本,且每一复 制设备的 sysdevices 条目都使用相同的字符串,那么这两个服 务器中的 physname 值必须在物理上不同且是单独的。

使用下列限制生成数据库的外部副本:

复制进程只能在 quiesce database hold 完成之后开始。

quiesce database 的数据库列表中每个数据库的每一设备都 必须被复制。

外部复制操作必须首先结束,然后才能调用 quiesce database release

quiesce database 为外部复制操作提供的间隔期间,对于属于 quiesce database 的数据库列表中任何数据库的任何磁盘空间的 更新操作都将被阻止。此空间在 sysusages 中定义。然而,如果 某设备上的空间被 quiesce database 的数据库列表中的数据库和 不在该列表中的数据库共享,那么在制作外部副本时,可能会 更新该共享设备。当您决定使用系统中的哪些数据库来计划制 作外部副本时,可:

隔离数据库,使它们不共享要使用 quiesce database 的环境 中的设备,或

计划复制设备上的所有数据库 (这样做符合上述制作整个 安装的副本的建议)。

仅当数据库中具有少量更新活动时才应使用 quiesce database

(首选在执行只读活动期间)。在空闲时间抑制数据库时,不但 很少有用户觉得不便,而且根据要执行外部复制的第三方 I/O 子系统的不同,复制操作所涉及的同步设备所需的时间也可能 会减少。

使用 mount unmount 命令,可以更加轻松地移动或复制数据 库。您可以在不重新启动服务器的情况下将数据库从一个 Adaptive Server 移动或复制到另一个 Adaptive Server,也可以一 次移动或复制多个数据库。

也可以使用这些命令物理地移动设备,然后重新激活数据库。


当您 unmount 数据库时,会将数据库及其设备从 Adaptive Server 中删除。 unmount 会关闭数据库并将它从 Adaptive Server 中删 除;此外,也将停用并删除设备。在卸下时不会对数据库或数 据库的页进行任何更改。


维护在主服务器和辅助服务器关系中的服务器角色

如果您的节点由两个 Adaptive Server 组成,一个作为主服务器使 用,另一个作为接收主服务器数据库的外部副本的辅助服务器,一 定不要混淆它们各自的角色。即,每台服务器所担任的角色可以更 改 (主服务器和辅助服务器的角色可互换),但这些角色不能同时 由同一服务器担当。


使用 - q 选项启动辅助服务器

dataserver -q 选项标识辅助服务器。不要使用 -q 选项来启动主服务 器。用 -q 选项,在 quiesce database for external dump 期间复制的用户 数据库保持脱机状态,直到:

standby access 转储主服务器上数据库的事务日志 (即, dump tran with standby_access),随后对辅助服务器上此数据库 的副本执行 load tran,再对此数据库执行 online database for standby access

通过发出 online database 命令强制数据库进入联机状态以进行读 写访问。然而,如果这样做,数据库恢复过程将写入补偿日志 记录,并且在未装载数据库或未使用 quiesce database 制作主设 备的新副本的情况下,无法装载事务日志。

系统数据库会联机 (无论 -q 选项如何),并为全部回滚的事务编写 补偿日志记录。


更新的 “ in quiesce”数据库日志记录值

如果使用 dataserver -q 选项启动辅助服务器,则对于每个在内部 标记为 “处于抑制状态”的用户数据库, Adaptive Server 会在启动 时发出消息,指定数据库处于 " 用于使用 "


quiesce database for external dump 复制的数据库的 -q 恢复与用于 load database 命令的恢复大体相同。像 load database 的恢复一样, dataserver -q 会在内部记录上一个当前日志记录的地址,以便后续 load transaction 可以将此地址与上一个当前日志记录的地址进行比 较。如果这两个值不一致,则辅助数据库中一直有活动,并且 Adaptive Server 会引发错误号 4306


更新转储序列号


dump database 一样,如果有未记录的写入操作,quiesce database 会更新转储序列号。这样就可防止您错误地将较早的数据库转储或 外部副本作为转储序列的基础。

例如,在使用 12-5 描述的热备份方法中,存档文件由 dump database (D1)dump transaction (T1)quiesce databasedump transaction (T2) dump transaction (T3) 生成:

12-5:热备份转储序列



dump database

image

image

image

image

select into

dump transaction


load transaction


quiesce database hold for external dump


dump transaction


D1 T1 T2 T3

制作外部副本


load transaction


quiesce database release

load transaction


load database

load transaction


通常情况下,在含有已记录的更新并且没有 dump tran with truncate_only 的环境中,可以依次装载 D1T1T2 T3,忽略任 何 quiesce database hold。此方法用于热备份情况,其中在主服务器 上继续数据库转储可简化介质故障恢复方案。在用于决策支持系统 的辅助 (即备份)服务器上,可以首选继续增量应用 load transaction 而是不中断外部复制操作。

不过,如果在生成 T1 dump transaction 操作后发生未记录的操作

(如 12- 5 中发生的 select into),则不允许以后的 dump transaction to archive,并且必须要么创建数据库的另一转储,要么发出 quiesce database for external copy,然后制作数据库的新外部副本。发出这些 命令中的任何一个将更新转储序列号,并清除阻塞 dump transaction to archive 的标记。

是否使用 for external dump 子句取决于您希望恢复如何处理将标记为

in quiesce 的抑制数据库。

q uiesce database hold 如果发出 quiesce database 并且不使用 for external dump 子句,则在用

于创建辅助数据库集的外部复制操作期间,辅助服务器没有运行, 并且使用 -q 执行的恢复不会将任何已复制的数据库视为处于 “抑 制状态”。在启动恢复期间以正常方式恢复每台服务器,但不会按 照前面所述将它们恢复为 for load database。随后,对任何这些数据 库执行 load tran 的尝试都被禁止,并发出错误 4306 "There was activity on database since last load ..." 或错误 4305

"Specified file '%.*s' is out of sequence ..."

无论主数据库中是否有未记录的活动,转储序号都不会递增 quiesce database hold,并且 quiesce database release 不会清除未记录的写入位。

如果尝试对受抑制的数据库运行查询, Adaptive Server 会发出错误 消息 880

Your query is blocked because it tried to write and database '%.*s' is in quiesce state.Your query will proceed after the DBA performs QUIESCE DATABASE RELEASE

一旦数据库不再处于抑制状态,便会运行查询。

quiesce database hold for external dump

当您发出 quiesce database for external dump 命令时,数据库的外部副 本 “记起”它是在抑制间隔期间生成的,以便 -q 恢复能像 load database 一样将其恢复。 quiesce database release 从主数据库中清除 此信息。如果未记录的写入操作已在主服务器上阻止 dump tran to archive,现在即会启用 dump tran to archive


对于任何位于 quiesce database 列表中的数据库,如果自上次执行 dump database quiesce database hold for external dump 以来发生了未 记录的写入,则转储序号由 quiesce database hold for external dump 更 新,并且 quiesce database release 会清除未记录的写入信息。如果更 新的序列号应用到由更新它的 quiesce database 创建的外部副本以外 的目标,会导致 load tran 失败。这类似于带有未记录的写入状态的 数据库的 dump database 的行为。


image

警告! quiesce database for external dump 清除阻止执行 dump transaction to archive_device 的内部标志,而不管您实际生成了外部 副本还是执行了数据库转储。 quiesce database 无法知道您是否生成 了外部副本。履行此义务是您的职责所在。如果使用 quiesce database hold for external dump 来影响瞬时写入保护,而不是实际执 行作为新转储序列基础的副本,且您的应用程序包括偶然的未记录 的写入,那么 Adaptive Server 可能允许创建不能使用的事务日志转 储。在此情况下, dump transaction to archive_device 最初可以成功完 成,但以后的装载事务命令可能由于顺序混乱而拒绝这些存档。

image


使用 quiesce database 备份主设备

通常,用户通过 quiesce database 命令使用下列方法之一备份其数据 库。这两种方法都允许您在正常操作过程中从联机事务处理 (OLTP) 服务器上卸载决策支持应用程序:

主设备的迭代刷新 — 在刷新间隔,将主设备复制到辅助设备。 在每次刷新前抑制数据库。在 12-6 中显示了使用此系统提供 每周备份的系统:


12-6:迭代刷新方法的备份安排

image

主许可证服务器 辅助节点


image

凌晨 2:00

image

1) 发出 “quiesce database hold”。

2) 使用外部命令复制 数据库。

3) 发出 “quiesce

database release”。

上午 7:00

执行上述步骤。


上午 9:00

执行上述步骤。


上午 10:00

执行上述步骤。


凌晨 2:10

在没有 -q 选项的情况 下启动服务器。


上午 7:10

在不使用 -q 选项的情 况下启动服务器。


上午 9:10

在不使用 -q 选项的情 况下启动服务器。


上午 10:10

在不使用 -q 选项的情 况下启动服务器。


每个小时重复一次, 直到活动逐渐停止, 然后相应延长间隔。

每个小时重复一次,直 到活动逐渐停止,然后 相应延长间隔。


如果您使用的是迭代刷新方法,则不必使用 -q 选项重新启动辅 助服务器 (在崩溃或系统维护之后)。任何不完全的事务都会 生成补偿日志记录,并且受影响的数据库以正常方式进入联机 状态。

热备份方法 — 允许 OLTP 服务器完全并行操作,因为它不阻塞 写入。


使用 for external dump 子句制作主数据库设备的外部 (辅助)副 本之后,通过使用来自主服务器的转储定期应用事务日志来刷 新辅助数据库。对此方法,抑制数据库一次以制作该组数据库 的外部副本,然后使用 dump tran with standby_access 定期刷新每 一数据库。在 12-7 中显示了一个系统,该系统使用主设备进 行每日更新、然后每小时备份事务日志。

12-7:热备份方法的备份安排


主许可证服务器

image

辅助节点


image

凌晨 2:00

image

image

image

image

1) 制作主数据库的外部副本。


2) 发出“quiesce database ho for external dump”。

3) 使用外部命令复制数据库。

4) 发出“quiesce database release”。


上午 7:00

发出 dump tran with

standby_access1

上午 9:00

发出 dump tran with 2

standby_access

上午 10:00

发出 dump tran with 3

standby_access

每小时重复一次,

直到活动逐渐停止 n

然后系统相应延长间隔。


image

image

凌晨 2:10

使用

dataserver -


上午 7:05

1) 装载事物日志。

2) 为备用访问使每一数据库 都进入联机状态


上午 9:05

1) 装载事物日志。

2) 为备用访问使每一数据库 都进入联机状态

上午 10:05

1) 装载事物日志。

2) 为备用访问使每一数据库 都进入联机状态


热备份方法的数据库恢复


如果使用热备份方法, Adaptive Server 必须知道是启动主服务器还 是启动辅助服务器。使用 dataserver 命令的 -q 选项来指定启动辅助 服务器。如果不用 -q 选项启动服务器:

数据库会正常恢复,而不是像对于 load database 一样。

当发出 quiesce database 时,所有未提交的事务都被回退。 请参见 307 页的 “使用 -q 选项启动辅助服务器

根据数据库是否标记了 in quiesce,恢复序列的进展情况也有所 不同。


未标记 “in quiesce”的数据库的恢复

使用 -q 选项时,如果未将数据库标记为 in quiesce,那么它像在主 服务器中一样进行恢复。即,如果数据库当前不在先前操作的装载 序列中,那么它将被完全恢复并进入联机状态。任何未完成的事务 都将回滚,并且会在恢复期间写入补偿日志记录。


标记为 “ in quiesce”的数据库的恢复

用户数据库 — 标记了 in quiesce 的用户数据库以使用 load database 命令时相同的方式恢复。这将使 load tran 能够检测到服 务器脱机以后在主数据库中发生的任何活动。用 -q 选项启动了 辅助服务器后,恢复进程遇到 in quiesce 标记。 Adaptive Server 发出一条消息,指出该数据库处于装载序列中,并且处 于脱机状态。如果使用热备份方法,则在装载了由 dump tran with standby_access 生成的第一个事务转储前,不要将数据库置 于联机状态以用作决策支持系统。然后使用 online database for standby_access

系统数据库 — 系统数据库立即完全联机。该 in quiesce 标记 被清除并忽略。


在抑制状态下制作存档副本

quiesce database hold for external dump 表示您想要在抑制状态下制作 数据库的外部副本。因为这些外部副本是在您发出 quiesce database hold 之后创建的,数据库在事务上保持一致,这是因为您可确保在 quiesce database hold quiesce database release 之间的时间段内不会 进行写入,并且恢复可与启动恢复以相同方式运行。在 308 页的

12-5 中对此过程进行了说明。


如果环境没有未记录的更新并且不包括 dump tran with truncate_only, 可以依次装载 D1T1T2 T3,忽略全部 quiesce database...hold 命令。但是,如果在生成 T1 的转储事务以后发生未记录的操作

(如 12 -5 中所示的 select into),则不再允许将事务转储到档案。

通过清除阻止下一个 dump transaction to archive 的状态位以及更改外 部副本的序列号以创建装载序列的基础,使用 quiesce database hold for external dump 子句可解决此问题。但是,如果没有未记录的写 入,序列号则不会增加。

无论是否使用 for external 转储子句,您都可以制作数据库的外部副 本。但是,若要将主服务器中的后续事务转储应用到辅助服务器, 请包括 for external dump 子句:

quiesce database tag_name hold db_name [, db_name]

...[for external dump]

例如:

quiesce database pubs_tag hold pubs2 for external dump

假设自启动数据库的主实例以来数据库映射尚未更改,则可以通过 下列步骤为单个数据库创建外部转储:

1 发出:

quiesce database pubs_tag hold pubs2 for external dump

2 使用适合您的节点的方法制作数据库的外部副本。

3 发出:

quiesce database pubs_tag release


image

警告!清除状态位并更新序列号使您可执行转储事务,而不管在发 出 quiesce database 以后是否实际制作了外部副本。 Adaptive Server 无法知道您在 quiesce database... hold for external dump quiesce database... release 之间是否制作了外部副本。如果使用 quiesce database hold for external dump 命令影响瞬时写入保护,而非实际执 行作为新转储序列基础的副本,且您的应用程序包括偶然的未记录 写入,那么 Adaptive Server 允许创建不能使用的事务日志转储。 dump transaction to archive_device 成功完成,但 load transaction 因为顺 序混乱而拒绝这些存档。

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等等。
+-------------------------------------华丽的分割线-------------------------------------------------------------------------