Creating and Managing Databases

    There can be multiple databases in a Greenplum Database system. This is different from some database management systems (such as Oracle) where the database instance is the database. Although you can create many databases in a Greenplum system, client programs can connect to and access only one database at a time — you cannot cross-query between databases.

    Parent topic: Defining Database Objects

    Each new database you create is based on a template. Greenplum provides a default database, template1. Use postgres to connect to Greenplum Database for the first time. Greenplum Database uses template1 to create databases unless you specify another template. Do not create any objects in template1 unless you want those objects to be in every database you create.

    Greenplum Database uses another database templates, template0, internally. Do not drop or modify template0. You can use template0 to create a completely clean database containing only the standard objects predefined by Greenplum Database at initialization, especially if you modified template1.

    The command creates a new database. For example:

    You can also use the client program createdb to create a database. For example, running the following command in a command line terminal connects to Greenplum Database using the provided host name and port and creates a database named mydatabase:

      The host name and port must match the host name and port of the installed Greenplum Database system.

      Some objects, such as roles, are shared by all the databases in a Greenplum Database system. Other objects, such as tables that you create, are known only in the database in which you create them.

      Warning: The CREATE DATABASE command is not transactional.

      By default, a new database is created by cloning the standard system database template, template1. Any database can be used as a template when creating a new database, thereby providing the capability to ‘clone’ or copy an existing database and all objects and data within that database. For example:

      Creating a Database with a Different Owner

      1. => CREATE DATABASE new_dbname WITH owner=new_user;

      If you are working in the client program, you can use the \l meta-command to show the list of databases and templates in your Greenplum Database system. If using another client program and you are a superuser, you can query the list of databases from the pg_database system catalog table. For example:

      The ALTER DATABASE command changes database attributes such as owner, name, or default configuration attributes. For example, the following command alters a database by setting its default schema search path (the search_path configuration parameter):

      1. => ALTER DATABASE mydatabase SET search_path TO myschema, public, pg_catalog;

      To alter a database, you must be the owner of the database or a superuser.

      The command drops (or deletes) a database. It removes the system catalog entries for the database and deletes the database directory on disk that contains the data. You must be the database owner or a superuser to drop a database, and you cannot drop a database while you or anyone else is connected to it. Connect to postgres (or another database) before dropping a database. For example:

      You can also use the client program dropdb to drop a database. For example, the following command connects to Greenplum Database using the provided host name and port and drops the database mydatabase:

      1. $ dropdb -h masterhost -p 5432 mydatabase

      The DROP DATABASE command is not transactional.