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

 


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

创建阈值过程


Sybase 不提供阈值过程;请自行创建阈值过程以确保它们适合自己节点 的需要。

建议阈值过程中的操作包括写入服务器的错误日志和转储事务日志(以 便增加日志空间量)。还可以执行对 Open Server XP Server 的远程过 程调用。例如,如果在 sp_thresholdaction 中包括以下命令,则该命令在 Open Server 上执行名为 mail_me 的过程:

exec openserv...mail_me @dbname, @segment 请参见《Transact-SQL 用户指南》。 本节提供关于编写阈值过程的一些准则,还有两个示例过程。


声明过程参数


Adaptive Server 向阈值过程传递四个参数:

@dbnamevarchar(30),其中包含数据库的名称

@segmentnamevarchar(30),其中包含段名

@space_leftint,其中包含阈值的剩余空间值

@statusint,对于最后机会阈值,此参数的值为 1;对于其它阈值, 此参数的值为 0

按位置而不是按名称传递这些参数。过程可为这些参数使用其它名称, 但必须按以上顺序以及以上数据类型声明这些参数。


生成错误日志消息


在过程开始的几句中包括一条 print 语句,以便在错误日志中记录数据库 名、段名和阈值大小。如果过程不包含 print raiserror 语句,错误日志 将不包含阈值事件的任何记录。

执行阈值过程的进程是一个内部 Adaptive Server 进程。该进程没有关联 的用户终端或网络连接。如果在终端会话过程中通过直接执行阈值过程

(即,使用 execute procedure_name)测试阈值过程,则可在屏幕上看到 来自 print raiserror 消息的输出。如果因为达到阈值而执行相同过程, 包含数据和时间的消息将记录在错误日志中。


例如,如果 sp_thresholdaction 包含以下语句:

print "LOG DUMP:log for '%1!' dumped", @dbname

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

00: 92/09/04 15:44:23.04 server:background task message:LOG DUMP:log for 'pubs2' dumped


转储事务日志


如果 sp_thresholdaction 过程包含 dump transaction 命令,则 Adaptive Server 会将日志转储到过程中指定的设备上。dump transaction 将自日志 开头起删除包含未提交的事务记录的页之前的所有页,它通过这种方式 来截断事务日志。

当有足够日志空间时,挂起的事务被唤醒。如果中止事务而不是挂起事 务,则用户必须重新提交这些事务。

如果 sp_thresholdaction 由于未记录的写入状态而失败,则可以发出 dump tran with no_log 作为替代项。

通常,Sybase 建议不要转储到磁盘,尤其不要转储到同一台计算机的磁盘 上或转储到与数据库磁盘相同的磁盘控制器上。然而,因为由阈值启动的 转储可能在任何时刻发生,所以最好转储到磁盘后将得到的文件复制到脱 机的介质上。(必须将这些文件复制回磁盘才能重新装载这些文件。)

选择取决于:

是否已使专用转储设备联机、已装载并已准备好接收转储的数据

在数据库可用时,是否有操作员可装入磁带卷

事务日志的大小

事务率

转储数据库和事务日志的定期时间安排

可用磁盘空间

其它特定于节点的转储资源和约束


一个简单的阈值过程

以下是一个转储事务日志并向错误日志输出消息的简单过程。因为此过 程使用一个变量 (@dbname) 表示数据库名称,所以此过程可以用于 Adaptive Server 中的所有数据库:

create procedure sp_thresholdaction

@dbname varchar(30),

@segmentname varchar(30),

@free_space int,

@status int

as

dump transaction @dbname to tapedump1

print "LOG DUMP: %1!for %2!dumped",

@segmentname, @dbname


一个更复杂的过程


根据传递给过程的参数值,以下阈值过程执行不同的操作。该过程的条 件逻辑使得可与日志段和数据段一起使用该过程。

该过程的操作有:

如果是由于达到日志的最后机会阈值而调用该过程,则输出“LOG FULL”消息。最后机会阈值的状态位是 1,而所有其它阈值的状 态位是 0。只有对于最后机会阈值,测试 if (@status&1) = 1 才返回 “true”值。

确认所提供的段名为日志段。即使日志段的名称已更改,日志段的 段 ID 也始终为 2

输出有关事务日志的“前”和“后”大小信息。如果日志未明显减 小,则表明长时间运行的事务导致日志填满。

输出事务日志转储开始和停止的时间,这有助于收集有关转储持续 时间的数据。

如果阈值不在日志段上,则在错误日志中输出消息。此消息给出数 据库名、段名和阈值大小,使您了解数据库的数据段已填满。

create procedure sp_thresholdaction

@dbname varchar(30),

@segmentname varchar(30),

@space_left int,

@status int

as


declare @devname varchar(100),

@before_size int,

@after_size int,

@before_time datetime,

@after_time datetime,

@error int


/*

** if this is a last-chance threshold, print a LOG FULL msg

** @status is 1 for last-chance thresholds,0 for all others

*/

if (@status&1) = 1 begin


end

print "LOG FULL: database %1!", @dbname


/*

** if the segment is the logsegment, dump the log

** log segment is always "2" in syssegments

*/

if @segmentname = (select name from syssegments where segment = 2)

begin


/* get the time and log size

** just before the dump starts

*/

select @before_time = getdate(),

@before_size = reserved_pages(db_id(), object_id("syslogs")) print "LOG DUMP: database %1!, threshold %2!",

@dbname, @space_left


select @devname = "/backup/" + @dbname + "_" + convert(char(8), getdate(),4) + "_" + convert(char(8), getdate(), 8)


dump transaction @dbname to @devname


/* error checking */ select @error = @@error if @error != 0

begin


end

print "LOG DUMP ERROR: %1!", @error

/* get size of log and time after dump */ select @after_time = getdate(),

@after_size = reserved_pages(db_id(), object_id("syslogs"))


/* print messages to error log */

print "LOG DUMPED TO: device %1!", @devname

print "LOG DUMP PAGES: Before: %1!, After %2!",

@before_size, @after_size

print "LOG DUMP TIME: %1!, %2!", @before_time, @after_time end

/* end of if segment = 2section */ else

/* this is a data segment, print a message */ begin

print "THRESHOLD WARNING: database %1!, segment %2!at

%3!pages", @dbname, @segmentname, @space_left

end


决定在何处放置阈值过程

尽管可以为每个阈值创建单独的过程来转储事务日志,但创建可以由所 有日志段阈值执行的一个阈值过程更简便。当段上可用空间量下降到阈 值以下时, Adaptive Server 将读取受影响的数据库中的 systhresholds 表, 获取关联的存储过程的名称。该存储过程可以是下列之一:

Open Server 的远程过程调用

用数据库名限定的过程名(例如,

sybsystemprocs.dbo.sp_thresholdaction

非限定的过程名

如果过程名不包括数据库限定符,则 Adaptive Server 将在发生空间不 足的数据库中进行查找。如果在其中找不到该过程,而且过程名以字 符“sp_”开头,则 Adaptive Server 将在 sybsystemprocs 数据库中查找该 过程,然后在 master 数据库中查找该过程。

如果 Adaptive Server 找不到该阈值过程,或不能执行该阈值过程,则会 在错误日志中输出消息。




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