oracle重做日志

文章目录


重做日志文件

重做日志文件记录对数据所做的所有更改,并提供系统或介质故障的恢复机制

重做日志文件按组组织,一个Oracle数据库至少需要两个组。组中的每个重做日志都称为一个成员,

重做日志文件的组织概念。

重做日志是以组为单位管理。每个数据库至少有两个日志文件组,每组至少包含1个或者多个日志文件成员,且日志文件成员的内容大小一致。(多个成员,内容一致的原因是,在日志文件损坏时,能及时提高备份恢复。

重做日志结构

重做日志的作用

它主要用于在oracle发生故障的时候和数据库备份文件配合恢复数据库。
一般来说,数据库故障丢失数据,有两种情况。

一是,因为停电或死机,脏块未写入磁盘,造成该数据丢失。

二是,磁盘损坏,数据全完蛋。

对应第一种情况,oracle会使用实例恢复,使用重做日志自动恢复数据,不需要用户干预。没错,实例恢复,它是自动的。

对应第二种情况,便需要DBA使用备份,重做日志,归档日志来恢复数据了

查看重做日志

相关数据字典:v$log ; v$logfile。

v$LOG

v$log 记录数据库中有多少个重做日志组,每个组中有多少个成员、日志大小及状态

kotlin 复制代码
select * from v$log;

status -----状态表示的含义。

复制代码
     inactive:表示实例恢复已不再需要这组联机重做日志组了。
     
     active:表示该组是活动的但不是当前组,实例恢复时需要这组日志。
     
     current:表示该组日志是当前组,该联机重做日志组是活动的。
     
     unused:表示该日志组从未写过,是重做日志刚刚添加到状态。

v$logfile

kotlin 复制代码
select * from v$logfile;


status -----状态表示的含义。

复制代码
   空白:表示该文正在使用。
   
   stale:表示该文件中的内容是不完全的。
   
    invalid:表示该文件是不可以被访问的。
    
   deleted:表示该文件已不再有用了

查看数据库目前重做日志的组、组成员等信息,

css 复制代码
select group#,sequence#,members,archived,status from v$log;
--或者
select group#,member from v$logfile;

当前显示有3组重做日志,每组重做日志只有一个成员日志,

新增重做日志

添加重做日志组文件

增加一个日志文件组:alter database add logfile group

go 复制代码
-- 添加重做日志组04
 alter database add logfile group 4 ('E:\APP\ORADATA\ORCL\REDO04.LOG') size 20M;

--增加1个日志文件组,组包含2个日志成员
alter database add logfile group 5 ('E:\APP\ORADATA\ORCL\REDO05a.LOG', 'E:\APP\ORADATA\ORCL\REDO05b.LOGG') size 20M -- 添加组并且同时添加2个日志成员

向原组文件中添加成员日志

css 复制代码
--为日志文件组3增加2个日志成员
alter database add logfile member 'E:\APP\ORADATA\ORCL\REDO03c.LOG' to group 3, 'E:\APP\ORADATA\ORCL\REDO03b.LOG' to group 3;
--为日志文件组3增加1个日志成员
alter database add logfile member 'E:\APP\ORADATA\ORCL\REDO03d.LOG' to group 3;

添加成功后,可进行查询:包含重做日志组的数量以及组中成员日志的数量,日志文件路径等

删除重做日志文件

1、当日志成员出现损坏或丢失时,后台进程LGWR不能将事务变化写入到该日志成员中,在这种情况下应该删除该日志成员;
2、当日志组尺寸不合适时,需要重新建立新日志组,并删除原有的日志组。

删除重做日志是使用ALTER DATABASE语句来完成的:alter database drop logfile

javascript 复制代码
--删除日志成员(日志组中的一个成员日志)
alter database drop logfile member 'C:\oraclexe\app\oracle\fast_recovery_area\XE\ONLINELOG\REDOO3c.LOG';
 
--删除日志组(整个日志组)
alter database drop logfile group 4;
相关推荐
AI-好学者40 分钟前
阶段二-Cypher查询语言详解
数据库·rag·graphrag
龙仔7251 小时前
SQL Server 批量多库只读账号一键脚本(带逐行注释完整脚本 + 分段逐句详细解释)
服务器·数据库·sql·sqlserver·dba
咏方舟【长江支流】2 小时前
【开源】跨语言·跨平台·跨数据库(2) —— 用宝轻量框架设计必读
数据库·架构·开源·ai编程·咏方舟-长江支流·用宝框架
手握风云-2 小时前
Redis:不只是缓存那么简单(十五)
数据库·redis·缓存
weixin_307779132 小时前
Linux下Docker Compose里运行PostgreSQL数据库故障诊断Shell脚本
linux·运维·数据库·docker·postgresql
醉城夜风~2 小时前
MySQL 常用内置函数全解:字符串、数值、日期、流程控制实战教程
数据库·mysql
程序猿秃头之路3 小时前
DDD 系列:实体和值对象详解
数据库·oracle·ddd·领域驱动设计
Database_Cool_3 小时前
阿里云 RDS MySQL vs 腾讯云 CDB 国内云关系型数据库深度对比
数据库·mysql·阿里云
xiaohaiAIgeo3 小时前
【2026年】基于三维建模的实验室智慧管理平台:暖通能源照明的数字孪生方案
大数据·数据库·人工智能·科普知识