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

 


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

使用 java.io 访问文件

PCA/JVM 通过 java.io java.nio 包支持直接文件 I/O。通过使用这些 包,用户可以从文件系统中读取文件以及将文件写入到文件系统中。

必须明确区分操作系统使用的用户标识和 Adaptive Server 使用的用 户标识。


用户标识和权限


Adaptive Server 启动时,将使用启动服务器进程的系统用户 ID 执行该 进程。例如,如果 Adaptive Server 是由系统用户 ID sybase”启动的, 请输入:

% ps -Usybase -o user,pid,command USER PID CMD

sybase 20405 /sybase/ASE-15-0/bin/dataserver ...

因此, Adaptive Server 进程和操作系统之间的所有交互与启动 Adaptive Server 的系统用户 ID 关联。

不过,在服务器中,情况会有所不同。当每个用户登录到服务器时,该 用户使用 Adaptive Server 服务器中定义的用户 ID 执行上述操作。此用 户 ID 与主机上定义的用户 ID 不同,尽管您可能希望用户 ID Adaptive Server 和操作系统上表示同一个人。

在数据库中,用户可以根据为其分配的角色执行不同的操作。登录到 Adaptive Server 的用户可能在主机上没有用户帐户。因此,启动服务器的 用户帐户可以作为任意数量的数据库用户的代理。例如,假设 Adaptive Server 用户要读取两个文件 (用户的文件权限被严格限定为只读)。

-r----------1 sybase sybuser 1263 Aug 19 18:54 myfile1.dat

-r----------1 jdoe sybuser 952 Aug 7 9:02 myfile2.dat


如果用户登录到 Adaptive Server 以运行一个尝试读取这些文件的 Java 方 法, Java 文件 I/O 最终将采用主机接口管理的函数:

isql -Usa -P...

isql -Ujdoe -P... isql -Ujanedoe -P...


对于每个用户来说,基本 read() 运行时函数的行为是相同的。每个用户 可以读取 myfile1.dat,该文件归系统用户 ID sybase”所有,因为将向 操作系统指明服务器归该用户所有。不过,任何用户都无法读取 myfile2.dat,即使它似乎归某个数据库用户所有,因为所有数据库用户标 识压缩为单个操作系统标识 “sybase”,它与进程所有者相关联。因此, 将拒绝访问文件。


指定文件 I/O 目录:UNIX 平台

可以使用传统的 UNIX 表示法指定可选的额外路径权限限制。例如, “u+rw”为用户提供读写访问权限,为组提供只读访问权限并拒绝所有 其它帐户进行访问。这些限制不影响操作系统权限;对于具有只读操作 系统权限的目录,在配置语句中授予读写访问权限的用户并不会获得该 目录的写入访问权限。

对于所有写入操作 (包括文件创建),如果未提供掩码,则目录使用缺 省掩码 0666。该掩码不能用于只读操作。

如果提供了掩码,则假定缺省掩码全部为零。这可确保指定为 (u+rw) 的 掩码生成掩码 0600


掩码语法


work_dir (可信目录)权限掩码:

必须放在紧靠路径后面的位置,它们之间没有空格。

可以使用前导字符 (ugo a)以及后面的 +=rw

x 定义用户、组、其它和所有掩码。

例如:

• (u=rw,go=r) 等于 0644

• (ugo+r,u+w) 等于 0644

• (ugo+r,u+wx) 等于 0755

• (ugo=rwx,go–wx) 等于 0755

可以使用多种方法定义掩码,但始终从左到右进行求值。例如,假设最 初将掩码定义为 0777 (ugo=rwx)。如果后来删除了组和其它帐户的写入 (w) 和执行 (x) 权限,则等效的八进制值变为 0744,掩码变为 (ugo=rwx,go–wx)

如果未指定掩码(掩码部分是可选的),则目录使用缺省写入掩码 0666。 有效语法值包括:

u ... 用户 (或 owner)。 g ... 组。

o ... 其它帐户 (或 world)。

a ... 所有 (设置 ug o)。例如:(a+rw) ug o 启用读取和 写入。

+ ... 启用位。

– ... 禁用位。


= ... 替换位。例如:(u=rw) 替换用户。

r ... 读取位。

w ... 写入位。

x ... 执行位。


示例

要在 pca_jvm_work_dir 数组中添加新的工作目录路径,请输入:

sp_jreconfig "add", "work_dir", "/some/path(u+rw)

sp_jreconfig "add", "work_dir", "/some/path(u=rw)

要从 pca_jvm_work_dir 数组中删除现有的工作目录路径,请输入:

sp_jreconfig "delete", "work_dir", "/some/path"

在删除或更新 work_dir 数组元素或路径条目时,仅路径部分在提供 的字符串中是必需的。

要在 pca_jvm_work_dir 数组中修改现有的工作目录路径,请输入:

sp_jreconfig "update", "work_dir", "/old", "/new"

要更改路径并更新权限,请输入:

sp_jreconfig "update", "work_dir", "/some/path(u+rw)", "/some/path(u+w)"

要在 pca_jvm_work_dir 数组中禁用现有的工作目录路径,请输入:

sp_jreconfig "disable", "work_dir", "/some/path"

最后一个参数是用于标识单个 work_dir 数组元素的完整或部分字符 串值,即使数组中只有一个元素,也必须提供该参数。

要在 pca_jvm_work_dir 数组中清除整个工作目录路径集,请输入:

sp_jreconfig "array_clear", "work_dir"

要启用整个数组,请输入:

sp_jreconfig "array_enable", "work_dir"

要禁用整个数组,请输入:

sp_jreconfig "array_disable", "work_dir"


指定文件 I/O 目录:Windows 平台

可以使用以下表示法指定可选的额外路径权限限制。


掩码语法


Windows 环境中,可以将以下语法添加到工作目录定义末尾以定义权 限掩码:

• /RW — 定义读取/写入权限

• /RO — 定义只读权限

• /NA — 不定义任何访问权限


示例

要将 D:\my_work_dir 定义为具有完全访问权限的可信目录,请输入:

sp_jreconfig "add", "work_dir", "C:\my_work_dir/RW"

要将 D:\my_read_only 定义为具有只读访问权限的可信目录,请输入:

sp_jreconfig "add", "work_dir","D:\my_read_only_dir/RO"

要将 E:\general 定义为具有完全访问权限的可信目录,但禁止访问名 为 TOP_SECRET E:\general 子目录,请输入:

sp_jreconfig "add", "work_dir","E:\general/RW;E:\general\TOP_SECRET/NA"

请使用分号分隔各个目录条目。


文件 I/O 更改


JVM 中的文件 I/O 主要是通过文件打开操作控制的。在成功打开文件后, 通常允许对文件执行其它 I/O 操作。为安全起见,发出的所有文件打开 请求必须使用物理文件的绝对路径;不支持软链接。在尝试执行任何文 件 I/O 操作之前,相对路径将转换为绝对路径。因此,无法将 $SYBASE 目录设置为软链接。这样做可防止 JVM 进行初始化,因为它无法打开

$SYBASE/shared 中的文件。


如果文件打开操作不符合特定的规则集,则无法打开文件。文件打开规 则基于:

文件是否已存在

文件是以只读还是读写访问权限打开的

要打开的文件的位置


打开现有文件的规则

本节介绍了在 UNIX Windows 平台上打开文件的规则和检查。


image

注释 如果任何检查失败,则会拒绝文件打开请求并向调用者报告错误。

image


UNIX 平台


如果与服务器关联的用户 ID 具有访问文件的权限,并且该文件位于

$SYBASE/shared 目录中,则可以打开该文件进行只读访问。任何其它

$SYBASE 目录不允许进行读取访问。


image

注释 任何 $SYBASE 目录绝不允许进行写入访问 (包括文件创建)。

image


对于打开以进行写入访问的文件,将在批准文件打开请求之前进行额外 的检查。 Adaptive Server 检查:

发出文件打开请求的用户是文件所有者。

硬链接数不超过一个。如果超过一个,请求将会失败。

要打开的文件位于有效目录位置。如果文件位于 $SYBASE 目录中, 或者没有位于配置的某个工作目录中,请求将会失败。

为工作目录配置了允许使用写入访问权限打开文件的访问掩码。缺 省掩码为 0666。除非您希望使用非缺省掩码,否则不需要该掩码。


Windows 平台


如果与服务器关联的用户 ID 具有访问文件的权限,则在以下情况下授予 访问权限:

该文件在 %SYBASE% 目录结构中已存在,允许进行只读访问,并且 打开以进行写入的请求收到 ERROR_ACCESS_DENIED 错误,或者

该文件存在或正在 Windows %TEMP% 目录中创建该文件,并且允 许进行读写访问,或者

该文件存在或正在配置的工作目录中创建 (可信目录)该文件,允 许进行的访问是为工作目录定义的访问,或者

该文件存在或正在可信目录下的任何子目录中创建该文件,允许进 行的访问是为父目录定义的访问。

如果一个可信目录嵌套在另一个可信目录中,系统将检查目标文件 路径中的每个可信父目录的访问权限,并应用具有最大限制的访问 权限。因此,可以允许对可信目录树进行读写访问,但指定对它下 面的指定目录进行只读访问或不允许进行访问。此行为与 Windows ACL 应用于文件的行为类似。


使用文件打开操作创建文件的规则

打开不存在的文件的请求实质上就是文件创建操作,必须使用与已存在 的文件不同的方式处理该请求。适用于打开以进行写入访问的现有文件 的相同位置限制也适用于新创建的文件:如果新创建的文件位于 $SYBASE 目录结构中,或者不包含在配置的工作目录中,请求将会失败。此外, 目录的访问掩码必须允许与服务器进程关联的用户 ID 在目标目录中写 入内容。


image

注释 始终允许在 /tmp 目录中进行写入访问 (包括文件创建)。

image


UNIX 平台上 — 通过打开请求创建的文件必须指定写入访问权限,并 且始终使用文件打开标志 (O-CREAT | O-EXCL | O-RDWR) 和访问掩码 (0600) 打开文件。为安全起见,应始终使用这些文件打开标志和该访问 掩码,而不管文件打开请求指定了什么标志和访问掩码。无法使用指定 打开文件以进行只读访问的文件打开标志创建文件。要限制文件大小或 设置磁盘使用限额,必须在操作系统级别执行此操作。


最终文件检查


在文件打开请求通过了所有文件检查并允许打开文件后,最终检查可确 保打开的文件与最初请求的文件相一致。这可防止尝试打开本来不允许 打开的文件,以使其逃避检查的企图难以得逞。如果文件打开请求失败, 则会在审计跟踪中添加注释,并且调用方法引发 java.lang.IOException。 特定于方法的 IOException 处理决定了该异常对用户可见,还是由 Java 代码中的替代机制处理。




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