添加Informix .dat和.idx文件

时间:2020-03-06 14:31:39  来源:igfitidea点击:

我们正在尝试在测试服务器上复制我们的INFORMATIONIX数据库之一,但是如果没有Informix专业知识,我们只能猜测我们需要做什么。我本人正在实时学习这些东西,而且远远没有达到有效甚至低效运行Informix所需的专业知识水平。无论如何...
我们设法从实时服务器的某个位置复制了.dat和.idx文件。在其上安装了Linux和最新的Informix Dynamic Server,并使其启动并运行。

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

还是有一种等效的方式,例如我们可以从MS SQLServer添加数据库以在新数据库中注册数据库文件?

在我的绳子末端...

解决方案

我没有任何特定于Informix的建议,但是对于这种情况,通常可以通过查找如何移动数据库(常见的管理任务,通常在手册中进行了很好的说明)来找到答案,而只是跳过一些步骤删除旧数据库。

另外,请注意由不同的系统架构引起的问题;如果将DB从大端系统(例如Solaris)迁移到小端系统(例如x86 Linux),则某些DB会严重失败,同样,有关移动DB的手册部分将介绍所需的任何其他步骤。

我们问了一个非常复杂的问题,却没有意识到。 Informix被设计为共享的所有数据库引擎,这意味着实例可用的所有资源对于该实例中的每个数据库都是可用的。这意味着在情况下,多个数据库可以将数据存储在任何给定的dbspace,.dat或者.idx文件中。大多数DBA都比这样做更了解,但这是需要注意的事情。有了这些知识,我们现在知道.dat和.idx文件不属于数据库,而是属于实例。 dbspace和文件是为了包含数据库数据而创建的,但从技术上讲它们属于实例。值得注意的是,数据库的逻辑dbspace名称知道.dat和.idx文件。

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

  • 在新实例中创建所需的数据库空间,并使用onunload和onload将数据库从生产环境复制到开发环境。
  • 使用ontape或者onbar备份整个生产实例,并将其还原到开发实例上。

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

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

还有很多遗漏的地方,但是我希望这能为我们提供执行任务所需的信息。

.dat和.idx文件与C-ISAM相关联,或者在组织到名为dbase.dbs(其中dbase是数据库名称)的目录中时,.dat和.idx文件与Informix Standard Engine相关联,又名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 datablade,但它们更昂贵,可能无法保证。还有其他可能的加载解决方案,例如HPL(高性能加载程序)。

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