百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

ORACLE体系 - 4(oracle体系架构)

sinye56 2024-10-09 19:52 4 浏览 0 评论

【四】redo 日志

4.1作用和特征

作用:数据recovery

特征:

1)记录数据库的变化(DML、DDL)

2)用于数据块的recover

3)以组的方式管理redo file,最少两组redo,循环使用

4)和数据文件存放到不同的磁盘上,需读写速度快的磁盘(比如采用RAID10)

5)日志的block和数据文件的block不是一回事

SQL>select max(lebsz) from x$kccle;
MAX(LEBSZ)
-------------------
512

4.2日志组及切换

1)最少两组,最好每组有两个成员(多路复用),并存放到不同的磁盘(不同路径)上,大小相同,互相镜像;

2)日志在组写满时将自动切换;

①归档模式:将历史日志连续进行保存

②非归档:历史日志被覆盖

③切换产生checkpoint(考虑性能有延迟),通知dbwn写脏块并且更新控制文件

3)在归档模式,日志进行归档,并把相关的信息写入controlfile。

4.3 添加日志组和成员

1)三个重要视图

SQL> select * from v$log;
SQL> select * from v$logfile;
SQL> select name,sequence# from v$archived_log;

2)增加一个组group4

SQL> alter database add logfile group 4 '/u01/oradata/prod/redo04.log' size 50m;

3)添加日志组的成员

为每个组增加一个member(一共是4个组)

先建好目录,准备放在/u01/disk2/prod/下:

[oracle@cuug ~]$ mkdir -p /u01/disk2/prod
SQL>alter database add logfile member
'/u01/disk2/prod/redo01b.log' to group 1,
'/u01/disk2/prod/redo02b.log' to group 2,
'/u01/disk2/prod/redo03b.log' to group 3,
'/u01/disk2/prod/redo04b.log' to group 4;

STATUS是INVALID,说明member还没有同步好。

SQL> alter system switch logfile;

注意:至少做4次切换,消除invalid,这步很必要。

4.4 v$log视图的状态

STATUS列有四种状态:

①unused: 新添加的日志组,还没有使用

②inactive 日志组对应的脏块已经从data buffer写入到data file,可以覆盖

③active: 日志组对应的脏块还没有完全从data buffer写入到data file,含有实例恢复需要的信息,不能被覆盖

④current: 当前日志组对应的脏块还没有全部从data buffer写入到data file,含有实例恢复需要的信息,不能被覆盖

THREAD: 线程在单实例的环境下,thread# 永远是1

SEQUENCE# 日志序列号,在日志切换时会递增

FIRST_CHANGE# 在每个日志组对应一个sequence号,其中首条日志条目的第一个的SCN。

4.5日志恢复

4.5.1 inactive日志组损坏

假如日志组4损坏,状态inactive,解决很简单,重建日志组即可:

SQL> alter database clear logfile group 4;

这里clear的意思是重建group4的文件。

4.5.2 current日志组丢失

本例日志组1状态是CURRENT状态的,现在模拟当前日志组损坏:

[oracle@prod]$ rm /u01/oradata/prod/redo01.log
[oracle@prod]$ rm /u01/disk2/prod/redo01b.log
SQL> alter system switch logfile; 切换几次,触动它一下。

告警日志会记录有关信息,暂时好像没有什么问题发生,继续切换,当current 又转会到group1时,session死!

当前日志损坏的问题比较复杂,可以分以下几种情况讨论:

1)数据库没有崩溃

第一步,可以做一个完全检查点,将db buffer中的所有dirty buffer全部刷新到磁盘上。

SQL> alter system checkpoint;

第二步,尝试数据库在打开状态下进行不做归档的强制清除。

SQL> alter database clear unarchived logfile group n;

数据库此时为打开状态,这步若能成功,一定要做一个新的数据库全备,因为当前日志无法归档,归档日志sequence已无法保持连续性,全备的目的就是甩掉之前的归档日志。

2)数据库已经崩溃,只能做传统的基于日志的不完全恢复或使用闪回数据库。

SQL> recover database until cancel;
SQL> alter database open resetlogs;

3)如果之前没有可用的备份,或问题严重到任何方法都不能resetlogs打开数据库,为了抢救数据,考虑最后一招使用Oracle的隐含参数:_allow_resetlogs_corruption = TRUE

Oracle不推荐使用这个隐含参数,该参数的含义是:允许数据库在不致性的情况下强制打开数据库,在不一致状态下强行打开了数据库后,建议做一个逻辑全备。

4.5.3 active日志组损坏

做检查点切换,如成功,按照inactive损坏处理,否则,按current损坏处理。

4.6 使日志恢复到原来的配置

1)删除日志组

SQL> alter database drop logfile group 4; 状态是current和active的组不能删除

2)删除成员

SQL> alter database drop logfile member '/u01/disk2/prod/redo01b.log'; 状态是current组不能删除成员,需要切换一下。

3)清理物理日志文件【删除物理文件需要rm】



the end !!!

@jackman 共筑美好!

相关推荐

Linux基础知识之修改root用户密码

现象:Linux修改密码出现:Authenticationtokenmanipulationerror。故障解决办法:进入单用户,执行pwconv,再执行passwdroot。...

Linux如何修改远程访问端口

对于Linux服务器而言,其默认的远程访问端口为22。但是,出于安全方面的考虑,一般都会修改该端口。下面我来简答介绍一下如何修改Linux服务器默认的远程访问端口。对于默认端口而言,其相关的配置位于/...

如何批量更改文件的权限

如果你发觉一个目录结构下的大量文件权限(读、写、可执行)很乱时,可以执行以下两个命令批量修正:批量修改文件夹的权限chmod755-Rdir_name批量修改文件的权限finddir_nam...

CentOS「linux」学习笔记10:修改文件和目录权限

?linux基础操作:主要介绍了修改文件和目录的权限及chown和chgrp高级用法6.chmod修改权限1:字母方式[修改文件或目录的权限]u代表所属者,g代表所属组,o代表其他组的用户,a代表所有...

Linux下更改串口的权限

问题描述我在Ubuntu中使用ArduinoIDE,并且遇到串口问题。它过去一直有效,但由于可能不必要的原因,我觉得有必要将一些文件的所有权从root所有权更改为我的用户所有权。...

Linux chown命令:修改文件和目录的所有者和所属组

chown命令,可以认为是"changeowner"的缩写,主要用于修改文件(或目录)的所有者,除此之外,这个命令也可以修改文件(或目录)的所属组。当只需要修改所有者时,可使用...

chmod修改文件夹及子目录权限的方法

chmod修改文件夹及子目录权限的方法打开终端进入你需要修改的目录然后执行下面这条命令chmod777*-R全部子目录及文件权限改为777查看linux文件的权限:ls-l文件名称查看li...

Android 修改隐藏设置项权限

在Android系统中,修改某些隐藏设置项或权限通常涉及到系统级别的操作,尤其是针对非标准的、未在常规用户界面显示的高级选项。这些隐藏设置往往与隐私保护、安全相关的特殊功能有关,或者涉及开发者选项、权...

完蛋了!我不小心把Linux所有的文件权限修改了!在线等修复!

最近一个客户在群里说他一不小心把某台业务服务器的根目录权限给改了,本来想修改当前目录,结果执行成了根目录。...

linux改变安全性设置-改变所属关系

CentOS7.3学习笔记总结(五十八)-改变安全性设置-改变所属关系在以前的文章里,我介绍过linux文件权限,感兴趣的朋友可以关注我,阅读一下这篇文章。这里我们不在做过的介绍,注重介绍改变文件或者...

Python基础到实战一飞冲天(一)--linux基础(七)修改权限chmod

#07_Python基础到实战一飞冲天(一)--linux基础(七)--修改权限chmod-root-groupadd-groupdel-chgrp-username-passwd...

linux更改用户权限为root权限方法大全

背景在使用linux系统时,经常会遇到需要修改用户权限为root权限。通过修改用户所属群组groupid为root,此操作只能使普通用户实现享有部分root权限,普通用户仍不能像root用户一样享有超...

怎么用ip命令在linux中添加路由表项?

在Linux中添加路由表项,可以使用ip命令的route子命令。添加路由表项的基本语法如下:sudoiprouteadd<network>via<gateway>这...

Linux配置网络

1、网卡名配置相关文件回到顶部网卡名命名规则文件:/etc/udev/rules.d/70-persistent-net.rules#PCIdevice0x8086:0x100f(e1000)...

Linux系列---网络配置文件

1.网卡配置文件在/etc/sysconfig/network-scripts/下:[root@oldboynetwork-scripts]#ls/etc/sysconfig/network-s...

取消回复欢迎 发表评论: