2010-09-20 22:08:53 +02:00
|
|
|
<!-- doc/src/sgml/oid2name.sgml -->
|
2007-12-10 06:32:51 +01:00
|
|
|
|
2012-05-09 19:39:53 +02:00
|
|
|
<refentry id="oid2name">
|
|
|
|
<refmeta>
|
|
|
|
<refentrytitle>oid2name</refentrytitle>
|
|
|
|
<manvolnum>1</manvolnum>
|
|
|
|
<refmiscinfo>Application</refmiscinfo>
|
|
|
|
</refmeta>
|
|
|
|
|
|
|
|
<refnamediv>
|
|
|
|
<refname>oid2name</refname>
|
|
|
|
<refpurpose>resolve OIDs and file nodes in a <productname>PostgreSQL</productname> data directory</refpurpose>
|
|
|
|
</refnamediv>
|
2007-12-10 06:32:51 +01:00
|
|
|
|
2007-11-11 00:30:46 +01:00
|
|
|
<indexterm zone="oid2name">
|
|
|
|
<primary>oid2name</primary>
|
|
|
|
</indexterm>
|
|
|
|
|
2012-05-09 19:39:53 +02:00
|
|
|
<refsynopsisdiv>
|
|
|
|
<cmdsynopsis>
|
|
|
|
<command>oid2name</command>
|
|
|
|
<arg rep="repeat"><replaceable>option</replaceable></arg>
|
|
|
|
</cmdsynopsis>
|
|
|
|
</refsynopsisdiv>
|
|
|
|
|
|
|
|
<refsect1>
|
|
|
|
<title>Description</title>
|
|
|
|
|
2007-11-11 00:30:46 +01:00
|
|
|
<para>
|
2007-12-10 06:32:51 +01:00
|
|
|
<application>oid2name</> is a utility program that helps administrators to
|
|
|
|
examine the file structure used by PostgreSQL. To make use of it, you need
|
|
|
|
to be familiar with the database file structure, which is described in
|
|
|
|
<xref linkend="storage">.
|
2007-11-11 00:30:46 +01:00
|
|
|
</para>
|
2007-12-10 06:32:51 +01:00
|
|
|
|
|
|
|
<note>
|
2007-11-11 00:30:46 +01:00
|
|
|
<para>
|
2007-12-10 06:32:51 +01:00
|
|
|
The name <quote>oid2name</> is historical, and is actually rather
|
|
|
|
misleading, since most of the time when you use it, you will really
|
|
|
|
be concerned with tables' filenode numbers (which are the file names
|
|
|
|
visible in the database directories). Be sure you understand the
|
|
|
|
difference between table OIDs and table filenodes!
|
2007-11-11 00:30:46 +01:00
|
|
|
</para>
|
2007-12-10 06:32:51 +01:00
|
|
|
</note>
|
|
|
|
|
2007-11-11 00:30:46 +01:00
|
|
|
<para>
|
2007-12-10 06:32:51 +01:00
|
|
|
<application>oid2name</application> connects to a target database and
|
|
|
|
extracts OID, filenode, and/or table name information. You can also have
|
2010-05-20 05:45:38 +02:00
|
|
|
it show database OIDs or tablespace OIDs.
|
2007-11-11 00:30:46 +01:00
|
|
|
</para>
|
2007-12-10 06:32:51 +01:00
|
|
|
|
2012-05-09 19:39:53 +02:00
|
|
|
</refsect1>
|
2010-05-20 05:45:38 +02:00
|
|
|
|
2012-05-09 19:39:53 +02:00
|
|
|
<refsect1>
|
|
|
|
<title>Options</title>
|
2010-05-20 05:45:38 +02:00
|
|
|
|
|
|
|
<para>
|
|
|
|
<application>oid2name</application> accepts the following command-line arguments:
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
|
|
|
|
<varlistentry>
|
2012-05-20 00:15:55 +02:00
|
|
|
<term><option>-f</option> <replaceable>filenode</></term>
|
|
|
|
<listitem><para>show info for table with filenode <replaceable>filenode</></para></listitem>
|
2010-05-20 05:45:38 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2012-05-20 00:15:55 +02:00
|
|
|
<term><option>-i</option></term>
|
|
|
|
<listitem><para>include indexes and sequences in the listing</para></listitem>
|
2010-05-20 05:45:38 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2012-05-20 00:15:55 +02:00
|
|
|
<term><option>-o</option> <replaceable>oid</></term>
|
|
|
|
<listitem><para>show info for table with OID <replaceable>oid</></para></listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><option>-q</option></term>
|
|
|
|
<listitem><para>omit headers (useful for scripting)</para></listitem>
|
2010-05-20 05:45:38 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><option>-s</option></term>
|
|
|
|
<listitem><para>show tablespace OIDs</para></listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><option>-S</option></term>
|
|
|
|
<listitem><para>include system objects (those in
|
|
|
|
<option>information_schema</option>, <option>pg_toast</option>
|
|
|
|
and <option>pg_catalog</option> schemas)
|
|
|
|
</para></listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2012-05-20 00:15:55 +02:00
|
|
|
<term><option>-t</option> <replaceable>tablename_pattern</></term>
|
|
|
|
<listitem><para>show info for table(s) matching <replaceable>tablename_pattern</></para></listitem>
|
2010-05-20 05:45:38 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
2012-06-18 01:44:00 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><option>-V</></term>
|
|
|
|
<term><option>--version</></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Print the <application>oid2name</application> version and exit.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
2010-05-20 05:45:38 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><option>-x</option></term>
|
|
|
|
<listitem><para>display more information about each object shown: tablespace name,
|
|
|
|
schema name, and OID
|
|
|
|
</para></listitem>
|
|
|
|
</varlistentry>
|
2012-06-18 01:44:00 +02:00
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><option>-?</></term>
|
|
|
|
<term><option>--help</></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Show help about <application>oid2name</application> command line
|
|
|
|
arguments, and exit.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
2012-05-20 00:15:55 +02:00
|
|
|
</variablelist>
|
|
|
|
</para>
|
2010-05-20 05:45:38 +02:00
|
|
|
|
2012-05-20 00:15:55 +02:00
|
|
|
<para>
|
|
|
|
<application>oid2name</application> also accepts the following command-line
|
|
|
|
arguments for connection parameters:
|
2010-05-20 05:45:38 +02:00
|
|
|
|
2012-05-20 00:15:55 +02:00
|
|
|
<variablelist>
|
2010-05-20 05:45:38 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><option>-d</option> <replaceable>database</></term>
|
|
|
|
<listitem><para>database to connect to</para></listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><option>-H</option> <replaceable>host</></term>
|
|
|
|
<listitem><para>database server's host</para></listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><option>-p</option> <replaceable>port</></term>
|
|
|
|
<listitem><para>database server's port</para></listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><option>-U</option> <replaceable>username</></term>
|
2010-08-17 06:37:21 +02:00
|
|
|
<listitem><para>user name to connect as</para></listitem>
|
2010-05-20 05:45:38 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><option>-P</option> <replaceable>password</></term>
|
|
|
|
<listitem><para>password (deprecated — putting this on the command line
|
|
|
|
is a security hazard)</para></listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
</variablelist>
|
|
|
|
</para>
|
2007-12-10 06:32:51 +01:00
|
|
|
|
|
|
|
<para>
|
|
|
|
To display specific tables, select which tables to show by
|
2010-05-20 05:45:38 +02:00
|
|
|
using <option>-o</>, <option>-f</> and/or <option>-t</>.
|
|
|
|
<option>-o</> takes an OID,
|
|
|
|
<option>-f</> takes a filenode,
|
2010-08-17 06:37:21 +02:00
|
|
|
and <option>-t</> takes a table name (actually, it's a <literal>LIKE</>
|
|
|
|
pattern, so you can use things like <literal>foo%</>).
|
2007-12-10 06:32:51 +01:00
|
|
|
You can use as many
|
2010-05-19 22:20:38 +02:00
|
|
|
of these options as you like, and the listing will include all objects
|
|
|
|
matched by any of the options. But note that these options can only
|
2010-05-20 05:45:38 +02:00
|
|
|
show objects in the database given by <option>-d</>.
|
2007-12-10 06:32:51 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2010-05-20 05:45:38 +02:00
|
|
|
If you don't give any of <option>-o</>, <option>-f</> or <option>-t</>,
|
|
|
|
but do give <option>-d</>, it will list all tables in the database
|
|
|
|
named by <option>-d</>. In this mode, the <option>-S</> and
|
|
|
|
<option>-i</> options control what gets listed.
|
2007-12-10 06:32:51 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2010-05-20 05:45:38 +02:00
|
|
|
If you don't give <option>-d</> either, it will show a listing of database
|
|
|
|
OIDs. Alternatively you can give <option>-s</> to get a tablespace
|
2007-12-10 06:32:51 +01:00
|
|
|
listing.
|
|
|
|
</para>
|
2012-05-09 19:39:53 +02:00
|
|
|
</refsect1>
|
2007-12-10 06:32:51 +01:00
|
|
|
|
2012-05-09 19:39:53 +02:00
|
|
|
<refsect1>
|
|
|
|
<title>Notes</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<application>oid2name</> requires a running database server with
|
|
|
|
non-corrupt system catalogs. It is therefore of only limited use
|
|
|
|
for recovering from catastrophic database corruption situations.
|
|
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
<refsect1>
|
2007-11-11 00:30:46 +01:00
|
|
|
<title>Examples</title>
|
2007-12-10 06:32:51 +01:00
|
|
|
|
2010-07-29 21:34:41 +02:00
|
|
|
<screen>
|
2007-12-10 06:32:51 +01:00
|
|
|
$ # what's in this database server, anyway?
|
2002-06-12 23:09:09 +02:00
|
|
|
$ oid2name
|
|
|
|
All databases:
|
2004-09-17 23:14:19 +02:00
|
|
|
Oid Database Name Tablespace
|
|
|
|
----------------------------------
|
|
|
|
17228 alvherre pg_default
|
|
|
|
17255 regression pg_default
|
|
|
|
17227 template0 pg_default
|
|
|
|
1 template1 pg_default
|
|
|
|
|
|
|
|
$ oid2name -s
|
|
|
|
All tablespaces:
|
|
|
|
Oid Tablespace Name
|
|
|
|
-------------------------
|
|
|
|
1663 pg_default
|
|
|
|
1664 pg_global
|
|
|
|
155151 fastdisk
|
|
|
|
155152 bigdisk
|
|
|
|
|
2007-12-10 06:32:51 +01:00
|
|
|
$ # OK, let's look into database alvherre
|
|
|
|
$ cd $PGDATA/base/17228
|
2004-09-17 23:14:19 +02:00
|
|
|
|
|
|
|
$ # get top 10 db objects in the default tablespace, ordered by size
|
|
|
|
$ ls -lS * | head -10
|
|
|
|
-rw------- 1 alvherre alvherre 136536064 sep 14 09:51 155173
|
|
|
|
-rw------- 1 alvherre alvherre 17965056 sep 14 09:51 1155291
|
|
|
|
-rw------- 1 alvherre alvherre 1204224 sep 14 09:51 16717
|
|
|
|
-rw------- 1 alvherre alvherre 581632 sep 6 17:51 1255
|
|
|
|
-rw------- 1 alvherre alvherre 237568 sep 14 09:50 16674
|
|
|
|
-rw------- 1 alvherre alvherre 212992 sep 14 09:51 1249
|
|
|
|
-rw------- 1 alvherre alvherre 204800 sep 14 09:51 16684
|
|
|
|
-rw------- 1 alvherre alvherre 196608 sep 14 09:50 16700
|
|
|
|
-rw------- 1 alvherre alvherre 163840 sep 14 09:50 16699
|
|
|
|
-rw------- 1 alvherre alvherre 122880 sep 6 17:51 16751
|
|
|
|
|
2007-12-10 06:32:51 +01:00
|
|
|
$ # I wonder what file 155173 is ...
|
2004-09-17 23:14:19 +02:00
|
|
|
$ oid2name -d alvherre -f 155173
|
|
|
|
From database "alvherre":
|
|
|
|
Filenode Table Name
|
|
|
|
----------------------
|
|
|
|
155173 accounts
|
|
|
|
|
|
|
|
$ # you can ask for more than one object
|
|
|
|
$ oid2name -d alvherre -f 155173 -f 1155291
|
|
|
|
From database "alvherre":
|
|
|
|
Filenode Table Name
|
|
|
|
-------------------------
|
|
|
|
155173 accounts
|
|
|
|
1155291 accounts_pkey
|
|
|
|
|
2007-12-10 06:32:51 +01:00
|
|
|
$ # you can mix the options, and get more details with -x
|
2004-09-17 23:14:19 +02:00
|
|
|
$ oid2name -d alvherre -t accounts -f 1155291 -x
|
|
|
|
From database "alvherre":
|
|
|
|
Filenode Table Name Oid Schema Tablespace
|
|
|
|
------------------------------------------------------
|
|
|
|
155173 accounts 155173 public pg_default
|
|
|
|
1155291 accounts_pkey 1155291 public pg_default
|
2002-06-12 23:09:09 +02:00
|
|
|
|
2002-06-13 02:21:52 +02:00
|
|
|
$ # show disk space for every db object
|
2004-09-17 23:14:19 +02:00
|
|
|
$ du [0-9]* |
|
|
|
|
> while read SIZE FILENODE
|
2002-06-12 23:09:09 +02:00
|
|
|
> do
|
2004-09-17 23:14:19 +02:00
|
|
|
> echo "$SIZE `oid2name -q -d alvherre -i -f $FILENODE`"
|
2002-06-12 23:09:09 +02:00
|
|
|
> done
|
2007-11-11 15:23:18 +01:00
|
|
|
16 1155287 branches_pkey
|
|
|
|
16 1155289 tellers_pkey
|
|
|
|
17561 1155291 accounts_pkey
|
2002-06-12 23:09:09 +02:00
|
|
|
...
|
|
|
|
|
2004-09-17 23:14:19 +02:00
|
|
|
$ # same, but sort by size
|
|
|
|
$ du [0-9]* | sort -rn | while read SIZE FN
|
2002-06-12 23:09:09 +02:00
|
|
|
> do
|
2004-09-17 23:14:19 +02:00
|
|
|
> echo "$SIZE `oid2name -q -d alvherre -f $FN`"
|
|
|
|
> done
|
2007-11-11 15:23:18 +01:00
|
|
|
133466 155173 accounts
|
|
|
|
17561 1155291 accounts_pkey
|
|
|
|
1177 16717 pg_proc_proname_args_nsp_index
|
2002-06-12 23:09:09 +02:00
|
|
|
...
|
|
|
|
|
2004-09-17 23:14:19 +02:00
|
|
|
$ # If you want to see what's in tablespaces, use the pg_tblspc directory
|
|
|
|
$ cd $PGDATA/pg_tblspc
|
|
|
|
$ oid2name -s
|
|
|
|
All tablespaces:
|
|
|
|
Oid Tablespace Name
|
|
|
|
-------------------------
|
|
|
|
1663 pg_default
|
|
|
|
1664 pg_global
|
|
|
|
155151 fastdisk
|
|
|
|
155152 bigdisk
|
|
|
|
|
|
|
|
$ # what databases have objects in tablespace "fastdisk"?
|
|
|
|
$ ls -d 155151/*
|
|
|
|
155151/17228/ 155151/PG_VERSION
|
|
|
|
|
|
|
|
$ # Oh, what was database 17228 again?
|
2007-12-10 06:32:51 +01:00
|
|
|
$ oid2name
|
2004-09-17 23:14:19 +02:00
|
|
|
All databases:
|
|
|
|
Oid Database Name Tablespace
|
|
|
|
----------------------------------
|
|
|
|
17228 alvherre pg_default
|
|
|
|
17255 regression pg_default
|
|
|
|
17227 template0 pg_default
|
|
|
|
1 template1 pg_default
|
|
|
|
|
|
|
|
$ # Let's see what objects does this database have in the tablespace.
|
|
|
|
$ cd 155151/17228
|
|
|
|
$ ls -l
|
|
|
|
total 0
|
|
|
|
-rw------- 1 postgres postgres 0 sep 13 23:20 155156
|
|
|
|
|
|
|
|
$ # OK, this is a pretty small table ... but which one is it?
|
|
|
|
$ oid2name -d alvherre -f 155156
|
|
|
|
From database "alvherre":
|
|
|
|
Filenode Table Name
|
|
|
|
----------------------
|
|
|
|
155156 foo
|
2010-07-29 21:34:41 +02:00
|
|
|
</screen>
|
2012-05-09 19:39:53 +02:00
|
|
|
</refsect1>
|
2007-12-10 06:32:51 +01:00
|
|
|
|
2012-05-09 19:39:53 +02:00
|
|
|
<refsect1>
|
2007-11-11 00:30:46 +01:00
|
|
|
<title>Author</title>
|
2007-12-10 06:32:51 +01:00
|
|
|
|
2007-11-11 00:30:46 +01:00
|
|
|
<para>
|
2007-12-10 06:32:51 +01:00
|
|
|
B. Palmer <email>bpalmer@crimelabs.net</email>
|
2007-11-11 00:30:46 +01:00
|
|
|
</para>
|
2012-05-09 19:39:53 +02:00
|
|
|
</refsect1>
|
2007-11-11 00:30:46 +01:00
|
|
|
|
2012-05-09 19:39:53 +02:00
|
|
|
</refentry>
|