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;

当前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';
  1. 添加组成员文件
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值