文章目录
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';
- 添加组成员文件
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