暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle redo日志运维大全

原创 IT邦德 2021-11-24
1131
作者:IT邦德

中国DBA联盟(ACDU)成员,目前从事DBA及程序编程(Web\java\Python)工作,主要服务于生产制造
现拥有 Oracle 11g  OCP/OCM、Mysql、Oceanbase(OBCA)认证
分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验
B站主播Oracle、Mysql、PG实战课程,请搜索:jeames007

微信:jem_db
QQ交流群:168797397
更多内容请关注B站(搜索jeames007)

1. 作用和特征

作用:数据 recovery 特征:
1)记录数据库中块的变化(DML、DDL)
2)用于数据块的 recover
3)以组的方式管理 redo file,最少两组 redo,循环使用
4)和数据文件存放到不同的磁盘上,需读写速度快的磁盘(比如采用 RAID10)
5)日志的 block 和数据文件的 block 不是一回事

2.日志组
image.png

1)最少两组,最好每组有两个成员(多路复用),并存放到不同的磁盘上,大小形同,互相 镜像
2)日志在组写满时将自动切换
①归档模式:将历史日志连续的进行保存
②非归档:历史日志被覆盖
③切换产生 checkpoint(延迟),通知 dbwn 写脏块 并且更新控制文件
3)在归档模式,日志进行归档,并把相关的信息写入 controlfile

3. 三个重要视图


SQL> select * from v$log;
SQL> select * from v$logfile;
SQL> select * from v$archived_log; (归档模式下查看)
【开归档】
SYS@PROD>shutdown immediate;
SYS@PROD>startup mount;
SYS@PROD>alter database archivelog;
SYS@PROD>alter database open;
THREAD#: 线程在单实例的环境下,thread# 永远是 1
SEQUENCE# :日志序列号。在日志切换时会递增
FIRST_CHANGE# :在每个日志组对应一个 sequence 号,其中首条日志条目的第一个的 scn

【日志组的状态】

SYS@PROD> select group#,sequence#,status from v$log;

STATUS 列有四种状态:
unused: 新添加的日志组,还没有使用
inactive 日志组对应的脏块已经从 data buffer 写入到 data file,可以覆盖
active: 日志组对应的脏块还没有完全从 data buffer 写入到 data file,含有实例恢复需要的信息,不能被覆盖
current: 当前日志组对应的脏块还没有全部从 data buffer 写入到 data file,含有实例恢 复需要的信息,不能被覆盖

4.添加日志组和成员
4.1 增加一个日志组

SYS@PROD>select group#,sequence#,bytes/1024/1024 M,archived,status from v$log;
SYS@PROD>select * from v$logfile;
添加日志组操作:
SYS@PROD>alter database add logfile group 4 '/u01/app/oracle/oradata/PROD/redo04.log' size 50m;
4.2 添加日志组的成员
为每个组增加一个 member(一共是 4 个组)
先建好目录,准备放在/u01/app/oracle/oradata/PROD/disk2 下
[oracle@enmoedu1~]$ mkdir /u01/app/oracle/oradata/PROD/disk2
SYS@PROD>alter database add logfile member
'/u01/app/oracle/oradata/PROD/disk2/redo01.log' to group 1,
'/u01/app/oracle/oradata/PROD/disk2/redo02.log' to group 2,
'/u01/app/oracle/oradata/PROD/disk2/redo03.log' to group 3,
'/u01/app/oracle/oradata/PROD/disk2/redo04.log' to group 4;
SYS@PROD>select * from v$logfile;

image.png

5.clear 日志组

Inactive 日志组可以删除或清空
SYS@PROD>select group#,status,archived from v$log;
SYS@PROD>alter database clear logfile group 5;
SYS@PROD>select group#,status,archived from v$log;
注:clear 相当于新建

6.删除日志组

SYS@PROD>alter database drop logfile group 5;
SYS@PROD>select group#,status,archived from v$log;
drop logfile group 不会删磁盘上文件,删除物理文件需要 rm
[oracle@enmoedu1 PROD]$ rm redo05.log
[oracle@enmoedu1 PROD]$ rm disk2/redo05.log

本次分享到此结束啦~

如果觉得文章对你有帮助,点赞、收藏、关注、评论
你的支持就是我创作最大的动力。

❤️ 技术交流可以 关注公众号:IT邦德 ❤️

微信:jem_db
QQ交流群:168797397
更多内容请关注B站看直播(搜索jeames007)

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论