Oracle重做、归档日志
日志文件
oracle日志文件分为两种:
- 重做日志文件(redo),或者称为“在线重做日志”
- 归档日志文件(arch),或者称为“归档重做日志”
在线重做日志文件
全称:Online Redo Log File。
用来记录数据发生事务transaction的信息以及Oracle内部行为引起的数据库变化信息。
在数据库恢复时,可以从重做日志中读取原来的数据信息并应用以还原。
如果对表空间设置NOLOGGING属性时,那么对表空间中所有的表进行DML操作都不会产生日志信息。
查看重做日志文件SQL语句
select * from v$logfile;
例子:
SQL> col member for a48;
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ------------------------------------------------ ---
3 ONLINE /data/u01/app/oracle/oradata/orcl/redo03.log NO
2 ONLINE /data/u01/app/oracle/oradata/orcl/redo02.log NO
1 ONLINE /data/u01/app/oracle/oradata/orcl/redo01.log NO
查看日志文件的组号、状态、大小
-- GROUP# 日志文件组号
-- MEMBERS 日志文件组内的成员数
select GROUP#,MEMBERS,ARCHIVED,STATUS,BYTES from V$log
SQL> select GROUP#,ARCHIVED,STATUS from V$log;
GROUP# ARC STATUS
---------- --- ----------------
1 YES INACTIVE
2 YES INACTIVE
3 NO CURRENT
其中GROUP#就是组ID、STATUS就是该日志组的状态,CURRENT表示当前日志进程正在使用日志组。INACTIVE就是非活动状态。
日志文件组和文件组成员
为了安全,每个oracle实例用一个日志线程来记录变化。
日志线程由多个日志组(group)构成,而日志组中可以由一个或者多个日志成员构成。
创建新的日志文件组
建议:一个oracle实例至少需要两组以上的日志文件。
默认情况下实例在创建后会建立3组日志文件。每组里面只有一个日志文件(也就是每组里面只有一个成员)。
- 添加日志组,ID为4,文件大小为50M。
alter database add logfile group 4 '/data/u01/app/oracle/oradata/orcl/redo04.log' size=50m;
向日志组中添加新的日志文件成员
每个日志组中建议有两个日志成员,并且日志成员在不同位置比较好。
- 向日志组ID为4的中添加日志文件成员redo04c。
alter database add logfile member '/data/u01/app/oracle/mylog/redo04c.log' to group 4;
alter database add logfile member '/mylognew/redo04b.log' to group 4;
删除日志组
- 删除日志组ID为4的日志组
alter database drop logfile group 4
归档日志文件
oracle运行可以分为两种模式:归档模式 和 非归档模式(默认)。
- 非归档模式:在系统运行期间产生的日志信息被写满后会覆盖原信息。
- 归档模式:在系统运行期间产生的日志信息被写满后会先由归档程序arch将信息写出到归档日志文件中去保留,以便后续查找恢复。
查看系统是否开启了归档模式:
select name,log_mode from v$database;
; 或者
archive log list
启用/关闭归档模式
shutdown immediate;
startup mount;
- 启用归档模式
alter database archivelog;
- 关闭归档模式
alter database noarchivelog;
- 打开数据库
alter database open;
- 查看系统是否启动归档模式
archive log list;
归档日志存放目录
关键字USE_DB_RECOVERY_FILE_DEST表示快速恢复区。
如果配置了FLASH_RECOVERY(通过设置参数DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE参数),且没有指定任何本地归档目的地,数据库会自动选择快速恢复区域作为本地归档目的地,并将LOG_ARCHIVE_DEST_1设置为USE_DB_RECOVERY_FILE_DEST。
因此,归档日志存放路径和存放的目录大小收到以下两个参数影响:
SQL> show parameter DB_RECOVERY
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /data/u01/app/oracle/flash_rec
overy_area
db_recovery_file_dest_size big integer 3882M
如果需要修改flash recovery的大小,需要执行以下命令:
shutdown immediate;
startup mount;
- 将大小改为10G
alter system set db_recovery_file_dest_size = 10G;
alter database open
实际一般我们开启归档后,都会显示设置LOG_ARCHIVE_DEST_n参数去指定规划的归档目录。
n为1 ~ 31之间的整数。1到10可用于本地或远程位置。11至31只适用于远程位置。
具体路径可以是文件系统目录、ASM磁盘组、远端(通过网络服务名)。
比如:
LOG_ARCHIVE_DEST_1 = 'LOCATION=/disk1/arc'
LOG_ARCHIVE_DEST_2 = 'LOCATION=+DGROUP1/orcl/arc_1'
LOG_ARCHIVE_DEST_3 = 'SERVICE=standby1'
LOG_ARCHIVE_DEST_n = 'LOCATION=USE_DB_RECOVERY_FILE_DEST'
归档模式的其他参数设置
设置归档日志的存储路径。
log_archive_dest_n,类型:string
设置改归档日志存储路径是否可用,类型:string,可用值:
log_archive_dest_state_n
- ENABLE :启用
- DEFER:推迟使用,也就是禁用。
- ALTERNATE:表示是备用的。备用目的地的可用性状态是DEFER。如果它的父目标失败,备用服务器的可用性状态变为ENABLE。
log_archive_format
设置归档日志的存储文件格式,默认为:%t_%s_%r.dbf
手动切换日志
- 手动切换,看看日志是否归档成功
alter system switch logfile;
查看和修改归档日志目录
SQL>
show parameter log_archive_dest;
提前创建好新目录和赋权
su - root
mkdir /oracle_archive_log_dir
chown -R oracle:oinstall /oracle_archive_log_dir
su - oracle
修改参数:
sqlplus / as sysdba
alter system set log_archive_dest_1='LOCATION=/oracle_archive_log_dir';
手动切换日志看看是否成功:
- 手动切换,看看日志是否归档成功
alter system switch logfile;
查看当前归档日志:(其实可以直接看文件夹即可)
SQL> select name from v$archived_log;
NAME
--------------------------------------------------------------------------------
/data/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2022_07_27/o1_mf_1_7_kg
1zts41_.arc
/data/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2022_07_27/o1_mf_1_8_kg
2lln6n_.arc
/data/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2022_07_28/o1_mf_1_9_kg
40csxy_.arc
/oracle_archive_log_dir/1_10_1111090312.dbf
删除归档日志
rman target/ (只安装了一个oracle10g数据库) ;否则,指定用户名/密码@服务名: rman target mes/mes@CTLMES
命令>
crosscheck archivelog all; (列出归档日志信息)
命令>delete expired archivelog all; (将上述列出的归档日志删除)
也可删除指定过期文档 delete archivelog until time 'sysdate-3'; 这里删除的是3天以前的所有文档,即保留3天。
RAC集群开启arch归档参考:
Oracle重做、归档日志的更多相关文章
- Linux Oracle删除归档日志
今天遇到Oracle报这样的错:ORA-00257 查看了下,原来是Oracle的归档日志满了,解决方案两个 一:增加归档日志大小 二:删除无用的归档日志(我们选择这个方案) 什么也不说了Linux下 ...
- Windows平台使用RMAN命令自动删除Oracle过期归档日志的方法
自动删除Oracle过期归档日志的思路如下: 1.编写自动执行的bat脚本文件: 2.Windows设置定期执行计划 OracleArchLogClear.bat D:/Oracle/product/ ...
- Oracle 10g 归档日志满了的解决办法
如果Oracle的归档日志满了,应用连接数据库就会出错,这时需要手工删除过期的归档日志,方法如下: 1.指定数据库实例 $ export ORACLE_SID=db1 2.进入rman $ rman ...
- 如何检查oracle的归档日志及空间占用率,清除归档日志
如何解决“归档日志已满问题” 问题描述: 所用数据库为 Oracle 10g ,模式为归档模式,oracle 系统默认的归档空间为2G,由于日志过多,空间写满,数据库的redo文件不能归档,而出现or ...
- Oracle的归档日志
归档模式的特点和要求 在归档模式下,当LGWR后台进程的写操作从一个重做日志组切换到另一个重做日志组后,归档写后台进程(ARCH/ARCRn)就会将原来的重做日志的信息复制到归档日志文件中. 可以把归 ...
- oracle 启用归档日志
Oracle可以运行在2种模式下:归档模式(archivelog)和非归档模式(noarchivelog) 归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下,归档模式应该和 ...
- oracle修改归档日志路径与格式
一.查询数据库是否开启归档模式: SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled ...
- oracle启用归档日志
一.开启归档 1.查看归档信息 SQL> archive log list Database log mode No Archive Mode Automatic archival Disabl ...
- oracle删除归档日志
查看归档模式: SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive ...
- oracle 开启归档日志模式
摘自:https://www.jianshu.com/p/f8c0e9309ce2 在默认情况下,oracle数据库是在非归日志档模式中创建的,在非归档日志模式中,进行日志切换时会直接重写redo l ...
随机推荐
- 淘宝详情api接口的应用
淘宝详情API接口是一个基于HTTP协议的接口服务,可用于获取淘宝商品的具体信息.下面将介绍如何调用淘宝详情API接口获取淘宝商品数据的步骤. 1.注册账号并创建应用 首先,我们需要进行账号注册.实名 ...
- VB快速上手文档教程
前言 本来我想可能不会接触到这个语言, 不过在用excel时需要用到VBA. 这就不得不专门去学习一番. 入了个门, 专门写个文档留着. 万一以后用得到呢- 论VB, 我还是初学者. 如有弄错了的地方 ...
- Blazor Server 发起HttpPost请求,但是多参数
一.介绍 今天突然想起之前工作上遇到的一个问题,在做Blazor 开发时后端给的一个接口请求方式是Post ,但是他需要携带多个参数,新建一个公共类又觉得麻烦,我就尝试着怎么在Post请求中携带多个参 ...
- MPI转以太网模块连接300PLC与DCS modbus通信
MPI转以太网模块连接300PLC与DCS modbus通信 由300PLC通过MPI转以太网Plus模块作为modbus从站与DCS主站通信实现MPI转RTU与DCS通信 打开兴达易控提供的MPI转 ...
- 其它——DevOps简介
文章目录 DevOps简介 DevOps的概念 历史变革 好处是什么? 为什么DevOps会兴起? 实现DevOps需要什么? DevOps的采用现状 DevOps简介 DevOps 是一个完整的面向 ...
- Go语言系列——11-数组和切片、12-可变参数函数、13-Maps、14-字符串、15-指针、16-结构体、17-方法、18-接口(一)、19-接口(二)、19-自定义集合类型、20-并发入门
文章目录 11-数组和切片 数组 数组的声明 数组是值类型 数组的长度 使用 range 迭代数组 多维数组 切片 创建一个切片 切片的修改 切片的长度和容量 使用 make 创建一个切片 追加切片元 ...
- 记一次基于 PowerShell 的 Git 自动化部署 Java 多服务实践
前言 有这么一个自动化部署的需求,凑巧 git 还直接建立在测试服务器上,部署后可以直接在测试服务器上演示 步骤 建立 Git 仓库 与一般的 Git 部署一样,区别是需要添加 --bare 开关,这 ...
- Chiplet解决芯片技术发展瓶颈
这是IC男奋斗史的第38篇原创 本文1776字,预计阅读4分钟. Chiplet封装是什么 介绍Chiplet前,先说下SOC.Chiplet和SOC是两个相互对立的概念,刚好可以用来互为参照. SO ...
- Nginx惊群现象的两种解决办法
惊群现象: 惊群现象是指由多个worker进程监听同一个Socket事件时,当事件发生时,相关的所有进程被惊醒,但最终只能有一个进程对该事件进行处理,其他进程会重新休眠,从而导致系统资源的浪费和系统性 ...
- 使用Spring Integration接收TCP与UDP请求
1. 简介 Spring Integration 是一个开源的项目,它是 Spring 生态系统的一部分,旨在简化企业集成(Enterprise Integration)的开发.它提供了一种构建消息驱 ...