Инструменты пользователя

Инструменты сайта


postgres:osnovy:oid_bazy

oid базы

Для каждой базы данных создается каталог с номером oid базы данных в $ PGDATA / base вместе с набором файлов OID, OID_fsm, OID_vm, PG_VERSION для каждого объекта (Tables / Indexes / View / и т. Д.).

Все файлы OID, OID_fsm, OID_vm будут обновляться в соответствии с изменениями, внесенными на уровне базы данных. Однако файл PG_VERSION никогда не будет обновляться при любых изменениях, внесенных в базу данных.

parser_wb=# SELECT * from pg_database where datname = 'parser_wb';
  oid  |  datname  | datdba | encoding | datcollate |  datctype  | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | datminmxid | dattablespace | datacl
-------+-----------+--------+----------+------------+------------+---------------+--------------+--------------+---------------+--------------+------------+---------------+--------
 16384 | parser_wb |     10 |        6 | en_US.utf8 | en_US.utf8 | f             | t            |           -1 |         13394 |          479 |          1 |          1663 |
(1 row)

Как узнать время создания базы данных в PostgreSQL 9.0?

так, мы собираемся использовать временную метку файла PG_VERSION в качестве времени создания базы данных. Я считаю, что будет возможность изменить временную метку PG_VERSION, но я не уверен, в каком случае эти изменения

CREATE OR REPLACE FUNCTION public.get_pg_version_loc(dbname VARCHAR) RETURNS text AS
$body$
DECLARE
       dbname ALIAS FOR $1;
       data_dir text;
       db_oid text;
       os_execute text;
BEGIN
     SELECT INTO db_oid oid FROM pg_database WHERE datname = dbname;
     SHOW data_directory INTO data_dir;
     os_execute := 'stat -c "%y" '||data_dir||'/base/'||db_oid||'/PG_VERSION';
     RETURN os_execute;
END;
$body$
LANGUAGE 'plpgsql';
postgres/osnovy/oid_bazy.txt · Последние изменения: 2023/01/12 12:18 (внешнее изменение)