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

2024-05-12 03:08

本文主要是介绍oracle学习笔记-重做日志管理(5),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在用户执行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:记录重做日志组的切换信息

这篇关于oracle学习笔记-重做日志管理(5)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981433

相关文章

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性