如何调整Oracle Redo Logfile日志文件的大小

如何调整Oracle Redo Logfile日志文件的大小,第1张

第一步,查看当前日志

select a.group#,a.bytes/1024/1024||'M' log_size,a.status,b.member from v$log a

left join v$logfile b on A.GROUP#=b.group#

第二步,删除原有日志

注意事项:

a. 日志的当前状态必须是inactive的才可以删除,active状态说明日志中的记录还没有被同步到数据文件中,这个需要等待一定时间之后才会变成inactive状态;current状态是当前正在写的日志,也不能删除。

b. 日志组的数量不能低于2组。

删除日志命令:

如果当前只有group 2是inactive,所以只能删除group 2,使用以下删除命令:

alter database drop logfile group 2

当只剩下两组日志时,因为日志组不能低于2组,所以不能再删除,只能添加日志组之后再删除。

c. 执行删除之后该日志的物理文件还是存在的,可以删除,但是这个动作很危险,需要小心。

也可以不删除,如果再行创建的日志文件和原来的日志文件名称相同,可以在增加日志组(或者日志组成员)的命令中添加一个reuse选项。

第三步,添加新的日志

可以使用批量命令:

alterdatabaseaddlogfile group4'/data/log/REDO_LOG04.log'size 500M,

group5'/data/log/REDO_LOG05.log'size 500M,

group6'/data/log/REDO_LOG06.log'size 500M

当日志状态为active的时候,我们要改变它的大小,但是又无法删除,我们需要使用命令:

altersystemswitchlogfile改变current log

改变之后,currentlog变成第2组日志,第1组日志状态为active,再等待一定时间其状态变为inactive的时候就可以删除了。

如果日志组1的状态长时间不改变,可以执行手动生成检查点命令:altersystemcheckpoint

首先我们来说一下Oracle redo的作用:

Oracle通过Redo来保证数据库的事务可以被重演,从而使得在故障之后,数据可以被恢复。Redo对于Oracle数据库来说至关重要!至关重要!至关重要!(重要的事情说三遍!!!)

问题一:为什么最少是两个。

为了保障redo log 的冗余性,那么一个redo log group内,至少有两个成员文件,且这两个成员文件最好存放在不同的物理盘上。那么在oracle 日志条目过来的时候,会分别同时向两个文件写入。如果其中一个文件发生损坏,那么不必着急,咱们还有另一个一模一样的文件。这样就可以很好的保护redo log了。

例如:主机上有两块硬盘/disk1 , /disk2 ,成员文件最好分别落在这两个盘上。

问题二:或者是建议多个.

这是一个平衡的问题,如果一个redo group存在多个成员文件,那么oracle 日志条目过来的时候,会分别同时向n个文件进行写入,这样固然更加的安全,但如果成员文件过多会导致磁盘I/O的压力,对数据库性能带来瓶颈。

所以日志组内配置多少个冗余余文件需要权衡哦。但至少是两个,两个也基本是大多数数据库的配置方式了。

Oracle使用多个重做日志组来管理重做日志,这些重做日志组循环使用;

每个日志组至少包含一个日志成员,保险起见,建议每个日志组包含两个以上成员,每个日志成员位于不同的磁盘上,写入日志时Oracle会将相同的内容同时写入同一个日志组的多个成员;

日志文件与日志成员是一回事。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11287829.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存