关闭
侧边栏

Redo故障的恢复

Posted by dbtan on 十二月 20th, 2009

Redo故障的恢复:

我们已经知道日志文件对于数据库来说非常重要,在实际使用过程中,可以会遇到各种各样的问题,接下来将介绍一些在日常数据库维护中经常会遇到的情况。

1. 丢失非活动日志组的故障恢复:
如果数据库丢失的是非活动(INACTIVE)日志组,由于非活动日志组已经完成检查点,数据库不会发生数据损失,此时只需要通过Clear重建该日志组即可恢复。
⑴ 首先删除一个非活动日志组,模拟一次故障损失:

sys@TQGZS> ! mv /u01/oracle/oradata/tqgzs/redo02.log /u01/oracle/databak/

⑵ 如果数据库日
... ...
<阅读全文>

能否不生成Redo

Posted by dbtan on 十二月 19th, 2009

能否不生成Redo:

正常的数据库必须生成Redo,这是数据库的机制,否则数据库在遇到故障或Crash时则无法恢复。但是Oracle为了增强某些特殊操作的性能,对于一些SQL语句,Oracle允许使用NOLOGGING子句,NOLOGGING可以使得日志生成大幅降低,但是必要日志(比如:对于字典表的修改)仍然会被记录

可以使用NOLOGGING的环境非常有限,在以下操作中,可以增加NOLOGGING子句:

·创建索引或重建索引时;
·通过/*+ APPEND */提示,使用直接路径(Direct Path)批量INSERT操作或SQL*Loader直接路径加载数据;
·CTAS方式创建数据表时;
·大对象(LOB
... ...
<阅读全文>

为什么热备份期间产生的Redo要比正常时多

Posted by dbtan on 十二月 19th, 2009

为什么热备份期间产生的Redo要比正常时多:

我们还要知道的是,在数据库处于热备份(使用Begin Backup进行备份时)状态时,会产生了比平常更多的日志。这是因为在热备份期间,Oracle为了解决SPLIT BLOCK的问题,需要在日志文件中记录修改的行所在的数据块的前镜像(image),而不仅仅是修改信息。为了理解这段话,我们还要简单介绍一下SPLIT BLOCK的概念。

在这种情况下,可能出现如下状况。

当拷贝数据文件的同时,数据库正好向数据文件写数据。这就使得拷贝的文件中包含这样的database block,它的一部分OS block来自于数据库向数据文件(这个db block)写操
... ...
<阅读全文>

如何调整日志文件大小

Posted by dbtan on 十二月 19th, 2009

如何调整日志文件大小:

很多时候我们需要调整日志文件的大小,可以通过如下步骤进行调整。首先查看一下当前日志文件的信息:

sys@TQGZS> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
         1    &
... ...
<阅读全文>

日志文件的大小

Posted by dbtan on 十二月 19th, 2009

日志文件的大小:

前面我们提到,当日志文件发生切换时(Log Switch),会触发一个检查点,那么日志文件的大小就和检查点的触发频率相关。更为频繁的检查点可以缩短数据库的恢复时间,但是过于频繁的检查点却会带来性能负担。所以如何合理地设置日志文件的大小也是数据库优化的一个重要内容。

而且必须考虑到的是,如果日志文件意外损坏或丢失,那么就会丢失数据,所以更大的日志文件可能意味着更多的数据损失风险。数据库的任何一个调整都是需要慎重的。下面让我们从Oracle不同版本的变化中,揣摩一下Oracle的心思。

在Oracle 8i之中,缺省的Redo Log file大小是1MB;
在Oracle 9iR2中,这个缺省
... ...
<阅读全文>


Copyright © 2009 - 2018 https://www.dbtan.com. All rights reserved.    京ICP备13006977号-1