15.ORACLE11g的归档方式和日志文件的相关操作

ORACLE11g的归档方式和日志文件的相关操作

  • 一、什么是日志文件
    • 1、在线日志文件
    • 2、归档日志文件
  • 二、Oracle 11g 归档方式:
    • 1、归档方式状态
    • 2、归档日志方式下数据库的工作原理
    • 3、配置归档日志方式
      • 3.1 开启归档模式
      • 3.2 日志文件相关操作:
    • 4、oracle11g联机日志文件和联机日志文件组
      • 4.1 创建联机日志文件组:
      • 4.2 添加联机日志文件到现有的联机日志文件组:
      • 4.3 切换到下一个联机日志文件组:
      • 4.4 清除联机日志文件
      • 4.5 联机日志文件组有四种常见状态(从v$log中查看):

一、什么是日志文件

  在Oracle数据库中,日志文件是用来记录数据库操作和事务变更的文件。主要有两种类型的日志文件:在线日志文件和归档日志文件。归档日志文件是在线日志文件的历史备份。

1、在线日志文件

  • 在线日志文件是数据库当前正在使用的日志文件,用于记录正在进行的事务的变更。
  • 在Oracle数据库中,通常有多个在线日志文件,这样可以在一个日志文件被写满时切换到下一个日志文件,确保事务的持续记录。
  • 在线日志文件的作用是在数据库发生故障时,可以使用这些日志文件进行恢复。

2、归档日志文件

  • 归档日志文件是已经被归档的日志文件,即已经被复制到归档目录中以便进行备份和恢复。
  • 当数据库处于归档模式时,数据库引擎会自动将在线日志文件切换到归档日志文件,并将这些归档日志文件复制到指定的归档目录中。
  • 归档日志文件的作用是在数据库发生故障时,可以使用这些日志文件进行完整的恢复。

  总的来说,日志文件在Oracle数据库中起着非常重要的作用,可以用于数据库的恢复和备份,确保数据的完整性和可靠性。日志按照组来组织,每一个组里面有多个文件。日志组按照循环方式来工作,所以ORACLE中,至少应该有两个日志组,当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时 候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。

  如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志 2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。

  数据库使用归档方式运行时才可以进行灾难性恢复


二、Oracle 11g 归档方式:

1、归档方式状态

Oracle数据库可以运行在两种归档方式:归档日志模式(ARCHIVELOG)和非归档日志模式(NOARCHIVELOG)。

1.1 归档日志模式(ARCHIVELOG):
  在归档日志模式下,数据库会将已经满的在线日志文件切换到归档日志文件,并将这些归档日志文件保存到指定的归档目录中。归档日志模式适合于需要进行备份和恢复操作的生产环境,因为它可以提供完整的恢复能力,包括可以恢复到任意的时间点。

1.2 非归档日志模式(NOARCHIVELOG):
  在非归档日志模式下,数据库不会将已经满的在线日志文件切换到归档日志文件,而是直接覆盖在线日志文件。这意味着数据库只能进行完全恢复,无法进行基于时间点的恢复。非归档日志模式适合于测试环境或者一些不需要进行备份和恢复操作的数据库,因为它简化了数据库的日常管理。非归档日志方式可以避免实例故障,但无法避免介质故障。在此方式下,数据库只能实施冷备份

1.3 区别:
  主要区别在于归档日志模式可以提供完整的备份和恢复能力,包括可以进行基于时间点的恢复,而非归档日志模式只能进行完全恢复,无法进行基于时间点的恢复。因此,归档日志模式适合于生产环境或者对数据完整性要求高的场景,而非归档日志模式适合于测试环境或者对备份和恢复要求不高的场景。

2、归档日志方式下数据库的工作原理

在这里插入图片描述

3、配置归档日志方式

  Oracle 11g 的归档方式是将 redo log 文件归档到另一个地方。这样,即使一个 redo log 文件损坏了,Oracle 也可以恢复数据。以下是归档方式的步骤:

3.1 开启归档模式

3.1.1 确认数据库的归档模式:

SELECT LOG_MODE FROM V$DATABASE;

如果 LOG_MODE 的值是 ARCHIVELOG,则数据库已经启用了归档模式。

3.1.2 确认redo log 文件的组数及大小:

SELECT GROUP#, MEMBER FROM V$LOGFILE;

GROUP# 列显示组编号,MEMBER 列显示 redo log 文件的完整路径。

3.1.3 开启归档模式:

ALTER DATABASE ARCHIVELOG;

使得数据库从归档模式调整到非归档模式只需将ARCHIVELOG改为NOARCHIVELOG,其余方式均相同。

3.1.4 确认是否启用自动归档:

SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME LIKE '%ARCHIVE%';

如果值为 true,则自动归档已启用。

3.1.5 重启数据库:

SHUTDOWN IMMEDIATE;
STARTUP;

3.2 日志文件相关操作:

3.2.1 查看当前 redo log 文件的状态:

SELECT GROUP#, THREAD#, SEQUENCE#, ARCHIVED, STATUS FROM V$LOG;

3.2.2 切换到下一个 redo log 文件:

ALTER SYSTEM SWITCH LOGFILE;

3.2.3 强制进行CHECKPOINT:

ALTER SYSTEM CHECKPOINT;

3.2.4 手动归档当前 redo log 文件:

ALTER SYSTEM ARCHIVE LOG CURRENT;

3.2.5 查看已经归档的日志文件:

SELECT NAME, ARCHIVED FROM V$ARCHIVED_LOG ORDER BY COMPLETION_TIME DESC;

可以通过数据字典视图查看归档日志信息:

  • V$ARCHIVE_DEST - 显示当前所有归档日志存储位置及其状态
  • V$ARCHIVE_LOG - 显示历史归档日志信息

4、oracle11g联机日志文件和联机日志文件组

在 Oracle 11g 中,您可以通过以下示例来了解如何创建联机日志文件组、添加联机日志文件、切换日志文件组等操作:

4.1 创建联机日志文件组:

ALTER DATABASE
ADD LOGFILE GROUP 1 ('/u01/oracle/oradata/redo01a.log', '/u01/oracle/oradata/redo01b.log') SIZE 100M,
	GROUP 2 ('/u01/oracle/oradata/redo02a.log', '/u01/oracle/oradata/redo02b.log') SIZE 100M,
	GROUP 3 ('/u01/oracle/oradata/redo03a.log', '/u01/oracle/oradata/redo03b.log') SIZE 100M;

上述代码中,我们使用 ALTER DATABASE ADD LOGFILE 命令来创建了一个包含三个联机日志文件组的联机日志文件,并指定了每个文件的大小和路径。
不同日志组可以不同大小,但是同一个组内的所有日志文件必须同样大小。

4.2 添加联机日志文件到现有的联机日志文件组:

ALTER DATABASE
ADD LOGFILE ('/u01/oracle/oradata/redo04a.log', '/u01/oracle/oradata/redo04b.log') SIZE 100M TO GROUP 1;

上述代码中,我们使用 ALTER DATABASE ADD LOGFILE 命令将新的联机日志文件添加到了现有的联机日志文件组中。

4.3 切换到下一个联机日志文件组:

ALTER SYSTEM SWITCH LOGFILE;

上述代码中,我们使用 ALTER SYSTEM SWITCH LOGFILE 命令来切换到下一个联机日志文件组,这会触发数据库开始在新的联机日志文件组中记录日志。

4.4 清除联机日志文件

alter database clear logfile  group <group>

使用alter database clear logfile group <group号>;可以清除联机日志文件组内的所有成员,适用于日志文件组损坏了部分成员的情况,被清除的日志组必须是INACTIVE状态。清除后的日志组的状态变成UNUSED。

4.5 联机日志文件组有四种常见状态(从v$log中查看):

  • CURRENT:表示这是当前正在使用的联机日志文件组
  • ACTIVE:表示这个日志文件组中,所记录的重做记录所对应的内存中的脏数据块还没有被完全写入到数据文件中。
  • INACTIVE:表示这个日志文件组中,所记录的重做记录所对应的内存中的脏数据块已经被写入到数据文件中。
  • UNUSED:表示还没有被使用过。

v$logfile中查看每一个联机日志文件的信息。

这些示例可以帮助您了解如何创建联机日志文件组、添加联机日志文件以及切换日志文件组等操作。请根据您的实际需求和环境进行相应的调整。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

#gStore-weekly | gBuilder功能详解之结构化数据抽取

上一个weekly中已经详细讲解了schema的设计&#xff0c;在schema设计好了之后&#xff0c;gBuilder支持将结构化和非结构化数据转化为RDF图数据。其中结构化数据支持数据的无损转化。 1. 技术介绍 gBuilder的结构化数据抽取采用D2RQ技术实现。 DR2Q是一个能够将关系数据库中…

【23真题】很少见!第6题有点新颖!

今天分享的是23年太原理工大学801的信号与系统试题及解析。 本套试卷难度分析&#xff1a;该学校考察数字电路和信号与系统两部分&#xff0c;数字电路我没有知道&#xff0c;所以不知道难度。但是从信号部分来看&#xff0c;考察的知识点非常常见&#xff0c;对信号时域和频域…

基于Spring Boot 框架的试卷自动生成系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题&#xff0c;今天给大家介绍…

11.16~11.19绘制图表,导入EXCEL中数据,进行拟合

这个错误通常是由于传递给curve_fit函数的数据类型不正确引起的。根据你提供的代码和错误信息&#xff0c;有几个可能的原因&#xff1a; 数据类型错误&#xff1a;请确保ce_data、lg_data和product_data是NumPy数组或类似的可迭代对象&#xff0c;且其元素的数据类型为浮点数。…

Altium Designer 相同模块的布局布线复用-AD

1、利用交互式布线&#xff0c;将两个相同模块的元器件在PCB上分块显示。 在原理图中&#xff0c;框选某一模块电路、按快捷键 TS 切换到PCB编辑界面、工具>器件摆放>在矩形区域内排列&#xff08;可将模块中的器件都集中放置到矩形框内&#xff09;。2、为模块电路添加 …

spring-boot-maven-plugin插件 —— 重新打包命名

如果需要重新打包的 jar 具有与项目的 artifactId 属性定义的本地名称不同的名称&#xff0c;只需使用标准 finalName&#xff0c;如下例所示&#xff1a; <build><!-- 打包重命名&#xff0c;打包后文件名称&#xff1a;项目名 --><finalName>${project.ar…

【如何让你的建筑设计更高效】推荐7个3DMAX建筑设计的实用插件

3DMAX是创建具有复杂对象和照片级真实感材质的大型三维项目的绝佳工具。它有用于粒子模拟和参数化建模的内置工具&#xff0c;只要有足够的时间和练习&#xff0c;你就可以创建任何东西。然而&#xff0c;总有改进的余地。许多第三方开发人员已经发布了自己的扩展&#xff0c;也…

课程设计:C++实现哈夫曼编码

功能实现&#xff1a; //1:先计算每个字符的权重//2&#xff1a;构建哈夫曼树//3&#xff1a;得出每个字符的哈夫曼编码。//4:根据哈夫曼编码转化为字符 代码实现&#xff1a; // 哈夫曼编码.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //1:先计…

[ 云计算 | AWS 实践 ] 使用 Java 更新现有 Amazon S3 对象

本文收录于【#云计算入门与实践 - AWS】专栏中&#xff0c;收录 AWS 入门与实践相关博文。 本文同步于个人公众号&#xff1a;【云计算洞察】 更多关于云计算技术内容敬请关注&#xff1a;CSDN【#云计算入门与实践 - AWS】专栏。 本系列已更新博文&#xff1a; [ 云计算 | …

用css实现原生form中radio单选框和input的hover已经focus的样式

一.问题描述&#xff1a;用css实现原生form中radio单选框和input的hover已经focus的样式 在实际的开发中&#xff0c;一般公司ui都会给效果图&#xff0c;比如单选按钮radio样式&#xff0c;input输入框hover的时候样式&#xff0c;以及focus的时候样式&#xff0c;等等&#…

C++学习笔记——C++ deque和vector的区别

C中的std::deque&#xff08;双端队列&#xff09;和std::vector&#xff08;向量&#xff09;是两种不同的容器类型&#xff0c;它们有以下区别&#xff1a; 内部实现方式不同&#xff1a;std::deque使用了一种双端队列的数据结构&#xff0c;它由多个块&#xff08;chunks&am…

软件外包开发需要注意的问题

软件外包开发是一种常见的业务模式&#xff0c;但在选择和合作外包团队时需要注意一些关键问题&#xff0c;以确保项目的成功和顺利进行。以下是一些在软件外包开发过程中需要注意的问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开…

[oeasy]python001_先跑起来_python_三大系统选择_windows_mac_linux

先跑起来 &#x1f94a; Python 什么是 Python&#xff1f; Python [ˈpaɪθɑ:n]是 一门 适合初学者 的编程语言 类库 众多 几行代码 就能 出 很好效果 应用场景丰富 在 各个应用领域 都有 行内人制作的 python 工具类库 非常专业、 好用 特别是 人工智能领域 pytho…

C++ DAY03 类与对象

概述 对象&#xff1a;真实存在的事物 类&#xff1a; 多个对象抽取其共同点形成的概念 静态特征提取出的概念称为成员变量, 又名属性 动态特征提取出的概念称为成员函数, 又名方法 类与对象的关系 在代码中先有类后有对象 一个类可以有多个对象 多个对象可以属于同一个…

HashMap会用就行了?一文解决HashMap的底层问题

前言 我们的手机通讯录之所以能快速定位到特定联系人&#xff0c;就是因为它运用了HashMap底层的原理。手机通讯录将每个联系人的姓名作为键&#xff0c;电话号码作为对应的值&#xff0c;通过这个键值对的方式实现了快速的数据定位和获取。就像你通过关键字快速找到对应的联系…

vue动态配置路由

文章目录 前言定义项目页面格式一、vite 配置动态路由新建 /router/utils.ts引入 /router/utils.ts 二、webpack 配置动态路由总结如有启发&#xff0c;可点赞收藏哟~ 前言 项目中动态配置路由可以减少路由配置时间&#xff0c;并可减少配置路由出现的一些奇奇怪怪的问题 路由…

你学了Python之后让你成为行业卷王,升职加薪更有优势

都说Python能够实现自动化&#xff0c;那么Python具体能应用在哪些地方?哪些岗位学了Python更有优势?今天我们来看看一些大神将Python应用的出神入化的成果。 在这之前&#xff0c;先跟为大家分享个真实的故事。我朋友小宇前段时间为了一个品牌设计的大项目&#xff0c;想方案…

Elasticsearch 和 LangChain 合作开发可用于生产的 RAG 模板

作者&#xff1a;Aditya Tripathi 在过去的几个月里&#xff0c;我们一直与 LangChain 团队密切合作&#xff0c;他们在推出 LangServe 和 LangChain 模板方面取得了进展&#xff01; LangChain Templates 是一组用于构建生产质量的生成式 AI 应用程序的参考架构。 你可以在此处…

QMI8658A Datasheet Rev A-勘误表

QMI8658A Datasheet Rev A-勘误表 1. Reset Register2. CTRL9 Command List3. Temp Sensor Output 1. Reset Register 在5.9章节 和 7.4 章节对复位操作的写入数据&#xff0c;有笔误 正确的数据是&#xff1a; 0xB0 2. CTRL9 Command List 在 5.10.2 章节 Table 28. List…

汇编-loop循环指令

LOOP指令是根据ECX计数器循环&#xff0c;将语句块重复执行特定次数。 ECX自动作为计数器&#xff0c; 每重复循环一次就递减1。 语法如下所示&#xff1a; 循环目的地址必须在距离当前位置计数器的-128到127字节范围内 LOOP指令的执行有两个步骤&#xff1a; 第一步&…