附加Informix .dat和.idx文件

in_id 发布于 2018-05-05 export 最后更新 2018-05-05 20:32 153 浏览

我们试图在测试服务器上复制我们的informix数据库中的一个,但是如果没有Informix的专业知识,我们只能猜测我们需要做什么。我正在自己学习这些东西,远远不能满足Informix高效或低效运行所需的专业知识水平。无论如何... 我们设法将活动服务器中的.dat和.idx文件复制到某处。在其上安装Linux和最新的Informix Dynamic Server并启动并运行。 现在我们应该如何处理来自实时服务器的.dat和idx文件?我们是否将它复制到某处并自动识别它? 或者是否有一种等同的方式,就像您可以从MS SQLServer附加数据库来将数据库文件注册到新数据库中一样? 在我的绳索末端...

已邀请:

nsequi

赞同来自:

我没有任何Informix特定的建议,但对于这种情况,您通常可以通过查找如何移动数据库(常见的管理任务,并且通常在手册中进行了详细描述)来找到答案,然后跳过那些删除旧的数据库。 另外,请注意由不同系统架构造成的问题;如果将它们从一个大端系统(如Solaris)移动到一个小端系统(如x86 Linux),某些DB会失败壮观。再次,有关移动数据库的手动部分将涵盖所需的任何额外步骤。

taut

赞同来自:

你已经提出了一个非常复杂的问题而没有意识到它。 Informix被设计为一个共享的所有数据库引擎,这意味着该实例中所有可用的资源都可用于每个数据库。这意味着在您的案例中,多个数据库可以将数据存储在任何给定的dbspace,.dat或.idx文件中。大多数DBA知道要做到这一点,但要注意。根据这些知识,您现在知道.dat和.idx文件不属于数据库,但属于实例。数据库空间和文件是为了包含数据库数据而创建的,但它们在技术上属于该实例。值得注意的是.dat和.idx文件通过逻辑数据库空间名称为数据库所知。 有了这个背景信息,并假设生产和开发服务器运行相同的操作系统,并且硬件相对相同,而不是PARISC,Itanium或x86/x64的组合,我会为您提供一些选项。

  1. 在新实例中创建需要的数据库空间并使用onunload和onload 将数据库从生产复制到开发。
  2. 使用ontape或onbar来备份整个生产实例和 通过您的开发实例恢复它。
选项1要求您知道数据库空间的名称以及它们的大小。在生产实例上使用onstat -d来查找。顺便说一句,onstat -d中列出的数字是页面,我相信Linux是一个2K页面。 选项2只需要两台服务器上数据文件的路径相同。这意味着ROOTDBS在两种情况下都需要相同。这可以通过执行onstat -c | grep ROOTDBS找到 有很多东西被遗漏了,但我希望这可以为你提供你需要的信息,以便继续完成你的任务。

gnihil

赞同来自:

.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数据库就是这样的 - 但它们更昂贵,可能不保证。还有其他可能的装载解决方案,例如HPL(高性能装载机)。 有关Informix的更多信息,请使用已引用的各种网站(http://www.informix.com是指向IBM网站的Informix部分的链接),或使用International Informix User Group (IIUG)网站。有详细讨论Informix的邮件列表(需要您属于,但会员资格是免费的)。

wodio

赞同来自:

那些Informix-SE数据文件(.DAT)及其关联索引文件(.IDX)是无用的,除非您还拥有所有关联的目录文件,例如SYSTABLES.DAT SYSTABLES.IDX,SYSCOLUMNS,SYSINDEXES等。 那么您还必须担心Informix-SE创建它们的版本,因为有些版本具有2K或4K索引文件节点大小。 您最好的方法是从源数据库获取所有.DAT和.IDX文件,以及安装在相同硬件和操作系统上的正确标准引擎。 长话短说,在源机器上,运行“dbexport”将所有数据卸载到ascii文件,然后运行“dbschema”来生成所有表模式和索引。在将它们卸载到ascii平面文件之前,对所有文件运行“bcheck”也不会有什么坏处。