DM8数据库用户和表空间管理

1 说明

DM8用户管理和表空间管理常用的管理命令,包括创建、修改和查看信息操作等。

2 用户管理

2.1 创建用户

创建一个用户lu9up,密码为"admin2024.",未制定表空间,使用默认的表空间main。

sql 复制代码
SQL> create user lu9up identified by "admin2024.";
操作已执行
已用时间: 34.563(毫秒). 执行号:70705.

2.2 用户授权

sql 复制代码
SQL> grant public,resource to lu9up;
操作已执行
已用时间: 13.604(毫秒). 执行号:71101.

public和resource是dm8管理类自带预设的两个角色。public 角色默认包含了一些基本的系统权限,比如能够登录到数据库的能力。resource 角色包含了允许用户创建数据库对象(如表、索引、序列等)的权限。

还有一个预设角色是DBA,主要用于数据库管理,几乎可以执行数据库中的所有操作。

对于业务系统用户,一般赋予public和resource权限即可,dba用户则赋予dba权限。

2.3 连接用户

sql 复制代码
SQL> conn lu9up/admin2024.

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 6.143(ms)

2.4 查看用户信息

查看用户状态,默认表空间,临时表空间和密码策略。

sql 复制代码
SQL> select username,account_status,default_tablespace,temporary_tablespace,password_versions from dba_users where username = 'LU9UP';

USERNAME   ACCOUNT_STATUS DEFAULT_TABLESPACE TEMPORARY_TABLESPACE PASSWORD_VERSIONS
---------- -------------- ------------------ -------------------- -----------------
LU9UP      OPEN           MAIN               TEMP                 2

已用时间: 23.636(毫秒). 执行号:70707.

3 表空间管理

3.0 查看表空间使用率

查看表空间的大小,使用情况,可用空间和使用率,单位为兆字节(Mb)。

sql 复制代码
SELECT 
       F.TABLESPACE_NAME,
       (T.TOTAL_SPACE - F.FREE_SPACE) AS USED_MB,
       F.FREE_SPACE,
       T.TOTAL_SPACE,
       (ROUND((F.FREE_SPACE / T.TOTAL_SPACE) * 100)) || '%' AS PER_FREE
  FROM 
       (SELECT TABLESPACE_NAME,
	           ROUND(SUM(BLOCKS * (SELECT PARA_VALUE / 1024 
						             FROM V$DM_INI WHERE PARA_NAME = 'GLOBAL_PAGE_SIZE')
						 ) / 1024) AS FREE_SPACE
          FROM DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F, 
       (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES / 1048576)) AS TOTAL_SPACE
          FROM DBA_DATA_FILES
         GROUP BY TABLESPACE_NAME) T
 WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME
 order by PER_FREE desc;

3.1 创建表空间

创建表空间tbs_lu9up,数据文件路径位于/dmdata/dm8,大小32Mb,不需要带单位。

sql 复制代码
SQL> create tablespace tbs_lu9up datafile '/dmdata/dm8/tbs_lu9up.dbf' size 32 autoextend on maxsize 128;
操作已执行
已用时间: 43.831(毫秒). 执行号:71109.

3.2 查看表空间

sql 复制代码
SQL> select tablespace_name,file_id,bytes/1024/1024 size,file_name from dba_data_files where tablespace_name = 'TBS_LU9UP';

行号     TABLESPACE_NAME FILE_ID     SIZE                 FILE_NAME
---------- --------------- ----------- -------------------- ---------------------------
1          TBS_LU9UP       0           32                   /dmdata/dm8/tbs_lu9up.dbf

已用时间: 1.126(毫秒). 执行号:71113.

3.3 修改用户默认表空间

讲用户的默认表空间由main改为tbs_lu9up;

sql 复制代码
SQL> alter user lu9up default tablespace tbs_lu9up;
操作已执行
已用时间: 3.648(毫秒). 执行号:71203.
sql 复制代码
SQL> select username,account_status,default_tablespace,temporary_tablespace,password_versions from dba_users where username = 'LU9UP';

行号     USERNAME ACCOUNT_STATUS DEFAULT_TABLESPACE TEMPORARY_TABLESPACE PASSWORD_VERSIONS
---------- -------- -------------- ------------------ -------------------- -----------------
1          LU9UP    OPEN           TBS_LU9UP          TEMP                 2

已用时间: 14.715(毫秒). 执行号:71205.

3.4 扩展表空间

虽然一个数据文件开了自动扩展后最大可以到16384Gb,但是过大了之后不好维护,因此一般一个表空间建议创建多个数据文件。

当表空间剩余空间不足的时候,需要拓展表空间容量。有两种方式,分别为添加数据文件和扩展现有表空间。

一、添加数据文件

sql 复制代码
SQL> alter tablespace tbs_lu9up add datafile '/dmdata/dm8/tbs_lu9up01.dbf' size 32;
操作已执行
已用时间: 9.181(毫秒). 执行号:71206.
SQL> select t.name,d.id,d.path from v$tablespace t,v$datafile d where t.id = d.group_id and t.name = 'TBS_LU9UP';

行号     NAME      ID          PATH
---------- --------- ----------- ---------------------------
1          TBS_LU9UP 0           /dmdata/dm8/tbs_lu9up.dbf
2          TBS_LU9UP 1           /dmdata/dm8/tbs_lu9up01.dbf

已用时间: 0.368(毫秒). 执行号:71207.

二、扩展现有表空间

sql 复制代码
SQL> alter tablespace tbs_lu9up resize datafile '/dmdata/dm8/tbs_lu9up01.dbf' to 64;
操作已执行
已用时间: 3.941(毫秒). 执行号:71210.
SQL> select tablespace_name,file_id,bytes/1024/1024 size,file_name from dba_data_files where tablespace_name = 'TBS_LU9UP';

行号     TABLESPACE_NAME FILE_ID     SIZE                 FILE_NAME
---------- --------------- ----------- -------------------- ---------------------------
1          TBS_LU9UP       0           32                   /dmdata/dm8/tbs_lu9up.dbf
2          TBS_LU9UP       1           64                   /dmdata/dm8/tbs_lu9up01.dbf

已用时间: 19.621(毫秒). 执行号:71211.

3.5 修改数据文件属性

将数据文件设置为可自动扩展,每次扩展8Mb,最大支持64Mb。

sql 复制代码
SQL> alter tablespace tbs_lu9up datafile '/dmdata/dm8/tbs_lu9up.dbf' autoextend on next 8 maxsize 64;
操作已执行
已用时间: 4.312(毫秒). 执行号:71219.

禁用自动扩展。

sql 复制代码
SQL> alter tablespace tbs_lu9up datafile '/dmdata/dm8/tbs_lu9up01.dbf' autoextend off;
操作已执行
已用时间: 5.106(毫秒). 执行号:71220.

查看表空间信息。

sql 复制代码
SQL> select tablespace_name,file_id,bytes/1024/1024 size,autoextensible,increment_by,file_name from dba_data_files where tablespace_name = 'TBS_LU9UP';

行号     TABLESPACE_NAME FILE_ID     SIZE                 AUTOEXTENSIBLE INCREMENT_BY FILE_NAME
---------- --------------- ----------- -------------------- -------------- ------------ ---------------------------
1          TBS_LU9UP       0           32                   YES            8            /dmdata/dm8/tbs_lu9up.dbf
2          TBS_LU9UP       1           64                   NO             0            /dmdata/dm8/tbs_lu9up01.dbf

已用时间: 6.604(毫秒). 执行号:71221.

3.6 修改表空间名

在DM8数据库中,支持直接修改表空间名。

sql 复制代码
SQL> alter tablespace tbs_lu9up rename to tbs_lu;
操作已执行
已用时间: 5.332(毫秒). 执行号:71222.

同步更新到视图中。

SQL> select tablespace_name,file_id,bytes/1024/1024 size,autoextensible,increment_by,file_name from dba_data_files where tablespace_name = 'TBS_LU';

行号     TABLESPACE_NAME FILE_ID     SIZE                 AUTOEXTENSIBLE INCREMENT_BY FILE_NAME
---------- --------------- ----------- -------------------- -------------- ------------ ---------------------------
1          TBS_LU          0           32                   YES            8            /dmdata/dm8/tbs_lu9up.dbf
2          TBS_LU          1           64                   NO             0            /dmdata/dm8/tbs_lu9up01.dbf

已用时间: 12.494(毫秒). 执行号:71223.

3.7 修改表空间状态和移动数据文件

移动数据文件需要将表空间离线。

sql 复制代码
SQL> alter tablespace tbs_lu offline;

使用rename命令移动数据文件。

sql 复制代码
SQL> alter tablespace tbs_lu rename datafile '/dmdata/dm8/tbs_lu9up.dbf' to '/dmdata/dm8/tbs_lu/tbs_lu9up.dbf';
操作已执行
已用时间: 436.347(毫秒). 执行号:71225.
SQL> alter tablespace tbs_lu rename datafile '/dmdata/dm8/tbs_lu9up01.dbf' to '/dmdata/dm8/tbs_lu/tbs_lu9up01.dbf';
操作已执行
已用时间: 625.413(毫秒). 执行号:71226.

查看结果。

sql 复制代码
SQL> alter tablespace tbs_lu online;
操作已执行
已用时间: 4.562(毫秒). 执行号:71228.
SQL> select tablespace_name,file_id,bytes/1024/1024 size,autoextensible,increment_by,file_name from dba_data_files where tablespace_name = 'TBS_LU';

行号     TABLESPACE_NAME FILE_ID     SIZE                 AUTOEXTENSIBLE INCREMENT_BY FILE_NAME
---------- --------------- ----------- -------------------- -------------- ------------ ----------------------------------
1          TBS_LU          0           32                   YES            8            /dmdata/dm8/tbs_lu/tbs_lu9up.dbf
2          TBS_LU          1           64                   NO             0            /dmdata/dm8/tbs_lu/tbs_lu9up01.dbf

3.8 删除表空间

drop命令删除一个为空的表空间。

sql 复制代码
SQL> drop tablespace tbs_lu;
相关推荐
BillKu1 天前
达梦变量赋值
数据库·sql·达梦数据库·dm8
guochanof3 天前
达梦数据库使用笔记,备份还原,迁移
数据库·达梦·达梦数据库·达梦迁移·达梦备份
怎么追摩羯座4 天前
在银河麒麟系统中Qt连接达梦数据库
qt·达梦数据库·odbc
又是重名了7 天前
达梦数据库 无法自动获取数据库类型,请通过dialect参数指定!
达梦数据库·pagehelper升级
敲代码不忘补水9 天前
Docker 安装达梦 DM8 数据库实战指南
数据库·docker·容器·达梦·dm8
BigQiu661 个月前
达梦数据库运维相关查询命令
运维·数据库·oracle·达梦数据库
学习IT不秃头3 个月前
dsc集群添加磁盘空间
数据库·达梦数据库
保定公民4 个月前
使用达梦DMHS平滑迁移Oracle数据到DM8
数据库·达梦数据库·数据同步·dm·dmhs
菜鸟小码4 个月前
DM达梦数据库转换、条件函数整理
数据库·达梦数据库·dm