最近系统一旦进行大量的插入数据操作,就会导致索引失效,经过检查异常日志发现是异常redo组空间太小,导致切换太频繁,并且数据来不及写入,遂进行了redo增加大小的操作。具体过程记录如下。
--0、数据库redo文件状态说明
/*
inactive:非活动状态,可被删除
current:当前正在被使用
active:活动的非当前日志,该日志可能已经完成归档,也可能没有归档,活动的日志文件在crash恢复时会被用到
unused:日志从未被使用
*/
--1、查询数据库异常日志文件位置
show parameter background_dump_dest;
--检查日志发现:redo日志文件切换太频繁,
--2、查看日志切换时间:
select sequence#,
first_time,
nexttime,
round(((first_time - nexttime) * 24) * 60, 2) diff
from (select sequence#,
first_time,
lag(first_time) over(order by sequence#) nexttime
from v$log_history
where thread# = 1
and to_char(first_time, 'yyyy-mm-dd') = '2022-05-24')
order by sequence# desc;
--3、每天日志切换数量 --如果数值过大代表redo切换频率过高,需要扩展redo空间,正常来讲REDO日志每小时切换3次左右为最佳
select to_char(first_time, 'yyyy-mm-dd') day1, count(*)
from v$log_history
where first_time >= to_date('2022-05-24', 'yyyy-mm-dd')
group by to_char(first_time, 'yyyy-mm-dd')
order by day1;
--4、查询默认redo表空间大小,以及状态:
select group#,bytes/1024/1024 MB ,status from v$log;
--5、查询redo表空间存放位置:
select * from v$logfile;
--6、增加redo表空间--本文中增加2G*3组
alter database add logfile group 4 ('D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\ORCL\REDO04.log') size 2048M;
alter database add logfile group 5 ('D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\ORCL\REDO05.log') size 2048M;
alter database add logfile group 6 ('D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\ORCL\REDO06.log') size 2048M;
--7、再次查询默认redo表空间大小,以及状态
select group#,bytes/1024/1024 MB ,status from v$log
--8、手动切换日志组,重复执行第7个语句,直至要删除的redo状态变为inactive后 执行9
alter system switch logfile;
--9、删除目标日志组(inactive状态才能被删除),之后进入文件夹备份删除物理日志文件。
alter database drop logfile group 1;--1 代表要删除的日志组号
备注:对group组号有强迫的朋友可以通过以上的步骤再将group 4,5,6 切换成 group 1,2,3 !!!