数据库本质上也是一个储存数据的地方,也有自己的储存空间,不管如何终有饱满的一天。这个事情本应该让DBA(数据库管理员)来扩展,不过大部分的公司应该只能让员工百度搞搞了。
表空间不足无非就两种情况:
1.分配的表空间已满,没有自动增长,这种情况下,物理磁盘是还有空间的,但是没有给用户分配,这种情况下可以设置表空间自增,不过慎用。
2.整体物理磁盘空间已满,这种情况下只能加硬盘了。
以下提供两个SQL可对Oracle进行查看相关的磁盘利用数据。
-- 查询每个用户表空间利用率
SELECT
a.tablespace_name,
a.bytes / 1024 / 1024 "sum MB",
( a.bytes - b.bytes ) / 1024 / 1024 "used MB",
b.bytes / 1024 / 1024 "free MB",
round( ( ( a.bytes - b.bytes ) / a.bytes ) * 100, 2 ) "used%"
FROM
( SELECT tablespace_name, sum( bytes ) bytes FROM dba_data_files GROUP BY tablespace_name ) a,
( SELECT tablespace_name, sum( bytes ) bytes, max( bytes ) largest FROM dba_free_space GROUP BY tablespace_name ) b
WHERE
a.tablespace_name = b.tablespace_name
ORDER BY
( ( a.bytes - b.bytes ) / a.bytes ) DESC;
一般来说查看user%(利用率)即可
--查看详细的分配磁盘
select tablespace_name,
file_id,
file_name,
round(bytes / (1024 * 1024), 0) total_space
from dba_data_files
order by tablespace_name;
以下这条sql是手动分配表空间
alter tablespace 用户
add datafile '上张截图中的FILE_NAME,记得更改名称' size 1024m