在我的PostgreSQL 8.0数据库上,我开始收到“错误:无法打开关系1663/17269/16691:没有这样的文件或目录”消息,现在我的数据无法访问。 关于如何恢复至少一些数据的任何想法?专业支持是一种选择。
问候。
RP
答案 0 :(得分:2)
如果您希望数据快速恢复并且对您有所帮助,那么专业支持选项应该足够简单。
有些事情需要检查,现在您已经拥有了所有数据库的完整备份(这是基础,pg_clog,pg_xlog以及该级别的所有其他文件夹)。
该文件确实存在吗?这可能是一个权限问题,而不是文件实际上会丢失。
检查您的防病毒/安全软件包 - 他们是否错误地隔离了该文件?如果您可以从扫描/主动扫描中排除PostgreSQL的数据库目录,那也是值得的。
记下发生这种情况以及之前发生的事情时您能记住的一切。这将有助于您或顾问进行故障排除。
同样检查日志 - 将记录此错误,找到第一个出现的内容并查看之前是否有任何奇怪的内容。
仔细检查您是否确实备份了所有现有文件,然后重新启动PostgreSQL。
尝试以用户postgres身份连接到数据库postgres或数据库template1。如果可行则该文件是您的一个数据库文件,而不是全局用户列表或其他类似文件。
尝试使用正确的名称创建空文件(和权限 - 检查其他文件)。如果你真的很幸运,它只是一个索引。否则它可能是一个你可以没有的数据表。然后你可以单独转储其他表。
好的 - 如果您在这里,那么您可以连接到您的数据库。文件路径中的这些数字是PostgreSQL的OID,用于标识系统对象。您可以在此处尝试一些有用的查询。这两个查询应该为您提供数据库的ID,然后是丢失文件的对象。这对您的专业人士来说也是有用的信息。
SELECT oid,datname,dattablespace FROM pg_database; SELECT * FROM pg_class WHERE relfilenode = 16691;
请记住确保在修改之前备份文件系统。