达梦表空间不足解决办法

表空间不足的解决方法有以下3种:

1.修改数据文件大小

2.数据文件自动扩展

3.新增数据文件

模拟表空间

create tablespace "fuwa" datafile '/dmdb8/dmdata/fuwa/fuwa01.dbf' size 128 autoextend off CACHE = NORMAL;

单位M

详细步骤

查看表空间使用情况

单位M统计

SELECT
a.tablespace_name "表空间名称",
total / (1024 * 1024) "表空间大小(M)" ,
free / (1024 * 1024) "表空间剩余大小(M)" ,
(total - free) / (1024 * 1024) "表空间使用大小(M)",
round((total - free) / total, 4) * 100 "使用率%"
FROM (
SELECT
tablespace_name,
SUM(bytes) free
FROM
dba_free_space
GROUP BY
tablespace_name
) a,
(
SELECT
tablespace_name,
SUM(bytes) total
FROM
dba_data_files
GROUP BY
tablespace_name
) b
WHERE
a.tablespace_name = b.tablespace_name;

单位G统计

SELECT
a.tablespace_name "表空间名称",
total / (1024 * 1024 * 1024) "表空间大小(G)" ,
free / (1024 * 1024 * 1024) "表空间剩余大小(G)" ,
(total - free) / (1024 * 1024 * 1024 ) "表空间使用大小(G)",
round((total - free) / total, 4) * 100 "使用率%"
FROM (
SELECT
tablespace_name,
SUM(bytes) free
FROM
dba_free_space
GROUP BY
tablespace_name
) a,
(
SELECT
tablespace_name,
SUM(bytes) total
FROM
dba_data_files
GROUP BY
tablespace_name
) b
WHERE
a.tablespace_name = b.tablespace_name;

查看数据文件路径及使用情况

select PATH,TOTAL_SIZE,FREE_SIZE,MAX_SIZE from v$datafile;

扩容表空间

达梦数据库中的表空间是由一个或多个数据文件组成。当表空间空间不足的情况下,最自然想到的办法当然是修改数据文件的大小。

法一:修改数据文件大小

达梦管理工具可更改

或命令更改

--修改数据文件大小至600M
alter tablespace "fuwa" resize datafile 'fuwa01.dbf' to 600;

#单位M

缺点:每次都由手动来修改大小,第一会降低工作效率,第二是并不知道每次应该把文件大小设置为多少才较为合适。

法二:更改数据文件自动扩展

使用法一固然可以解决问题,但是如果每次都由手动来修改大小,第一会降低工作效率,第二是并不知道每次应该把文件大小设置为多少才较为合适。为了应对这种情况,达梦数据库内提供了数据文件自动扩展的机制。当表空间的使用接近上限时,数据文件的大小会自动扩展,从而应对空间不足的情况。

达梦管理工具可更改

或命令更改

--更改数据文件自动扩展
alter tablespace "fuwa" datafile 'fuwa01.dbf' autoextend on next 10 maxsize 1024;

说明:
每次扩展会增大 1M,扩展的上限是 1G。这样一来,当表空间里面的数据达到128M 时,该数据文件会自动扩展
,但是不会超过 1G。

法三:表空间种新增数据文件

在达梦数据库中,一个表空间可以对应磁盘上的多个数据文件。因此,当表空间的空间被用完的时候,也可以通过在表空间中增加数据文件的形式,来扩大当前表空间的大小。步骤如下:

达梦管理工具可更改

--自动扩展  指定自动扩展参数  扩充尺寸和扩容上限参数
alter tablespace "fuwa" add datafile '/dmdb8/dmdata/fuwa/fuwa02024012601.dbf' size 200 autoextend on next 20 maxsize 1024;

--自动扩展 如果不加autoextend on 默认开启自动扩展 扩充尺寸为0  扩容上限为67108863即不设限
alter tablespace "fuwa" add datafile '/dmdb8/dmdata/fuwa/fuwa02024012601.dbf' size 200;

--不自动扩展
alter tablespace "fuwa" add datafile '/dmdb8/dmdata/fuwa/fuwa02024012601.dbf' size 200 autoextend off;

在某些情况下,可以把一个表空间内的多个数据文件放到不同的存储硬盘上,这样来可以起到分散 I/O 的目的,从而提高系统整体的运行效率。

注意:考虑到备份恢复、并行读写、磁盘IO、坏块因素不建议maxsize 67108863,建议设置合理值,比如32G或50G等。

你可能感兴趣的:(数据库,oracle)