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