it-swarm.com.de

pg_stat_statements wurden auch mit "shared_preload_libraries = 'pg_stat_statements' nicht gefunden.

Ich habe die folgenden Anweisungen befolgt:

http://www.postgresql.org/docs/9.3/static/pgstatstatements.html

... um folgende Zeilen hinzuzufügen:

# postgresql.conf
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = all

In der Datei postgresql.conf Und anschließendem Neustart des Servers ist die Tabelle pg_stat_statements Immer noch nicht sichtbar:

$ cat /usr/share/postgresql/9.3/postgresql.conf | grep -A3 ^shared_preload_libraries
shared_preload_libraries = 'pg_stat_statements' # (change requires restart)
pg_stat_statements.max = 10000
pg_stat_statements.track = all


$ Sudo /etc/init.d/postgresql restart
* Restarting PostgreSQL 9.3 database server          [ OK ] 

$ psql -U postgres
psql (9.3.10)
Type "help" for help.

postgres=# select count(*) from pg_stat_activity;
count 
-------
      1
(1 row)

postgres=# select count(*) from pg_stat_statements;
ERROR:  relation "pg_stat_statements" does not exist

aktualisieren

Nach der Ausführung:

Sudo apt-get install postgresql-contrib-9.3

Und dann:

$ psql -U postgres
psql (9.4.5, server 9.3.10)
Type "help" for help.

postgres=# create extension pg_stat_statements;
CREATE EXTENSION
postgres=# \dx
                                     List of installed extensions
         Name        | Version |   Schema   |                        Description                        
--------------------+---------+------------+-----------------------------------------------------------
 pg_stat_statements | 1.1     | public     | track execution statistics of all SQL statements executed
 plpgsql            | 1.0     | pg_catalog | PL/pgSQL procedural language
 (2 rows)

 postgres=# \quit
$ Sudo /etc/init.d/postgresql restart
 * Restarting PostgreSQL 9.3 database server  [OK]

... ich bekomme jetzt:

postgres=# select * from pg_stat_statements ;
ERROR:  pg_stat_statements must be loaded via shared_preload_libraries

systemdetails

Ich laufe auf Ubuntu 14.04.03 LTS. PostgreSQL wurde mit apt-get install Installiert.

protokollverfolgung von PostgreSQL während eines Neustarts

Während eines Sudo /etc/init.d/postgresql restart Erhalte ich die folgende Protokollverfolgung:

$ tail -f /var/log/postgresql/postgresql-9.3-main.log
2015-12-21 11:11:31 EET [23790-2] LOG:  received fast shutdown request
2015-12-21 11:11:31 EET [23790-3] LOG:  aborting any active transactions
2015-12-21 11:11:31 EET [7231-1] [email protected] FATAL:  terminating connection due to administrator command
2015-12-21 11:11:31 EET [23903-5] [email protected] FATAL:  terminating connection due to administrator command
2015-12-21 11:11:31 EET [23822-7] [email protected] FATAL:  terminating connection due to administrator command
2015-12-21 11:11:31 EET [23795-2] LOG:  autovacuum launcher shutting down
2015-12-21 11:11:31 EET [23815-1] [email protected] FATAL:  terminating connection due to administrator command
2015-12-21 11:11:31 EET [23792-1] LOG:  shutting down
2015-12-21 11:11:31 EET [23792-2] LOG:  database system is shut down
2015-12-21 11:11:32 EET [16886-1] LOG:  database system was shut down  at 2015-12-21 11:11:31 EET
2015-12-21 11:11:32 EET [16886-2] LOG:  MultiXact member wraparound  protections are now enabled
2015-12-21 11:11:32 EET [16885-1] LOG:  database system is ready to accept connections
2015-12-21 11:11:32 EET [16890-1] LOG:  autovacuum launcher started
2015-12-21 11:11:33 EET [16892-1] [unknown]@[unknown] LOG:  incomplete startup packet

Neuere Versionen von Postgres installieren conf-Dateien an anderen Speicherorten als früher. Manchmal ist eine .conf-Vorlagendatei vorhanden (wird aber nicht verwendet), und dann auch eine aktive .conf-Datei (an einem völlig anderen Speicherort). . Ich habe dies durch Durchsuchen der Dateien /etc/init.d entdeckt. Möglicherweise ist die von Ihnen bearbeitete .conf-Datei nicht diejenige, die von der Datenbank verwendet wird.

Sie können den Speicherort der von Ihrer Datenbank verwendeten conf-Datei ermitteln, indem Sie eine Verbindung zur Datenbank herstellen und SHOW config_file Abfragen.

Hier ist ein Link zu Ihrer Folgefrage (falls jemand es in Zukunft nützlich findet)

1
Joishi Bodio