在数据库中找不到PostgreSQL的表oid

时间:2015-11-29 09:22:28

标签: postgresql

我对PostgreSQL的表oid有疑问。 我创建了一个表。 oid是24622

( - rw ------- 1 postgres postgres 8192 11月29日 17:45 24622

我也发现了同时修改过的文件。

( - rw ------- 1 postgres postgres 73728 11月29日 17:45 12741

( - rw ------- 1 postgres postgres 32768 11月29日 17:45 12744

( - rw ------- 1 postgres postgres 65536 11月29日 17:45 12764

( - rw ------- 1 postgres postgres 57344 11月29日 17:45 12767

但是在同一个数据库中找不到这些表,找不到任何人。

ksh2=# select oid,relname from pg_class where oid = '12741';

 oid | relname 

-----+---------

(0 rows)

我怎样才能找到那些表??? (我也改变了架构,并试图找到,但找不到任何人)

谢谢。

1 个答案:

答案 0 :(得分:0)

文件名不一定是correspond with oid

  

请注意,虽然表的文件节点通常与其OID匹配,但事实并非如此   必然如此;一些操作,如TRUNCATE,REINDEX,CLUSTER   和某些形式的ALTER TABLE,可以同时更改filenode   保留OID。

文件名存储在relfilenode列中:

  

此关系的磁盘文件的名称;零意味着这是一个   "映射"磁盘文件名由低级别确定的关系   状态

因此,请尝试搜索relfilenode

select name, relkind from pg_class where relfilenode = 12741;

relkind列告诉您文件所代表的对象类型:

r = ordinary table
i = index
S = sequence
v = view
c = composite type
t = TOAST table
f = foreign table