openGauss表空间管理
1、创建表空间。使用用户omm打开linux终端窗口,登录到openGauss数据库,并创建名为ustb_ts的表空间。
gsql -d postgres -p 15400 -r
CREATE TABLESPACE ustb_ts RELATIVE LOCATION 'tablespace/ustb_ts1';
- 查看openGauss数据库下有哪些表空间。
SELECT spcname FROM pg_tablespace;
\db
- 查看表空间ustb_ts的大小。
SELECT PG_TABLESPACE_SIZE('ustb_ts');
\q
- 创建表空间student_ts
CREATE TABLESPACE student_ts RELATIVE LOCATION 'tablespace/student_ts1';
- (1)创建数据库studentdb
CREATE DATABASE studentdb WITH TABLESPACE =student_ts;
(2)创建数据库用户
CREATE USER student IDENTIFIED BY 'student@ustb2020';
(3)授予用户student 数据库系统的SYSADMIN权限
ALTER USER student SYSADMIN;
- 查看数据库在默认表空间下有哪些对象
以linux用户omm,打开linux终端窗口,执行如下SQL语句,用数据库用户student连接数据库studentdb。
gsql -d studentdb -U student -p 15400 -W student@ustb2020 -r
执行如下SQL语句,查看数据库studentdb的默认表空间下有哪些对象。
with objectInDefaultTS as
( select relname, relkind, relpages,pg_size_pretty(pg_relation_size(a.oid)),
reltablespace,relowner
from pg_class a
where a.relkind in ('r', 'i') and reltablespace='0'
)
select *
from objectInDefaultTS
-- where 子句中过滤条件是:结果记录不是以pg_%开头,或者不是以gs_开头
-- 设p表示结果记录以pg_%开头;q表示结果记录以gs_开头,
-- 使用德摩根定律 not(p or q)⇔(not p) and (not q)进行等价转换
-- where子句中的过滤条件改写为:结果记录既不是以pg_%开头,并且也不是以gs_开头
where relname not like 'pg_%' and relname not like 'gs_%' and relname not like 'sql_%'
order by relpages desc;
- 查看数据库在非默认表空间下有哪些对象
首先在表空间ustb_ts中为数据库studentdb创建一个测试表ttt:
create table ttt(col1 varchar(10)) tablespace ustb_ts;
执行如下SQL语句,查询数据库studentdb的非默认表空间ustb_ts下有哪些对象。
select relname,relkind,relpages,pg_size_pretty(pg_relation_size(a.oid)),
reltablespace,relowner
from pg_class a, pg_tablespace tb
where a.relkind in ('r', 'i')
and a.reltablespace=tb.oid
and tb.spcname='ustb_ts'
order by a.relpages desc;
- 删除测试表ttt,并退出gsql会话。
9、重命名表空间。使用omm用户打开linux终端窗口,执行如下命令登录到openGauss数据库,将表空间ustb_ts命名为app_ts。
gsql -d postgres -p 26000 -r
ALTER TABLESPACE ustb_ts RENAME TO app_ts;
执行以下命令,查看数据库当前的表空间信息。
\db
10、删除表空间。执行如下SQL语句,删除表空间app_ts。
DROP TABLESPACE app_ts;
执行如下gsql命令,再次查看数据库当前的表空间信息,并退出gsql。
\db
\q
- 点赞
- 收藏
- 关注作者
评论(0)