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

 


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

代理数据库


共有两种类型的代理数据库:用户和系统。


用户代理数据库


创建用户代理数据库时,将自动从包含实际表的远程位置导入代理表的 元数据。然后,使用这些元数据在代理数据库中创建代理表。

若要创建代理数据库,请使用:

create database <dbname> [create database options]

[with default_location = ’pathname’ [for proxy_update]]

可以使用 with default_location 子句来指定任何新表的存储位置,如果还 指定了 for proxy_update 子句,则还会指定在自动创建代理表时从中导入 元数据的位置。 for proxy_update 将数据库指定为代理数据库;with default_location 定义从中导入代理表的位置。如果未指定 for proxy_updatewith default_location 的行为与 sp_defaultloc 所提供的行为相同 使用缺省 的存储位置来创建新表和现有表,但在处理 create database 命令的过程 中不会自动导入代理表定义。

路径名的值是具有如下格式的字符串标识符:servername.dbname.owner

servername — 必需字段;表示拥有代理表要引用的对象的服务器的 名称。必须存在于 master.dbo.sysservers.srvname 中。

dbname — 可选。 servername 中包含代理表要引用的对象的数据库 的名称。


owner — 可选。代理表要引用的对象的所有者名。这可能是有限制 性的,因此,如果多个用户拥有 dbname 中的对象,则指定所有者 将仅选择该用户所拥有的那些对象。不会为其它用户所拥有的对象 创建代理表。

如果指定 for proxy_update 时不指定 default_location,则报告错误。

创建代理数据库 (使用 for proxy_update 选项)后,将调用组件集成服务 函数来执行以下操作:

提供包含所有代理表所需的数据库大小的估计值,这些代理表表示 在主服务器的数据库中找到的实际表/视图。此估计值根据包含所有 代理表和索引所需的数据库页数来提供。如果未指定大小和数据库 设备,则使用此大小。


image

注释 如果用指定的特定大小来创建数据库 [on device_name = nn], 或者指定设备名而未指定大小 [on device_name],则不估计代理数据 库的大小要求;在这种情况下,假定用户或数据库管理员要替换为 代理数据库计算的缺省大小。

image


如果正从其它 Adaptive Server 导入元数据,则在创建代理表前导入 远程数据库用户。每个导入数据库的用户必须在 syslogins 中拥有相 应的系统用户名。

创建所有表示在协同服务器的数据库中找到的实际表/视图的代理表。 不为系统表创建代理表。

将代理表的所有权限授予 “public”

“guest” 用户添加到代理数据库。

从远程节点导入数据库用户 (如果是 Adaptive Server)。

create table 权限授予 “public”

设置数据库状态以表示此数据库是用户代理数据库。通过设置 master.dbo.sysdatabases.status3 (0x0001, DBT3_USER_PROXYDB) 中 的状态字段来完成此操作。

数据库创建完毕后,它包含在缺省位置中找到的每个表或视图的代理表。 用户代理数据库的行为与以前数据库行为完全相同。用户可以创建额外 的对象,如 procedureviewsrulesdefaults 等,对代理表执行操作的 DDL DML 语句均按本文中所描述的方式工作。

唯一的例外是 alter database 命令。将在下一节中介绍该命令的语法和 功能。


用户代理数据库模式同步

有时,DBA 可能必须强制对代理数据库中包含的代理表进行重新同步。 可以使用 alter database 命令来完成这一过程:

alter database <dbname>

[alter database options] [for proxy_update]

如果输入 for proxy_update 子句时没有指定其它选项,则不会扩展数据库 的大小;而是从代理数据库中删除代理表 (如果有)并用元数据重新创 建,该元数据是从执行 create database ... with default_location = ’pathname’ 时所指定的 pathname 中获取的。

如果使用 create database 和其它选项来扩展数据库的大小,则在扩展大 小后将执行代理表同步。

alter database 扩展的目的是为 DBA 提供使用方便的单步操作,通过 该操作可获得单个远程节点上所有表的精确且最新的代理表示。

所有的外部数据源都支持此重新同步,而不仅仅是 HA 集群环境中的主 服务器。而且,不需要首先使用 for proxy_update 子句来创建数据库。如 果通过 create database 命令或使用 sp_defaultloc 指定了缺省存储位置,则 可以将数据库中的元数据与远程存储位置上的元数据同步。

使用 create/alter database 指定代理数据库时,将隐式启用某些行为:

对使用 create database 命令指定的缺省位置的修改不允许使用 alter database

不能在代理数据库中创建本地表。 create table 命令将创建代理表, 并且在缺省位置创建实际表。

可以在 create table 命令中使用 at ’pathname’ 语法来指定表的缺省位 置。如果路径名与缺省位置不同,则 alter database 命令无法同步该 表的元数据。

若要更改缺省位置,请删除该数据库,然后使用 default_location = ’pathname’ 子句中指定的新路径名重新创建该数据库。如果使用 sp_defaultloc 更改了位置,则使用新位置来提供元数据同步,但不会 对用以前位置创建的代理表进行同步,如果其名称与新位置上表的 名称冲突,则可能会删除和替换代理表。


系统代理数据库


系统代理数据库的行为与用户代理数据库类似,但有一些明显的改进和 例外情况。系统代理数据库只用于 HA 配置中。

系统代理数据库允许在高可用性集群系统的任一节点上运行客户编写的 应用程序。这并不表示 “单系统映像”功能;它表示这样一种环境: 在这种环境中,可以在集群系统的任一节点上执行大多数用户编写的应 用程序。这意味着,数据库和用户创建的对象应对所有节点可见。

系统代理数据库与其引用的主节点中的数据库具有相同的名称,并且包 含对支持此应用程序所需的用户定义对象的处理。将为主数据库中找到 的每个用户表和视图创建代理表,将存储过程转换为 RPC 并转移到代理 数据库引用的节点。


系统代理数据库创建


在以下情况下,自动创建系统代理数据库:

通过使用存储过程 sp_companion ServerName, ’configure’, with_proxydb

来配置 HA 集群。

在这种情况下,为在以 ServerName 表示的服务器中找到的每个用 户数据库创建一个系统代理数据库。

在其 HA 状态为 MODE_APNCMODE_SNC MODE_ASNC 之一 的服务器中发出 create database 命令。

创建完系统代理数据库后,将调用组件集成服务函数来执行以下操作:

grant create table to public — 该命令允许在主服务器上创建表时导致 在系统代理数据库中创建代理表。


当前数据库具有系统代理数据库时的模式同步

HA 集群中,必须将对主服务器的数据库所做的某些更改转移到协同 服务器,以使两个服务器保持同步。

在具有系统代理数据库的数据库中执行某些 DDL 命令时,将导致通知 协同服务器并自动对相应更改进行同步:

create table drop table — 执行本地操作,导致创建或删除本地表。 此命令随即转移到协同服务器以在系统代理数据库中执行,因此可 以创建或删除代理表。


create index drop index — 执行本地操作,导致创建或删除索引。 随即通知拥有系统代理数据库的服务器,并且删除和重新创建代理 表,允许在代理表中反映对索引的更改。

create view drop view — 成功执行本地操作,导致创建或删除本地 视图。随即通知拥有系统代理数据库的服务器,并创建或删除代 理表。

如果在系统代理数据库中执行这些命令,将发生以下类似行为:

create table drop table — 创建或删除本地代理表。该命令随即转移 到主服务器,因此可创建或删除代理表所引用的本地表。

create index drop index — 在代理表上执行本地操作,导致创建或 删除索引。随即通知拥有主数据库的服务器,并在代理表引用的本 地表上创建或删除索引。

create view drop view — 不允许在系统代理数据库中使用。


在系统代理数据库中执行存储过程

当前数据库为系统代理数据库时,如果遇到系统存储过程请求,组件集 成服务将首先尝试在本地 sybsystemprocs 数据库中找到该存储过程,然 后执行它。如果在 sybsystemprocs 中未找到该存储过程,组件集成服务 将搜索 master 数据库。如果该过程不是系统存储过程,或者它虽然是系 统存储过程,但无法在本地找到它,则会将存储过程请求转换为 RPC 并将其传输到系统代理数据库缺省位置引用的服务器。


系统代理数据库的其它行为

在系统代理数据库中执行某些命令时,将拒绝执行命令并显示错误:

create procedure drop procedure

create view drop view

create trigger drop trigger

create rule drop rule

create default drop default

这些情况下生成的错误为:Msg 12818, Severity 16: Cannot create an object of this type in system-created proxy database




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