AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 179759
Accepted
Vao Tsun
Vao Tsun
Asked: 2017-07-14 05:04:40 +0800 CST2017-07-14 05:04:40 +0800 CST 2017-07-14 05:04:40 +0800 CST

Encontrar qual é a origem de uma definição de configuração específica do PostgreSQL

  • 772

Se eu acertar, as configurações são hierárquicas:

postgres.conf->
postgres.auto.conf (ALTER SYSTEM)->
ALTER DATABASE(where applicable)->
ALTER USER(where applicable)->
SET SESSION(where applicable)->
SET LOCAL(where applicable)

digamos que eu tenha enable_seqscandefinido para offem algum momento. SHOWou current_setting(ou pg_settingsme mostrará apenas o valor atual. Mas para verificar por que estou com isso, tenho que verificar toda a cadeia. Por exemplo, eu suspeito que alguém o configurou por usuário ou por banco de dados, ou em auto.conf- para descobrir quão ampla é a configuração, tenho que verificar todos. Caso contrário, a redefinição do valor pode falhar, por exemplo:

vao=# show enable_seqscan;
 enable_seqscan
----------------
 off
(1 row)

vao=# set enable_seqscan to default;
SET
vao=# show enable_seqscan;
 enable_seqscan
----------------
 off
(1 row)

Porque é assim para o usuário vao, ou para o banco de dados vao, ou mais profundo...

Qual é uma maneira curta de encontrar a fonte primária do valor atual?.. Ou, de preferência, a matriz de todas as fontes para a configuração. Existe alguma interface ou hack de macaco?

atualização para refletir a brilhante resposta de Abelisto:

source, sourcefile from pg_settingsé uma fonte maravilhosa de informação, ainda estou pedindo uma maneira de verificar por esses motivos: para ver o ou databaseeu tenho que fazer login novamente - obviamente. Portanto, antes que eles sejam realmente aplicados à sessão, não posso verificá-los. local e session set mostra tanto SESSION (que tipo de razoável também) e por último ainda tenho que redefinir para o padrão passo a passo toda a hierarquia. Por exemplo:usersource

vao=# select setting, source, sourcefile from pg_settings where name = 'enable_seqscan';
 setting |  source  | sourcefile
---------+----------+------------
 off     | database |
(1 row)

vao=# select * from pg_file_settings where name = 'enable_seqscan';
                    sourcefile                     | sourceline | seqno |      name      | setting | applied | error
---------------------------------------------------+------------+-------+----------------+---------+---------+-------
 /etc/postgresql/9.6/main/a                        |          1 |     1 | enable_seqscan | off     | f       |
 /var/lib/postgresql/9.6/main/postgresql.auto.conf |          3 |    26 | enable_seqscan | on      | t       |
(2 rows)

Portanto, se eu não verificar todas as fontes, minhas alterações não poderão ser respeitadas.

postgresql configuration
  • 1 1 respostas
  • 1014 Views

1 respostas

  • Voted
  1. Best Answer
    Abelisto
    2017-07-14T06:10:36+08:002017-07-14T06:10:36+08:00

    pg_settings- olhe parasource*

    Por exemplo, depois

    alter system set array_nulls to off;
    

    (e recarregando a configuração)

    select * from pg_settings where name = 'array_nulls';
    
    ╔═ [Registro 1] ════╤═══════════════════════════════════════ ══════════════════════════════════════════════════ ═══════════════════╗
    ║ nome │ array_nulls ║
    ║ configuração │ desligado ║
    ║ unidade │ ░░░░ ║
    ║ categoria │ Compatibilidade de versão e plataforma / Versões anteriores do PostgreSQL ║
    ║ short_desc │ Habilita a entrada de elementos NULL em arrays. ║
    ║ extra_desc │ Quando ativado, NULL sem aspas em um valor de entrada de matriz significa um valor nulo; caso contrário, é tomado literalmente. ║
    ║ contexto │ usuário ║
    ║ vartype │ bool ║
    ║ fonte │ arquivo de configuração ║
    ║ min_val │ ░░░░ ║
    ║ max_val │ ░░░░ ║
    ║ enumerações │ ░░░░ ║
    ║ boot_val │ em ║
    ║ reset_val │ off ║
    ║ arquivo de origem │ /var/lib/postgresql/9.5/main/postgresql.auto.conf ║
    ║ fonte │ 3 ║
    ║ pendente_restart │ f ║
    ╚═════════════════╧═══════════════════════════════ ══════════════════════════════════════════════════ ═══════════════════════════╝
    

    Update E há a consulta para obter as configurações de db/role, sem necessidade de novo login:

    with
      opt_db as (
        select s.*, d.datname, opt_name, opt_value from 
          pg_db_role_setting s join
          pg_database d on (s.setdatabase = d.oid) cross join lateral (
            select
              split_part(opt, '=',1) as opt_name,
              split_part(opt, '=', 2) as opt_value
            from
              unnest(setconfig) as opt) as opt 
        ),
      opt_role as (
        select s.*, r.rolname, opt_name, opt_value from 
          pg_db_role_setting s join
          pg_roles r on (s.setrole = r.oid) cross join lateral (
            select
              split_part(opt, '=', 1) as opt_name,
              split_part(opt, '=', 2) as opt_value
            from
              unnest(setconfig) as opt) as opt 
      )
    
    select
      datname,
      rolname,
      opt_name,
      opt_db.opt_value as db_value,
      opt_role.opt_value as role_value
    from opt_db full join opt_role using(opt_name);
    

    Resultado possível:

    ╔══════════╤══════════╤═════════════╤═════════════ ════╤═════════════════╗
    ║ datname │ rolname │ opt_name │ db_value │ role_value ║
    ╠══════════╪══════════╪═════════════╪═════════════ ════╪═════════════════╣
    ║ postgres │ nd │ search_path │ "$user", public │ "$user", public ║
    ║ postgres │ postgres │ array_nulls │ desligado │ ligado ║
    ║ ░░░░ │ nd │ foo.bar │ ░░░░ │ 3 ║
    ╚══════════╧══════════╧═════════════╧═════════════ ════╧═════════════════╝
    
    • 5

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve