达梦创建表空间时需要指定表空间名和其拥有的数据文件列表。理论上最多允许有 65535个表空间,但用户允许创建的表空间ID 取值范围为 0~32767,超过 32767 的只允许系统使用,ID 由系统自动分配,ID 不能重复使用,即使删 除掉已有表空间,也无法重复使用已用 ID 号,也就是说只要创建 32768 次表空间后,用户将无法再创建表空间。
VDATAFILE、VTABLESPACE、VEXTENTS 通过查询动态视图 VTABLESPACE 得到系统中除 RLOG 表空间外其他所有表空间 的信息,通过查询动态视图 V$DATAFILE 得到系统中所有数据文件的信息。将两个动态视图 以表空间 ID 为连接条件,通过以下查询可以得到表空间上对应的数据文件。
SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID = df.GROUP_ID;
二、数据文件的回缩属性
可以缩减用户表空间中已存在的数据文件的大小。比如将 bookshop 表空间中数据文件book.dbf 大小缩减至32M。
代码如下:
##查看表空间大小
select
A.tablespace_name,
a.INCREMENT_BY,
A.bytes / 1024 TOTAL_KB,
B.bytes / 1024 FREE_KB,
(A.bytes - b.bytes)/1024 USE_KB
from DBA_DATA_FILES A,
DBA_FREE_SPACE B
where a.tablespace_name = b.tablespace_name;
##测试表空间增长
create table A(id int,name varchar(100));
DECLARE
a number:=0;
begin
for i in 1..1500000 loop
insert into a (id,name) values(i,'sa');
end loop;
commit;
end;
##业务用户测试
create tablespace TEST datafile 'TEST' size 128 autoextend on CACHE = NORMAL;
create user TEST identified by "1Qaz[][]!"
default tablespace "TEST";
grant "PUBLIC","SOI","DBA" to TEST;
–创建表空间TEST和表A,TEST表空间初始大小为128MB
–进行数据插入,插入完成后TEST表空间扩容至2.4G
–删除3张数据表,释放TEST表空间
–进行缩容操作
缩容至1920MB成功
缩容至1856MB及以下均失败
–ROLL表空间缩容
目前大小为4352MB
–缩容为初始大小128MB
–SYSTEM表空间缩容
目前大小为256MB
-删除占用系统表数据字段信息以后,SYSTEM表空间空闲率并未提升
执行缩容操作,缩容至初始大小192MB,缩容失败,重新再建表扩容SYSTEM,SYSTEM表空间查询结果错误
–TEMP表空间缩容
删除临时表并进行缩容
DM9.1.0.26版本各表空间缩容情况如下
#达梦数据库 #达梦同行者征文
文章
阅读量
获赞
