前几篇文章介绍了GreenPlum数据库的安装、启动、关闭、状态检查、登录等操作,数据库已经创建好了,接下来介绍如何使用数据库。按照习惯,需要先创建测试用户、表空间、数据库。先创建测试用户dbdream。
1 |
postgres=# create role dbdream password 'dbdream' createdb login; |
2 |
NOTICE: resource queue required -- using default resource queue "pg_default" |
通常创建用户,赋予login权限基本就够用了,创建用户的语法可以通过\h create role命令来查看,这里不做记录了。可以通过pg_roles字典开查看数据库的用户信息。
1 |
postgres=# select rolname,oid from pg_roles; |
创建完用户后,还需要修改pg_hba.conf文件,来赋予用户的远程登录权限。
1 |
[gpadmin@mdw gpseg-1]$ vi pg_hba.conf |
3 |
host all dbdream 10.9.15.20/32 md5 |
通过gpstop –u命令重新加载配置文件,使之生效后,dbdream用户即可远程访问数据库了。
1 |
[gpadmin@mdw gpseg-1]$ psql -d postgres -U dbdream -h 10.9.15.20 -p 5432 |
2 |
Password for user dbdream: |
可以使用\c命令或者\conninfo命令来查看当前的登录信息。
2 |
You are now connected to database "postgres" as user "dbdream". |
创建表空间需要先创建文件空间,文件空间是在操作系统层创建,创建文件控制需要指定已存在的目录,通常需要规划并创建目录。Master和所有Segment节点都需要创建。可以使用下面的命令查看当前数据库的表空间和文件空间对应关系。
1 |
postgres=# select a.spcname,b.fsname from pg_tablespace a,pg_filespace b where spcfsoid=b.oid; |
3 |
------------+----------- |
当前数据库只有pg_segment一个文件空间,上面有pg_default和pg_global两个表空间 。下面先创建Master节点的目录。
1 |
[gpadmin@mdw ~]$ mkdir -p /gpdb/gpdata/fspc_master |
然后在Master节点通过gpssh命令创建Segment节点的目录。
1 |
[gpadmin@mdw ~]$ gpssh -f /gpdb/app/config/seg_host -e 'mkdir -p /gpdb/gpdata/fspc_segment' |
2 |
[sdw1] mkdir -p /gpdb/gpdata/fspc_segment |
3 |
[sdw2] mkdir -p /gpdb/gpdata/fspc_segment |
4 |
[sdw3] mkdir -p /gpdb/gpdata/fspc_segment |
创建完目录后,可以通过gpfilespace命令创建文件空间。
1 |
gpadmin@mdw gpdata]$ gpfilespace |
2 |
20160116:11:25:31:004066 gpfilespace:mdw:gpadmin-[INFO]:- |
3 |
A tablespace requires a file system location to store its database |
4 |
files. A filespace is a collection of file system locations for all components |
5 |
in a Greenplum system (primary segment, mirror segment and master instances). |
6 |
Once a filespace is created, it can be used by one or more tablespaces. |
8 |
20160116:11:25:31:004066 gpfilespace:mdw:gpadmin-[INFO]:-getting config |
9 |
Enter a name for this filespace |
输入表空间的名字,名字随便起,但是不能使用gp_开头。
03 |
Checking your configuration: |
04 |
Your system has 1 hosts with 0 primary and 0 mirror segments per host. |
05 |
Your system has 3 hosts with 1 primary and 0 mirror segments per host. |
07 |
Configuring hosts: [mdw] |
09 |
Configuring hosts: [sdw1, sdw2, sdw3] |
11 |
Please specify 1 locations for the primary segments, one per line: |
这里输入Segment节点的文件空间目录。
1 |
primary location 1> /gpdb/gpdata/fspc_segment |
3 |
Enter a file system location for the master |
这里输入Master几点的文件空间目录。
1 |
master location> /gpdb/gpdata/fspc_master |
2 |
20160116:11:27:21:004066 gpfilespace:mdw:gpadmin-[INFO]:-Creating configuration file... |
3 |
20160116:11:27:21:004066 gpfilespace:mdw:gpadmin-[INFO]:-[created] |
4 |
20160116:11:27:21:004066 gpfilespace:mdw:gpadmin-[INFO]:- |
5 |
To add this filespace to the database please run the command: |
6 |
gpfilespace --config /gpdb/gpdata/gpfilespace_config_20160116_112531 |
gpfilespace命令执行完成后,会生成一个配置文件,也就是上面的最后一行,/gpdb/gpdata/gpfilespace_config_20160116_112531,查看这个文件的内容会发现,上面的gpfilespace命令其实只是创建了文件空间的配置信息,并没有真正创建文件空间。
1 |
[gpadmin@mdw gpdata]$ cat /gpdb/gpdata/gpfilespace_config_20160116_112531 |
3 |
mdw:1:/gpdb/gpdata/fspc_master/gpseg-1 |
4 |
sdw1:2:/gpdb/gpdata/fspc_segment/gpseg0 |
5 |
sdw2:3:/gpdb/gpdata/fspc_segment/gpseg1 |
6 |
sdw3:4:/gpdb/gpdata/fspc_segment/gpseg2 |
这个文件可以自己创建并修改,真正创建文件空间需要运行刚才gpfilespace命令后的最后一行。
01 |
gpadmin@mdw gpdata]$ gpfilespace --config /gpdb/gpdata/gpfilespace_config_20160116_112531 |
02 |
20160116:11:29:19:004180 gpfilespace:mdw:gpadmin-[INFO]:- |
03 |
A tablespace requires a file system location to store its database |
04 |
files. A filespace is a collection of file system locations for all components |
05 |
in a Greenplum system (primary segment, mirror segment and master instances). |
06 |
Once a filespace is created, it can be used by one or more tablespaces. |
08 |
20160116:11:29:19:004180 gpfilespace:mdw:gpadmin-[INFO]:-getting config |
09 |
Reading Configuration file: '/gpdb/gpdata/gpfilespace_config_20160116_112531' |
10 |
20160116:11:29:19:004180 gpfilespace:mdw:gpadmin-[INFO]:-Performing validation on paths |
11 |
.............................................................................. |
12 |
20160116:11:29:19:004180 gpfilespace:mdw:gpadmin-[INFO]:-Connecting to database |
13 |
20160116:11:29:19:004180 gpfilespace:mdw:gpadmin-[INFO]:-Filespace "fspc1" successfully created |
这样才是真正创建完成文件空间,才能在数据库中查询到新建的文件空间信息。
1 |
postgres=# select * from pg_filespace; |
创建完文件空间,即可在文件空间上创建表空间,创建表空间必须使用support权限用户。
1 |
postgres-> \c postgres gpadmin |
2 |
You are now connected to database "postgres" as user "gpadmin". |
4 |
postgres=# create tablespace tbs1 filespace fspc1; |
非support权限用户要使用新建的表空间,必须要使用support用户对其授予操作权限才可以,否则会遇到下面的错误。
1 |
postgres=# \c dbdream dbdream |
2 |
Password for user dbdream: |
3 |
You are now connected to database "dbdream" as user "dbdream". |
5 |
dbdream=> create table t_test(id int,name varchar(10)) DISTRIBUTED BY(id); |
6 |
ERROR: permission denied for tablespace tbs1 |
要使用户默认就使用新建的表空间,需要设置用户的默认表空间。
1 |
postgres=# alter role dbdream set default_tablespace='tbs1'; |
授权后,即可使用新建的表空间。
01 |
postgres-> \c postgres gpadmin |
02 |
You are now connected to database "postgres" as user "gpadmin". |
04 |
dbdream=# grant all on tablespace tbs1 to dbdream; |
07 |
dbdream=> create table t_test(id int,name varchar(10)) DISTRIBUTED BY(id); |
11 |
Column | Type | Modifiers |
12 |
--------+-----------------------+----------- |
14 |
name | character varying(10) | |
具有createdb权限的用户,都可以创建数据库了,语法可以通过\h create database命令来查看,非常简单。比如下面这条命令就可以创建一个数据库。
1 |
postgres=> create database dbdream; |
也可以在创建数据库时,指定数据库使用的默认表空间。
1 |
dbdream=# create database tt tablespace tbs1; |
创建数据库的用户必须要有createdb权限或者support用户权限,这也是之前创建用户是为什么直接赋予了createdb权限,可以通过pg_database字典来查看数据库信息。
1 |
dbdream=# select datname,datdba,dattablespace from pg_database; |
2 |
datname | datdba | dattablespace | |
3 |
-----------+--------+----------------+ |
4 |
dbdream | 17197 | 1663 | |
7 |
template1 | 10 | 1663 | |
8 |
template0 | 10 | 1663 | |
datdba字段表示的是数据库的所有者(创建者),这里存的是用户的oid,10是gpadmin用户,17191是dbdream用户,可以通过pg_role字典来查看。dattablespace字段表示的是表空间。存的也是表空间的ID,1663是pg_default表空间,17199是新建的tbs1表空间,可以通过pg_tablespace字典开查看。
本文固定链接: http://www.dbdream.com.cn/2016/01/greenplum%e6%95%b0%e6%8d%ae%e5%ba%93%e5%88%9b%e5%bb%ba%e7%94%a8%e6%88%b7%e3%80%81%e6%96%87%e4%bb%b6%e7%a9%ba%e9%97%b4%e3%80%81%e8%a1%a8%e7%a9%ba%e9%97%b4%e3%80%81%e6%95%b0%e6%8d%ae%e5%ba%93/ | 信春哥,系统稳,闭眼上线不回滚!
- oracle12c创建用户和表空间出现的问题
Oracle12c 中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB).CDB全称为 ContainerDatabase,中文翻译为数据库容器,PDB全 ...
- oracle常用SQL——创建用户、表空间、授权(12C)
一.查询 查询用户所属 表空间 select username,default_tablespace from dba_users where username='xxx' 查询表空间情况 SELEC ...
- ORACLE创建用户,表空间,并且导出数据,导出表
1.创建用户: create user toptea2 identified by "用户名" 2.给用户授权 grant create session to 用户名; grant ...
- oracle创建用户、表空间、临时表空间、分配权限步骤详解
首先登陆管理员账号,或者有DBA权限的用户,接下来依次: --查询所有用户select * from dba_users;--创建新用户create user gpmgt identified by ...
- oracle12c创建用户指定表空间
--1.创建临时空间 create temporary tablespace zyj_temp tempfile 'D:\app2\user\virtual\oradata\orcl\zyj_temp ...
- 用cmd命令创建oracle 数据库、用户和表空间
Win+R调查运行窗口,输入cmd回车 连接到本地oracle库 创建名为"SXSJ"的表空间,其初始大小为512M,支持自动扩展,每次增量为32M: create tablesp ...
- ORACLE数据库创建用户名和表空间
[sql] /*第1步:登录 */ 以sys/sys超级用户登录pl/sql /*第2步:创建临时表空间 */ create temporary tablespace user_te ...
- 用sqlplus为oracle创建用户和表空间<转>
用Oracle10g自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的,本文要介绍的是另一种方法,使用Oracle 9i所带的命令行工具:SQLPLUS来创建表空间 ...
- oracle 备份和还原还有创建用户、表空间、授权
--找到存放dbf文件的路径--E:\oracle\product\10.2.0\oradata\orcl--可以通过此语句进行查询select * from v$datafile; --创建表空间c ...
- 用sqlplus为oracle创建用户和表空间
用Oracle自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的, 本文要介绍的是另一种方法就是使用Oracle所带的命令行工具SQLPLUS来创建表空间. 打开S ...
随机推荐
- 利用Python进行数据分析 第6章 数据加载、存储与文件格式(2)
6.2 二进制数据格式 实现数据的高效二进制格式存储最简单的办法之一,是使用Python内置的pickle序列化. pandas对象都有一个用于将数据以pickle格式保存到磁盘上的to_pickle ...
- PAT(B) 1084 外观数列(Java)
题目链接:1084 外观数列 (20 point(s)) 题目描述 外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, - 它从不等于 ...
- PAT(B) 1082 射击比赛(Java)
题目链接:1082 射击比赛 (20 point(s)) 题目描述 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y ...
- Linux下用命令来执行kettle文件资源库的文件ktr与kjb的方法
转载地址: https://blog.csdn.net/zuolovefu/article/details/78083445 1. 准备工作 一个简单的job,一个简单的trans. trans:读取 ...
- python3 访问 rabbitmq 示例
关于 rabbitmq 之前用过 kafka,要是拿这两者做对比的话,大概有以下异同: 两者都是一个分布式架构 kafka 具有较高的吞吐量,rabbimq 吞吐量较小 rabbitmq 的可靠性更好 ...
- 数据结构与算法--递归(recursion)
递归的概念 简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁. 递归调用机制 我列举两个小案例,来帮助大家理解递归 1.打印问题 ...
- css 盒子 取值
盒子:当我们设置一个标签宽高时,默认设置的是盒子里面content大小. 内容盒:content 填充盒:content+padding(overflow截取的区域) 边框盒:content+padd ...
- ReactNative报错null is not an object (evaluating '_rngesturehandlermodule.default.direction')
程序报错: null is not an object (evaluating 'rngesturehandlermodule.default.direction') 解决: react-native ...
- Dubbo面试
DUBBO原理.应用与面经总结 SPI 你是否了解SPI,讲一讲什么是SPI,为什么要使用SPI? SPI具体约定:当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/serv ...
- HTML的BODY内标签介绍
一.基本标签 <body> <b>加粗</b> <i>斜体</i> <u>下划线</u> <s>删除线& ...