1.引入重做日志文件的目的?
为了数据库的恢复(在oracle8i之前的版本中这些数据除了用作恢复之外,别无它用)。
2.什么是重做日志组?
重做日志组是一个逻辑概念,每个重做日志组中至少有一个重做日志成员,要保证oracle数据库正常工作需要至少两个重做日志组。
3.什么是重做日志成员?
即重做日志文件,每个重做日志组中的成员所存的信息完全相同,重做日志文件是联机日志文件,即oracle服务器在运行时需要管理他们。
4.重做日志是怎样工作的?
重做日志写进程(LGRW)在任意时刻只能写一组重做日志组,LGWR将把完全相同的信息从重做日志缓冲区中复制到改组的每个重做日志文件中,它是以循环的方式写重做日志组的,因为是循环写,所以会导致之前日志组中的信息被覆盖,导致数据库不能完全恢复,所以引入了归档日志结构。oracle数据库运行在归档模式下时,当LGWR的写操作从一个重做日志组切换到另一个重做日志组后,归档写进程(ARCH)就会将原来的重做日志文件中的信息复制到归档日志文件中,可以把归档日志文件看成是重做日志文件的备份,oracle服务器保证在归档写进程没有将重做日志文件中的信息复制到归档日志文件中之前,LGWR不能再写这组重做日志文件。
5.如何控制重做日志的切换和检查点的产生?
强制性重做日志组切换:alter system switcj logfile
强制性产生检查点的命令:alter system checkpoint
也可以通过设置fast_start_mttr_target参数方式来强制产生检查点
6.怎样使用数据字典v$log和v$logfile?
select group#,sequence#,members,bytes,status,archived from v$log;
select * from v$logfile;
7.怎样添加和删除一组联机重做日志?
添加:alter database add logfile【group 组号】
(路径)
size (大小);
删除:alter database drop logfile group 组号;
注意:要删除的日志组为当前日志组时不能删除,需进行日志切换。
8.怎样添加和删除联机重做日志成员?
添加:alter database add logfile member
‘路径’to 日志组;
删除:alter database drop logfile member ‘路径’;
注意:不能删除当前组的成员,要删除需进行日志切换。
9.怎样清除重做日志文件?
alter database clear logfile group 组号 用来重新初始化联机重做日志文件。
如果崩溃的重做日志文件已经不能归档,可以在以上的命令中使用unarchived关键字来清除已崩溃的重做日志文件,从而避免对他们进行归档。
alter database clear unarchived logfile group 组号
10.在什么情况下需要清除联机重做日志文件?
有些情况下可能无法使用“将有问题的重做日志组或成员删除掉,之后再重建他们”的方法来进行重做日志的维护或修复。
11.清除联机重做日志文件的副作用是什么?
oracle数据库以前的备份豆浆变为无用,所以接下来应该尽快做一个全备份。
12.怎样利用OMF来管理联机重做日志文件?
用sys或system用户登录后,可以用sql命令修改每个重做日志成员存放的目录,
例如:alter system set db_create_online_log_dest=‘ g:\disk1’;其中文件名由oracle服务器自动生成,大小都为100M。
创建日志组:alter database add logfile;
删除日志组:alter database drop logfile group 组号;
13.OMF管理联机重做日志文件和手工管理之间的差别?
OMF管理下,删除重做日志组后连同改组的成员也一起删除,而手工管理下成员并未删除,需要手动删除。
14.怎样实现联机重做日志的合理配置?
oracle数据库中应该至少需要3个重做日志组,每个重做日志组中应该至少需要2个成员,每个成员的大小应该相同,每个重做日志组的成员个数应该相同。