ORACLE重做日志文件基础知识

注:对重做日志文件的操作都需要以sys或者system用户登陆
1、引入重做日志的目的

为了数据库的恢复

2、什么是重做日志组

重做日志组是逻辑上的概念,由重做日志文件组成的。要保证oracle数据库正常工作,至少需要2个重做日志组,多数oracle版本默认3个重做日志组

3、什么是重做日志成员
重做日志组中的每个重做日志文件叫做重做日志成员。oracle默认每个重做日志组只有一个成员,但是oracle建议每个重做日志组至少有2个成员,且最好放在不同物理磁盘上,以防止重做日志成员文件的物理错误,许多数据库的每个重做日志做有3个成员。

4、重做日志怎样工作
重做日志写进程(LGWR)在任意时刻只能写一组重做日志组,LGWR后台进程正在写的重做日志组叫做当前重做日志组。
LGWR将完全相同的信息从重做日志缓冲区复制到改组的每个重做日志文件中。LGWR是以循环的方式写重做日志组的,当写满一个重做日志组时,就会开始写下一组重做日志,这称为日志切换,当写满最后一组时,LGWR又开始写第一组重做日志。
如果数据库运行在归档模式下(oracle默认为非归档模式),当LGWR的写操作从一个重做日志组切换到下一个重做日志组后,归档写进程(ARCH/ARCH0)就会将原来的重做日志文件中的信息复制到归档日志文件中。oracle服务器保证在归档写进程没有将重做日志文件中的信息复制到归档日志文件中之前,LGWR进程不能再写这组重做日志。

5、如何控制重做日志的切换和检查点的产生
(1)alter system switch logfile;--强制产生重做日志切换
(2)alter system checkpoint;--强制产生检查点

还可以通过设置fast_start_mttr_target参数来强制产生检查点,参数值的单位是秒,该参数的含义是:实例恢复时间不会超过多少秒


6、怎样使用数据字典v$log和v$logfile

(1)select * from v$log;--获取数据库中有多少个重做日志组,每组有多少个成员、成员大小和状态等信息
    select group#,sequence#,members,bytes,status,archived from  v$log;
重做日志组各状态的含义:
inactive:表示实例恢复已不再需要这组联机重做日志组了
active:表示这组联机重做日志组是活动的,在实例恢复时需要这组联机重做日志组,如这组重做日志组正在归档
current:表示这组联机重做日志组为当前组,也隐含该联机重做日志组是活动的
unused:表示orcle从来没有写过这组联机重做日志组,这是重做日志组刚添加到数据库中的状态

(2)select * from v$logfile;--获取数据库中每个重做日志组中每个成员所在目录、文件名及他们的状态等信息
    col member for a45;--格式化输出
    select * from group#,status,type,member from v$logfile;
重做日志成员各状态含义
空白:表示该文件正在被使用
stale:表示该文件的内容是不完全的
invalid:表示该文件不可以被访问
delted:表示该文件已不再有用了

7、怎样添加和删除一组联机重做日志
(1)alter database add logfile group 3('F:\DISK3\REDO04A.LOG','F:\DISK3\REDO04B.LOG','F:\DISK3\REDO04C.LOG') 
size 15M;--指定要添加的重做日志组
(2)alter database add logfile ('F:\DISK3\REDO04A.LOG','F:\DISK3\REDO04B.LOG','F:\DISK3\REDO04C.LOG') 
size 15M;--由系统自动在最大组号上加1来产生新的组号
(3)alter database drop logfile group 3;--删除重做日志组
当前的(current)和活动的(active)重做日志组是不能被删除的,方法有2个:
a、若要删除先切换重做日志组,然后删除
b、先关闭数据库,再开启数据库,之后就可以轻松删除这些成员了
但是重做日志所对应的操作系统文件不会被删除,需要找到这些文件用操作系统命令或工具将他们从操作系统中彻底删除

8、怎样添加和删除联机重做日志成员
(1)alter database add logfile member
'F:\DISK3\REDO01D.LOG' to group 1,
'F:\DISK3\REDO02D.LOG' to group 2,
'F:\DISK3\REDO03D.LOG' to group 3;--向三组重做日志组分别增加一个重做日志成员,大小与原成员大小相同
(2)alter database drop logfile member 'F:\DISK3\REDO01D.LOG';--删除重做日志成员
9、怎样清除联机重做日志文件
(1)alter database clear logfile group 组号;--初始化重做日志文件
(2)alter database clear unarchived logfile group 组号;--清除重做日志文件并且避免对重做日志进行归档
10、什么情况下需要清除联机重做日志文件
在无法使用将重做日志组或成员删掉再重建的方式来维护或修复重做日志的情况下,如:
(1)数据库中只有两个重做日志组
(2)崩溃的重做日志组为当前组
这种情况下,如果数据库时开启的,由于一个联机重做日志文件的崩溃使得归档活动不能继续进行,最终会导致数据库的挂起,这时候就需要清除联机重做日志文件

11、清除联机重做日志文件的副作用是什么
有安全隐患,因为当oracle执行了清除重做日志文件的命令后,oracle数据库以前的备份都将变为无用,所以接下来应该尽快做一个全备份,清除联机重做日志文件的命令应该作为最后的选择来执行。

12、怎样利用OFM(ORACLE文件管理)来管理联机重做日志文件
alter system set DB_CREATE_ONLINE_LOG_DEST_1='J:\DISK3';
alter system set DB_CREATE_ONLINE_LOG_DEST_2='J:\DISK6';
alter system set DB_CREATE_ONLINE_LOG_DEST_3='J:\DISK9';
oracle自动管理文件的方法是通过设定DB_CREATE_ONLINE_LOG_DEST_N来设定默认的重做日志文件和控制文件的位置,N最多为5,最多可以定义5个目录,文件名都由orcle服务器自动生成,大小都为100M。
alter database add logfile;--会生成一组重做日志组,有3个成员,大小均为100M,文件名由oracle服务器自动生成
alter database drop group 3;--删除一组重做日志组
13、OMF管理重做日志文件和手工管理之间的差别
(1)添加重做日志文件:手工方式添加重做日志文件需要自己定义文件名和文件位置以及重做日志组中成员的个数,OMF方式会自动将重做日志文件放在默认的位置,自动定义文件个数、大小以及文件名称

(2)删除重做日志文件:手工方式删除重做日志文件,不能删除对应的操作系统文件;OMF方式删除重做日志文件会同时删除对应的操作系统文件

14、怎样实现联机重做日志的合理配置
(1)每个联机重做日志组应当至少有2个成员,多数为3个成员
(2)多数oracle版本默认为3个重做日志组,应当再1-2个重做日志组,以方便数据库的维护和管理
(3)重做日志的配置应当是一个逐步调整的过程,报警文件(所有重做日志的问题都会记录在报警文件中)和LGWR的追踪文件为获取合理配置联机重做日志的重要信息来源。在数据库中日志文件是被频繁操作的文件,计算机操作的文件越大,系统效率就越低,为了确保系统的效率,日志文件应当尽量小,但如果联机重做日志文件的切换过于频繁,则应当增加重做日志文件的大小;如果检查点不能及时完成或某个联机重做日志组不能被及时归档而导致LGWR频繁等待,则应当添加重做日志组的个数。
(4)同一个数据库中的每个联机重做日志组中的成员个数可以不一样,但是不建议不一样,应该相同
(5)同一个数据库中的不同联机重做日志组中的成员大小可以不一样,但是不建议,每个联机重做日志组中的成员大小应当一样,以便于维护。

猜你喜欢

转载自blog.csdn.net/cc_0101/article/details/80433857
今日推荐