远程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 启动

使用 load database 命令

使用 load transaction 命令

通过对恢复故障隔离模式进行设置,可以控制在数据库中撤消或重 新应用事务时检测到损坏的数据情况下的恢复行为。

如果某索引被标记为可疑索引,则系统管理员可通过删除并重新创 建该索引来修复该索引。

恢复故障隔离可以:

配置是整个数据库还是只有可疑页会在恢复检测到损坏时变得 无法访问

配置整个含可疑页的数据库是否在 read_only 模式下联机,或者 是否仅能访问联机页来进行修改

列出有可疑页的数据库。

按页 ID、索引 ID 和对象名列出指定数据库中的可疑页。

在修复可疑页时为系统管理员将可疑页联机

在修复完可疑页后为所有数据库用户将可疑页联机

该功能将可疑页隔离出来而令其余的数据库处于联机状态,从而可 以更灵活地处理数据损坏。您可以诊断问题 (有时可以纠正它 们),同时用户仍可访问数据库的大部分。您可以评估损坏的程度 并安排紧急修复,或在方便时重新装载。

恢复故障隔离仅应用于用户数据库。如果系统数据库有任何损坏 页,恢复过程总是使系统数据库完全脱机。在修复或删除系统数据 库中的所有损坏页之前,不能恢复系统数据库。


脱机页的持续性


已脱机的可疑页在重新启动服务器后仍然处于脱机状态。有关脱机 页的信息存储在 master.dbo.sysattributes 中。

使用 drop database load database 命令从 master.dbo.sysattributes 中 清除可疑页的条目。


配置恢复故障隔离


如果安装了 Adaptive Server,则缺省恢复故障隔离模式为 databases,该模式将数据库标记为可疑,并在检测到任何损坏页时 使整个数据库脱机。


隔离可疑页


若要隔离可疑页以便只有它们处于脱机状态,同时使用户可以访问 数据库的其余部分,请使用 sp_setsuspect_granularity 将恢复故障隔 离模式设置为 page。下次在数据库中执行恢复时,此模式会生效。 请参见 《参考手册:过程》。

如果没有 database page 参数, sp_setsuspect_granularity 会显示指 定数据库的当前的和已配置的恢复故障隔离模式设置。如果没有任 何参数,它将显示当前数据库的这些设置。

如果无法将损坏隔离到特定页,则恢复会将整个数据库标记为可 疑,即使恢复故障隔离模式设置为 page 也是如此。例如,损坏的事 务日志或不可用的全局资源就会导致这种情况发生。

恢复过程将特定页标记为可疑后,缺省行为是使可疑页脱机从而不 可访问,而对数据库可进行读写操作。但是,如果将 read_only 选项 指定给 sp_setsuspect_granularity,并且恢复过程将任何页标记为可疑, 则整个数据库将以 read_only 模式进入联机状态且不可修改。如果您 首选 read_only 选项,但在某些情况下,感觉允许用户修改非可疑页 会比较好,则可以使用 sp_dboption 使数据库的联机部分变得可写:

sp_dboption pubs2, "read only", false

在这种情况下,可疑页仍处于脱机状态,直到您将其修复或强制其 联机,如 289 页的 “使脱机页联机”中所述。


增加所允许的可疑页数目


可疑性增加阈值是恢复将整个数据库标记为可疑时的可疑页数量

(甚至是在恢复故障隔离模式为 page 时)。缺省情况下,此值在单 个数据库中设为 20 页。使用 sp_setsuspect_threshold 可更改可疑性增 加阈值。请参见 《参考手册:过程》

可配置数据库级的恢复故障隔离和可疑性增加阈值。

此示例显示, pubs2 数据库的恢复故障隔离模式为 page 并且上次针 对此数据库运行恢复时的增加阈值为 20 (当前可疑性增加阈值)。 下次针对此数据库运行恢复时,恢复故障隔离模式为 page 并且增加 阈值为 30 (已配置的值)。

sp_setsuspect_granularity pubs2

DB Name Cur. Suspect Gran. Cfg. Suspect Gran. Online mode

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

pubs2 page page read/write


sp_setsuspect_threshold pubs2

DB Name Cur. Suspect threshold Cfg. Suspect threshold

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

pubs2 20 30


如果没有参数, sp_setsuspect_granularity sp_setsuspect_threshold 将显示当前数据库的当前设置和所配置的设置 (如果该数据库是用 户数据库)。


获取有关脱机数据库和页的信息

使用 sp_listsuspect_db 可查看哪些数据库包含脱机页。 以下示例显示有关可疑页的常规信息:

sp_listsuspect_db

The database 'dbt1' has 3 suspect pages belonging to 2 objects.

使用 sp_listsuspect_page 可显示有关各个脱机页的详细信息。 如果未指定 dbname,则缺省值为当前数据库。以下示例显示 dbt1

数据库中 sp_listsuspect_page 的详细页级输出。

sp_listsuspect_page dbt1

DBName Pageid Object Index Access


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

dbt1

384

tab1

0

BLOCK_ALL

dbt1

390

tab1

0

BLOCK_ALL

dbt1

416

tab1

1

SA_ONLY

(3 rows affected, return status = 0)

如果 Access 列中的值是 SA_ONLY,并且可疑页为 1,则只有具有 sa_role 角色的用户才可以访问该可疑页。如果该值为 BLOCK_ALL,则任何人都不能访问该页。

任何用户都可以从任何数据库运行 sp_listsuspect_db

sp_listsuspect_page


使脱机页联机


使用 sp_forceonline_db 可使数据库中的所有脱机页可以访问,使用 sp_forceonline_page 可使单个脱机页可以访问。请参见 《参考手册: 过程》。

使用这两个过程指定访问类型。

“sa_on” 使可疑页或数据库只能由具有 sa_role 角色的用户访问。 这样,就可在数据库已启用并在运行的情况下修复可疑页和测 试修复情况,同时禁止一般用户访问可疑页。您也可以使用它 针对含可疑页的数据库执行 dump database dump transaction with no_log,如果页脱机,则将禁止该操作。

“sa_off” 阻止所有用户的访问,包括系统管理员。这将使用 “sa_on”撤消以前的 sp_forceonline_db sp_forceonline_page

“all_users” 在修复页之后为所有用户使脱机页联机。

不同于先使用 “sa_on” 使可疑页联机,然后再使用 “sa_off”使 它们重新脱机,当您针对 “所有用户”使用 sp_forceonline_page sp_forceonline_db 使页联机时,此操作将无法撤消。没有方法 可使联机页再脱机。


image

警告! Adaptive Server 在被联机的页上不执行任何检查。确保 已经修复每个将转至联机的页。

image

您无法在事务中执行 sp_forceonline_db sp_forceonline_page。 您必须具有 sa_role 角色且在 master 数据库中,才能执行

sp_forceonline_db sp_forceonline_page


DOL 锁定表的索引级故障隔离

如果 DOL 锁定表的索引页在恢复期间被标记为可疑,则整个索引 都将被脱机。两个系统过程管理脱机索引:

sp_listsuspect_object

sp_forceonline_object

大多数情况下,系统管理员使用 sp_forceonline_object 将可疑索引标 记为仅可供具有 sa_role 角色的人员使用。如果该可疑索引在用户表 中,可通过删除并重新创建该索引来修复它。

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


脱机页的副作用


以下限制适用于具有脱机页的数据库:

需要脱机数据的事务会直接或间接 (例如,因为参照完整性约 束)出现故障并生成消息。

数据库的任何部分脱机时,不能使用 dump database 命令。

系统管理员可以通过配合使用 sp_forceonline_db “sa_on” 来强 制脱机页联机,接着转储数据库,然后在转储完成后将 sp_forceonline_db “sa_off” 配合使用。

如果数据库的任何部分脱机,则不能使用 dump transaction with no_log dump transaction with truncate_only

系统管理员可以通过配合使用 sp_forceonline_db “sa_on” 来强 制脱机页联机,接着使用 with no_log 转储事务日志,然后在转 储完成后将 sp_forceonline_db “sa_off” 配合使用。

要删除包含脱机页的表或索引,必须使用 master 数据库中的事 务。否则,删除操作将失败,因为它必须从 master.dbo.sysattributes 中删除可疑页条目。下例将从 master.dbo.sysattributes 中删除对象并删除与其脱机页有关的信息。

若要删除名为 authors_au_id_ind 的索引 (该索引包含可疑页), 请从 pubs2 数据库中删除 master 数据库事务中的索引:

use master go

sp_dboption pubs2, "ddl in tran", true go

checkpoint pubs2


go

begin transaction

drop index authors.au_id_ind commit

go

use master go

sp_dboption pubs2, "ddl in tran", false go

checkpoint pubs2 go


使用恢复故障隔离的恢复策略

有两种主要的策略,可以在保证用户能够访问数据库的同时,将带 有可疑页的数据库恢复到一致的状态:重装和修复。

这两种策略都要求:

一个干净的数据库转储

一系列可靠的事务日志转储 (直到带有可疑页的数据库恢复时)

在数据库被恢复,能够捕获对脱机页的更改后,事务日志立即 转储到设备

连续的事务日志向设备转储,此时用户使用的数据库部分脱机


重装策略


重装需要从备份中恢复一个干净的数据库。方便时,装载最近的干 净数据库转储,并应用事务日志以恢复数据库。

load database master.dbo.sysdatabases master.dbo.sysattributes 系 统表中清除可疑页信息。

当已恢复的数据库进入联机状态时,立即转储该数据库。 12-1 说明了用于重装数据库的策略。


12-1:重装策略

image

数据库完全联机

image

image

image

image


数据库部分联机

image

image

image

image

image

image

数据库联机

image

image

image


image

数据库完全联机


清除数据库转储 转储事务 1

重新启动服务器 恢复运行 / 查找可疑页 恢复完成


转储事务 2


转储事务 3


转储事务 4

装载数据库 应用事务转储 1

应用事务转储 2

应用事务转储 3

应用事务转储 4


转储数据库

image

image


修复策略


修复策略涉及在数据库部分联机时修复损坏的页。使用已知方法诊 断和修复问题,包括 dbcc 命令、针对可疑页查询已知结果,以及根 据需要致电 Sybase 技术支持部门。修复损坏还包括删除并重新创建 包含可疑页的对象。

您可以使用 sp_forceonline_page 在修复部分脱机页后将这些脱机页 分别联机,或者待所有脱机页都被修复后使用 sp_forceonline_db 一 次性使它们联机。

修复策略不要求整个数据库都脱机。 12-2 说明了用于修复损坏页 的策略。


12-2:修复策略

image

数据库完全联机

image

image

image

数据库部分联机

image

image

image

image

image

image

image

image

数据库完全联机


清除数据库转储 转储事务 1

重新启动服务器 恢复运行 / 查找可疑页 恢复完成

开始分析问题 / 修复损坏 转储事务 2


转储事务 3


转储事务 4 完成损坏修复 强制页联机 转储数据库


评估损坏的程度


有时您可使用恢复故障隔离来评估损坏的程度,方法是强制运行恢 复过程和检查被标记为可疑的页的数目以及这些页所属的对象。

例如,如果用户报告某个数据库有问题,可以将恢复故障隔离模式 设置为 “页”,并通过重新启动 Adaptive Server 强制恢复。恢复完 成后,使用 sp_listsuspect_db sp_listsuspect_page 确定有多少个可 疑页以及哪些数据库对象受影响。

如果整个数据库都被标记为可疑且收到以下消息:

Reached suspect threshold %dfor database %.*s

.Increase suspect threshold using sp_setsuspect_threshold.

使用 sp_setsuspect_threshold 可增加可疑增加阈值并强制恢复再次运 行。每次收到此消息时,都可以提高该阈值并运行恢复过程,直到 数据库进入联机状态。如果未收到此消息,则表明损坏内容未被隔 离到特定页,在这种情况下,用于确定可疑页的数目的这一策略将 不起作用。




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