oid2name
Преобразование в имена OID и номера файловых узлов в каталоге данных.
oid2name
– вспомогательная программа для исследования структуры файлов PostgreSQL.Приложение предназначено для преобразования в имена OID и номера файловых узлов в каталоге данных PostgreSQL. При исследовании структуры файлов с помощью приложения в основном используются номера файловых узлов таблиц, которые образуют имена файлов в каталоге баз данных.
OID таблиц отличаются от номеров файловых узлов.
Программа
oid2name
подключается к целевой базе данных и извлекает информацию об OID, файловых узлах и/или именах таблиц. С помощью программы можно просмотреть OID базы данных или табличного пространства.Параметры приложения:
Аргументы командной строки | Описание |
---|---|
-f файловый_узел --filenode=файловый_узел | Показать информацию о таблице, к которой относится файловый_узел |
-i --indexes | Включить в вывод индексы и последовательности |
-o oid --oid=oid | Показать информацию о таблице с OID, равным oid |
-q --quiet | Не выводить заголовки (полезно для скриптов) |
-s --tablespaces | Показать OID табличных пространств |
-S --system-objects | Включить в вывод системные объекты, которые находятся в схемах: – information_schema ;– pg_toast ;– pg_catalog |
-t шаблон_имен_таблиц --table=шаблон_имен_таблиц | Показать информацию о таблицах, соответствующих шаблону шаблон_имен_таблиц ; аргумент принимает шаблон LIKE , то есть можно задать его значение по примеру foo% |
-V --version | Вывести версию приложения и завершить работу |
-x --extended | Вывести дополнительные сведения о каждом объекте: – имя табличного пространства; – имя схемы; – OID |
-? --help | Вывести справку об аргументах командной строки приложения oid2name и завершить работу |
-d база_данных --dbname=база_данных | Параметр подключения: имя целевой базы данных |
-h сервер --host=сервер | Параметр подключения: адрес сервера баз данных |
-p порт --port=порт | Параметр подключения: порт сервера баз данных |
-U имя_пользователя --username=имя_пользователя | Параметр подключения: имя пользователя |
-H сервер | Устаревший параметр подключения: адрес сервера баз данных |
Допускается использовать аргументы
-o
, -f
и -t
в любом количестве; в вывод будут включены все объекты, соответствующие любым из этих указаний. Указанные аргументы будут выбирать объекты в базе данных, заданной ключом -d
.Если аргументы
-o
, -f
и -t
отсутствуют, но передается -d
, то будут выведены все таблицы в базе данных с именем, заданным ключом -d
. В таком режиме набором выводимых данных управляют аргументы -S
и -i
.Если отсутствует аргумент
-d
, то выводится список OID баз данных.Параметры подключения по умолчанию:
PGHOST
;PGPORT
;PGUSER
.
Программа
oid2name
использует переменные среды, поддерживаемые libpq.Пример использования приложения:
-
Запустите приложение
oid2name
для вывода общего списка баз данных, которые существуют на этом сервере:oid2name
Пример вывода результата:Раскрыть type=sqlAll databases: Oid Database Name Tablespace ---------------------------------- 16399 first_db tbl_t 14198 postgres pg_default 14197 template0 pg_default 1 template1 pg_default 18488 test_pgfdw pg_default 18517 tstrefint pg_default
Запустите приложениеoid2name
с ключом-s
для вывода списка OID табличных пространств:oid2name -s
Пример вывода результата:Раскрыть type=sqlAll tablespaces: Oid Tablespace Name ------------------------ 1663 pg_default 1664 pg_global 16398 tbl_t
-
Получите первые 10 отсортированных по размеру объектов базы
tstrefint
в табличном пространстве по умолчаниюpg_default
:ls -lS $PGDATA/base/18517 | head -10
Пример вывода результата:Раскрыть type=sqltotal 15984 -rw------- 1 tstrefint tstrefint 5218304 Mar 21 06:44 18656 -rw------- 1 tstrefint tstrefint 1081344 Mar 22 13:42 1255 -rw------- 1 tstrefint tstrefint 761856 Mar 22 14:12 1249 -rw------- 1 tstrefint tstrefint 696320 Mar 17 20:42 3456 -rw------- 1 tstrefint tstrefint 557056 Mar 22 13:43 2838 -rw------- 1 tstrefint tstrefint 540672 Mar 22 13:42 2608 -rw------- 1 tstrefint tstrefint 434176 Mar 22 13:43 9987 -rw------- 1 tstrefint tstrefint 417792 Mar 22 13:42 2674 -rw------- 1 tstrefint tstrefint 344064 Mar 22 13:42 2609
-
Проверьте файл
18656
:oid2name -d tstrefint -f 18656
Пример вывода результата:Раскрыть type=sqlFrom database "tstrefint": Filenode Table Name ---------------------- 18656 test_pre
-
Проверьте файлы
1255
и1249
:oid2name -d tstrefint -f 1255 -f 1249
Пример вывода результата:Раскрыть type=sqlFrom database "tstrefint": Filenode Table Name ------------------------ 1249 pg_attribute 1255 pg_proc
-
Добавьте параметры и получите дополнительные подробности, применив ключ
-x
:oid2name -d tstrefint -t test_pre -f 18656 -x
Пример вывода результата:Раскрыть type=sqlFrom database "tstrefint": Filenode Table Name Oid Schema Tablespace ------------------------------------------------- 18656 test_pre 18656 ext pg_default
-
Вычислите объем, который занимает на диске каждый объект базы данных:
du [0-9]* | sort -rn | while read SIZE FILENODE do echo "$SIZE `oid2name -q -d tstrefint -i -f $FILENODE`" done
Пример вывода результата:Раскрыть type=sql8 18646 pg_toast_18641_index 8 18641 tcndata 8 18552 a 8 18541 c 8 18537 b 8 18532 ci 8 18528 bi 8 18524 ai 8 175 pg_user_mapping_user_server_index 8 174 pg_user_mapping_oid_index 8 16780 hints_norm_and_app 8 16778 hints_pkey 8 16777 pg_toast_16771_index 8 16769 hints_id_seq 8 16723 outlines_pkey 8 16722 pg_toast_16717_index 8 14067 pg_toast_14063_index
-
Просмотрите содержимое табличных пространств в каталоге
$PGDATA/pg_tblspc
:oid2name -s
Пример вывода результата:Раскрыть type=sqlAll tablespaces: Oid Tablespace Name ------------------------ 1663 pg_default 1664 pg_global 16398 tbl_t
-
Выясните, к каким базам данных относятся объекты в табличном пространстве
tbl_t
:ls -d $PGDATA/pg_tblspc/16398/*
Пример вывода результата:/pgdata/05/data/pg_tblspc/16398/PG_13_202206301/16399
-
Выясните, к какой базе данных относится OID
16399
:oid2namesql name=Раскрыть type=sql
Пример вывода результата:Раскрыть type=sqlAll databases: Oid Database Name Tablespace ---------------------------------- 16399 first_db tbl_t 14198 postgres pg_default 14197 template0 pg_default 1 template1 pg_default 18488 test_pgfdw pg_default 18517 tstrefint pg_default
-
Проверьте объекты базы данных, которые содержатся в табличном пространстве
tbl_t
:cd /pgdata/05/data/pg_tblspc/16398/PG_13_202206301/16399 ls -l
Пример вывода результата:Раскрыть type=sql-rw------- 1 postgres postgres 81920 Mar 15 13:06 17051 -rw------- 1 postgres postgres 24576 Mar 13 10:25 17051_fsm -rw------- 1 postgres postgres 16384 Mar 15 13:06 17054 -rw------- 1 postgres postgres 16384 Mar 15 13:06 17056 -rw------- 1 postgres postgres 3915776 Mar 15 13:06 17068 -rw------- 1 postgres postgres 24576 Mar 15 13:06 17068_fsm -rw------- 1 postgres postgres 8192 Mar 15 08:22 17068_vm
-
Проверьте таблицу в файле
17068
:oid2name -d first_db -f 17068
Пример вывода результата:Раскрыть type=sqlFrom database "first_db": Filenode Table Name ------------------------------ 17068 sample_stat_tables
Дополнительную информацию по поставляемому модулю oid2name можно получить по ссылке.