1.查看数据文件的大小
select tablespace_name ,sum(bytes) / 1024 / 1024 as MB,file_name
from dba_data_files
where tablespace_name = 'APPS_UNDOTS1'
group by tablespace_name,file_name;
2.减少文件的大小
ALTER DATABASE DATAFILE 'D:\ora_tablespace\GCOMM2.dbf' RESIZE 5000M;
提示:ORA-03297: file contains used data beyond requested RESIZE value
原因1:压缩表空间大小,最小必须是该表空间目前最大块段的大小
原因2:表的初始大小分配的太大
一、原因1,可以采用移动表空间的方法来减小block_id
--a)查找file_id
select tablespace_name ,sum(bytes) / 1024 / 1024 as MB,file_name,file_id
from dba_data_files
where tablespace_name = 'APPS_UNDOTS1'
group by tablespace_name,file_name,file_id;
--b)找出目前APPS_UNDOTS1表空间,所要修改文件的 最大的block_id
select max(block_id) from dba_extents where tablespace_name = 'APPS_UNDOTS1' and file_id=379;
MAX(BLOCK_ID)
-----------
1310577
--c)计算目前最大块的段所占用的空间(该数据库的block大小是8092)
show parameter db_block_size;
结果为8192,就是8K。
然后计算所有数据块占用的物理空间
select 1310577*8/1024 from dual;
10238.8828125
结果为10238.8828125M,就是10G多
4. 然后我们知道目前用了10G多,我们就可以把数据文件大小Resize到10G多一点
ALTER DATABASE DATAFILE 'D:\ORADATA\ECSS20' RESIZE 10240M;
二、征对原因2可通过减小表或索引的初始化大小来收缩表空间
--征对块大的表 减小其初始分配大小
SELECT DISTINCT 'alter table ' || segment_name ||
' MOVE STORAGE(INITIAL 1M) ;'
FROM dba_extents
WHERE tablespace_name = 'GCOMM2'
AND segment_type = 'TABLE'
AND file_id = 11
AND block_id > 30336;
--征对块大的索引减小其初始分配大小
SELECT DISTINCT 'alter index ' || segment_name ||
' REBUILD tablespace GCOMM2 storage(initial 64K next 1M pctincrease 0);'
FROM dba_extents
WHERE tablespace_name = 'GCOMM2'
AND segment_type = 'INDEX'
AND file_id = 11
AND block_id > 30336;
然后再收缩表空间
ALTER DATABASE DATAFILE 'D:\ora_tablespace\GCOMM2.dbf' RESIZE 1000M;
执行成功,原先为7G多。
相关推荐
ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法ora-00604 错误 解决 方法
【DATAGUARD】物理dg配置客户端无缝切换 (八.4)--ora-16652 和 ora-16603错误【DATAGUARD】物理dg配置客户端无缝切换 (八.4)--ora-16652 和 ora-16603错误
使用工具IMPDP导入数据时ORA-39002、ORA-39070错误排查。使用工具IMPDP导入数据时ORA-39002、ORA-39070错误排查 使用工具IMPDP导入数据时ORA-39002、ORA-39070错误排查
ORA-12560 TNS 协议适配器错误
Drop goldengate用户时,报ORA-00604 ORA-20782 ORA-06512错误
这里面有所有的ora错误 以后找错就不用网上乱搜了 全部 ora0000-ora32999
最近历史数据库磁盘空间不足,而有一个表空间有50个G容量,但是实际只占100m的空间,通过该文档逐步实现数据文件的缩减
Oracle Database on Linux Fails to Start - ORA-27154 ORA-27300 ORA-27301 ORA-27302: failure occurred at: sskgpbitsper (Doc ID 2789636.1)
模拟进程管理模拟进程管理----ora备份模拟进程管理模拟进程管理----ora备份
oracle数据库ora-01152和ora-01110的解决办法
ORACLE9i exp遇见EXP-00008 ORA-00942 EXP-00024错误的解决方法,详细描述了问题处理的过程和步骤,共享在此,希望能有所帮助
创建物化视图ORA-12014错误解决方法 创建物化视图ORA-12014错误解决方法
Oracle 11gr2连Oracle 19c 报ORA-28040 ORA-01017解决方法
ORA-06512 数字或值错误,字符缓冲区太小的解决方法。 有图有真相,希望对你有帮助。
oracledb_exporter 是prometheus 的一个对Oracle监控的Exporter , Prometheus+Grafana 对Oracle实现监控
oracle启动失败,ORA-00702报错,windows,linux系统下解决办法
离线误删空间文件导致的ORA-01033及ORA-01145问题的解决办法,在解决ORA-01033的过程中,又出现ORA-01145 * 第 1 行出现错误: ORA-01145: 除非启用了介质恢复, 否则不允许立即脱机 接着的解决步骤
在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码
归档日志满了的处理方法(ORA-03113-ORA-00257)
在运行查询SELECT * FROM V$SESSION 会出现ORA-29275:部分多字节字符的错误,这是什么原因开始我不得其解,网上也没有介绍什么好办法。本文给出答案。