1

我们正试图在测试服务器上复制我们的一个 informix 数据库,但如果没有内部的 Informix 专业知识,我们只能猜测我们需要做什么。我自己在动态学习这些东西,远不及有效甚至低效操作 Informix 所需的专业知识水平。无论如何...我们设法从某处的实时服务器复制了 .dat 和 .idx 文件。在其上安装 Linux 和最新的 Informix Dynamic Server 并使其启动并运行。

现在我们应该如何处理来自实时服务器的 .dat 和 idx 文件?我们是否将它复制到某个地方,它会自动识别它?

或者是否有类似的方法可以从 MS SQLServer 附加数据库以在新数据库中注册数据库文件?

在我的绳索末端...

4

4 回答 4

1

你在不知不觉中问了一个相当复杂的问题。Informix 被构建为一个共享一切的数据库引擎,这意味着该实例可用的所有资源对该实例中的每个数据库都可用。这意味着在您的情况下,多个数据库可以将数据存储在任何给定的 dbspace、.dat 或 .idx 文件中。大多数 DBA 都知道不这样做,但需要注意这一点。有了这些知识,您现在知道 .dat 和 .idx 文件不属于数据库,而是属于实例。创建 dbspace 和文件是为了包含您的数据库数据,但它们在技术上属于该实例。值得注意的是,.dat 和 .idx 文件通过逻辑 dbspace 名称为数据库所知。

有了这些背景信息,并假设生产和开发服务器运行相同的操作系统并且您的硬件相对相同,而不是 PARISC、Itanium 或 x86/x64 的组合,我将为您提供几个选项.

  1. 在新实例中创建您需要的 dbspace,并使用 onunload 和 onload 将数据库从生产复制到开发。
  2. 使用 ontape 或 onbar 备份整个生产实例并在您的开发实例上恢复它。

选项 1 要求您知道 dbspace 的名称以及它们的大小。在生产实例上使用onstat -d以找出这一点。顺便说一句, onstat -d 中列出的数字是以页为单位的,我相信 Linux 是 2K 页。

选项 2 只要求数据文件的路径在两台服务器上相同。这意味着 ROOTDBS 在两种情况下都需要相同。可以通过执行找到onstat -c | grep ROOTDBS

有很多内容被遗漏了,但我希望这能为您提供推进任务所需的信息。

于 2008-09-22T18:49:46.580 回答
1

.dat 和 .idx 文件与 C-ISAM 相关联,或者,当组织在名为 dbase.dbs(其中 dbase 是数据库名称)的目录中时,.dat 和 .idx 文件与 Informix 标准引擎相关联,又名 Informix SE。SE 使用 C-ISAM 来管理其存储。SE 与 Informix Dynamic Server (IDS) 有很大不同(并且比它简单得多)。.dat 和 .idx 文件与 IDS 关联并非不可能;这是极不可能的。

从可用信息来看,您的生产服务器似乎正在运行 SE。要将数据从 SE 获取到 IDS,您可能希望在 SE 端使用 DB-Export,在 Linux/IDS 端使用 DB-Import。当然,这是最简单的方法。

还有其他可能的解决方案 - C-ISAM 数据刀片就是其中之一 - 但它们更昂贵并且可能没有保证。还有其他可能的加载解决方案,例如 HPL(高性能加载器)。

有关 Informix 的更多信息,请使用已经引用的各种网站(http://www.informix.com是 IBM 网站的 Informix 部分的链接),或者使用国际 Informix 用户组 (IIUG)网站。有可用的邮件列表(要求您加入,但会员资格是免费的)用于详细讨论 Informix。

于 2008-09-25T00:25:00.063 回答
1

那些 Informix-SE 数据文件 (.DAT) 及其关联的索引文件 (.IDX) 是无用的,除非您还拥有所有关联的目录文件,例如 SYSTABLES.DAT SYSTABLES.IDX、SYSCOLUMNS、SYSINDEXES 等。

然后您还必须担心创建它们的是哪个版本的 Informix-SE,因为有些索引文件节点大小为 2K 或 4K。

您最好的方法是从源数据库中获取所有 .DAT 和 .IDX 文件,以及正确的标准引擎,安装在相同的硬件和操作系统上。

长话短说,在源机器上,运行“dbexport”将所有数据卸载到 ascii 文件,并运行“dbschema”生成所有表模式和索引。在将所有文件卸载到 ascii 平面文件之前,对所有文件运行“bcheck”也没有什么坏处。

于 2016-05-29T23:27:04.027 回答
0

我没有任何特定于 Informix 的建议,但对于此类情况,您通常可以通过查找如何移动数据库(常见的管理任务,通常在手册中进行了详细描述)并跳过可能的步骤来找到答案删除旧数据库。

另外,要注意不同系统架构引起的问题;如果您将某些 DB 从大端系统(例如 Solaris)移动到小端系统(例如 x86 Linux),它们会严重失败。同样,关于移动 DB 的手册部分将涵盖所需的任何额外步骤。

于 2008-09-22T07:27:20.230 回答