文章目录
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;
- 当前current状态⽇志组,尝试删组成员报错
SQL > alter database drop logfile member '/u01/app/oracle/oradata/oradb/redo01.log';
- 发起检查点,并查看⽇志情况
alter system checkpoint;
SQL > select group#,status from v$log;
- 尝试删除成员⽂件
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’;
- 原来的 redo01.log 可以删掉,drop logfile group 没有删除物理磁盘上⽂件,需⼿动删除
5.2 关库,重命名
- 关库
SQL > shutdown immediate;
- 重命名⽂件
mv /u01/app/oracle/oradata/oradb/redo02.log /u01/app/oracle/oradata/log_member1/redo02.log
- 数据库启动到mount
SQL > startup mount;
SQL > select group#,member from v$logfile order by 1;
- 通知控制⽂件
SQL > alter database rename file ‘/u01/app/oracle/oradata/oradb/redo02.log’ to '/u01/app/
oracle/oradata/log_member1/redo02.log';
- 打开数据库
alter database open;
- 删除⽇志组
SQL> alter database drop logfile group 5;
SQL> select group#,status,archived from v$log;
drop logfile group 不会删磁盘上⽂件,删除物理⽂件需要rm