我们正在尝试在测试服务器上复制我们的informix数据库之一,但如果没有内部的Informix专业知识,我们只能猜测我们需要做什么。我自己动手学习这些东西,远远没有达到高效甚至低效运行Informix所需的专业水平。无论如何... 我们设法从某个地方的实时服务器复制.dat和.idx文件。在其上安装了Linux和最新的Informix Dynamic Server,并将其启动并运行。
现在我们应该如何处理来自实时服务器的.dat和idx文件?我们将它复制到某个地方并自动识别吗?
或者是否有类似的方法可以从MS SQLServer附加数据库以在新数据库中注册数据库文件?
在我的绳子上......
答案 0 :(得分:1)
在没有意识到的情况下,你问了一个非常复杂的问题。 Informix被构建为共享所有数据库引擎,这意味着实例可用的所有资源都可用于该实例中的每个数据库。这意味着多个数据库可以在您的案例中的任何给定dbspace,.dat或.idx文件中存储数据。大多数DBA都知道比这更好但是需要注意的事情。有了这些知识,您现在知道.dat和.idx文件不属于数据库但属于实例。创建dbspace和文件以包含数据库数据,但它们在技术上属于实例。值得注意的是,.dat和.idx文件是由逻辑dbspace名称为数据库所知。
有了这个背景信息并假设生产和开发服务器运行相同的操作系统并且您的硬件相对相同,而不是PARISC,Itanium或x86 / x64的组合,我会抛出几个选项出你的。
选项1要求您知道dbspace的名称以及它们的大小。在生产实例上使用onstat -d
来查找它。顺便说一句,onstat -d中列出的数字是在页面中,我相信Linux是一个2K的页面。
选项2只要求两台服务器上的数据文件路径相同。这意味着ROOTDBS在两个实例中都必须相同。这可以通过执行onstat -c | grep ROOTDBS
有很多事情被遗漏了,但我希望这能为您提供继续执行任务所需的信息。
答案 1 :(得分: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部分的链接),或使用International Informix User Group (IIUG)网站。有可用的邮件列表(需要您属于,但会员资格是免费的),以便详细讨论Informix。
答案 2 :(得分:1)
除非您还拥有所有关联的目录文件,例如SYSTABLES.DAT SYSTABLES.IDX,SYSCOLUMNS,SYSINDEXES等,否则那些Informix-SE数据文件(.DAT)及其关联的索引文件(.IDX)是无用的。
然后您还必须担心Informix-SE的哪个版本创建了它们,因为有些版本的节点大小为2K或4K索引。
您最好的方法是从源数据库中获取所有.DAT和.IDX文件,以及安装在它所来自的相同硬件和操作系统上的正确标准引擎。
长话短说,在源机器上,运行“dbexport”将所有数据卸载到ascii文件,并运行“dbschema”以生成所有表模式和索引。在将它们卸载到ascii平面文件之前对所有文件运行“bcheck”也没有什么坏处。
答案 3 :(得分:0)
我没有任何特定于Informix的建议,但对于这种情况,您通常可以通过查找如何移动数据库(常见的管理任务,通常在手册中有详细描述)找到答案,然后只是跳过将删除旧数据库的步骤。
另外,要注意不同系统架构引起的问题;如果将它们从大端系统(例如Solaris)移动到小端系统(例如x86 Linux),某些DB会失败。同样,移动数据库的手册部分将涵盖所需的任何额外步骤。 / p>