修改oracle redolog大小

本文介绍Oracle数据库中如何添加、切换及删除重做日志文件。通过SQL命令展示具体操作过程,包括添加新的日志文件组、手动切换当前使用的日志文件以及删除不再需要的旧日志文件。

(转载)

SQL> select lf.GROUP#,lf.MEMBER,lg.STATUS from v$logfile lf,v$log lg
  2  where lf.GROUP#=lg.GROUP#;

    GROUP# MEMBER                                             STATUS
---------- -------------------------------------------------- ----------------
         1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG   INACTIVE
         2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG   INACTIVE
         3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG   CURRENT

SQL> alter database add logfile group 8 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\R
EDO08.LOG' size 100m;

数据库已更改。

SQL> select lf.GROUP#,lf.MEMBER,lg.STATUS from v$logfile lf,v$log lg
  2  where lf.GROUP#=lg.GROUP#;

    GROUP# MEMBER                                             STATUS
---------- -------------------------------------------------- ----------------
         1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG   INACTIVE
         2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG   INACTIVE
         3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG   CURRENT
         8 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO08.LOG   UNUSED

SQL> alter system switch logfile;

系统已更改。

SQL> select lf.GROUP#,lf.MEMBER,lg.STATUS from v$logfile lf,v$log lg
  2  where lf.GROUP#=lg.GROUP#;

    GROUP# MEMBER                                             STATUS
---------- -------------------------------------------------- ----------------
         1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG   INACTIVE
         2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG   INACTIVE
         3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG   ACTIVE
         8 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO08.LOG   CURRENT

SQL> alter database drop logfile group 1;#只有inactive和unused状态的日志才能删除且须手工删除OS上日志文件

数据库已更改。

SQL> alter database drop logfile group 2;

数据库已更改。

SQL> alter database drop logfile group 3;#这里报错数据库必须保留2个重做日志文件
alter database drop logfile group 3
*
第 1 行出现错误:
ORA-01567: 删除日志 3 时将为实例 orcl (线程 1) 保留两个以下的日志文件
ORA-00312: 联机日志 3 线程 1:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'

SQL> alter database add logfile group 9 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\R
EDO09.LOG' size 100m;

数据库已更改。

SQL>  alter database drop logfile group 3;

数据库已更改。

SQL> select lf.GROUP#,lf.MEMBER,lg.STATUS from v$logfile lf,v$log lg
  2  where lf.GROUP#=lg.GROUP#;

    GROUP# MEMBER                                             STATUS
---------- -------------------------------------------------- ----------------
         9 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO09.LOG   UNUSED
         8 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO08.LOG   CURRENT

SQL> alter database add logfile group 1 'D:\oracle\product\10.2.0\oradata\orcl\redo01.log' size 100M;

数据库已更改。

SQL> alter database add logfile group 2 'D:\oracle\product\10.2.0\oradata\orcl\redo02.log' size 100M;

数据库已更改。

SQL> alter database add logfile group 3 'D:\oracle\product\10.2.0\oradata\orcl\redo03.log' size 100M;

数据库已更改。

SQL> select lf.GROUP#,lf.MEMBER,lg.STATUS from v$logfile lf,v$log lg
  2  where lf.GROUP#=lg.GROUP#;

    GROUP# MEMBER                                             STATUS
---------- -------------------------------------------------- ----------------
         9 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO09.LOG   UNUSED
         1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG   UNUSED
         2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG   UNUSED
         8 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO08.LOG   CURRENT
         3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG   UNUSED

SQL> alter system switch logfile;

系统已更改。

SQL> select lf.GROUP#,lf.MEMBER,lg.STATUS from v$logfile lf,v$log lg
  2  where lf.GROUP#=lg.GROUP#;

    GROUP# MEMBER                                             STATUS
---------- -------------------------------------------------- ----------------
         9 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO09.LOG   UNUSED
         1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG   CURRENT
         2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG   UNUSED
         8 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO08.LOG   ACTIVE
         3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG   UNUSED

SQL> alter database drop logfile group 9;#这里先删除group9是因为group8为active,只有inactive和unused状态的才能删

数据库已更改。

SQL>  select lf.GROUP#,lf.MEMBER,lg.STATUS from v$logfile lf,v$log lg
  2   where lf.GROUP#=lg.GROUP#;

    GROUP# MEMBER                                             STATUS
---------- -------------------------------------------------- ----------------
         1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG   ACTIVE
         2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG   ACTIVE
         8 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO08.LOG   INACTIVE
         3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG   CURRENT

SQL> alter database drop logfile group 8;

数据库已更改。

SQL> select lf.GROUP#,lf.MEMBER,lg.STATUS from v$logfile lf,v$log lg
  2  where lf.GROUP#=lg.GROUP#;

    GROUP# MEMBER                                             STATUS
---------- -------------------------------------------------- ----------------
         1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG   ACTIVE
         2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG   ACTIVE
         3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG   CURRENT


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15142212/viewspace-605427/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15142212/viewspace-605427/

Oracle Redo Log 文件是数据库用于记录所有更改操作的物理文件,其结构设计保证了数据库恢复的高效性与准确性。Redo Log 文件由多个 **Redo Log Block** 组成,每个 Block 的大小通常为 512 字节,这是 Oracle 数据库 I/O 操作的基本单位。Redo Log 的结构可以细分为以下几个主要部分: ### Redo Log Block Header 每个 Redo Log Block 都包含一个 12 字节的 Block Header,用于标识该 Block 的基本信息。其中包括: - Block 编号(RBA,Redo Byte Address):表示该 Block 在整个 Redo Log 文件中的位置。 - Block 的大小(通常是 512 字节)。 - Block 的校验和(Checksum)用于验证数据的完整性。 这部分信息用于 Oracle 数据库在进行恢复时快速定位和校验 Redo Log 内容[^1]。 ### Redo Record Redo Record 是 Redo Log 中记录具体更改操作的基本单位。每个 Redo Record 由 **Redo Record Header** 和 **Redo Change** 组成。Redo Record Header 通常为 28 字节,包含以下关键信息: - 操作类型(Opcode):标识该 Redo Record 所代表的操作类型,例如 INSERT、UPDATE、DELETE 等。 - 事务标识符(XID):用于标识该操作所属的事务。 - 数据长度(Length):表示该 Redo Record 的总长度。 Redo Record Header 之后是 **Redo Change**,它包含实际的更改数据,如被修改的数据块地址(DBA)、修改前后的数据值等。Redo Change 的结构也包含一个 **Redo Change Header**,用于描述该 Change 的元数据,例如修改的数据块类型、修改的偏移量等。 ### Redo Log 文件内容 Redo Log 文件记录了所有对数据库的更改操作,包括: - DML 操作(INSERT、UPDATE、DELETE、SELECT FOR UPDATE)。 - DDL 操作(如 CREATE TABLE、ALTER TABLE 等),在 Oracle 9i 及以上版本中也会被记录。 - 数据字典对象的更改,包括递归语句的更改。 这些更改操作按照事务进行组织,每个事务的更改会被记录为一组 Redo Record,并通过事务标识符(XID)进行关联。Redo Log 文件的内容不仅用于数据库的恢复(如实例恢复和介质恢复),还被用于 Log Miner、Change Data Capture、流复制、GoldenGate 复制等高级功能[^2]。 ### Redo Log 文件的获取 在 Oracle 数据库中,可以通过以下 SQL 语句获取当前正在使用的 Redo Log 文件名: ```sql SELECT member FROM v$logfile; ``` 该查询返回的文件名可以帮助数据库管理员定位当前的 Redo Log 文件,以便进行日志分析或故障排查[^3]。 ### Redo Log 文件的作用 Redo Log 文件的主要作用包括: - **数据库恢复**:当数据库发生故障时,Redo Log 文件可以用于恢复未提交的事务或重新应用已提交的事务,以确保数据库的一致性。 - **Log Miner 分析**:通过 Log Miner 工具,可以解析 Redo Log 文件中的更改操作,用于审计、数据恢复或分析数据库的历史操作。 - **数据复制**:Redo Log 文件中的更改操作可以被提取并用于数据复制场景,例如 GoldenGate 或 Streams 复制。 ### Redo Log 文件的写入机制 Oracle 数据库在执行 DML 或 DDL 操作时,首先将更改记录写入 Redo Log Buffer,然后在事务提交时将 Redo Log Buffer 中的内容刷新到 Redo Log 文件中。这种机制确保了 Redo Log 文件的写入先于数据文件的写入,从而保证了数据库的恢复能力[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值