Informix 数据库文件扩展名是什么

Informix 数据库文件扩展名是什么

我从一个客户那里得到了一个硬盘驱动器的图像文件,想要从中提取数据库。除了数据库曾经安装在创建映像的服务器上之外,客户端不知道任何详细信息。

我发现它是一个安装了Informix DBS的UNIX系统,但我找不到任何数据库文件。我不确定 Informix 的版本,但它似乎是大约 15 年前安装的。

我无法从映像启动。我只是在查看文件。

informix 数据库文件有扩展名吗?它可能是什么?还有其他如何识别数据库文件的技巧吗?

答案1

这里有很多问题,让我尝试按照对您的情况的重要性顺序回答这些问题:

  1. 从硬盘驱动器映像中提取数据库我假设您对实际数据感兴趣,即各种表、其行和列等。如果实际上没有软件informix本身,这几乎是不可能的,因为现代数据库系统不这样做不以平面文件或 ASCII 格式存储数据。单个informix实例可能有许多数据库,每个数据库将有许多包含数据的表,所有表都以专有的二进制格式存储!对单个表进行分区并将其存储在多个“文件”中也并不罕见。因此,即使找到包含数据的相关文件,您也可能无法检索所有数据。您应该问的问题是此练习背后的最终目标是什么?

  2. 文件名和扩展名 informix数据库以二进制格式存储在存储块文件内,术语中称为“空间” informix。这些文件不需要任何扩展名,由用户(数据库管理员)指定文件名。因此,用户可能指定了扩展名,也可能没有指定。

  3. 查找文件的提示 查找文件的方法有很多种。首先确定informix软件二进制/可执行文件和配置文件的位置。安装informix目录用术语来说称为 $INFORMIXDIR informix。在驱动器中搜索名为oninit或 的二进制文件onstat。这些文件应归用户 root 或informix.这些文件位于$INFORMIXDIR/bin.现在我们知道了 的位置$INFORMIXDIR。去$INFORMIXDIR/etc。这是实例配置文件所在的位置。虽然配置文件不需要具有特定的名称或扩展名,但通常保持文件名类似于onconfigoncfg。您还可以在 forROOTNAMEROOTPATHinside 中执行 grep$INFORMIXDIR/etc来查找配置文件和根。dbspace: grep -rn 'ROOTNAME\|ROOTPATH' *dbspace是创建系统数据库的块文件,也是创建用户数据库的默认文件(如果未明确设置为某些文件)其他dbspace。一旦确定了配置文件,您就可以开始越来越深入地挖掘。

答案2

为了完成 Pradeep 的回答:一旦找到 $INFORMIXDIR/etc 是什么,您需要两个文件:onconfig 和 oncfg 文件。不要混淆两者。

onconfig 是 Informix 数据库配置文件。不幸的是,这个文件可以被称为任何名称。通常它被称为onconfig.DBSERVERNAME。在此文件中,您将找到两个配置:DBSERVERNAME(实例的唯一名称)和SERVERNUM(实例的唯一编号)。

oncfg_*.* 文件包含有关实例使用的 dbspace、块和逻辑日志的信息,它是在数据库实例初始化时创建的,并随着数据库中 dbspace、块和日志的更改而更新。该文件的命名约定是 oncfg_DBSERVERNAME.SERVERNUM,并且必须遵循该命名约定。对所有 oncfg_* 进行 ls 操作将为您提供服务器中所有实例的潜在列表。

要获取 oncfg_* 文件所在的特定实例的数据文件(块),请运行以下命令:

grep "^Chunk " $INFORMIXDIR/etc/oncfg_DBSERVERNAME.SERVERNUM | awk '{ print $12 }'

在此列表中,第一个文件是 Pradeep 上面提到的 ROOTDBS。

要获取服务器中运行的实例的配置文件(onconfig 文件),请运行:

grep ^DBSERVERNAME * | grep DBSERVERNAME

我希望这有帮助。 ^_^

PS 请注意,我没有在 DBSERVERNAME 或 SERVERNUM 前面放置“$”,因为它们不是环境变量。它们是 onconfig 文件中的配置参数。将它们替换为文件中的实际值。干杯!

相关内容