redo log file

重做日志文件是ORACLE恢复种很重要的一种数据文件,它是事务的日志 。通常用于以下工作:

系统崩溃后的实例恢复

通过备份恢复 数据文件之后恢复介质

备用数据库处理

输入到流中。

如果你发生了以下情况,你就能用到它:

实例或介质失败

备份数据库的维护

包含数据文件的磁盘损坏

无意删除了一个表,或者删除了一些重要信息,而且提交了操作,就可以利用备份回到发生错误的时间点前

ORACLE中几乎每个操作都会产生重做日志

重做日志分为:在线重做日志和归档日志

在线重做日志:一般有几组重做日志 ,并且每一组中可能有多个成员,某个成员的算坏 ,并不影响数据的使用,可以通过清除,重新建立重做日志

在线重做日志 大小时固定的,并且是循环使用的

在创建数据时有两个很重要的参数,

MAXLOGFILES:控制最多有几个重做日志,创建前,一定考虑好,如果出现不足,只 能重建控制文件或数据库

MAXLOGMEMBERS:控制每个日志组有几个日志成员。

ARCHIVE_LAG_TARGET(动态参数)参数可以设置一个时间,通过时间限制,指定数据库强制进行Log Switch,进行归档。

在DataGuard环境中,为了减少故障时数据损失,我们可以设置ARCHIVE_LAG_TARGET参数,强制进行日志切换。

创建日志组:

ALTER DATABASE
  ADD LOGFILE (’/oracle/dbs/log1c.rdo’, ‘/oracle/dbs/log2c.rdo’) SIZE 500K;

也可以指定组号

ALTER DATABASE
  ADD LOGFILE GROUP 10 (’/oracle/dbs/log1c.rdo’, ‘/oracle/dbs/log2c.rdo’)
      SIZE 500K;

添加日志成员:

ALTER DATABASE ADD LOGFILE MEMBER ‘/oracle/dbs/log2b.rdo’ TO GROUP 2;

以下时我的例子:

SQL> alter database add logfile member ‘F:\APP\BOSON.SUN\ORADATA\ORCL\REDO04.LOG
‘ TO GROUP 1;

数据库已更改。

SQL> select group#,member from v$logfile;

    GROUP# MEMBER
———- —————————————-
         3 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO03.LOG
         2 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO02.LOG
         1 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO01.LOG
         1 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO04.LOG

SQL> select group#,member,status from v$logfile;

    GROUP# MEMBER                                   STATUS
———- —————————————- ——-
         3 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO03.LOG
         2 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO02.LOG
         1 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO01.LOG
         1 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO04.LOG INVALID

可以看到刚添加的日志成员状态不可能,时因为还没有切换到这,可以手动激活:

SQL> select group#,member,status from v$logfile;

    GROUP# MEMBER                                   STATUS
———- —————————————- ——-
         3 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO03.LOG
         2 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO02.LOG
         1 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO01.LOG
         1 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO04.LOG INVALID

SQL> alter system switch logfile;

系统已更改。

SQL> alter system switch logfile;

系统已更改。

SQL> alter system switch logfile;

系统已更改。

SQL> select group#,member,status from v$logfile;

    GROUP# MEMBER                                   STATUS
———- —————————————- ——-
         3 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO03.LOG
         2 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO02.LOG
         1 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO01.LOG
         1 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO04.LOG
最好查看下V$LOG视图

SQL> SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG;

    GROUP# ARC STATUS
———- — —————-
         1 NO  CURRENT
         2 YES INACTIVE
         3 YES ACTIVE
当前使用的时日志组1

添加日志 成员时不用指定成员文件大小,会默认使用和同组其他成员一样大小

也可以用如下命令添加:

ALTER DATABASE ADD LOGFILE MEMBER ‘/oracle/dbs/log2c.rdo’
    TO (’/oracle/dbs/log2a.rdo’, ‘/oracle/dbs/log2b.rdo’); 当然了麻烦。。如果你不知道组号也时不错的

SQL> select group#,member from v$logfile;

    GROUP# MEMBER
———- —————————————-
         3 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO03.LOG
         2 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO02.LOG
         1 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO01.LOG

移动重做日志文件位置的步骤:

关闭数据库

把要移动的重做日志拷贝到对应位置

mv /diska/logs/log1a.rdo /diskc/logs/log1c.rdo
mv /diska/logs/log2a.rdo /diskc/logs/log2c.rdo

启动数据库到mount状态

ALTER DATABASE
  RENAME FILE ‘/diska/logs/log1a.rdo’, ‘/diska/logs/log2a.rdo’
           TO ‘/diskc/logs/log1c.rdo’, ‘/diskc/logs/log2c.rdo’;

打开数据库

建议做完这个操作后备份控制文件。当然了如果你启动了自动备份控制文件也就不用了

删除日志组

在删除日志组前,你必须确定至少保留两个日志组,

你只能删除不活动的日志组,是否活动可以通过差看V$LOG视图,如果要删除一个活动的日志组,必须手动切换日志。

有时候就算你切换了,有些恢复需要。还是不能删,

还有必须确定要删除的日志组已经归档

ALTER DATABASE DROP LOGFILE GROUP 3;

删除日志成员:

When a redo log member is dropped from the database, the operating system file is not deleted from disk. Rather, the control files of the associated database are updated to drop the member from the database structure. After dropping a redo log file, make sure that the drop completed successfully, and then use the appropriate operating system command to delete the dropped redo log file.

To drop a member of an active group, you must first force a log switch.

ALTER DATABASE DROP LOGFILE MEMBER ‘/oracle/dbs/log3c.rdo’;

SQL> alter database drop logfile member  ‘F:\APP\BOSON.SUN\ORADATA\ORCL\REDO04.L
OG’;

数据库已更改。

SQL> select group#,name,status from v$logfile;
select group#,name,status from v$logfile
              *
第 1 行出现错误:
ORA-00904: “NAME”: 标识符无效
SQL> select group#,member,status from v$logfile;

    GROUP# MEMBER                                   STATUS
———- —————————————- ——-
         3 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO03.LOG
         2 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO02.LOG
         1 F:\APP\BOSON.SUN\ORADATA\ORCL\REDO01.LOG
强制日志切换

alter system switch logfile

清除重做日志文件:

有时候打开数据库的时候会发现数据重做日志文件损坏,这时就需要清除重做日志文件。此时又分为,归档的和非归档的

清除归档的比较容易:

ALTER DATABASE CLEAR LOGFILE GROUP 3;

清除非归档的

ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;

If you want to clear an unarchived redo log that is needed to bring an offline tablespace online, use the UNRECOVERABLE DATAFILE clause in the ALTER DATABASE CLEAR LOGFILE statement.

关于REDO LOG FILE的一些视图:

Viewing Redo Log Information

The following views provide information on redo logs.

 10.jpg

 



评论暂缺

(Required)
(Required, will not be published)