Показаны сообщения с ярлыком postgresql. Показать все сообщения
Показаны сообщения с ярлыком postgresql. Показать все сообщения

суббота, 22 декабря 2018 г.

PostgreSQL: пример исполняемого блока кода с динамически формирующимся содержимым и уведомлениями

create or replace function refresh_jenki_postgres_schemalist() returns void AS $$
declare
slct RECORD;
i integer;
i2 integer;
begin
/* Удаляет из таблицы «azk» для «jenki» записи об отсутствующих базах */
delete from azk a where not exists (select null from pg_database d where d.datname = a.dbname);
GET DIAGNOSTICS i = ROW_COUNT;
RAISE NOTICE 'Deleted rows: %', i;
/* Вставляем записи о базах, которые есть на сервере, но которых нет в таблице «azk» для «jenki» (за исключением баз, которые не относятся к АЦК) */
i = 0;
for slct in select 'insert into azk(id,dbname) values(nextval(''azk_seq''),'''||d.datname||''')' as stmt from pg_database d where not exists (select null from azk a where d.datname = a.dbname) and d.datname not in ('postgres','template0','template1','zabbix') order by d.datname loop
execute slct.stmt;
i = i + 1;
end loop;
RAISE NOTICE 'Inserted rows: %', i;
end $$ language plpgsql;

среда, 9 августа 2017 г.

PostgreSQL: пример исполняемого блока для создания таблицы DUAL

DO $$
DECLARE
b_parent_id numeric(15);
b_ppo_id numeric(15);
v_doc_id numeric(15);
v_rr_id numeric(15);
v_gen numeric(15);
v_gen1 numeric(15);
r RECORD; -- некоторая промежуточная запись
ru RECORD; -- некоторая промежуточная запись
dd RECORD; -- некоторая промежуточная запись
sysdate Date := now(); -- текущая дата
BEGIN
-- удалим временную таблицу, если существует
drop table if EXISTS dual;
-- создадим временную таблицу
create temp table dual (dummy integer); -- пустышка
execute 'insert into dual(dummy) values(0)';
end $$;

суббота, 10 декабря 2016 г.

PostgreSQL: перенос БД (временное решение)

БД перенесена сюда:
/mnt/diska/postgresql/9.5/data
Конфигурационные файлы, например, pg_hba.conf, считываются оттуда же.

(Временно) Запуск службы из под пользователя «postgres» с помощью команды:
/usr/pgsql-9.5/bin/postmaster -D /mnt/diska/postgresql/9.5/data

(Временно) Использовать команду
service postgresql-9.5 start
пока запрещено.

воскресенье, 23 октября 2016 г.

PostgreSQL for Beginners x2i.pdf, pg_hba.conf, appdb

В методичке для новичков "PostgreSQL for Beginners x2i.pdf" есть задание: нужно подключиться к созданной своими руками БД с помощью команды в "psql":
\c appdb app localhost 5432
которая заканчивается ошибкой:
ВАЖНО: пользователь "app" не прошёл проверку подлинности (Ident)
Сохранено предыдущее подключение

Помогло переключение метода (столбец "METHOD") определения доступа в файле "pg_hba.conf".
Было:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident

Стало:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust

Установка PostgreSQL 9.5 на Oracle Linux 5

По мотивам: http://tecadmin.net/install-postgresql-9-5-on-centos/#

1) yum install postgresql95-server postgresql95
2) service postgresql-9.5 initdb
3) service postgresql-9.5 start
4) для автозапуска при старте сервера:
chkconfig postgresql-9.5 on

P.S. Пришлось вручную добавить в /var/lib/pgsql/.bash_profile:
alias psql = '/usr/pgsql-9.5/bin/psql'

среда, 19 октября 2016 г.

PostgreSQL: расположение конфигурационных файлов и другие параметры СУБД

В "PostgreSQL for Beginners v2i.pdf" написано, что конфигурационные файлы СУБД находятся по следующим путям:
об автозагрузке:
/etc/postgresql/9.5/main/start.conf
параметры сервера:
/etc/postgresql/9.5/main/postgresql.conf
настройки доступа:
/etc/postgresql/9.5/main/pg_hba.conf

Но на практике, по крайней мере на виртуальном образе с Xubuntu, скачаного с оф.сайта, после установки СУБД конфигурационные сайты удалось найти только с помощью команды в psql:
postgres=# show hba_file;
hba_file
-----------------------------------
/usr/local/pgsql/data/pg_hba.conf
(1 row)

Вообще, команда "SHOW" очень удобная, например, с помощью команды:
SHOW ALL;
можно получить список всех параметров СУБД вместе с их значениями.
Например, параметр "data_directory" указывает на место расположения файлов данных СУБД в хранилище:
postgres=# show data_directory;
data_directory
-----------------------
/usr/local/pgsql/data
(1 row)

понедельник, 17 октября 2016 г.

PostgreSQL: образы виртуальных машин

https://files.postgrespro.ru/departments/edu/www/
Мое знакомство с Linux началось с Oracle Enterprise Linux 5.11, поэтому для меня было неожиданностью то, что в Ubuntu пользователь "root" заблокирован и не имеет пароля.
Все команды из методички по "PostgreSQL DBA1", для которой предназначены образы виртуальных машин, нужно выполнять с командой "sudo" и вводить пароль для пользователя с логином "student" - пароль такой же - "student".

PostgreSQL: make distclean

Ошибка невнимательного админа :)
При выполнении команды по сбросу состояния дистрибутива, не заметил надпись, что выполнять ее нужно при повторной установке. В первый раз она выдает ошибка:
[root@myserver postgresql-9.5.4]# make distclean
You need to run the 'configure' program first. See the file
'INSTALL' for installation instructions.
make: *** [distclean] Ошибка 1

Генераторы в PostgreSQL

1) Генерация следующего значения:
insert into table1(ID, ...) values (NEXTVAL('table1_seq'), ...);
2) Получение текущего значения генератора:
CURRVAL('table1_seq')

Подробнее: https://postgrespro.ru/docs/postgrespro/9.5/functions-sequence.html

Архив