将数据库从一台Informix IDS 11服务器复制到另一台最简单的方法是什么
源数据库很大。目标数据库不会自动增长。它们在不同的机器上。
我来自MS SQL Server,MySQL背景和IDS11似乎过于复杂(我敢肯定,有充分的理由)。
解决方案
回答
我们是否使用了导出工具?曾经有一种方法,如果我们首先将数据库置于静止模式,然后实际上可以跨数据库复制DBSpaces(我认为是dbspaces工具...已经有好几年了)。
因为使用informix,我们曾经能够指定该表要使用的DBSpace(甚至可以在alter table中使用?)。
检查dbaccess工具中是否有导出命令。
将数据库置于静默模式或者关闭,复制数据库空间,然后添加表,指示数据库指向新的数据库空间文件。 (dbspaces工具可能值得一看。我这里有手册。它们是9.2,但应该不会有太大变化)。
回答
将数据从一台服务器移动到另一台服务器的一种方法是使用dbexport命令备份数据库。
然后,将备份文件复制到目标服务器后,运行dbimport命令。
要创建新数据库,我们需要使用onmonitor工具为新数据库创建DBSpace,此时,我们可以使用其他服务器上的现有文件。
然后,我们将需要使用dbaccess工具在目标服务器上创建数据库。 dbaccess工具具有一个数据库选项,允许我们创建数据库。创建数据库时,请指定要使用的DBSpace。
源数据库可能由许多块组成,我们还需要将其复制并添加到新数据库。
回答
正如其他人所提到的,最简单的方法是dbexport / dbimport。
最快的方法是使用高性能加载程序onpload。如果我们有很多数据,但表数量却不是很多,那么绝对值得追求。 IIUG站点上有些零碎的内容可能有助于脚本化HPL以生成所需的所有配置。
回答
我们有几种选择。
dbexport / dbimport
onunload /加载
HPL(高性能加载程序)选项。
我个人使用过onunload / onload和dbexport / dbimport。我没有使用过HPL。我正在使用IDS 10.
onunload / onload IBM文档
以页面大小的块将原始数据库备份到磁盘或者磁带
更快(特别是如果我们使用磁盘)
如果数据库服务器位于不同的操作系统或者硬件上,或者它们的页面大小不同,则会出现问题。
dbexport / dbimport IBM文档
以定界的ascii文件备份数据库
将数据库的ascii模式(包括所有用户,表,视图,索引等)写入数据库。将数据库结构的所有内容都存储到一个巨大的纯文本文件中。
以及数据库的每个表的单独的纯文本文件
没那么快
数据错误的任何表,语法错误的任何视图等上的dbimport上的问题。
当我们进入冰激凌商店时,请勿在汽车的前座上留这条胶带(否则我们会成为新闻)。另请参阅...不是一种非常安全的方式来移动数据。 :)
限制:需要以独占方式访问源数据库。
这是从文档开始的好地方->数据库服务器之间的数据迁移
回答
如果两台计算机都使用相同版本的IDS,则另一种选择是使用ontape在一台计算机上对一台计算机进行备份,然后在另一台计算机上进行还原。我们可以使用STDIO选项,然后将备份流式传输到可以从STDIO还原的另一台计算机上。
从"用于高可用性和分发的数据复制"红皮书中:
ontape -s -L 0 -F | rsh secondary_server "ontape –p"
我们还可以在主机之间创建无密码的ssh连接,并以更安全的方式进行传输。