📄 postgres-ref.sgml
字号:
<para> Allows the structure of system tables to be modified. This is used by <command>initdb</command>. </para> </listitem> </varlistentry> <varlistentry> <term><option>-P</option></term> <listitem> <para> Ignore system indexes when reading system tables (but still update the indexes when modifying the tables). This is useful when recovering from damaged system indexes. </para> </listitem> </varlistentry> <varlistentry> <term><option>-t</option> <literal>pa[rser] | pl[anner] | e[xecutor]</literal></term> <listitem> <para> Print timing statistics for each query relating to each of the major system modules. This option cannot be used together with the <option>-s</option> option. </para> </listitem> </varlistentry> <varlistentry> <term><option>-T</option></term> <listitem> <para> This option is for debugging problems that cause a server process to die abnormally. The ordinary strategy in this situation is to notify all other server processes that they must terminate and then reinitialize the shared memory and semaphores. This is because an errant server process could have corrupted some shared state before terminating. This option specifies that <command>postgres</command> will stop all other server processes by sending the signal <literal>SIGSTOP</literal>, but will not cause them to terminate. This permits system programmers to collect core dumps from all server processes by hand. </para> </listitem> </varlistentry> <varlistentry> <term><option>-v</option> <replaceable class="parameter">protocol</replaceable></term> <listitem> <para> Specifies the version number of the frontend/backend protocol to be used for a particular session. This option is for internal use only. </para> </listitem> </varlistentry> <varlistentry> <term><option>-W</option> <replaceable class="parameter">seconds</replaceable></term> <listitem> <para> A delay of this many seconds occurs when a new server process is started, after it conducts the authentication procedure. This is intended to give an opportunity to attach to the server process with a debugger. </para> </listitem> </varlistentry> </variablelist> </refsect2> <refsect2> <title>Options for single-user mode</title> <para> The following options only apply to the single-user mode. </para> <variablelist> <varlistentry> <term><option>--single</option></term> <listitem> <para> Selects the single-user mode. This must be the first argument on the command line. </para> </listitem> </varlistentry> <varlistentry> <term><replaceable class="parameter">database</replaceable></term> <listitem> <para> Specifies the name of the database to be accessed. This must be the last argument on the command line. If it is omitted it defaults to the user name. </para> </listitem> </varlistentry> <varlistentry> <term><option>-E</option></term> <listitem> <para> Echo all commands. </para> </listitem> </varlistentry> <varlistentry> <term><option>-j</option></term> <listitem> <para> Disables use of newline as a statement delimiter. </para> </listitem> </varlistentry> <varlistentry> <term><option>-r</option> <replaceable class="parameter">filename</replaceable></term> <listitem> <para> Send all server log output to <replaceable class="parameter">filename</replaceable>. In normal multiuser mode, this option is ignored, and <systemitem>stderr</> is used by all processes. </para> </listitem> </varlistentry> </variablelist> </refsect2> </refsect1> <refsect1> <title>Environment</title> <variablelist> <varlistentry> <term><envar>PGCLIENTENCODING</envar></term> <listitem> <para> Default character encoding used by clients. (The clients can override this individually.) This value can also be set in the configuration file. </para> </listitem> </varlistentry> <varlistentry> <term><envar>PGDATA</envar></term> <listitem> <para> Default data directory location </para> </listitem> </varlistentry> <varlistentry> <term><envar>PGDATESTYLE</envar></term> <listitem> <para> Default value of the <xref linkend="guc-datestyle"> run-time parameter. (The use of this environment variable is deprecated.) </para> </listitem> </varlistentry> <varlistentry> <term><envar>PGPORT</envar></term> <listitem> <para> Default port (preferably set in the configuration file) </para> </listitem> </varlistentry> <varlistentry> <term><envar>TZ</envar></term> <listitem> <para> Server time zone </para> </listitem> </varlistentry> </variablelist> </refsect1> <refsect1> <title>Diagnostics</title> <para> A failure message mentioning <literal>semget</> or <literal>shmget</> probably indicates you need to configure your kernel to provide adequate shared memory and semaphores. For more discussion see <xref linkend="kernel-resources">. You might be able to postpone reconfiguring your kernel by decreasing <xref linkend="guc-shared-buffers"> to reduce the shared memory consumption of <productname>PostgreSQL</>, and/or by reducing <xref linkend="guc-max-connections"> to reduce the semaphore consumption. </para> <para> A failure message suggesting that another server is already running should be checked carefully, for example by using the command<screen><prompt>$</prompt> <userinput>ps ax | grep postgres</userinput></screen> or<screen><prompt>$</prompt> <userinput>ps -ef | grep postgres</userinput></screen> depending on your system. If you are certain that no conflicting server is running, you can remove the lock file mentioned in the message and try again. </para> <para> A failure message indicating inability to bind to a port might indicate that that port is already in use by some non-<productname>PostgreSQL</productname> process. You might also get this error if you terminate <command>postgres</command> and immediately restart it using the same port; in this case, you must simply wait a few seconds until the operating system closes the port before trying again. Finally, you might get this error if you specify a port number that your operating system considers to be reserved. For example, many versions of Unix consider port numbers under 1024 to be <quote>trusted</quote> and only permit the Unix superuser to access them. </para> </refsect1> <refsect1> <title>Notes</title> <para> The utility command <xref linkend="app-pg-ctl"> can be used to start and shut down the <command>postgres</command> server safely and comfortably. </para> <para> If at all possible, <emphasis>do not</emphasis> use <literal>SIGKILL</literal> to kill the main <command>postgres</command> server. Doing so will prevent <command>postgres</command> from freeing the system resources (e.g., shared memory and semaphores) that it holds before terminating. This might cause problems for starting a fresh <command>postgres</command> run. </para> <para> To terminate the <command>postgres</command> server normally, the signals <literal>SIGTERM</literal>, <literal>SIGINT</literal>, or <literal>SIGQUIT</literal> can be used. The first will wait for all clients to terminate before quitting, the second will forcefully disconnect all clients, and the third will quit immediately without proper shutdown, resulting in a recovery run during restart. </para> <para> The <literal>SIGHUP</literal> signal will reload the server configuration files. It is also possible to send <literal>SIGHUP</literal> to an individual server process, but that is usually not sensible. </para> <para> To cancel a running query, send the <literal>SIGINT</literal> signal to the process running that command. </para> <para> The <command>postgres</command> server uses <literal>SIGTERM</literal> to tell subordinate server processes to quit normally and <literal>SIGQUIT</literal> to terminate without the normal cleanup. These signals <emphasis>should not</emphasis> be used by users. It is also unwise to send <literal>SIGKILL</literal> to a server process — the main <command>postgres</command> process will interpret this as a crash and will force all the sibling processes to quit as part of its standard crash-recovery procedure. </para> </refsect1> <refsect1 id="app-postgres-bugs"> <title>Bugs</title> <para> The <option>--</> options will not work on <systemitem class="osname">FreeBSD</> or <systemitem class="osname">OpenBSD</>. Use <option>-c</> instead. This is a bug in the affected operating systems; a future release of <productname>PostgreSQL</productname> will provide a workaround if this is not fixed. </para> </refsect1> <refsect1> <title>Usage</title> <para> To start a single-user mode server, use a command like<screen><userinput>postgres --single -D /usr/local/pgsql/data <replaceable>other-options</> my_database</userinput></screen> Provide the correct path to the database directory with <option>-D</>, or make sure that the environment variable <envar>PGDATA</> is set. Also specify the name of the particular database you want to work in. </para> <para> Normally, the single-user mode server treats newline as the command entry terminator; there is no intelligence about semicolons, as there is in <application>psql</>. To continue a command across multiple lines, you must type backslash just before each newline except the last one. </para> <para> But if you use the <option>-j</> command line switch, then newline does not terminate command entry. In this case, the server will read the standard input until the end-of-file (<acronym>EOF</>) marker, then process the input as a single command string. Backslash-newline is not treated specially in this case. </para> <para> To quit the session, type <acronym>EOF</acronym> (<keycombo action="simul"><keycap>Control</><keycap>D</></>, usually). If you've used <option>-j</>, two consecutive <acronym>EOF</>s are needed to exit. </para> <para> Note that the single-user mode server does not provide sophisticated line-editing features (no command history, for example). </para> </refsect1> <refsect1 id="app-postgres-examples"> <title>Examples</title> <para> To start <command>postgres</command> in the background using default values, type:<screen><prompt>$</prompt> <userinput>nohup postgres >logfile 2>&1 </dev/null &</userinput></screen> </para> <para> To start <command>postgres</command> with a specific port:<screen><prompt>$</prompt> <userinput>postgres -p 1234</userinput></screen> This command will start up <command>postgres</command> communicating through the port 1234. In order to connect to this server using <application>psql</>, you would need to run it as<screen><prompt>$</prompt> <userinput>psql -p 1234</userinput></screen> or set the environment variable <envar>PGPORT</envar>:<screen><prompt>$</prompt> <userinput>export PGPORT=1234</userinput><prompt>$</prompt> <userinput>psql</userinput></screen> </para> <para> Named run-time parameters can be set in either of these styles:<screen><prompt>$</prompt> <userinput>postgres -c work_mem=1234</userinput><prompt>$</prompt> <userinput>postgres --work-mem=1234</userinput></screen> Either form overrides whatever setting might exist for <varname>work_mem</> in <filename>postgresql.conf</>. Notice that underscores in parameter names can be written as either underscore or dash on the command line. Except for short-term experiments, it's probably better practice to edit the setting in <filename>postgresql.conf</> than to rely on a command-line switch to set a parameter. </para> </refsect1> <refsect1> <title>See Also</title> <para> <xref linkend="app-initdb">, <xref linkend="app-pg-ctl"> </para> </refsect1></refentry>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -