Oracle运维:Oracle表空间不足

444 阅读1分钟

数据库本质上也是一个储存数据的地方,也有自己的储存空间,不管如何终有饱满的一天。这个事情本应该让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%(利用率)即可

image.png

--查看详细的分配磁盘
select tablespace_name,
       file_id,
       file_name,
       round(bytes / (1024 * 1024), 0) total_space
  from dba_data_files
 order by tablespace_name;

image.png

以下这条sql是手动分配表空间

alter tablespace 用户
add datafile '上张截图中的FILE_NAME,记得更改名称' size 1024m