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 | Вывести версию приложения oid2name и завершить работу |
-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
расположен в каталоге $PGHOME/bin/
.
Настройка
Настройка не требуется.
Использование модуля
Пример использования приложения:
-
Запустите приложение
oid2name
для вывода общего списка баз данных, которые существуют на этом сервере:oid2name
Пример вывода результата:
All 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
Пример вывода результата:
All tablespaces:
Oid Tablespace Name
------------------------
1663 pg_default
1664 pg_global
16398 tbl_t -
Получите первые 10 отсортированных по размеру объектов базы
tstrefint
в табличном пространстве по умолчаниюpg_default
:ls -lS $PGDATA/base/18517 | head -10
Пример вывода результата:
total 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
Пример вывода результата:
From database "tstrefint":
Filenode Table Name
----------------------
18656 test_pre -
Проверьте файлы
1255
и1249
:oid2name -d tstrefint -f 1255 -f 1249
Пример вывода результата:
From database "tstrefint":
Filenode Table Name
------------------------
1249 pg_attribute
1255 pg_proc -
Добавьте параметры и получите дополнительные подробности, применив ключ
-x
:oid2name -d tstrefint -t test_pre -f 18656 -x
Пример вывода результата:
From 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Пример вывода результата:
8 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
Пример вывода результата:
All tablespaces:
Oid Tablespace Name
------------------------
1663 pg_default
1664 pg_global
16398 tbl_t -
Выясните, к каким базам данных относятся объекты в табличном пространстве
tbl_t
:ls -d $PGDATA/pg_tblspc/16398/*
Пример вывода результата:
/pgdata/0{major_version}/data/pg_tblspc/16398/PG_13_202206301/16399
-
Выясните, к какой базе данных относится OID
16399
:oid2name
Пример вывода результата:
All 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/0{major_version}/data/pg_tblspc/16398/PG_13_202206301/16399
ls -lПример вывода результата:
-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
Пример вывода результата:
From database "first_db":
Filenode Table Name
------------------------------
17068 sample_stat_tables
Ссылки на документацию разработчика
Дополнительно поставляемый модуль oid2name: https://www.postgresql.org/docs/current/oid2name.html.