openGauss每日一练第9天 | openGauss中一个表空间可以存储多个数据库

一、学习目标

进一步学习表空间与数据库对象的关系,了解oid的含义。

二、课程学习

1.创建表空间、多个数据库和用户

--进入数据库omm,创建表空间、测试数据库
su - omm
gsql -r
drop DATABASE  IF EXISTS  musicdb;
drop DATABASE  IF EXISTS  musicdb1;
drop DATABASE  IF EXISTS  musicdb2;
drop DATABASE  IF EXISTS  musicdb3;
drop tablespace IF EXISTS music_tbs;
drop tablespace IF EXISTS ds_location1;
CREATE TABLESPACE music_tbs RELATIVE LOCATION 'tablespace/test_ts1';
CREATE DATABASE musicdb  WITH TABLESPACE = music_tbs;
CREATE DATABASE musicdb1 WITH TABLESPACE = music_tbs;
CREATE DATABASE musicdb2 WITH TABLESPACE = music_tbs;
CREATE DATABASE musicdb3 WITH TABLESPACE = music_tbs;

--执行下面的SQL语句,创建用户user1 :
drop user  IF EXISTS  user1;
CREATE USER user1 IDENTIFIED BY 'kunpeng@1234';
--授予user1数据库系统的SYSADMIN权限:
ALTER USER user1 SYSADMIN;

实训环境示例:

root@modb:~# su - omm
omm@modb:~$ gsql -r
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:00 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

omm=# drop DATABASE  IF EXISTS  musicdb;
NOTICE:  database "musicdb" does not exist, skipping
DROP DATABASE
omm=# drop DATABASE  IF EXISTS  musicdb1;
NOTICE:  database "musicdb1" does not exist, skipping
DROP DATABASE
omm=# drop DATABASE  IF EXISTS  musicdb2;
NOTICE:  database "musicdb2" does not exist, skipping
DROP DATABASE
omm=# drop DATABASE  IF EXISTS  musicdb3;
NOTICE:  database "musicdb3" does not exist, skipping
DROP DATABASE
omm=# drop tablespace IF EXISTS music_tbs;
NOTICE:  Tablespace "music_tbs" does not exist, skipping.
DROP TABLESPACE
omm=# drop tablespace IF EXISTS ds_location1;
NOTICE:  Tablespace "ds_location1" does not exist, skipping.
DROP TABLESPACE
omm=# CREATE TABLESPACE music_tbs RELATIVE LOCATION 'tablespace/test_ts1';
CREATE TABLESPACE
omm=# CREATE DATABASE musicdb  WITH TABLESPACE = music_tbs;
CREATE DATABASE
omm=# CREATE DATABASE musicdb1 WITH TABLESPACE = music_tbs;
CREATE DATABASE
omm=# CREATE DATABASE musicdb2 WITH TABLESPACE = music_tbs;
CREATE DATABASE
omm=# CREATE DATABASE musicdb3 WITH TABLESPACE = music_tbs;
CREATE DATABASE
omm=# 
omm=# drop user  IF EXISTS  user1;
NOTICE:  role "user1" does not exist, skipping
DROP ROLE
omm=# CREATE USER user1 IDENTIFIED BY 'kunpeng@1234';
NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.
CREATE ROLE
omm=# 
omm=# ALTER USER user1 SYSADMIN;
omm=# ALTER ROLE

omm=# \du
                                                              List of roles
 Role name |                                                    Attributes          
                                          | Member of 
-----------+------------------------------------------------------------------------
------------------------------------------+-----------
 gaussdb   | Sysadmin                                                               
                                          | {
    
    }
 omm       | Sysadmin, Create role, Create DB, Replication, Administer audit, Monito
radmin, Operatoradmin, Policyadmin, UseFT | {
    
    }
 user1     | Sysadmin                                                               
                                          | {
    
    }

omm=# 

2.使用sql查看数据库所在的表空间

–查看数据库所在的表空间,可以看到一个表空间可以有多个数据库
select datname,dattablespace,spcname from pg_database d, pg_tablespace t where d.dattablespace=t.oid;

omm=# select datname,dattablespace,spcname from pg_database d, pg_tablespace t where d.dattablespace=t.oid;
  datname  | dattablespace |  spcname   
-----------+---------------+------------
 template1 |          1663 | pg_default
 omm       |          1663 | pg_default
 musicdb   |         16389 | music_tbs
 template0 |          1663 | pg_default
 musicdb1  |         16389 | music_tbs
 musicdb2  |         16389 | music_tbs
 musicdb3  |         16389 | music_tbs
 postgres  |          1663 | pg_default
(8 rows)

omm=# 

3.在文件系统中查看表空间中的多个数据库

--查看数据库、表空间的oid               
 select oid,datname from pg_database;
select oid,* from pg_tablespace ;
select datname,dattablespace,spcname from pg_database d, pg_tablespace t where d.dattablespace=t.oid; 
--从文件系统,查看music_tbs表空间oid,可以看到一个表空间可以有多个数据库
cd /var/lib/opengauss/data/pg_tblspc/xxxxx/
cd  PG_9.2* 
ls
 #说明:xxxxx是表空间 music_tbs的oid
omm=# select oid,datname from pg_database;
  oid  |  datname  
-------+-----------
     1 | template1
 16384 | omm
 16390 | musicdb
 14555 | template0
 16391 | musicdb1
 16392 | musicdb2
 16393 | musicdb3
 14560 | postgres
(8 rows)

omm=# select oid,* from pg_tablespace ;
  oid  |  spcname   | spcowner | spcacl | spcoptions | spcmaxsize | relative 
-------+------------+----------+--------+------------+------------+----------
  1663 | pg_default |       10 |        |            |            | f
  1664 | pg_global  |       10 |        |            |            | f
 16389 | music_tbs  |       10 |        |            |            | t
(3 rows)

 d.dattablespace=t.oid; tablespace,spcname from pg_database d, pg_tablespace t where 
  datname  | dattablespace |  spcname   
-----------+---------------+------------
 template1 |          1663 | pg_default
 omm       |          1663 | pg_default
 musicdb   |         16389 | music_tbs
 template0 |          1663 | pg_default
 musicdb1  |         16389 | music_tbs
 musicdb2  |         16389 | music_tbs
 musicdb3  |         16389 | music_tbs
 postgres  |          1663 | pg_default
(8 rows)

omm=# \q
omm@modb:~$ cd /var/lib/opengauss/data/pg_tblspc/16389
omm@modb:/var/lib/opengauss/data/pg_tblspc/16389$ cd PG_9.2_201611171_gaussdb/
omm@modb:/var/lib/opengauss/data/pg_tblspc/16389/PG_9.2_201611171_gaussdb$ ls
16390  16391  16392  16393  pgsql_tmp
omm@modb:/var/lib/opengauss/data/pg_tblspc/16389/PG_9.2_201611171_gaussdb$

三、课后作业

1. 创建表空间newtbs1

CREATE TABLESPACE newtbs1 RELATIVE LOCATION ‘tablespace/test_ts2’;

omm=# CREATE TABLESPACE newtbs1 RELATIVE LOCATION 'tablespace/test_ts2';
CREATE TABLESPACE 
omm=# \db
           List of tablespaces
    Name    | Owner |      Location       
------------+-------+---------------------
 music_tbs  | omm   | tablespace/test_ts1
 newtbs1    | omm   | tablespace/test_ts2
 pg_default | omm   | 
 pg_global  | omm   | 
(4 rows)

omm=# 

2. 创建3个数据库newdb1、newdb2、newdb3,默认表空间为newtbs1

CREATE DATABASE newdb1 WITH TABLESPACE = newtbs1;
CREATE DATABASE newdb2 WITH TABLESPACE = newtbs1;
CREATE DATABASE newdb3 WITH TABLESPACE = newtbs1;

omm=# CREATE DATABASE newdb1 WITH TABLESPACE = newtbs1;
CREATE DATABASE
omm=# CREATE DATABASE newdb2 WITH TABLESPACE = newtbs1;
CREATE DATABASE
omm=# CREATE DATABASE newdb3 WITH TABLESPACE = newtbs1;
CREATE DATABASE
omm=# \l
                         List of databases
   Name    | Owner | Encoding | Collate | Ctype | Access privileges 
-----------+-------+----------+---------+-------+-------------------
 musicdb   | omm   | UTF8     | C       | C     | 
 musicdb1  | omm   | UTF8     | C       | C     | 
 musicdb2  | omm   | UTF8     | C       | C     | 
 musicdb3  | omm   | UTF8     | C       | C     | 
 newdb1    | omm   | UTF8     | C       | C     | 
 newdb2    | omm   | UTF8     | C       | C     | 
 newdb3    | omm   | UTF8     | C       | C     | 
 omm       | omm   | UTF8     | C       | C     | 
 postgres  | omm   | UTF8     | C       | C     | 
 template0 | omm   | UTF8     | C       | C     | =c/omm           +
           |       |          |         |       | omm=CTc/omm
 template1 | omm   | UTF8     | C       | C     | =c/omm           +
           |       |          |         |       | omm=CTc/omm
(11 rows)

omm=# 

3. 使用sql查看表空间newtbs1上有几个数据库

select oid,datname from pg_database;
select oid,* from pg_tablespace ;
select datname,dattablespace,spcname from pg_database d, pg_tablespace t where d.dattablespace=t.oid;

omm=# select oid,datname from pg_database;
  oid  |  datname  
-------+-----------
     1 | template1
 16384 | omm
 16390 | musicdb
 14555 | template0
 16391 | musicdb1
 16392 | musicdb2
 16393 | musicdb3
 14560 | postgres
 16399 | newdb1
 16400 | newdb2
 16401 | newdb3
(11 rows)

omm=# select oid,* from pg_tablespace ;
  oid  |  spcname   | spcowner | spcacl | spcoptions | spcmaxsize | relative 
-------+------------+----------+--------+------------+------------+----------
  1663 | pg_default |       10 |        |            |            | f
  1664 | pg_global  |       10 |        |            |            | f
 16389 | music_tbs  |       10 |        |            |            | t
 16398 | newtbs1    |       10 |        |            |            | t
(4 rows)

omm=# select datname,dattablespace,spcname from pg_database d, pg_tablespace t where d.dattablespace=t.oid;
  datname  | dattablespace |  spcname   
-----------+---------------+------------
 template1 |          1663 | pg_default
 omm       |          1663 | pg_default
 musicdb   |         16389 | music_tbs
 template0 |          1663 | pg_default
 musicdb1  |         16389 | music_tbs
 musicdb2  |         16389 | music_tbs
 musicdb3  |         16389 | music_tbs
 postgres  |          1663 | pg_default
 newdb1    |         16398 | newtbs1
 newdb2    |         16398 | newtbs1
 newdb3    |         16398 | newtbs1
(11 rows)omm=# 
omm=# 

4. 在文件系统中查看表空间newtbs1中的多个数据库

cd /var/lib/opengauss/data/pg_tblspc/16398/
cd PG_9.2_201611171_gaussdb/
ls

omm@modb:~$ cd /var/lib/opengauss/data/pg_tblspc/16398/   
omm@modb:/var/lib/opengauss/data/pg_tblspc/16398$ cd PG_9.2_201611171_gaussdb/
omm@modb:/var/lib/opengauss/data/pg_tblspc/16398/PG_9.2_201611171_gaussdb$ ls
16399  16400  16401  pgsql_tmp
omm@modb:/var/lib/opengauss/data/pg_tblspc/16398/PG_9.2_201611171_gaussdb$ 

猜你喜欢

转载自blog.csdn.net/qq_40220309/article/details/128163679