I'm not too sure where the default Postgres data directory is, but to
find out how much free space a database is using, you need to know it's
OID. Run the query:
SELECT OID, Datname FROM pg_database;
to get a list of database names and their corresponding OIDs. Then you
can do (standard Unix command)
du -sh $PGDIR/$OID
(where $PGDIR is the data directory root for PGSQL, and $OID is the oid
of the database). eg. for database postgres on my system (note
/endeavour/dbstore is my PG data root):
[root@sydney /]# echo "SELECT OID, Datname FROM
pg_database;"|/usr/local/pgsql/bin/psql -d postgres -U postgresql
oid | datname
-------+-------------
10793 | postgres
........
[root@sydney /]# du -sh /endeavour/dbstore/base/10793
3.6M /endeavour/dbstore/base/10793
To get the amount of freespace used in PGSQL as a whole, use "du -sh
$PGDIR" (replace $PGDIR with your PG data root.)
Hope this gets you started. To find your cluster root, you could do a
"find / -name PG_VERSION", as these files will only be under your data
root - this highest-level one returned will be your data root.
Andy.
Hans Guijt wrote:
> I need to provide an alarm function that will alert my customer when
> the amount of free space in a database has reached some critical
> threshold. This problem is not entirely trivial, since free space can
> be located both in the file system and in the database itself.
>
> I'm not looking for a particularly accurate function (and suspect that
> one is probably not feasible anyway) - anything that comes to within a
> gigabyte of the actual value is fine with me. Basically I need to
> figure out two things:
>
> 1. Where does Postgres stores its datafiles? This will allow me to
> figure out how much space is still available on the filing system.
>
> 2. How much space is unused within the data files themselves?
>
> I'd appreciate a pointer on where I should look for this sort of
> information.
>
>
> Regards,
>
> Hans Guijt
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Have you searched our list archives?
>
> http://archives.postgresql.org
>
> !DSPAM:37,4559da5e40419901994390!
>
>
--
Andy Shellam
NetServe Support Team
the Mail Network
"an alternative in a standardised world"
p: +44 (0) 121 288 0832/0839
m: +44 (0) 7818 000834