OID2NAME(1) PostgreSQL 18.6 Documentation OID2NAME(1)

oid2name - تطبیق OIDها و filenodeها در یک دایرکتوری داده PostgreSQL

oid2name [گزینه...]

oid2name یک برنامه سودمند است که به مدیران سیستم در بررسی ساختار فایلی مورد استفاده توسط PostgreSQL کمک می‌کند. برای استفاده از آن، باید با ساختار فایلی پایگاه داده، که در فصل 66 شرح داده شده است، آشنا باشید.


نکته

نام “oid2name” جنبه تاریخی دارد و در واقع تا حدودی گمراه‌کننده است، زیرا در بیشتر مواقع هنگام استفاده از آن، در حقیقت با شماره‌های filenode جدول‌ها (که نام‌های فایل قابل مشاهده در دایرکتوری‌های پایگاه داده هستند) سر و کار خواهید داشت. اطمینان حاصل کنید که تفاوت میان OIDهای جدول و filenodeهای جدول را درک می‌کنید!

oid2name به پایگاه داده مورد نظر متصل می‌شود و اطلاعات OID، filenode و/یا نام جدول را استخراج می‌کند. همچنین می‌توانید از آن بخواهید تا OIDهای پایگاه داده یا OIDهای tablespace را نمایش دهد.

oid2name آرگومان‌های خط فرمان زیر را می‌پذیرد:

-f filenode
--filenode=filenode

نمایش اطلاعات جدول دارای filenode مشخص‌شده در filenode.

-i
--indexes

گنجاندن ایندکس‌ها و توالی‌ها در فهرست خروجی.

-o oid
--oid=oid

نمایش اطلاعات جدول دارای شناسه OID مشخص‌شده در oid.

-q
--quiet

حذف سرآیندها (مفید برای اسکریپت‌نویسی).

-s
--tablespaces

نمایش OIDهای tablespace.

-S
--system-objects

گنجاندن اشیای سیستمی (اشیای موجود در طرح‌واره‌های information_schema، pg_toast و pg_catalog).

-t tablename_pattern
--table=tablename_pattern

نمایش اطلاعات جدول(هایی) که با tablename_pattern تطبیق دارند.

-V
--version

چاپ نسخه oid2name و خروج.

-x
--extended

نمایش اطلاعات بیشتر درباره هر شیء نشان داده شده: نام tablespace، نام طرح‌واره و OID.

-?
--help

نمایش راهنما درباره آرگومان‌های خط فرمان oid2name و خروج.

oid2name همچنین آرگومان‌های خط فرمان زیر را برای پارامترهای اتصال می‌پذیرد:

-d database
--dbname=database

پایگاه داده برای اتصال به آن.

-h host
--host=host

میزبان سرور پایگاه داده.

-H host

میزبان سرور پایگاه داده. استفاده از این پارامتر از PostgreSQL 12 منسوخ شده است.

-p port
--port=port

درگاه سرور پایگاه داده.

-U username
--username=username

نام کاربری برای اتصال. برای نمایش جدول‌های خاص، جدول‌های مورد نظر برای نمایش را با استفاده از -o، -f و/یا -t انتخاب کنید. -o یک OID می‌گیرد، -f یک filenode می‌گیرد، و -t نام یک جدول را می‌پذیرد (در واقع، این یک الگوی LIKE است، بنابراین می‌توانید از مواردی مانند foo% استفاده کنید). شما می‌توانید به تعداد دلخواه از این گزینه‌ها استفاده کنید، و فهرست حاصل شامل تمام اشیایی خواهد بود که با هر یک از این گزینه‌ها تطابق داشته باشند. اما توجه داشته باشید که این گزینه‌ها تنها می‌توانند اشیای موجود در پایگاه داده داده‌شده توسط -d را نشان دهند.

اگر هیچ‌کدام از -o، -f یا -t را مشخص نکنید، اما -d را بدهید، همهٔ جدول‌های موجود در پایگاه داده مشخص‌شده با -d فهرست خواهند شد. در این حالت، گزینه‌های -S و -i کنترل می‌کنند که چه مواردی در فهرست قرار گیرند.

اگر -d را هم مشخص نکنید، فهرستی از OIDهای پایگاه‌های داده نمایش داده می‌شود. همچنین می‌توانید -s را مشخص کنید تا فهرستی از tablespaceها را دریافت نمایید.

PGHOST
PGPORT
PGUSER

پارامترهای پیش‌فرض اتصال.

این ابزار، مانند اغلب ابزارهای دیگر PostgreSQL، از متغیرهای محیطی پشتیبانی‌شده توسط libpq نیز استفاده می‌کند (بخش 32.15 را ببینید).

متغیر محیطی PG_COLOR مشخص می‌کند که آیا در پیام‌های عیب‌یابی از رنگ استفاده شود یا خیر. مقادیر ممکن عبارتند از always، auto و never.

oid2name نیازمند یک سرور پایگاه داده در حال اجرا با کاتالوگ‌های سیستمی سالم (خراب‌نشده) است. بنابراین، استفاده از آن برای بازیابی از وضعیت‌های خرابی فاجعه‌بار پایگاه داده تنها به شکلی بسیار محدود امکان‌پذیر است.

$ # what's in this database server, anyway?
$ oid2name
All databases:
    Oid  Database Name  Tablespace
----------------------------------
  17228       alvherre  pg_default
  17255     regression  pg_default
  17227      template0  pg_default
      1      template1  pg_default
$ oid2name -s
All tablespaces:
     Oid  Tablespace Name
-------------------------
    1663       pg_default
    1664        pg_global
  155151         fastdisk
  155152          bigdisk
$ # OK, let's look into database alvherre
$ cd $PGDATA/base/17228
$ # get top 10 db objects in the default tablespace, ordered by size
$ ls -lS * | head -10
-rw-------  1 alvherre alvherre 136536064 sep 14 09:51 155173
-rw-------  1 alvherre alvherre  17965056 sep 14 09:51 1155291
-rw-------  1 alvherre alvherre   1204224 sep 14 09:51 16717
-rw-------  1 alvherre alvherre    581632 sep  6 17:51 1255
-rw-------  1 alvherre alvherre    237568 sep 14 09:50 16674
-rw-------  1 alvherre alvherre    212992 sep 14 09:51 1249
-rw-------  1 alvherre alvherre    204800 sep 14 09:51 16684
-rw-------  1 alvherre alvherre    196608 sep 14 09:50 16700
-rw-------  1 alvherre alvherre    163840 sep 14 09:50 16699
-rw-------  1 alvherre alvherre    122880 sep  6 17:51 16751
$ # What file is 155173?
$ oid2name -d alvherre -f 155173
From database "alvherre":
  Filenode  Table Name
----------------------
    155173    accounts
$ # you can ask for more than one object
$ oid2name -d alvherre -f 155173 -f 1155291
From database "alvherre":
  Filenode     Table Name
-------------------------
    155173       accounts
   1155291  accounts_pkey
$ # you can mix the options, and get more details with -x
$ oid2name -d alvherre -t accounts -f 1155291 -x
From database "alvherre":
  Filenode     Table Name      Oid  Schema  Tablespace
------------------------------------------------------
    155173       accounts   155173  public  pg_default
   1155291  accounts_pkey  1155291  public  pg_default
$ # show disk space for every db object
$ du [0-9]* |
> while read SIZE FILENODE
> do
>   echo "$SIZE       `oid2name -q -d alvherre -i -f $FILENODE`"
> done
16            1155287  branches_pkey
16            1155289  tellers_pkey
17561            1155291  accounts_pkey
...
$ # same, but sort by size
$ du [0-9]* | sort -rn | while read SIZE FN
> do
>   echo "$SIZE   `oid2name -q -d alvherre -f $FN`"
> done
133466             155173    accounts
17561            1155291  accounts_pkey
1177              16717  pg_proc_proname_args_nsp_index
...
$ # If you want to see what's in tablespaces, use the pg_tblspc directory
$ cd $PGDATA/pg_tblspc
$ oid2name -s
All tablespaces:
     Oid  Tablespace Name
-------------------------
    1663       pg_default
    1664        pg_global
  155151         fastdisk
  155152          bigdisk
$ # what databases have objects in tablespace "fastdisk"?
$ ls -d 155151/*
155151/17228/  155151/PG_VERSION
$ # Oh, what was database 17228 again?
$ oid2name
All databases:
    Oid  Database Name  Tablespace
----------------------------------
  17228       alvherre  pg_default
  17255     regression  pg_default
  17227      template0  pg_default
      1      template1  pg_default
$ # Let's see what objects does this database have in the tablespace.
$ cd 155151/17228
$ ls -l
total 0
-rw-------  1 postgres postgres 0 sep 13 23:20 155156
$ # OK, this is a pretty small table ... but which one is it?
$ oid2name -d alvherre -f 155156
From database "alvherre":
  Filenode  Table Name
----------------------
    155156         foo

B. Palmer <bpalmer@crimelabs.net>

2026 PostgreSQL 18.6