Database Management

By Joel Aufrecht

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

Running a PostgreSQL database on another server

To run a database on a different machine than the webserver requires changes to the database configuration file and access control file, and to the OpenACS service's configuration file.

  • Edit the database configuration file, which in a Reference install is located at /usr/local/pgsql/data/postgresql.conf and change

    #tcpip_socket = false

    to

    tcpip_socket = true
  • Change the access control file for the database to permit specific remote clients to access. Access can be controlled ... (add notes from forum post)

  • Change the OpenACS service's configuration file to point to the remote database. Edit /var/lib/aolserver/service0/etc/config.tcl and change

    to

Deleting a tablespace

Skip down for instructions on Deleting a PostgreSQL tablespace.

Deleting an Oracle tablespace

Should it become necessary to rebuild a tablespace from scratch, you can use the drop user command in SVRMGRL with the cascade option. This command will drop the user and every database object the user owns.

SVRMGR> drop user service0 cascade;

If this does not work because svrmgrl "cannot drop a user that is currently connected", make sure to kill the AOLserver using this user. If it still does not work, do:

SVRMGR> select username, sid, serial# from v$session where lower(username)='service0';

and then

SVRMGR> alter system kill session 'sid, serial#';

where sid and serial# are replaced with the corresponding values for the open session.

Use with caution!

If you feel the need to delete everything related to the service, you can also issue the following:

SVRMGR> drop tablespace service0 including contents cascade constraints;

Deleting a PostgreSQL tablespace

Dropping a PostgreSQL tablespace is easy. You have to stop any AOLserver instances that are using the database that you wish to drop. If you're using daemontools, this is simple, just use the 'down' flag (-d). If you're using inittab, you have to comment out your server in /etc/inittab, reread the inittab with /sbin/init q, and then restart-aolserver service0.

Then, to drop the db, just do:

[service0 ~]$ dropdb service0
DROP DATABASE

Vacuum Postgres nightly

The "vacuum" command must be run periodically to reclaim space. The "vacuum analyze" form additionally collects statistics on the disbursion of columns in the database, which the optimizer uses when it calculates just how to execute queries. The availability of this data can make a tremendous difference in the execution speed of queries. This command can also be run from cron, but it probably makes more sense to run this command as part of your nightly backup procedure - if "vacuum" is going to screw up the database, you'd prefer it to happen immediately after (not before!) you've made a backup! The "vacuum" command is very reliable, but conservatism is the key to good system management. So, if you're using the export procedure described above, you don't need to do this extra step.

Edit your crontab:

[joeuser ~]$ crontab -e

We'll set vacuum up to run nightly at 1 AM. Add the following line:

0 1 * * * /usr/local/pgsql/bin/vacuumdb service0
($Id: database-management.html,v 1.17 2004/02/04 16:47:32 joela Exp $)
View comments on this page at openacs.org