oracle服务器硬盘磁盘空间满了

问题描述:oracle服务器硬盘磁盘空间满了,没有空间写入数据;

解决思路:
a、服务器是虚拟机还是实体机?
虚拟机,->物理机上有空间直接给它扩容,再给数据库的相关表空间添加文件就可;
实体机,->确定是否还有oracle收缩磁盘硬盘插槽,能新增物理硬盘,买+接入;
b、删数据以及降低高水位;
通常思路是:找占用磁盘最大的表空间TS_1,找该表空间下巨大的表tableA,删除历史数据,降低高水位(table move),缩小表空间文件,腾出空间;

1、查询 表空间各文件 --找出占用磁盘最大的表空间

--1.1、查询 表空间、以及大小 --找出占用磁盘最大的表空间
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size
FROM dba_tablespaces t, dba_data_files d
WHERE t.tablespace_name = d.tablespace_name
GROUP BY t.tablespace_name
order by ts_size desc;

--1.2、按数据库文件查看使用情况
select /*+ ordered use_hash(a,b,c) */
a.file_id,a.file_name,a.filesize, b.freesize,
(a.filesize-b.freesize) usedsize,
c.hwmsize,
c.hwmsize - (a.filesize-b.freesize) unsedsize_belowhwm,
a.filesize - c.hwmsize canshrinksize
from
(
select file_id,file_name,round(bytes/1024/1024) filesize from dba_data_files
) a,
(
select file_id,round(sum(dfs.bytes)/1024/1024) freesize from dba_free_space dfs
group by file_id
) b,
(
select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents
group by file_id) c
where a.file_id = b.file_id
and a.file_id = c.file_id
order by unsedsize_belowhwm desc

查看数据文件使用情况

结果说明:
File_id : 文件编号
File_name: 文件名称
File_size: 数据文件占用磁盘空间大小
Freesize:文件中被标记为free的空间大小
Usedsize: 使用的空间大小。
Hwmsize: 已经分配出去的空间大小,如果希望通过alter database datafile … resize integerM回收空间,将需要这个值作为参考,不能回收到这个值之下,否则会报错。
Freee_belowhwm_size: 在HWM(高水位标记线之下的空闲空间数),这个是理论上的可以回收的空间大小。
Curr_can_shrink: 这个是实际大小与HWM标记之间的差,就是还没有分配出去的空间大小。

1.3、在表空间下 列出表占用的空间 --找出最大的表
--1.3、在表空间下 列出表占用的空间 --找出最大的表
Select Segment_Name,Sum(bytes)/1024/1024 x From User_Extents Group By Segment_Name
order by x desc

分析这3个结果,如果表空间下有剩余空间,找到对应文件,可以直接减少文件大小,释放空间给别人用;
ALTER DATABASE DATAFILE ‘D:\ora_tablespace\GCOMM2.dbf‘ RESIZE 5000M;
如没有,,确定要要动哪个表空间下哪个表。那就需要删数据和降低高水位了。

2、按字段的时间 删除数据

2.1、查询 一个表中 几条数据 看下 字段
select * from SD_KLFX_LXDM_ES where rownum <20
2.2把要留的数据新建表 存起来
create table new_LXDM as select * from SD_KLFX_LXDM_ES where day > to_date(‘2019-10-15 00:00:00‘,‘yyyy-mm-dd hh24:mi:ss‘);
2.3 truncate 把原表数据都删掉
truncate table SD_KLFX_LXDM_ES
2.4 把新表数据还原回老表 insert into SD_KLFX_LXDM_ES select * from new_LXDM
确认下数据一致,老表数据是否有、条数一致
select * from SD_KLFX_LXDM_ES where rownum <20
select count(1) from new_LXDM;
select count(1) from SD_KLFX_LXDM_ES;
2.5 销毁新表 drop table new_LXDM

3、alter table test move 移动表,降低高水位;

--alter table move主要有两方面的作用

3.1.用来移动table到其他表空间
3.2.用来减少table中的存储碎片,优化存储空间和性能

重建索引

      SQL> alter index idx_t_object_id rebuild;

4、减少文件的大小
  ALTER DATABASE DATAFILE ‘D:\ora_tablespace\GCOMM2.dbf‘ RESIZE 5000M;

原文地址:https://www.cnblogs.com/dacude/p/12023611.html

时间: 2024-10-13 07:18:00

oracle服务器硬盘磁盘空间满了的相关文章

基于Cordys C3版平台应用系统维护经验一则——Oracle数据库表空间满了

某日中午,有用户陆续反映系统问题,说流程送出异常.待办不消失.待办打不开等等.维护工程师开始分析问题,后台较为清晰的现象是流转日志记录插入数据失败,人工测试表插入成功,其它现象五花八门,没有规律,经过多位维护工程师的努力,终于由Oracle数据库管理工程师在16:01排除故障,系统基本恢复"正常". 故障原因是"应用系统Oracle数据库中Cordys用户所对应的表空间"满了,导致应用无法正常向数据库写入数据,造成业务数据不完整. 第二日,维护人员根据用户反馈,逐个

oracle所在磁盘空间不足导致了数据库异常

oracle所在磁盘空间不足导致了数据库异常.需要减小数据文件的大小来解决. 1.检查数据文件的名称和编号 select file#,name from v$datafile; 2.看哪个数据文件所占的空间最大,根据该数据文件的编号查看该数据文件的最大数据块数 select max(block_id) from dba_extents where file_id=8; 查询结果 3.计算该表空间的实际占用空间.(不是物理文件的大小) 查看每个数据块的大小 show parameter db_bl

磁盘空间满了之后MySQL会怎样

大多数用户在对于磁盘进行分区的时候都是习惯性的不给系统盘预留很大空间,其实这并不是一个好习惯.因为系统分区并不像我们想象的那样会仅仅安装一个操作系统,系统分区多数还是会承载操作系统主要应用软件安装任务.那么当磁盘空间爆满后,MySQL会发生什么事呢?又应该怎么应对? 会发生什么事 当磁盘空间写满了之后,MySQL是无法再写入任何数据的,包括对表数据的写入,以及binlog.binlog-index等文件. 当然了,因为InnoDB是可以把脏数据先放在内存里,所以不会立刻表现出来无法写入,除非开启

磁盘空间满了

模拟: seq 500000000 >>/var/log/messages 磁盘空间不足-满了  df -h Filesystem      Size  Used Avail Use% Mounted on /dev/sda3       8.8G  6.1G  2.3G  74% / tmpfs           931M     0  931M   0% /dev/shm /dev/sda1       190M   40M  141M  22% /boot /dev/sdc      

Oracle管理磁盘空间和资源

1.可恢复的空间分配 2.可移动表空间 3.Oracle段收缩功能 4.Oracle数据库资源管理 Reference 1.可恢复的空间分配 1.1 了解可恢复的空间分配 一般情况,我们发出一个大型数据库操作,比如创建大表索引,如果表空间不足,数据库最终会终止操作.而可恢复的空间分配功能可以使得这类操作挂起,等待DBA去处理,等成功处理之后大型数据库操作自动恢复,这样就避免了这类棘手问题,节省了时间. 1.2 配置可恢复的空间分配 相关参数和用法: --参数resumable_timeout s

物理磁盘空间使用已满导致数据库hang起

情况描述 一天公司小张过来咨询,说是数据库查询报错了:乍一看好像是数据库有坏快了,为了排查更加详细的错误信息,决定查看一下告警日志,发现问题所在,原来是数据库的物理磁盘空间满了 Writing to the above trace file is disabled for now on... Tue Jul 29 17:30:32 2014 Non critical error ORA-48181 caught while writing to trace file "/u01/app/orac

关于Ubuntu10.04磁盘空间不足的问题

最近由于项目问题,需要自己写驱动,但是驱动知识太少,开始下了个内核自己玩玩,没想到的是内核下好了,Ubuntu待机后却登录不了了,重启了好几次也不行,而且颜色是蓝色,右上角还提示:Install problem,搞的很蒙,心想用了这么久了,安装会有问题,登不进去的话我里面的程序也就没了,情急之下百度了一下,原来是磁盘空间满了.有两种方式特此总结一下. 结合截图,操作如下: (1)登录界面如上: (2)第一步: 关闭Ubuntu打开设置,配置存储里面IDE控制器为选择Ubuntu10.04.4**

mysql 错误- 磁盘空间不足,

mysql 磁盘空间不足错误 磁盘空间满了, 写不进去了. 141020 09:45:24 mysqld_safe Starting mysqld daemon with databases from /alidata/server/mysql-5.6.20/data 2014-10-20 09:45:24 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults

rm -rf 删除文件后磁盘空间不释放

当一个服务器的磁盘空间满了后,执行rm -rf命令以后,磁盘空间没有被释放可以使用lsof | grep delete命令来查看删除进程,然后kill掉相关的进程以后就可以释放空间了 原文地址:http://blog.51cto.com/11742478/2091817