• redo文件三


    switch logfile是一种昂贵的操作,在进行日志切换的时候,是不允许生成新的redo信息
    在前台进程生成redo日志信息的时候,此时redo buffer已经分配了空间,并且在当前的redo日志文件组中也必定能写入这些数据


    在进行日志切换的时候,步骤如下:
    1、LGWR根据control file里的信息找到当前可用的日志文件组
    2、LGWR将redo log buffer中的信息写入到当前的redo日志文件组中,并且产生一个SCN作为当前日志组的高位SCN
    3、初始化可用的日志文件组,将老的日志文件组的状态设置为active,将可用的日志文件组的状态设置为current
    4、将active的日志文件组进行归档,如果归档进程都在忙碌的话,那么在不超过归档进程最大数的情况下,产生新的归档进程来进行归档
    5、发生一次checkpoint,将脏数据写入磁盘,当脏数据都写入磁盘之后,旧日志文件组的状态修改为inactive


    事物的提交和回滚
    一万条事物的提交和一条数据的提交速度基本上是相同的
    而一万条事物的回滚和一条数据的回滚速度是相差很大的,一万条事物的回滚会持续很长的时间


    如何减少switch logfile的次数
    1、减少redo日志的产生量
    2、加大redo日志文件组的大小


    如何减少redo日志的产生量
    使用nologging的操作,例如bulk操作、direct path write,在归档模式下,可以大大的减少日志的产生量


    使用shutdown abort操作的时候
    1、多使用几次alter system checkpoint
    2、杀掉所有的LOCAL=YES和LOCAL=NO的进程
    ps -ef|grep "LOCAL=NO" |awk '{print "kill -9 " $2}'|sh
    3、使用shutdown abort(SMON进程结束了事务层面的回退操作,关闭了cache层面的恢复,也就是SMON已经开始进行临时段的的回收工作,此时就可以关闭数据库)


    关于redo日志优化的建议
    1、redo日志文件的大小
    2、redo日志文件组的数量
    3、redo日志文件的镜像数量
    4、redo日志存储的性能
    5、redo log buffer的大小
    for linux and python
  • 相关阅读:
    python字符串格式化笔记
    看球时的随笔——“如何掌握新的知识”
    str()和repre()的区别
    关于抛出异常和捕获异常
    python关键字详解
    博客的第一天
    PEP8 Python 编码规范
    SQL Server 自动循环归档分区数据脚本
    反射应用--取得类的结构
    回调函数callback使用例子
  • 原文地址:https://www.cnblogs.com/kellyseeme/p/5525187.html
Copyright © 2020-2023  润新知