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.

Использование модуля

Пример использования приложения:
  1. Запустите приложение oid2name для вывода общего списка баз данных, которые существуют на этом сервере:
    oid2name
    Пример вывода результата:
    Раскрыть type=sql
    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
    Пример вывода результата:
    Раскрыть type=sql
    All tablespaces:
        Oid  Tablespace Name
    ------------------------
       1663       pg_default
       1664        pg_global
      16398            tbl_t
    
  2. Получите первые 10 отсортированных по размеру объектов базы tstrefint в табличном пространстве по умолчанию pg_default:
    ls -lS $PGDATA/base/18517 | head -10
    Пример вывода результата:
    Раскрыть type=sql
    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
    
  3. Проверьте файл 18656:
    oid2name -d tstrefint -f 18656
    Пример вывода результата:
    Раскрыть type=sql
    From database "tstrefint":
    Filenode  Table Name
    ----------------------
        18656    test_pre
    
  4. Проверьте файлы 1255 и 1249:
    oid2name -d tstrefint -f 1255 -f 1249
    Пример вывода результата:
    Раскрыть type=sql
    From database "tstrefint":
    Filenode    Table Name
    ------------------------
        1249  pg_attribute
        1255       pg_proc
    
  5. Добавьте параметры и получите дополнительные подробности, применив ключ -x:
    oid2name -d tstrefint -t test_pre -f 18656 -x
    Пример вывода результата:
    Раскрыть type=sql
    From database "tstrefint":
    Filenode  Table Name    Oid  Schema  Tablespace
    -------------------------------------------------
        18656    test_pre  18656     ext  pg_default
    
  6. Вычислите объем, который занимает на диске каждый объект базы данных:
    du [0-9]* | sort -rn |
    while read SIZE FILENODE
    do
    echo "$SIZE       `oid2name -q -d tstrefint -i -f $FILENODE`"
    done
    
    Пример вывода результата:
    Раскрыть type=sql
    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
    
  7. Просмотрите содержимое табличных пространств в каталоге $PGDATA/pg_tblspc:
    oid2name -s
    Пример вывода результата:
    Раскрыть type=sql
    All tablespaces:
        Oid  Tablespace Name
    ------------------------
    1663       pg_default
    1664        pg_global
    16398            tbl_t
    
  8. Выясните, к каким базам данных относятся объекты в табличном пространстве tbl_t:
    ls -d $PGDATA/pg_tblspc/16398/*
    Пример вывода результата:
    /pgdata/05/data/pg_tblspc/16398/PG_13_202206301/16399
  9. Выясните, к какой базе данных относится OID 16399:
    oid2namesql name=Раскрыть type=sql
    Пример вывода результата:
    Раскрыть type=sql
    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
    
  10. Проверьте объекты базы данных, которые содержатся в табличном пространстве 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
    
  11. Проверьте таблицу в файле 17068:
    oid2name -d first_db -f 17068
    Пример вывода результата:
    Раскрыть type=sql
    From database "first_db":
    Filenode          Table Name
    ------------------------------
        17068  sample_stat_tables
    

Ссылки на документацию разработчика

Дополнительную информацию по поставляемому модулю oid2name можно получить по ссылке.
Предыдущий раздел
moddatetime
Следующий раздел
ora2pg
Была ли страница полезной?