一、如何确定分区表的oid?
在postgresql中一切皆对象,表、索引、视图、序列、partition、index....都作为对象存在postgresql,如何获取这些对象极其属性呢? 从pg_class中可以获取到某个oid的一些具体信息,譬如:oid、oid类型、oid大小.......。具体可参见:
https://docs.huihoo.com/greenplum/pivotal/4.3.6/ref_guide/system_catalogs/pg_class.html。
本次我想获得一个具体分区表的OID,sql如下
select oid,* from pg_class where relname like '%wpp_fdefect_glass_f_1_prt_p202002%' order by relname desc
观察到事实上,oid和relfilenode是一样的,relfielnode 是该parititon在磁盘上的映射。
二、如何定位到该relfielnpde的位置?
[root@P1MDW01 17149]# locate 1181252758
/gpmaster/data01fs/gpseg-1/17187/17149/1181252758
三、查看分区的创建时间
[root@P1MDW01 17149]# stat /gpmaster/data01fs/gpseg-1/17187/17149/1181252758
File: `/gpmaster/data01fs/gpseg-1/17187/17149/1181252758'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd09h/64777d Inode: 536903123 Links: 1
Access: (0600/-rw-------) Uid: ( 530/ gpadmin) Gid: ( 530/ gpadmin)
Access: 2020-01-01 13:06:40.477416848 +0800
Modify: 2020-01-01 13:06:40.477416848 +0800
Change: 2020-01-01 13:06:40.477416848 +0800
[root@P1MDW01 17149]#