openGauss表空间管理

举报
宁静的夏天 发表于 2025/04/10 21:58:26 2025/04/10
【摘要】 介绍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_开头,

-- 使用德摩根定律  notp or qnot pand 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

 

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。