
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会将相同的内容同时写入同一个日志组的多个成员;
日志文件与日志成员是一回事。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)