【第22期】观点:IT 行业加班,到底有没有价值?

oracle学习笔记-重做日志管理(5)

原创 2016年08月30日 10:57:06
        在用户执行DML和DDL命令访问数据之前首先生成重做日志,并将重做日志记录在重做日志缓冲区,再修改数据库高速缓存区中的内容。重做日志记录用户的DML和DDL操作记录,包括修改的数据块、修改的位置以及修改后的数据等信息。重做日志文件是保证数据库安全的一种重要手段,数据库故障时可以通过重做日志文件和归档日志文件进行实例恢复和介质恢复。
        重做日志缓冲区大小有限,LGWR进程在一定时机下将重做日志缓冲区的重做日志写入到重做日志文件。数据库中一般有若干重做日志组,每个重做日志组包含若干重做日志成员,数据库以循环方式将重做日志写入这些重做日志组。当最后一组被写满时自动切换到第一组,这样文件中原来的重做日志就会被覆盖,为了保留重做日志就要对重做日志进行归档,重做日志归档有ARCH进程完成。


一、重做日志文件的规划
1、 重做日志缓冲区的规划

       重做日志首先写入重做日志缓冲区,LGWR进程在一定时机下将重做日志缓冲区的内容写入重做日志文件,并清空这部分缓冲区,这样可以减少磁盘写的次数,提升数据库性能。
       重做日志缓冲区的大小由初始化参数LOG_BUFFER指定,综合考虑内存大小,为重做日志缓冲区分配尽可能大的值。
2、 重做日志组规划
       为了对重做日志进行归档,数据库中至少包含两个重做日志组,因为数据库正在使用一个数据文件时是不能对它进行归档的。日志组的最大数目由初始化参数MAXLOGFILES限定。
       日志组的数目应根据实际情况选择合适的数目。如果日志组数目太多,会消耗太多磁盘空间。如果日志组数目太少,会影响数据库性能。在归档日志模式下,当切换到下一个日志组时,ARCH进程会对上一个日志组进行归档,如果归档太慢,或者日志写入速度太快。那么归档可能还没结束,数据库服务器又切换到了这个日志组,将造成LGWR进程阻塞,产生“checkpoint incomplete”警告,用户事务无法进行,等待归档结束。
3、 重做日志文件规划
        在一个重做日志组中至少包含一个重做日志文件,但是一般要求至少有两个日志成员,他们互为镜像,LGWR进程将把重做日志同时写入日志组中的所有日志成员,并且为了防止磁盘故障,应将不同的日志成员放在不同的磁盘上。如果一个日志成员丢失或者损坏,LGWR进程将阻塞,这时候可以利用其他完好的日志成员复制一个新的日志成员。
        LGWR进程可能遇到的异常情况:
         某个重做日志组中的日志成员不可用。LGWR进程忽略不可用的日志成员,将重做日志写入其他可用的日志成员。
         某重做日志组正在被归档或者尚未归档。LGWR阻塞等待归档完成。
         某重做日志组中的所有日志成员不可用。数据库实例将关闭。
         当前重做日志文件组中的所有日志成员突然都不可用。数据库实例将关闭。


二、 重做日志文件的管理
1、 增加重做日志组

SQL>ALTER DATABASE ADD LOGFILE [GROUP 4] (
   ‘dir/logfile_name’,
   ‘dir/logfile_name’) SIZE 200M
2、 增加日志成员
SQL>ALTER DATABASE ADD LOGFILE MEMBER ‘dir/logfile_name’,… TO GROUP 4;
3、 修改重做日志文件的存储位置和名称
        1) 以NORMAL方式关闭数据库,确保所有用户事务正常结束;
        2) 在操作系统下修改重做日志文件位置或名称;
        3) 将数据库启动到MOUNT状态,此时控制文件已经打开而重做日志尚未打开;
        4) ALTER DATABASE RENAME修改重做日志文件的名称或位置:
SQL>ALTER DATABASE RENAME
‘dir1/name1’,…  TO ‘dir2/name2’,…;
       这种方式也可以修改数据文件的名称和位置。
4、 删除重做日志文件
       首先通过动态性能视图V$LOG查看日志组的状态以及是否已经进行归档,不能删除数据库正在使用的日志组,删除前应该先对其进行归档。
 
     日志组删除后,所有的日志成员也会被删除,删除日志组的语法如下:
SQL>ALTER DATABASE 
DROP LOGFILE GROUP 3;
     删除日志成员的语法如下:
SQL>ALTER DATABASE 
DROP LOGFILE MEMBER ‘dir/logname’;
5、 重做日志文件的清空
SQL>ALTER DATABASE CLEAR [UNARCHIVED] LOGFILE GROUP 3;
     可清空”CURRENT”状态的重做日志组,但要清空未归档的重做日志组时需要使用UNARCHIVED关键字。
6、 重做日志的切换
     手工切换重做日志对的命令如下:
SQL>ALTER SYSTEM SWITCH LOGFILE
7、 重做日志信息的查询
     A. v$log:记录重做日志组的信息
     状态有以下几种:
      UNUSED:尚未被写如果重做日志
      CURRENT:当前日志组
      ACTIVE:活动的,但不是当前日志组。进行实例恢复时需要
      CLEARING:正在被清空,之后变为UNUSED
      INACTIVE:非当前日志组。实例恢复不需要,介质恢复需要
      CLEARING_CURRENT:正在被清空的当前日志组
     B. v$logfile:记录重做日志文件的信息
     其中日志成员的状态有以下几种:
      INVALID:文件不可访问
      STALE:文件的内容不完整
      DELETED:文件不再使用
      空:正常
     C. v$log_history:记录重做日志组的切换信息
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

联机重做日志文件组的状态介绍

可通过视图v$log来查询联机重做日志文件组的状态(STATUS)。 UNUSED:表示该联机重做日志文件组对应的文件还从未被写入过数据

在线重做日志组的管理

日志组的管理: 设置日志组的时候,一定要保证各个日志组大小相同,这样就能够保证日志切换的时间基本相同 --如何增加日志组? SYS@orcl11g> alter database add l...

欢迎关注CSDN程序人生公众号

关注程序员生活,汇聚开发轶事。

联机重做日志文件组的状态介绍

可通过视图v$log来查询联机重做日志文件组的状态(STATUS)。 UNUSED:表示该联机重做日志文件组对应的文件还从未被写入过数据,通常刚创建的和重建的联机重做日志文件组会显示为这一状态。 ...
  • orcldb
  • orcldb
  • 2012-08-10 10:27
  • 1824

oracle操作重做日志文件组

oracle操作重做日志文件组

添加重做日志组、成员

select  group#,sequence#,bytes,members,archived,status from v$log; --查看重做日志状态,序列号 col member for...

16->联机重做日志文件

一。概念 联机日志文件又叫重做日志文件,记录了对数据库修改的信息,包括用户对数据修改和数据库管理员对数据库结构的修改。它主要用于在发生故障的时候和数据库备份文件配合恢复数据库,一般发生故障有2个情...

在线重做日志组的切换

日志组的切换: 1.自动切换:当日志组被写满之后,自动发生切换行为; 2.手动切换:alter system switch logfile; 改变日志组的状态? SYS@orcl11g...

调整重做日志大小

一、目的: 数据库每次切换日志的时候对有一个检查点,会消耗数据库资源,所以我们增加日志文件大小,减少切换的次数,从而提高数据库的效率。 二、步骤: 2.1、先查看数据库重做日志文件的各种参数信息...

如何配置重做日志高速缓存的大小

数据库管理员应该要了解的是,重做日志文件的机制跟数据文件的管理机制类似。当因为数据更新、新建记录或者数据库结构变更产生重做记录时,其也不是马上写入重做日志文件中。而是先将重做记录写入到重做日志高速缓存...

oracle学习笔记-重做日志分析(7)

通过分析重做日志,将二进制的重做日志以文本的形式显示出来,以跟踪某个用户的DML或DDL操作,或者在某个特定数据库对象上的操作,或者撤销用户在某个特定数据库对象上的操作。 1、 创建字典文件 设置字典...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)