Oracle 表空间相关操作 ORA-01654 解决

本贴最后更新于 1817 天前,其中的信息可能已经东海扬尘

今天领导突然找到我说服务出问题了,上服务器一看,发现报表空间不足异常

image.png

由于之前没有过扩容 Oracle 表空间的经验,所以边 Google 边操作,解决了问题。过程记录一下方便日后查阅。

表空间容量指标查询

首先查询一下各个表空间的使用情况。

SELECT
	TABLESPACE_NAME "表空间",
	To_char( Round( BYTES / 1024, 2 ), '99990.00' ) || '' "总量",
	To_char( Round( FREE / 1024, 2 ), '99990.00' ) || 'G' "剩余",
	To_char( Round(( BYTES - FREE ) / 1024, 2 ), '99990.00' ) || 'G' "使用",
	To_char( Round( 10000 * USED / BYTES ) / 100, '99990.00' ) || '%' "比例" 
FROM
	(
	SELECT
		A.TABLESPACE_NAME TABLESPACE_NAME,
		Floor(
		A.BYTES / ( 1024 * 1024 )) BYTES,
		Floor(
		B.FREE / ( 1024 * 1024 )) FREE,
		Floor((
				A.BYTES - B.FREE 
			) / ( 1024 * 1024 )) USED 
	FROM
		( SELECT TABLESPACE_NAME TABLESPACE_NAME, Sum( BYTES ) BYTES FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME ) A,
		( SELECT TABLESPACE_NAME TABLESPACE_NAME, Sum( BYTES ) FREE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME ) B 
	WHERE
		A.TABLESPACE_NAME = B.TABLESPACE_NAME 
	) 
-- WHERE TABLESPACE_NAME LIKE 'CDR%' --这一句用于指定表空间名称
ORDER BY
	Floor( 10000 * USED / BYTES ) DESC;

image.png

可以看到 SMARTCITY 的占用达到了 20G,截图为扩容后的,扩容前为 20G,所以之前会报表空间不足。

查询表空间对应的数据文件相关信息

select b.file_id  文件ID,
  b.tablespace_name  表空间,
  b.file_name     物理文件名,
  b.bytes       总字节数,
  (b.bytes-sum(nvl(a.bytes,0)))   已使用,
  sum(nvl(a.bytes,0))        剩余,
  sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比
  from dba_free_space a,dba_data_files b
  where a.file_id=b.file_id
  group by b.tablespace_name,b.file_name,b.file_id,b.bytes
  order by b.tablespace_name

image.png

可以看到文件 ID 为 9 的表空间已经使用完了,复制对应的物理文件名备用。

开始扩容

Tips: 单个数据文件最大为 32G

方法 1:改变已存在数据文件的大小

-- 扩展到32G
ALTER TABLESPACE SMARTCITY ADD DATAFILE '/home/oracle/oradata/smartcity.dbf' SIZE 32768M;

方法 2:允许现在的数据文件自动增长

--允许表空间自动扩容
ALTER DATABASE DATAFILE '/home/oracle/oradata/smartcity.dbf'
AUTOEXTEND ON NEXT 100M MAXSIZE 20480M; 

方法 3:给表空间增加数据文件

-- 增加数据文件,初始大小为7G,可自动增长
ALTER TABLESPACE SMARTCITY ADD DATAFILE
'/home/oracle/oradata/smartcity_1.dbf' 
size 7167M autoextend on ;

以上三种方法均可,从之前的截图可以看出,我采用的是第三种方式。

  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    103 引用 • 126 回帖 • 452 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...