oracle之 Oracle归档日志管理

      在Oracle中,数据一般是存放在数据文件中,不过数据库与Oracle最大的区别之一就是数据库可以在数据出错的时候进行恢复。这个也就是我们常见的Oracle中的重做日志(REDO FILE)的功能了。在重做日志分成2部分,一个是在线重做日志文件,另外一个就是归档日志文件。

  这里不详细说明在线重做日志,而是说一下归档日志(Archive Log)。在线重做日志大小毕竟是有限的,当都写满了的时候,就面临着2个选择,第一个就是把以前在线重做日志从头擦除开始继续写,第二种就是把以前的在线重做日志先进行备份,然后对被备份的日志擦除开始写新的在线Redo File。这种备份的在线重做日志就是归档日志。而数据库如果采用这种生成归档日志的模式的话,就是归档日志模式(ARCHIVELOG模式),反之如果不生成归档日志,就是非归档日志模式(NOARCHIVELOG模式)。

  有了归档日志有什么好处了。比如在这个月1号的时候备份了一次数据,然后过了10天,这10天生成了成百上千个在线重做日志,突然发现其中有一个数据磁盘出问题了,不能用了,那我该如何是好呢。

  如果没有采用归档日志,那么实际上磁盘中只会有几个最新的在线重做日志。那么我只能要不然把出问题的数据磁盘上所占据的表空间都删除掉。但是如果是SYSTEM表空间所涉及的磁盘出错,就没办法这么做了,只能用第二种方法。那第二种方法就是把1号备份的数据拿出来恢复。那么1号到10号之间的10天的数据都丢了,如果是关键系统,比如证券金融什么的系统,就要让你赔钱赔死掉。

  但是如果有了归档日志,那么你这10天的重做日志都会存放起来,那么DBA首先把1号的备份数据恢复,然后再拿这10天的REDO日志来进行一次数据操作重放,那么就可以完全恢复最新的数据库,不会有什么后果了。

  在软件开发的时候,由于测试服务器的配置有限,特别是磁盘空间有限,所以有可能要限制REDO文件的大小,有可能就把系统设置为NOARCHIVELOG模式了。但是在实际的生产运行环境下,基本上一定要使用ARCHIVELOG模式,否则万一出了问题,真是哭都来不及了。

  有人可能会怕归档日志造成性能损失。其实这个完全是杞人忧天的,归档日志只是做一个备份,其实也就是多耗一些磁盘空间而已。在当前的软件系统中,硬盘的存储容量成本已经属于低到可以忽略的地步,而最重要的是数据库的安全。DBA的任务本来就是确保数据的安全,如果连安全都保证不了,那点微乎其微的性能提高又有什么用呢。

  归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档日志中.当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库.

  日志操作模式:ARCHIVELOG NOARCHIVELOG

  1,改变日志操作模式:

  检查当前日志操作模式

  SELECT log_mode from v$database;

  关闭数据库,然后装载数据库

  SHUTDOWN IMMEDIATE

  STARTUP MOUNT

  改变日志操作模式,然后打开数据库

  ALTER DATABASE ARCHIVELOG;

  ARCHIVE LOG START;

  ALTER DATABASE OPEN;

  2,执行手工归档

  从oracle database 10g开始,当将日志操作模式转变未ARCHIVELOG模式时,oracle会自动启动ARCH进程.如果要使用手工归档.那么在改变日志操作模式时必须使用命令ALTER DATABASE ARCHIVELOG MANUAL.

  需要注意,使用手工归档方式,数据库管理员必须手工执行归档命令.如果没有执行手工归档命令,日志组的原有内容将不能被覆盖.ALTER DATABASE ARCHIVELOG MANUAL 命令是为了与先前的版本兼容而保留的,.将来的oracle版本会淘汰该命令,使用手工归档方式是,数据库管理员可以执行以下命令归档重做日志:

  SLTER SYSTEM ARCHIVELOG ALL;

  3,配置归档进程

  初始化参数LOG_ARCHIVE_MAX_PROCESSES用于指定例程初始启动的最大归档进程个数,当将数据库转变为ARCHIVELOG模式时,默认情况下oracle会自动启动两个归档进程.通过改变初始化参数LOG_ARCHIVE_MAX_PROCESS的值,可以动态地增加或降低归档进程的个数:

  ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3;

  配置归档位置和文件格式

  当数据库处于ARCHIVELOG模式时,如果进行日志切换,后台进程将自动生成归档日志,归档日志的默认位置为%oracle_home%rdbms,在oracle database 10g中,归档日志的默认文件格式为ARC%S_%R.%T.为了改变归档日志的位置和名称格式,必须改变相应的初始化参数,

  1,初始化参数LOG_ARCHIVE_FORMAT用于指定归档日志的文件名格式,设置该初始化参数时,可以指定以下匹配符:

  %s: 日志序列号:

  %S: 日志序列号(带有前导0)

  %t: 重做线程编号.

  %T: 重做线程编号(带有前导0)

  %a: 活动ID号

  %d: 数据库ID号

  %r RESETLOGS的ID值.

  从10g开始,配置归档日志文件格式时,必须带有%s,%t和%r匹配符,配置了归档文件格式后,必须重启数据库.

  2,使用LOG_ARCHIVE_DEST配置归档位置

  如果不使用备用数据库,只需要将归档日志存放到本地目录.配置本地归档位置可以使用初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST,其中,第一个参数用于设置第一个归档位置,第二个参数用于指定第二个归档位置.

  ALTER SYSTEM SET log_archive_dest=’d:demoarchive1’;

  ALTER SYSTEM SET log_archive_duplex_dest=’d:demoarchive2’;

3,使用LOG_ARCHIVE_DEST_n配置多个归档位置.

  初始化参数LOG_ARCHIVE_DEST_n用于指定多个归档位置,该参数最多可以指定10个归档位置.通过使用初始化参数LOG_ARCHIVE_DEST_n,不仅可以配置本地归档位置,还可以配置远程归档位置.

  如果既要在主节点上生成归档日志,又要将归档日志传递到备用节点,那么必须使用参数LOG_ARCHIVE_DEST_n.该参数与LOG_ARCHIVE_DEST具有如下区别;

  初始化参数LOG_ARCHIVE_DEST_n可以配置本地归档位置和远程归档位置,而初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST只能配置本地归档位置.

  初始化参数LOG_ARCHIVE_DEST_n可以配置多达10个归档位置,而初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST最多只能配置两个归档位置.

  初始化参数LOG_ARCHIVE_DEST_n 不能与初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同时使用.

  因为初始化参数LOG_ARCHIVE_DEST_n不能与初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同时使用,所以必须禁用初始化参数LOG_ARCHVE_DEST和LOG_ARCHIVE_DUPLEX_DEST.当使用初始化参数LOG_ARCHIVE_DEST_n配置本地归档位置时,需要指定LOCALTION选项.当配置远程归档位置时,需要指定SERVICE选项.

  示例如下:

  ALTER SYSTEM SET log_archive_duplex_dest=’’;

  ALTER SYSTEM SET log_archive_dest=’’;

  ALTER SYSTEM SET log_archive_dest_1=’location=d:demoarchive1’;

  ALTER SYSTEM SET log_archive_dest_2=’location=d:demoarchive2’;

  ALTER SYSTEM SET log_archive_dest_3=’location=d:demoarchive3’;

  ALTER SYSTEM SET log_archive_dest_4=’service=standby’;

  配置远程归档位置时,SERVICE选项需要指定远程数据库的网络服务名(在tnsnames.ora文件中配置)

  4,使用LOG_ARCHIVE_DEST_n选项

  使用初始化参数LOG_ARCHIVE_DEST_n配置归档位置时,可以在归档位置上指定OPTIONAL或MANDATORY选项.指定MANDATORY选项时,可以设置REOPEN属性.

  OPTIONAL:该选项是默认选项.使用该选项时,无论归档是否成功,都可以覆盖重做日志.

  MANDATORY:强制归档.使用该选项时,只有在归档成功之后,重做日志才能被覆盖.

  REOPEN:该属性用于指定重新归档的时间间隔,默认值为300秒,必须跟在MANDATORY后.

  例:

  Alter system set log_archive_dest_1=’location=d:demoarchive1 mandatory’;

  Alter system set log_archive_dest_2=’location=d:demoarchive2 mandatory reopen=500’;

  Alter system set log_archive_dest_3=’location=d:demoarchive3 optional’;

  5,控制本地归档成功的最小个数.

  使用初始化参数LOG_ARCHIVE_MIN_SUCCEED_DEST控制本地归档的最小成功个数

  Alter system set log_archive_min_succeed_dest=2;

  6,使用初始化参数LOG_ARCHIVE_DEST_STATE_n控制归档位置的可用性.设置该参数为ENABLE(默认值),表示会激活相应的归档位置;设置该参数为DEFER,表示禁用相应归档位置.当归档日志所在磁盘损坏或填满时,DBA需要暂时禁用该归档位置.

  Alter system set log_archive_dest_state_3=defer;(禁用)

  Alter system set log_archive_dest_state_3=enable;(启用)

  显示归档日志信息

  1,使用ARCHIVE LOG LIST命令可以显示日志操作模式,归档位置,自动归档机器要归档的日志序列号等信息.

  2显示日志操作模式

  SELECT name,log_mode FROM v$database;

  3,显示归档日志信息.

  Col name format a40

  Select name, swquence#, first_change# FROM v$archived_log;

  Name用于表示归档日志文件名,sequence#用于表示归档日志对应的日志序列号,firs_change#用于标识归档日志的起始SCN值.

  4执行介质恢复时,需要使用归档日志文件,此四必须准确定位归档日志的存放位置.通过查询动态性能视图v$archive_dest可以取得归档日志所在目录.

  SELECT destination FROM v$archive dest;

  5,显示日志历史信息

  SELECT * FROM v$loghist;

  THREAD#用于标识重做线程号,SEQUNCE#用于标识日志序列号,FIRST_CHANGE#用于标识日志序列号对应的起始SCN值,FIRST_TIME用于标识起始SCN的发生时间.SWICTH_CHANGE#用于标识日志切换的SCN值.

  6.显示归档进程信息.

  进行日志切换时,ARCH进程会自动将重做日志内容复制到归档日志中,为了加快归档速度,应该启用多个ARCH进程.通过查询动态性能视图V$ARCHIVE_PROCESSES可以显示所有归档进程的信息!

  SELECT * FROM v$archive_processes;

  Porcess用于标识ARCH进程的编号,status用于标识ARCH进程的状态(ACTIVE:活动,STOPPED:未启动),log_sequence用于标识正在进行归档的日志序列号,state用于标识ARCH进程的工作状态.

       说明:整理与网络

文章可以转载,必须以链接形式标明出处。


本文转自 张冲andy 博客园博客,原文链接: http://www.cnblogs.com/andy6/p/7729371.html  ,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 安装rmp服务,Linux LAMP服务的rpm包安装与配置

1.apache(httpd) 所在光盘装包apr-xxx.rpm (二)postgresql-libs-xxx.rpm (二)apr-util-xxx.rpm (二)http-xxx.rpm (二)2.mysql (二)装包perl-DBI-xxx.rpm (二)mysql-xxx.rpm (二)3.mysqlserver装包perl-DBD-mysql-xxx.rpm (二)mysql-server-xxx.rpm (二)4.PHP装包gmp-xxx.rpm (…

红外感应模块+蜂鸣器实现简易报警(转)

拿到了一个红外感应模块HC-SR501,于是就用它和蜂鸣器简单试验了下。主要是试验一下这个红外感应模块的功能,所以代码也写的很随便啦,逻辑上也欠考虑。实现基本功能:运行脚本后,感应模块每隔一定时间检测,如…

leetcode51. N 皇后(回溯算法)

n 皇后问题研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。 每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案…

ubuntu下python的错误

ubuntu python 2.7 python test.py *.py permission denied chmod x *.py 转载于:https://www.cnblogs.com/gisalameda/p/11086624.html

kotlin半生对象_如何在Kotlin中使用Actor实现对象池

kotlin半生对象by osha1由osha1 如何在Kotlin中使用Actor实现对象池 (How to implement an Object-Pool with an Actor in Kotlin) We use object pool in jasync-sql to manage connections to the database. In this post, I will share how it is done in a performant, lo…

linux运行apktool签名,解决Linux中使用ApkTool遇到问题

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?遇到问题在Linux中使用IntelliDroid工具时,按要求配置好环境之后,始终无法成功运行该工具内部的ApkTool,导致后续的安卓静态分析…

python 脚本学习(二)

task1: 在一个文件中,单词之间使用空格、分号、逗号或者句号分隔,请提取全部单词。 代码实例: 1234567891011#!/usr/local/python27/bin/python2.7import sys import re words [] with open(sys.argv[1]) as f: for line in f: #…

2.2 Consumer API官网剖析(博主推荐)

不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ 2.2 Consumer API 2.2、消费者API 随着0.9.0版本,我们已经增加了一个新的Java消费者替换我们现有的基于zookeeper的高级和低级消费者。这个客户端还是测试版的质量…

leetcode1053. 交换一次的先前排列(贪心算法)

给你一个正整数的数组 A(其中的元素不一定完全不同),请你返回可在 一次交换(交换两数字 A[i] 和 A[j] 的位置)后得到的、按字典序排列小于 A 的最大可能排列。 如果无法这么操作,就请返回原数组。 示例 1&a…

mybatis-generator-gui如何打包成exe

快速阅读: ​ 用wix和inno setup把mybatis-generator-gui 打包成exe和安装文件。 以后使用的时候方便,不用每次打开eclipse运行。 使用inno setup 5 和wix 3.11 基于mybatis generator开发一款界面工具, 非常容易及快速生成Mybatis的Java POJO文件及数据…

分步表单如何实现 html_HTML表单入门的分步指南

分步表单如何实现 htmlby Abhishek Jakhar通过阿比舍克贾卡(Abhishek Jakhar) HTML表单入门的分步指南 (A step-by-step guide to getting started with HTML forms) 总览 (Overview) HTML forms are required when you want to collect some data from the person who visits…

linux网络服务偶尔失效,判断linux下的网络服务是否正常启动

# 自动判断samba,http,named,dovecot,tomcat等服务是否正常启动##作者:胡昌文#时间:2008-09-28#MSN:[email]hucw_rhcehotmail.com[/email]###!/bin/shSAMBA1netstat -nutlp | grep :137 | grep smbdSAMBA2netstat -nutlp | grep :138 | grep …

leetcode809. 情感丰富的文字

有时候人们会用重复写一些字母来表示额外的感受,比如 “hello” -> “heeellooo”, “hi” -> “hiii”。我们将相邻字母都相同的一串字符定义为相同字母组,例如:“h”, “eee”, “ll”, “ooo”。 对于一个给定的字符串 S &#xff…

NeHe OpenGL教程 第三十课:碰撞检测

转自【翻译】NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改。对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢。 NeHe OpenGL第三十课…

andorid手机电脑操作

之前一直使用androidscreencast在pc上对手机进行操作,好久都没用了,前些天再次用的时候,提演示样例如以下: 决定还是自己写一个吧,由于7月份要做一个小分享,打算讲一些android的东西,须要在电脑上显示手机这边的画面,提供一定的操作. 花了一点时间做好了,给大家截一个图,代码放…

struct.error: cannot convert argument to integer解决办法

更新Python包转载于:https://www.cnblogs.com/long5683/p/11086768.html

sphinx_Sphinx之谜:如何轻松地编写代码

sphinx为什么我在这里? (Why Am I Here?) You, the reader, are here because you wrote some awesome tool in Python, and you want to make it accessible and easy to use.读者之所以在这里,是因为您使用Python编写了一些很棒的工具,并且…

linux贪吃蛇c程序,Linux环境下C语言实现贪吃蛇游戏

Linux环境下C语言实现贪吃蛇游戏[liultest snake]$ more snake.c#include #include #include #include #include #define NUM 60struct direct //用来表示方向的{int cx;int cy;};typedef struct node //链表的结点{int cx;int cy;struct node *back;struct node *next;}node;v…

Java正则表达式的使用和详解(上)

1.匹配验证-验证Email是否正确 public static void main(String[] args) {// 要验证的字符串String str "servicexsoftlab.net";// 邮箱验证规则String regEx "[a-zA-Z_]{1,}[0-9]{0,}(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}";// 编译正则表达式P…

在组策略中使用脚本为域用户添加网络打印机

使用脚本为用户添加网络打印机 如果你想让培训部门的用户登录后就能添加网络打印机,就可以使用登录脚本来实现。其中DCServer是域控制,MarketPC1是市场部门的计算机,韩立辉用户是培训部门的用户。下面就验证使用组策略为培训部门的用户添加网…