创建和管理数据库

创建和管理数据库

一个Greenplum数据库是Greenplum数据库的一个单一实例。可能会安装有多个单独的Greenplum数据库系统,但是通常只会用环境变量设置选择其中一个。详情请咨询用户的Greenplum管理员。

一个Greenplum数据库系统中可以有多个数据库。这与某些数据库管理系统(如Oracle)不同,那些系统中数据库实例 就是数据库。尽管用户可以在一个Greenplum系统中创建很多数据库,但是客户端程序一次只能连接上并且访问一个数据库,因此用户无法跨数据库进行查询。

关于模板数据库

用户创建的每一个新数据库都是基于一个模板的。Greenplum提供了一个默认数据库template1。第一次可以使用 postgres连接到Greenplum数据库。除非指定另一个模板,Greenplum会使用template1来创建数据库。不要在template1中创建任何对象,除非用户想要在每一个用户创建的数据库中都有那些对象。

在内部,Greenplum数据库还是用另一个数据库模板template0。不要删除或者修改 template0。用户可以使用template0来创建一个只包含Greenplum数据库在初始化时预定义的标准对象且完全干净的数据库,尤其是在用户修改过 template1的情况下。

创建一个数据库

CREATE DATABASE命令会创建一个新的数据库。例如:

=> CREATE DATABASE new_dbname;

要创建一个数据库,用户必须具有创建一个数据库的特权或者是一个Greenplum数据库超级用户。如果用户没有正确的特权,用户就不能创建数据库。可以联系用户的Greenplum数据库管理员为用户授予必要的特权或者替用户创建一个数据库。

用户还可以使用客户端程序createdb来创建一个数据库。例如,在一个使用提供的主机名和端口连接到Greenplum数据库命令行终端中运行下列命令,它将会创建一个名为 mydatabase的数据库:

$ createdb -h masterhost -p 5432 mydatabase

上述主机名和端口必须匹配所安装的Greenplum数据库系统的主机名和端口。

一些对象(如角色)会在一个Greenplum数据库系统的所有数据库之间共享。其他对象(例如用户创建的表)则只出现在创建它们的数据库中。

警告: CREATE DATABASE命令不是事务性的。

克隆一个数据库

默认情况下,一个新数据库通过克隆标准系统数据库模板template1而创建。其实在创建新数据库时,任何一个数据库都可以被用作模板,这样就提供了“克隆”或者复制一个现有数据库及其所包含的所有对象和数据的能力。例如:

=> CREATE DATABASE new_dbname TEMPLATE old_dbname;

查看数据库的列表

如果用户在使用psql客户端程序,用户可以使用 \l元命令来显示用户的Greenplum数据库系统中的数据库和模板的列表。如果使用的是另一种客户端程序并且用户是超级用户,用户可以从 pg_database系统目录表查询数据库的列表。例如:

=> SELECT datname from pg_database;

修改一个数据库

ALTER DATABASE命令可以修改数据库的属性,例如拥有者、名称或者默认配置属性。例如,下面的命令会修改一个数据库的默认方案搜索路径( search_path配置参数):

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

要修改一个数据库,用户必须是该数据库的拥有者或者超级用户。

删除一个数据库

DROP DATABASE命令删除一个数据库。它会移除该数据库的系统目录项并且删除该数据库在磁盘上的目录及其中包含的数据。要删除一个数据库,用户必须是该数据库的拥有者或者超级用户,并且当用户或者其他人正连接到该数据库时不能删除它。在删除一个数据库时,可以连接到postgres(或者另一个数据库)。例如:

=> \c postgres
=> DROP DATABASE mydatabase;

用户也可以使用客户端程序dropdb来删除一个数据库。例如,下面的命令会用给出的主机名和端口连接到Greenplum数据库并且删除数据库mydatabase

$ dropdb -h masterhost -p 5432 mydatabase
警告:删除数据库不能被撤销。

DROP DATABASE命令不是事务性的。