Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103670795
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Sybase

2008-04-11 11:19:55

 来源:赛迪网    作者:hushanhe

Sybase SQL Anywhere 是Sybase 公 司 开 发 的 一 种 小 型 数 据 库 产 品, 有 单 用 户 版 和 多 用 户 版, 可 安 装 在Win95、Win98、NT、Netware 等 平 台。SQL Anywhere 的SQL 语 句 基 本 上 和Sybase Adaptive Server 一 致; 而 且 功 能 也 相 当 强;PowerBuilder5.0 以 上 的 版 本 都 自 带 一 个SQL Anywhere。 因 此, 对 使 用 笔 记 本 或 单 机 的 开 发 人 员 来 说, 选 择SQL Anywhere 作 为 数 据 库 来 开 发 应 用 程 序 是 十 分 方 便 的, 故SQL Anywhere 得 到 了 普 遍 的 应 用。 但 是 突 然 断 电 或 不 正 常 关 机 都 有 可 能 破 坏SQL Anywhere 的 数 据, 由 此 造 成 很 大 的 损 失, 下 面 就 来 介 绍 一 种 恢 复 被 破 坏 的 数 据 库 的 方 法。

SQL Anywhere 数 据 库 由 后 缀 分 别 为.db 和.log 的 两 个 文 件 组 成。 其 中.db 的 文 件 是 用 来 存 放 数 据 库 信 息( 包 括 表 结 构、 视 图、 数 据 等)。 而.log 文 件 是 个 日 志 文 件, 用 来 记 录 用 户 每 一 次 对 数 据 库 有 影 响 的 操 作, 例 如 创 建 或 删 除 表、 视 图、 触 发 器 等 对 象, 插 入、 删 除、 修 改 表 中 的 数 据 等。 所 以 只 要 把.log 文 件 的 内 容 转 换 成 一 条 条 的 S Q L 语 句, 然 后 再 建 一 个 空 的 数 据 库, 再 执 行 这 些 S Q L 语 句, 则 恢 复 数 据 的 问 题 就 解 决 了。Sybase 公 司 提 供 了 几 个 实 用 程 序 来 完 成 以 上 功 能。

现 假 设 数 据 库 系 统 文 件 分 别 名 为mydb.db 和mydb.log。 如 果mydb.db 已 被 破 坏。 现 在 创 建 一 个 新 的 数 据 库, 假 设 文 件 分 别 名 为new.db 和new.log。

用Sybase 提 供 的dbtranw.exe, DB32W.EXE, rtsqlw.exe 等 实 用 程 序 来 完 成 恢 复 工 作, 步 骤 如 下 表。

步 骤 命 令 功 能 

1. Dbtranw -r -k -y mydb.log db.sql 把.log 
文 件 的 内 容 转 换 成 的 S Q L 语 句 

2. Attrib -r mydb.db 
修 改 只 读 文 件mydb.db 的 属 性 为 可 写 

3. Attrib -r mydb.log 
修 改 只 读 文 件mydb.log 的 属 性 为 可 写 
4. Copy new.db mydb.db 
用 新 的 空 库 文 件 覆 盖 被 破 坏 的 旧 库 文 件 

5. Copy new.log mydb.log 
用 新 的 日 志 文 件 覆 盖 旧 的 日 志 文 件 

6. DB32W.EXE -d mydb.db 
启 动 数 据 库SQL Anywhere 

7. Rtsqlw  -q -c "userid=dba; 
password=sql" read db.sql 
执 行 从.log 文 件 中 倒 出 来 的 S Q L 语 句

其 中 第 一 步 的 功 能 是 把 旧 的 日 志 文 件 转 换 成 S Q L 语 句, 并 放 在 一 个 名 为db.sql 的 文 件 中, 特 别 注 意 它 只 能 在 第 五 步 之 前 操 作, 否 则 日 志 文 件 会 被new.log 所 覆 盖, 而 导 致 无 法 恢 复 数 据。 最 后 一 步 的 功 能 是 从 文 件db.sql 中 读 取SQL 语 句 并 执 行, 假 设 数 据 库 的 用 户 名 为dba, 而 口 令 为sql。 有 关 各 个 命 令 及 参 数 据 的 更 详 细 的 用 法 可 以 查 看 相 应 的 帮 助。 在 此 提 醒 用 户 注 意:.log 文 件 不 能 随 便 删 除, 否 则 恢 复 的 数 据 就 不 完 整。

阅读(474) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~