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

相关文章

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window