我对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)
我怎样才能找到那些表??? (我也改变了架构,并试图找到,但找不到任何人)
谢谢。
答案 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