Как посмотреть все базы данных postgres
Перейти к содержимому

Как посмотреть все базы данных postgres

  • автор:

Как посмотреть все базы данных postgres

Некоторые объекты, включая роли, базы данных и табличные пространства, определяются на уровне кластера и сохраняются в табличном пространстве pg_global . Внутри кластера существуют базы данных, которые отделены друг от друга, но могут обращаться к объектам уровня кластера. Внутри каждой базы данных имеются схемы, содержащие такие объекты, как таблицы и функции. Таким образом, полная иерархия выглядит следующим образом: кластер, база данных, схема, таблица (или иной объект, например функция).

При подключении к серверу баз данных клиент должен указать имя базы в запросе подключения. Обращаться к нескольким базам через одно подключение нельзя, однако клиенты могут открыть несколько подключений к одной базе или к разным. Безопасность на уровне базы обеспечивают две составляющие: управление подключениями (см. Раздел 20.1), которое осуществляется на уровне соединения, и управление доступом к объектам (см. Раздел 5.7), для которого реализована система прав. Обёртки сторонних данных (см. postgres_fdw) позволяют создать в одной базе данных объекты, скрывающие за собой объекты в других базах или кластерах. Подобную же функциональность предоставляет и более старый модуль dblink (см. dblink). По умолчанию все пользователи могут подключаться ко всем базам данных, используя все методы подключения.

В случаях, когда в кластере PostgreSQL планируется размещать данные несвязанных проектов или с ним будут работать пользователи, которые в принципе не должны никак взаимодействовать, рекомендуется использовать отдельные базы данных и организовать управление подключением и доступом к объектам соответствующим образом. Если же проекты или пользователи взаимосвязаны и должны иметь возможность использовать ресурсы друг друга, они должны размещаться в одной базе данных, но, возможно, в отдельных схемах. Таким образом будет создана модульная структура с изолированными пространствами имён и управлением доступа. Подробнее об управлении схемами рассказывается в Разделе 5.9.

Хотя в одном кластере можно создать несколько баз данных, прежде чем это делать, рекомендуется тщательно взвесить все связанные с этим риски и ограничения. В частности, наличие общего WAL (см. Главу 29) может повлиять на возможности резервного копирования и восстановления данных. Отдельные базы в кластере изолированы друг от друга с точки зрения пользователя, но с точки зрения администратора баз данных они тесно связаны.

Базы данных создаются командой CREATE DATABASE (см. Раздел 22.2), а удаляются командой DROP DATABASE (см. Раздел 22.5). Список существующих баз данных можно посмотреть в системном каталоге pg_database , например,

SELECT datname FROM pg_database;

Метакоманда \l или ключ -l командной строки приложения psql также позволяют вывести список существующих баз данных.

Примечание

Стандарт SQL называет базы данных « каталогами » , но на практике у них нет отличий.

Пред. Наверх След.
Глава 22. Управление базами данных Начало 22.2. Создание базы данных

Как вывести список баз данных и таблиц PostgreSQL с помощью psql

При администрировании серверов баз данных PostgreSQL одной из наиболее распространенных задач, которые вы, вероятно, будете выполнять, будет перечисление баз данных и их таблиц.

PostgreSQL поставляется с интерактивным инструментом psql , который позволяет вам подключаться к серверу и выполнять запросы к нему. При использовании psql вы также можете воспользоваться его мета-командами. Эти команды полезны для написания сценариев и администрирования из командной строки. Все мета-команды начинаются с обратной косой черты без кавычек и также известны как команды с обратной косой чертой.

В этом руководстве объясняется, как отображать базы данных и таблицы на сервере PostgreSQL с помощью psql .

Листинг баз данных

Вы можете подключиться к серверу PostgreSQL с помощью команды psql как любой системный пользователь. В зависимости от конфигурации сервера пользователю может потребоваться ввести свой пароль для подключения к терминалу psql . Чтобы получить доступ к терминалу psql от имени пользователя, в который вы сейчас вошли, просто введите psql .

При установке пакета PostgreSQL создается административный пользователь с именем «postgres». По умолчанию этот пользователь может подключаться к локальному серверу PostgreSQL без пароля.

Чтобы получить доступ к терминалу psql от имени пользователя postgres, запустите:

sudo -u postgres psql

Команда sudo позволяет запускать команды от имени другого пользователя.

В терминале psql выполните мета-команду l или list вывести список всех баз данных:

Вывод будет включать количество баз данных, имя каждой базы данных, ее владельца, кодировку и права доступа:

 List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+---------+---------+----------------------- odoo | odoo | UTF8 | C | C.UTF-8 | postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 | template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 rows) 

На сервере PostgreSQL по умолчанию созданы три базы данных: template0, template1 и postgres. Первые два — это шаблоны, которые используются при создании новых баз данных.

Если вы хотите получить информацию о размерах баз данных, табличных пространствах по умолчанию и описаниях, используйте l+ или list+ . Размер базы данных отображается только в том случае, если текущий пользователь может к ней подключиться.

Чтобы получить список всех баз данных без доступа к оболочке psql, используйте переключатель -c как показано ниже:

sudo -u postgres psql -c "l"

Другой способ составить список баз данных — использовать следующий оператор SQL:

SELECT datname FROM pg_database; 

В отличие от мета-команды l приведенный выше запрос покажет только имена баз данных:

 datname ----------- postgres odoo template1 template0 (4 rows) 

Листинговые таблицы

Чтобы сначала вывести список всех таблиц конкретной базы данных, вам необходимо подключиться к ней с помощью c или connect . Пользователь, в который вы вошли в терминал psql, должен иметь возможность подключаться к базе данных.

Например, чтобы подключиться к базе данных с именем «odoo», введите:

 c odoo 

После переключения базы данных используйте мета-команду dt вывести список всех таблиц базы данных:

Вывод будет включать количество таблиц, имя каждой таблицы, ее схему, тип и владельца:

 List of relations Schema | Name | Type | Owner --------+-----------------------------------------------------+-------+------- public | base_import_import | table | odoo public | base_import_mapping | table | odoo public | base_import_tests_models_char | table | odoo . public | web_editor_converter_test_sub | table | odoo public | web_tour_tour | table | odoo public | wizard_ir_model_menu_create | table | odoo (107 rows) 

Если база данных пуста, вывод будет выглядеть так:

No relations found. 

Чтобы получить информацию о размерах таблиц и описаниях, используйте dt+ .

Выводы

Вы узнали, как составить список баз данных и таблиц PostgreSQL с помощью команды psql .

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Как посмотреть все базы данных postgres

pg_amcheck [ параметр . ] [ имя_бд ]

Описание

Программа pg_amcheck поддерживает запуск реализованных в расширении amcheck функций, выявляющих повреждения, в одной или нескольких базах данных, с возможностью выбора проверяемых индексов, таблиц и схем. Она также позволяет выбрать, какие проверки будут выполняться, и запустить их в параллельном режиме (для которого задаётся число параллельных подключений).

В настоящее время поддерживаются только табличные отношения и индексы btree. Другие типы отношений просто пропускаются.

Если задаётся имя_бд , это должно быть имя одной проверяемой базы данных, а никакие другие параметры выбора базы данных задаваться не должны. Если же, напротив, присутствуют параметры выбора баз данных, будут проверяться все соответствующие базы. В отсутствие этих параметров проверяться будет только база по умолчанию. Параметрами, выбирающими базы, являются —all , —database и —exclude-database . Также в их число можно включить —relation , —exclude-relation , —table , —exclude-table , —index и —exclude-index , но только если их значения задаются тремя компонентами (например, mydb*.myschema*.myrel* ). И наконец, к таким параметрам можно отнести —schema и —exclude-schema , если их значения задаются двумя компонентами (например, mydb*.myschema* ).

В качестве параметра имя_бд может также передаваться строка подключения.

Параметры

Следующие параметры командной строки определяют, что будет проверяться:

Проверить все базы данных (кроме исключённых аргументом —exclude-database ). -d шаблон
—database= шаблон

Проверить базы данных, соответствующие заданному шаблону , кроме исключённых аргументом —exclude-database . Этот параметр можно добавлять неоднократно. -D шаблон
—exclude-database= шаблон

Исключить базы данных, соответствующие заданному шаблону . Этот параметр можно добавлять неоднократно. -i шаблон
—index= шаблон

Проверить индексы, соответствующие заданному шаблону , если они не исключены каким-либо образом. Этот параметр можно добавлять неоднократно.

Этот параметр подобен параметру —relation , но применяется только к индексам, а не таблицам. -I шаблон
—exclude-index= шаблон

Исключить индексы, соответствующие заданному шаблону . Этот параметр можно добавлять неоднократно.

Этот параметр подобен параметру —exclude-relation , но применяется только к индексам, а не таблицам. -r шаблон
—relation= шаблон

Проверить отношения, соответствующие заданному шаблону , если они не исключены каким-либо образом. Этот параметр можно добавлять неоднократно.

Шаблоны могут быть неполными, например myrel* , либо они могут задаваться с указанием схемы, например myschema*.myrel* , а также с указанием базы и схемы, например mydb*.myschema*.myrel* . В случае указания шаблона с базой данных, все соответствующие базы будут добавлены в список баз, подлежащих проверке. -R шаблон
—exclude-relation= шаблон

Исключить отношения, соответствующие заданному шаблону . Этот параметр можно добавлять неоднократно.

Как и с —relation , шаблон может быть неполным или дополненным указанием схемы, а также указанием базы и схемы. -s шаблон
—schema= шаблон

Проверить таблицы и индексы в схемах, соответствующих заданному шаблону , если соответствующие объекты не исключены каким-либо образом. Этот параметр можно добавлять неоднократно.

Чтобы проверить только таблицы в схемах, соответствующих определённому шаблону, можно указать в параметрах —table=ШАБЛОН_СХЕМЫ.* —no-dependent-indexes . Чтобы выбрать только индексы, можно воспользоваться указанием —index=ШАБЛОН_СХЕМЫ.* .

Шаблон схемы может содержать указание базы. Например, вы можете написать —schema=mydb*.myschema* , чтобы выбрать схемы myschema* в базах данных, соответствующих шаблону mydb* . -S шаблон
—exclude-schema= шаблон

Исключить таблицы и индексы в схемах, соответствующих заданному шаблону . Этот параметр можно добавлять неоднократно.

Как и в параметре —schema , к шаблону можно добавить имя базы данных. -t шаблон
—table= шаблон

Проверить таблицы в схемах, соответствующих заданному шаблону , если соответствующие объекты не исключены каким-либо образом. Этот параметр можно добавлять неоднократно.

Этот параметр подобен параметру —relation , но применяется только к таблицам, а не индексам. -T шаблон
—exclude-table= шаблон

Исключить таблицы, соответствующие заданному шаблону . Этот параметр можно добавлять неоднократно.

Этот параметр подобен параметру —exclude-relation , но применяется только к таблицам, а не индексам. —no-dependent-indexes

По умолчанию, если проверяется таблица, также будут проверяться все индексы btree этой таблицы, даже если они не были явно выбраны ключами типа —index или —relation . Данный параметр отключает это поведение. —no-dependent-toast

По умолчанию, если проверяется таблица, также будет проверяться её TOAST-таблица (если таковая имеется), даже если она не была явно выбрана ключами типа —table или —relation . Данный параметр отключает это поведение. —no-strict-names

По умолчанию, если аргументу —database , —table , —index или —relation не соответствуют никакие объекты, это считается критической ошибкой. С данным параметром уровень ошибки понижается до предупреждения.

Следующие параметры командной строки управляют методами проверки таблиц:

—exclude-toast-pointers

По умолчанию, когда в таблице встречается указатель на TOAST, осуществляется поиск записи в TOAST-таблице для проверки корректности указателя. Эти проверки могут быть довольно медленными, и данный параметр позволяет пропустить их. —on-error-stop

Прекращать обработку табличного отношения сразу после сообщения обо всех повреждениях на первой повреждённой странице и переходить к следующей таблице или индексу.

Заметьте, что проверка индекса всегда прекращается после обнаружения первой повреждённой страницы. Данный параметр имеет смысл только для табличных отношений. —skip= параметр

С указанием all-frozen проверки повреждений таблиц будут пропускать страницы, помеченные как полностью замороженные, во всех таблицах.

С указанием all-visible проверки повреждений таблиц будут пропускать страницы, помеченные как полностью видимые, во всех таблицах.

По умолчанию никакие страницы не пропускаются. Такое поведение задаётся значением none , но так как это значение подразумевается, явно задавать его не требуется. —startblock= блок

Начать проверку с блока с заданным номером. Если проверяемое табличное отношение содержит меньше заданного числа блоков, будет выдана ошибка. Данный параметр представляется полезным только для проверки одной конкретной таблицы, и он не действует на индексы. Дополнительные замечания приведены в описании —endblock . —endblock= блок

Завершить проверку на блоке с указанным номером. Если проверяемое табличное отношение содержит меньше заданного числа блоков, будет выдана ошибка. Данный параметр представляется полезным только для проверки одной конкретной таблицы, и он не действует на индексы. Если проверяется и обычная, и TOAST-таблица, этот параметр действует на обе, но при проверке TOAST-указателей тем не менее возможны обращения к блокам за этим пределом, если только эта проверка не была выключена параметром —exclude-toast-pointers .

Следующие параметры командной строки управляют методами проверки индексов-B-деревьев:

—heapallindexed

Проверять для каждого обрабатываемого индекса наличие всех кортежей кучи в виде индексных кортежей с использованием режима heapallindexed проверки amcheck. —parent-check

Выполнять для каждого проверяемого индекса btree функцию amcheck bt_index_parent_check , проводящую дополнительные проверки связей родитель-потомок.

По умолчанию выполняется функция amcheck bt_index_check , но заметьте, что в случае использования параметра —rootdescend неявно выбирается функция bt_index_parent_check . —rootdescend

При проверке каждого индекса для каждого кортежа заново находить индексные кортежи на уровне листьев, производя поиск с корневой страницы, то есть задействовать режим amcheck rootdescend .

При использовании данного параметра также неявно включается параметр —parent-check .

Этот режим проверки изначально реализовывался как средство, полезное при разработке функциональности индексов-B-деревьев. Он может обнаруживать не все или вовсе не обнаруживать те типы повреждений, которые встречаются на практике. Также в этом режиме проверка выполняется значительно дольше и для неё требуется больше серверных ресурсов.

Предупреждение

Дополнительные проверки, выполняемые для индексов-B-деревьев, когда указан параметр —parent-check или параметр —rootdescend , требуют относительно сильных блокировок на уровне отношений. Только эти проверки блокируют одновременное изменение данных командами INSERT , UPDATE и DELETE .

Следующие параметры командной строки управляют подключением к серверу:

-h компьютер
—host= компьютер

Указывает имя компьютера, на котором работает сервер. Если значение начинается с косой черты, оно определяет каталог Unix-сокета. -p порт
—port= порт

Указывает TCP-порт или расширение файла локального Unix-сокета, через который сервер принимает подключения. -U
—username= имя_пользователя

Имя пользователя для подключения. -w
—no-password

Не выдавать запрос на ввод пароля. Если сервер требует аутентификацию по паролю и пароль не доступен с помощью других средств, таких как файл .pgpass , попытка соединения не удастся. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, который вводит пароль. -W
—password

Принудительно запрашивать пароль перед подключением к базе данных.

Это несущественный параметр, так как pg_amcheck запрашивает пароль автоматически, если сервер проверяет подлинность по паролю. Однако чтобы понять это, pg_amcheck лишний раз подключается к серверу. Поэтому иногда имеет смысл ввести -W , чтобы исключить эту ненужную попытку подключения. —maintenance-db= имя_бд

Задаёт базу данных или строку подключения для установления подключения, через которое будет определяться список баз данных для проверки. Если не используются ни ключ —all , ни параметры, задающие шаблон имён проверяемых баз данных, такое подключение не требуется и данный параметр игнорируется. Иначе все параметры из переданной строки, за исключением имени базы данных, будут также использоваться при подключении к проверяемым базам. Если этот параметр опущен, выполняется подключение к базе postgres , а если к ней подключиться не удаётся — к базе template1 .

Выводить в stdout все SQL-запросы, передаваемые серверу. -j число
—jobs= число

Использовать заданное число одновременных подключений к серверу, а если оно превышает количество объектов, число подключений ограничивается этим количеством.

По умолчанию используется одно подключение. -P
—progress

Выводить информацию о прогрессе операции. Выводимая информация включает количество отношений, для которых была проведена проверка, и общий размер этих отношений. В неё также включается общее количество отношений, которые должны быть проверены, и примерный размер этих отношений. -v
—verbose

Выводить больше сообщений. В частности, будут выводиться сообщения о проверке каждого отношения, а также увеличится уровень детализации ошибок сервера. -V
—version

Вывести версию pg_amcheck и завершиться. —install-missing
—install-missing= схема

Установить все отсутствующие расширения, которые требуются для проверки баз(ы) данных. Если это расширение не было установлено, его объекты будут помещены в заданную схему или, если она не задана, в схему pg_catalog .

В настоящее время для работы pg_amcheck требуется только расширение amcheck. -?
—help

Вывести справку об аргументах командной строки pg_amcheck и завершиться.

Замечания

Программа pg_amcheck предназначена для работы с PostgreSQL 14.0 и выше.

Вывести все базы/таблицы в PostgreSQL

Эта статья «Вывести все базы/таблицы в PostgreSQL» поможет показать вам список всех баз данных и таблиц в PostgreSQL. Для начала, войти в PostgreSQL с помощью команды PSQL и выполнить следующую команду из командной строки PostgreSQL.

Вывести все базы в PostgreSQL

Вы можете использовать любую из перечисленных команд что ниже, чтобы вывести список всех баз данных в PostgreSQL:

postgres=# \list
postgres=# \l

Вывести все таблицы в PostgreSQL

Чтобы просмотреть список таблиц в любой базе данных, сначала необходимо подключиться к этой БД, а затем выполнить команду для просмотра таблиц. Первая команда подключит вас к БД (например: your_DB) в которой вы хотите увидеть таблицы и вторая команда покажет их:

postgres=# \connect your_DB your_DB=# \dt

На этом все, я завершил свою тему «Вывести все базы/таблицы в PostgreSQL».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *