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;