Oracle Redo 以及 Archived日志简述

Oracle通过Redo Archived实现数据的归档

什么是Redo日志

Redo日志记录了数据的变更,用于在数据库出现故障后,进行数据恢复。

功能主要由三个组件实现:Redo Log Buffer、LGWR后台进程、Redo Log File。

Redo Log Buffer是Oracle共享内存中的一段空间,记录了数据库的变更历史,包括:insert,update,delete,create,alter,drop等。

过程:

  • 用户内存中的记录 --复制--> SGA中的Redo Log Buffer。
  • Redo Log Buffer --LGWR写入--> Redo Log File中

当用户积累了一定量的操作后,才会定期的导入到磁盘。

Redo Log Buffer是循环利用的。Redo Log File也是循环利用的。

Redo Log File通过用户组重用日志,可以通过命令查询:

select group#,members,status from v$log;

一般来说默认oracle会有3个日志组,每次往一个日志文件里面顺序写,如果写满;则会切换日志文件,继续写。

什么是Archived日志

Archived日志也叫作归档日志,是数据库运行在归档模式下的产物。

可以通过命令查看,数据库是否运行在归档模式下:

select log_mode from v$database;

归档模式与非归档模式的区别:

  • 归档模式,就是当redo日志写满后,是否把该日志内容拷贝到归档日志进行统一的存储,避免下次写入的时候覆盖。
  • 非归档模式,即不适用归档模式,当日志写满后,直接切换日志,而不做任何的备份。下次轮到写入该文件时,文件的内容将会被覆盖。

如何查看归档日志

Oracle的归档日志以及重做日志都是二进制文件,外部是无法打开的。Oracle提供了一个叫做LogMiner的工具,可以查看日志的内容。

LogMiner其实是Oracle自带的PLSQL包,大致过程如下:

  • 首先把分析的日志加进去
  • 启动logminer
  • 在动态视图v$logmnr_contens中查询信息
-- 查询归档日志的路径
select * from v$archived_log;
-- 查询重做日志的路径
select * from v$logfile;

-- 通过LogMiner工具把日志中的数据提取出来
begin
  sys.dbms_logmnr.add_logfile(LogFileName => 'D:\APP\XING.HL\ORADATA\ORCL\REDO03.LOG', Options => sys.dbms_logmnr.NEW );
end;

begin
  sys.dbms_logmnr.start_logmnr(Options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);
end;

-- 查询视图中的重做日志
select * from v$logmnr_contents;
posted @   xingoo  阅读(4984)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示