oracle 重做日志

1. Redo File

作用:数据 recovery恢复

特征:

  • 记录数据库中块的变化(DML、DDL)
  • ⽤于数据块的 recover
  • 以组的⽅式管理 redo file,最少两组 redo,循环使⽤
  • 和数据⽂件存放到不同的磁盘上,需读写速度快的磁盘(⽐如采⽤ RAID10)
  • ⽇志的 block 和数据⽂件的 block 不一样

2. 重要的三个视图

SQL> select * from v$log;
SQL> select * from v$logfile;
SQL> select * from v$archived_log; (归档模式下查看)

THREAD#: 线程在单实例的环境下,thread# 永远是 1
SEQUENCE# ⽇志序列号。在⽇志切换时会递增
FIRST_CHANGE# 在每个⽇志组对应⼀个 sequence 号,其中⾸条⽇志条⽬的第⼀个的 scn。

3. 日志的四种状态

unused新添加的⽇志组,还没有使⽤
current当前⽇志组对应的脏块还没有全部从 data buffer 写⼊到 data file,含有实例恢复需要的信息,不能被覆盖
active⽇志组对应的脏块还没有完全从 data buffer 写⼊到 data file,含有实例恢复需要的信息,不能被覆盖
inactive⽇志组对应的脏块已经从 data buffer 写⼊到 data file,可以覆盖。

4. 添加日志方式

4.1 添加⼀个日志组

查看当前⽇志信息

select group#,sequence#,bytes/1024/1024 M,archived,status from v$log;
select * from v$logfile;

添加⽇志组

alter database add logfile group 4 '/u01/app/oracle/oradata/oradb/redo04.log' size
50m;
select * from v$logfile;

查看⽇志状态

select group#,sequence#,bytes/1024/1024 M,archived,status from v$log

4.2 添加成员文件

为每个组增加⼀个 member(⼀共是4个组) 先建好⽬录,准备放在/u01/app/oracle/oradata/log_member1 下

[oracle@vm01 ~]$ mkdir -p /u01/app/oracle/oradata/log_member1

为group 1 添加成员⽂件

SQL> alter database add logfile member
‘/u01/app/oracle/oradata/log_member1/redo01.log’ to group 1;

TATUS 是 INVALID,说明 member 还没有同步好。
SQL> alter system switch logfile; ⾄少做 4 次切换,消除 invalid。
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> select * from v$logfile;

SQL> select group#,sequence#,members ,bytes /1024/1024 M,archived,s tatus from v$log;

⼀次添加两个成员⽂件

alter database add logfile group 5
  ('/u01/app/oracle/oradata/oradb/redo05.log',/u01/app/oracle/oradata/log_member1/redo05.log') size 50M;

5. 日志成员文件的迁移

5.1 不关库,先删后加

SQL > select group#,status from v$log;
SQL > select group#,member from v$logfile;
  1. 当前current状态⽇志组,尝试删组成员报错
SQL > alter database drop logfile member '/u01/app/oracle/oradata/oradb/redo01.log';
  1. 发起检查点,并查看⽇志情况
alter system checkpoint;
SQL > select group#,status from v$log;
  1. 尝试删除成员⽂件
alter database drop logfile member '/u01/app/oracle/oradata/oradb/redo01.log';
``
4. 添加组成员⽂件
```sql
alter database drop logfile member ‘/u01/app/oracle/oradata/log_member1/redo01.log’;
  1. 原来的 redo01.log 可以删掉,drop logfile group 没有删除物理磁盘上⽂件,需⼿动删除

5.2 关库,重命名

  1. 关库
SQL > shutdown immediate;
  1. 重命名⽂件
mv /u01/app/oracle/oradata/oradb/redo02.log /u01/app/oracle/oradata/log_member1/redo02.log
  1. 数据库启动到mount
SQL > startup mount;
SQL > select group#,member from v$logfile order by 1;
  1. 通知控制⽂件
SQL > alter database rename file/u01/app/oracle/oradata/oradb/redo02.log’ to '/u01/app/
oracle/oradata/log_member1/redo02.log';
  1. 打开数据库
alter database open;
  1. 删除⽇志组
SQL> alter database drop logfile group 5;
SQL> select group#,status,archived from v$log;

drop logfile group 不会删磁盘上⽂件,删除物理⽂件需要rm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值