我们正试图在测试服务器上复制我们的一个informix数据库,但是没有Informix内部的专业知识,我们只能猜测我们需要做什么。我自己也在忙着学习这些东西,远远达不到有效甚至低效操作Informix所需的专业水平。不管怎样..。我们设法从实时服务器的某个位置复制了.dat和.idx文件。在其上安装了Linux和最新的Informix Dynamic Server,并使其正常运行。
现在,我们应该如何处理实时服务器中的.dat和idx文件?我们是否将它复制到某个地方,它会自动识别它?
或者,是否有类似的方法可以从MS SQLServer中附加数据库,以便在新数据库中注册数据库文件?
在我的绳索那头。
发布于 2008-09-22 18:49:47
你问了一个相当复杂的问题,却没有意识到。Informix的架构是一个共享一切的数据库引擎,这意味着该实例可用的所有资源都可用于该实例中的每个数据库。这意味着多个数据库可以在任何给定的dbspace、.dat或.idx文件中存储数据。大多数DBA都知道不应该这样做,但这是需要注意的事情。有了这些知识,您现在就知道.dat和.idx文件不属于数据库,而属于实例。创建dbspace和文件是为了包含数据库数据,但从技术上讲,它们属于实例。值得注意的是,数据库知道.dat和.idx文件的逻辑dbspace名称。
有了这些背景信息,并假设生产和开发服务器运行相同的操作系统,并且您的硬件相对相同,而不是PARISC、Itanium或x86/x64的组合,我将为您提供几个选择。
使用onunload和onload创建新实例中所需的dbspace,并使用onunload和onload将数据库从生产环境复制到development.
选项1要求您知道dbspace的名称以及它们的大小。在生产实例上使用onstat -d来找出这一点。顺便说一句,onstat -d中列出的数字是以页为单位的,我相信Linux是一个2K的页。
选项2只要求两个服务器上的数据文件的路径相同。这意味着ROOTDBS在两个实例中需要是相同的。可以通过执行onstat -c | grep ROOTDBS找到
有很多东西被遗漏了,但我希望这篇文章能给你提供推进你的任务所需的信息。
发布于 2008-09-25 00:25:00
.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部分的链接),也可以使用International Informix User Group (IIUG)网站。有一些邮件列表可以用来详细讨论Informix (要求您属于该列表,但成员资格是免费的)。
发布于 2016-05-30 07:27:04
这些Informix-SE数据文件(.DAT)及其相关的索引文件(.IDX)是无用的,除非您还拥有所有相关的目录文件,如SYSTABLES.DAT SYSTABLES.IDX、SYSCOLUMNS、SYSINDEXES等。
然后,您还必须考虑是哪个版本的Informix-SE创建了它们,因为有些索引文件节点的大小为2K或4K。
最好的方法是从源数据库获取所有.DAT和.IDX文件,以及安装在相同硬件和操作系统上的正确标准引擎。
长话短说,在源机器上,运行"dbexport“将所有数据卸载到ascii文件,并运行"dbschema”生成所有表模式和索引。在将所有文件卸载到ascii平面文件之前,运行"bcheck“也不会有什么坏处。
https://stackoverflow.com/questions/113582
复制相似问题