Chapter 1. Setting up Databases

1.1. Configuring PostgreSQL

Running JBoss Operations Network on PostgreSQL requires three things:
  • Adequate PostgreSQL settings for memory, timeouts, connections, and related settings
  • A database
  • A user with adequate permissions
JBoss ON supports PostgreSQL 9.2.x, 9.1.x, 9.0.x and 8.4.x.

1.1.1. Installing PostgreSQL

You can download the Microsoft Windows binaries you need from:
Use YUM to install PostgreSQL:
sudo yum install postgresql postgresql-server
To install a specific version of PostgreSQL, go to: and download the postgresql, postgresql-server and postgresql-libs RPM packages and install via yum from the download directory. For example:
sudo yum install

1.1.2. Configuring PostgreSQL

For more detailed information about setting up client authentication for PostgreSQL users and databases, see the PostgreSQL documentation at


Ensure that the Postgres authentication mechanism is properly configured for the configuration commands to work.
  1. Optional. Change the password for the Unix user for PostgreSQL:
    sudo passwd postgres
  2. Initialize the database. The database must be initialized before starting the server.
    service postgresql initdb
  3. Start Postgres. For example, on Red Hat Enterprise Linux:
    service postgresql start
    On Windows:
    net start pgsql-8.4
  4. Set up a password for the postgres user on the database:
    # su - postgres
    $ psql
    postgres=# ALTER USER postgres PASSWORD 'password';
  5. Create a PostgreSQL role named rhqadmin, where 'password' should be replaced with a strong password.
    postgres=# CREATE USER rhqadmin PASSWORD 'password';


    Although the default postgresql credentials expected by rhqctl are user rhqadmin and password rhqadmin, these credentials should not be used as they present a security risk. The relevant change to rhqctl is covered in Section 2.6, “About the rhqctl Script”.
  6. Create a PostgreSQL database named rhq, specifying the rhqadmin role as the owner.
    postgres=# CREATE DATABASE rhq OWNER rhqadmin;
  7. Give users on the computer access to the database. To allow all users, add the appropriate connection settings for each connection type (local, IPv4, and IPv6) to the data/pg_hba.conf configuration file, for both local and external connections:
    # "local" is for Unix domain socket connections only
    local   all         all                               md5
    # IPv4 local connections:
    host    all         all           md5
    host    all         all          md5
    # IPv6 local connections:
    host    all         all         ::1/128               md5
    Using all all sets these settings for every user to every PostgreSQL database. This settings can be applied to only the JBoss ON database by using rhq all or even to specific users for JBoss ON, such as rhq rhqadmin.
    Then, restart the database service.
    service postgresql restart
  8. Make the configuration changes in Section 1.1.3, “Setting PostgreSQL Parameters”.

1.1.3. Setting PostgreSQL Parameters

There are several settings in the PostgreSQL server configuration that can be tuned to provide better performance for JBoss ON. Editing the postgresql.conf File

PostgreSQL requires minor changes to the database configuration in the postgresql.conf file.
  1. Make sure that an adequate amount of memory and system resources are assigned to accommodate the JBoss ON database.
    ## not necessary  if the database is started with the -i flag
    listen_addresses = '*' 
    ## performance changes for JBoss ON
    shared_buffers = 80MB 		#  default is 32MB 
    work_mem = 2048 		#  default is 1MB 
    checkpoint_segments = 10	#  default is 3
  2. Optional. Set the statement timeout period so a size that is adequate to handle data compression in large environments. By default, the default is zero (0) seconds, which means there is no statement timeout set; not having a timeout period is the preferred setting for smaller deployments.
    statement_timeout = 0s 	#  default is 0s


    If there is already a global statement timeout period for that database, but you need to use a larger setting for JBoss ON, set a user-level statement timeout value that only applies to the JBoss ON user.
    ALTER USER rhqadmin SET statement_timeout=600000;
  3. JBoss ON can use up to 55 database connections for the server. PostgreSQL also allows for connections reserved for administrators. These connections are counted in the pool of max_connections and therefore need to be added to the total number of max_connections. For example, if there are five connections reserved for the administrator, edit the postgresql.conf file as follows:
    max_connections = 60	   #  default is 100
    superuser_reserved_connections = 5 #  default is 3 
    max_prepared_transactions = 60     #  default is 0 (in v8.4)


    max_prepared_transactions is set to the same value as max_connections, as explained in the "max_prepared_transactions (integer)" in the PostgreSQL documentation.
    If JBoss ON is also monitoring this database instance, add one more connection per (logical) database that is set up in PostgreSQL. For further information about this plug-in, see the Postgres server section of the Resource Monitoring Reference. Setting Kernel Parameters

Consider adjusting the kernel parameters for your system. The PostgreSQL documentation on Managing Kernel Resources has more information. Editing pg_hba.conf

Update the pg_hba.conf file to allow the newly-created role to connect from the machine the JBoss ON server is installed on, such as localhost. Adding client connections is covered in the PostgreSQL documentation in the Client Authentication section.
After editing the pg_hba.conf file, restart PostgreSQL for the changes to take effect. If no errors are displayed, the database is now ready to support a JBoss ON installation.
For more information on tuning Postgres, see the PostgreSQL documentation about Tuning your PostgreSQL Server. Fixes for "Relation RHQ_Principal does not exist" Error

Sometimes the database connection is marked as valid but the install still fails with the Relation RHQ_Principal does not exist error. This occurs when a new database is created by running initdb in a non-C locale through PostgreSQL instances.
To fix this error:
  1. Using a database explorer, create an empty table called RHQ_PRINCIPAL in the database used for JBoss ON.
  2. Click Install server.
    The installer displays a warning about an existing schema. Overwrite the existing schema as it only consists of one empty table.
Another option is to specify the encoding of the created database as SQL-ASCII at creation time. For example:
initdb -D /my/test/data -E SQL_ASCII --locale en_US.UTF-8