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;
相关推荐
保定公民3 天前
问题小记-达梦数据库报错“字符串转换出错”处理
数据库·sql·达梦数据库·问题处理·dm
尚雷558011 天前
Oracle 与 达梦 数据库 对比
数据库·oracle·达梦数据库
树下一少年23 天前
以达梦为数据库底座时部署的微服务页面报乱码,调整兼容模式
数据库·微服务·达梦数据库·dmv8
BillKu1 个月前
Linux(CentOS)安装达梦数据库 dm8
linux·服务器·centos·达梦数据库·dm8
冥净2 个月前
新版达梦数据库查看数据库版本信息id_code无法直接显示版本号
数据库·达梦数据库
BillKu2 个月前
达梦变量赋值
数据库·sql·达梦数据库·dm8
guochanof2 个月前
达梦数据库使用笔记,备份还原,迁移
数据库·达梦·达梦数据库·达梦迁移·达梦备份
怎么追摩羯座2 个月前
在银河麒麟系统中Qt连接达梦数据库
qt·达梦数据库·odbc
又是重名了2 个月前
达梦数据库 无法自动获取数据库类型,请通过dialect参数指定!
达梦数据库·pagehelper升级
敲代码不忘补水2 个月前
Docker 安装达梦 DM8 数据库实战指南
数据库·docker·容器·达梦·dm8