12.Oracle Redo重做日志管理
文章目录
- 前言
- 一、Oracle为何引入重做日志
- 二、读取重做日志文件信息
- 三、判断是否归档
- 3.1.设置数据库归档模式
- 四、重做日志组及其管理
- 1.添加一个重做日志组
- 2.查询当前重做日志组的使用情况
- 3.删除联机重做日志组
- 五、重做日志成员及维护
- 1.向重做日志组1、2、3添加一个重做日志成员
- 2.验证日志组的成员数结果
- 3.验证添加的重做日志组以及对应成员信息
- 4.删除联机重做日志成员
- 六、重设联机重做日志的大小
- 1.查询当前的重做日志组信息
- 2.查看日志组成员信息
- 3.删除该日志组
- 4.重建重做日志组2并修改重做日志文件的大小
- 5.清除联机重做日志
- 6.日志切换和检查点事件
- 7.发生检查点
前言
一、Oracle为何引入重做日志
oracle引入重做日志的原因是进行数据恢复。
数据库高速缓冲区中的数据达到一定的量,或者满足一定条件时,DBWR进程才会将变化了的数据提交到数据库中。
重做日志就是把用户变化了的数据首先保存起来,其中LGWR进程负责把用户更改的数据写到重做日志文件中。
每个重做日志的成员的内容是相同的。
二、读取重做日志文件信息
v$log视图记录了当前数据库的日志组号,日志序列号,每个日志文件的大小,以字节为单位,每个日志组的成员数量,以及日志组的当前状态。
SQL> SELECT t.group#, sequence#, bytes, members, archived, status FROM v$log t;GROUP# SEQUENCE# BYTES MEMBERS ARC STATUS
---------- ---------- ---------- ---------- --- ----------------1 10 524288000 1 YES INACTIVE2 11 524288000 1 YES INACTIVE3 12 524288000 1 NO CURRENTSQL>
v$logfile视图记录了当前日志组号、该日志组的状态、类型和日志组成员信息。
SQL> SELECT group#, status, TYPE, MEMBER FROM v$logfile;GROUP# STATUS TYPE MEMBER
---------- ------- ------- --------------------------------------------------------------------------------3 ONLINE /oradata01/mlbdb1/redo03.log2 ONLINE /oradata01/mlbdb1/redo02.log1 ONLINE /oradata01/mlbdb1/redo01.log1 INVALID ONLINE /oradata01/mlbdb1/redo01_b.log2 INVALID ONLINE /oradata01/mlbdb1/redo02_b.log3 INVALID ONLINE /oradata01/mlbdb1/redo03_b.log6 rows selectedstatus参数的含义:
stale:说明该文件内容为不完整的。
空白:说明该日志组正在使用。
INVALID:表示该文件不能被访问。
DELETED:表示该文件已经不在使用。
三、判断是否归档
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /archlog/mlbdb1
Oldest online log sequence 10
Next log sequence to archive 12
Current log sequence 12
SQL>
3.1.设置数据库归档模式
(1)关闭数据库
shutdown immediate;(2)启动到mount
startup mount;(3)修改归档
alter database archivelog;(4)查看是否归档
archive log list;SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /archlog/mlbdb1
Oldest online log sequence 10
Next log sequence to archive 12
Current log sequence 12
SQL> (5)将数据库打开
alter database open;(6)归档默认存储位置
show parameter db_recovery_file_dest;
SQL> show parameter db_recovery_file_dest;NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /oracle/fast_recovery_area
db_recovery_file_dest_size big integer 2000M
SQL> (7)修改归档默认存储位置
SQL> alter system set log_archive_dest_1='location=/archlog/mlbdb1' scope=spfile;
SQL> alter system set log_archive_format='mlbdb1_%t_%s_%r.dbf' scope=spfile;
四、重做日志组及其管理
1.添加一个重做日志组
第一种方法:
SQL> alter database add logfile group 4 ('/oradata01/mlbdb1/redo04.log','/oradata01/mlbdb1/redo04_b.log') size 500M;
Database altered.第二种方法:
SQL> alter database add logfile ('/oradata01/mlbdb1/redo05.log','/oradata01/mlbdb1/redo05_b.log') size 500M;
Database altered.验证是否添加成功
select * from v$logfile;
2.查询当前重做日志组的使用情况
SQL> SELECT t.group#,sequence#,bytes,members,archived,status FROM v$log t;GROUP# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS
---------- ---------- ---------- ---------- -------- ----------------1 10 524288000 2 YES INACTIVE2 11 524288000 2 YES INACTIVE3 12 524288000 2 NO CURRENT4 0 524288000 2 YES UNUSED5 0 524288000 2 YES UNUSED
3.删除联机重做日志组
SQL> alter database drop logfile group 4,group 5;
Database altered.SQL> SELECT t.group#,sequence#,bytes,members,archived,status FROM v$log t;GROUP# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS
---------- ---------- ---------- ---------- -------- ----------------1 10 524288000 2 YES INACTIVE2 11 524288000 2 YES INACTIVE3 12 524288000 2 NO CURRENTselect * from v$logfile;
SQL> col MEMBER format a30
SQL> select * from v$logfile;GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE
---------- ------- ------- ------------------------------ ---------------------3 ONLINE /oradata01/mlbdb1/redo03.log NO2 ONLINE /oradata01/mlbdb1/redo02.log NO1 ONLINE /oradata01/mlbdb1/redo01.log NO1 INVALID ONLINE /oradata01/mlbdb1/redo01_b.log NO2 INVALID ONLINE /oradata01/mlbdb1/redo02_b.log NO3 INVALID ONLINE /oradata01/mlbdb1/redo03_b.log NO注意:日志文件必须手工删除
rm -rf /oradata01/mlbdb1/redo04.log
rm -rf /oradata01/mlbdb1/redo04_b.log
rm -rf /oradata01/mlbdb1/redo05.log
rm -rf /oradata01/mlbdb1/redo05_b.log
五、重做日志成员及维护
1.向重做日志组1、2、3添加一个重做日志成员
alter database add logfile member
'/oradata01/mlbdb1/redo03_c.log' to group 3,
'/oradata01/mlbdb1/redo02_c.log' to group 2,
'/oradata01/mlbdb1/redo01_c.log' to group 1;
2.验证日志组的成员数结果
SQL> select group#,sequence#,bytes,members,archived,status from v$log;GROUP# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS
---------- ---------- ---------- ---------- -------- ----------------1 10 524288000 3 YES INACTIVE2 11 524288000 3 YES INACTIVE3 12 524288000 3 NO CURRENT
3.验证添加的重做日志组以及对应成员信息
SQL> select * from v$logfile;GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE
---------- ------- ------- ------------------------------ ---------------------3 ONLINE /oradata01/mlbdb1/redo03.log NO2 ONLINE /oradata01/mlbdb1/redo02.log NO1 ONLINE /oradata01/mlbdb1/redo01.log NO1 INVALID ONLINE /oradata01/mlbdb1/redo01_b.log NO2 INVALID ONLINE /oradata01/mlbdb1/redo02_b.log NO3 INVALID ONLINE /oradata01/mlbdb1/redo03_b.log NO3 INVALID ONLINE /oradata01/mlbdb1/redo03_c.log NO2 INVALID ONLINE /oradata01/mlbdb1/redo02_c.log NO1 INVALID ONLINE /oradata01/mlbdb1/redo01_c.log NO9 rows selected
4.删除联机重做日志成员
删除日志组中的一个日志成员
alter database drop logfile member '/oradata01/mlbdb1/redo01_c.log';验证是否删除成功
SQL> select * from v$logfile where group#=1;GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE
---------- ------- ------- ------------------------------ ---------------------1 ONLINE /oradata01/mlbdb1/redo01.log NO1 INVALID ONLINE /oradata01/mlbdb1/redo01_b.log NO删除日志成员的限制:
1.如果要删除的日志成员是重做日志组最后一个有效的成员,则不能删除,如该日志组中只有一个日志成员。
2.如果该日志组当前正在使用,在日志切换前不能删该组中的成员。
3.如果数据库正在运行在ARCHIVELOG模式,并且要删除的日志成员所属的日志组没有被归档,该组中的日志成员不能被删除。
六、重设联机重做日志的大小
1.查询当前的重做日志组信息
select group#, sequence#, bytes / 1024 / 1024, members, status from v$log;
2.查看日志组成员信息
select * from v$logfile;
3.删除该日志组
alter database drop logfile group 2;
alter system switch logfile;
select group#,sequence#,bytes,members,status from v$log;
alter database checkpoit;
select group#,sequence#,bytes,members,status from v$log;
4.重建重做日志组2并修改重做日志文件的大小
alter database add logfile group 2
('/oradata01/mlbdb1/redo01_a.log','/oradata01/mlbdb1/redo01_b.log'
) size 1024m;
验证是否添加成功,以及日志成员的大小
select group#,sequence#,bytes,members,status from v$log;
5.清除联机重做日志
alter database clear logfile group n;
6.日志切换和检查点事件
alter system switch logfile;
就会触发日志切换。如果处于归档模式,则在将当前写满的日志组归档完成前,不会使用新的重做日志组。
7.发生检查点
alter system checkpoint; 检查点是ORACLE为了减少数据库实例恢复时间而设置得一个事件,当该事件发生时,
LGWR进程将重做日志缓冲区中的数据写入重做日志文件中,
而同时通知DBWR进程将数据库高速缓存中的已经提交的数据写入数据文件,
所以检查点事件越频繁,则用于数据库恢复的重做数据就越少。
检查点事件也修改数据文件头信息和控制文件信息,以记录检查点的SCN。
12.Oracle Redo重做日志管理相关推荐
- oracle redo重做,oracle redo 重做日志文件
以下易容翻译自oracle dba官方文档,不足之处还望指出. 管理重做日志文件 学习目标: 1.解释重做日志文件的目的 2.描述重做日志文件的结构 3.学会控制日志切换与检查点 4.多元化管理重做日 ...
- Oracle学习笔记:redo重做日志
redo重做日志对于oracle来说犹如 肝脏 那么重要,是oracle机能中的排毒恢复健康的重要部件!! 相关的基本概念: 1.scn 2.日志序列号 3.日志组 和 日志 成员,尤其是日志文件的尺 ...
- Script:列出Oracle每小时的redo重做日志产生量
以下脚本可以用于列出最近Oracle数据库每小时估算的redo重做日志产生量,因为估算数据来源于archivelog的产生量和大小,所以数据是近似值,可供参考: WITH times AS(SELEC ...
- oracle重做日志教程,Oracle重做日志管理
Oracle重做日志操作是为了记录数据的改变,提供数据库的恢复,下面就为您介绍重做日志的运行流程,希望对您能够有所帮助. 一.ORACLE引入重做日志目的:记录数据的改变,提供数据库的恢复. 1.日志 ...
- Oracle 联机重做日志文件(ONLINE LOG FILE)
--========================================= -- Oracle 联机重做日志文件(ONLINE LOG FILE) --================== ...
- oracle重做日志详解,Oracle的重做日志
Archive Redo log files--归档重做日志,简称归档日志,指当条件满足时,Oracle将在线重做日志以文件形式保存到硬盘(持久化). 重做日志的简单原理:在数据更新操作commit前 ...
- oracle的redolog停止,Oracle Redo Log日志故障处理一则
Oracle Redo Log日志故障处理一则 某日oracle服务器异常重启,当重启oracle数据时,发现redo log文件被损坏, 且这个日志文件是current状态的,导致数据库无法打开; ...
- oracle redo重做,重做日志文件(redo log)
重做日志文件 redo log file对于oracle数据库至关重要.它们是数据库的事务日志.通常只用于恢复,也可用于以下工作. 1.1系统崩溃后的实例恢复 1.2通过备份恢复数据文件之后恢复介质 ...
- Oracle的重做日志
Oracle数据库在运行当中,用户更改的数据首先会存放在数据库高速缓冲区当中,为了提升磁盘读写,oracle机制不会频繁的将缓冲区的数据写到磁盘,而是等到检查点或者数据高速缓冲区达到一定数量时才会写入 ...
最新文章
- 万豪酒店数据库遭入侵 5亿顾客信息或泄露
- 【Android 插件化】恶意软件判定规则 | 恶意软件的范围定义
- 【转】asp.net中的WebApplication(web应用程序)和WebSite(网站)
- Solution for Lead OPA test error ( add button clicked after cancel button )
- Windows 10 版本 21H2 正式发布
- 高效程序员应该养成的七个习惯
- 牛客16464 神奇的幻方
- CCF NOI1004 填充矩形
- 参数中带有“”符号问题
- 在 github 新建一个文件夹
- 关于兰伯特投影得应用问题
- 谷歌输入法linux下载官网下载软件,linux下安装谷歌拼音输入法
- java中静态数组和动态数组的定义
- 决定人生的三种成本:机会成本,沉没成本,边际成本
- [转载]快速提高你修养的100句话,值得你珍藏
- 【其他笔记】 双屏显示分辨率低下、屏幕闪烁、暗沉等问题。
- linux ubuntu 22.04卸载firefox火狐浏览器正确方式
- PostGIS搭建、空间数据库创建
- html5 连接wifi,aWiFi是什么?
- Java面试题总结2020