Oracle日志 归档模式管理
一、查看当前归档模式
archive log list;
二、归档/不归档切换
shutdown immediate; -- 或shutdown normal
startup mount;
alter database archivelog; -- 或NOARCHIVELOG
alter database open;
三、开启自动归档
alter system archive log start;
四、查看默认的存档位置
show parameter db_reco;
五、归档进程ARCn
重做日志写进程(LGWR)负责将redo-buffer中的数据顺序的写入redolog中———读内存写外存;
归档进程(ARCn)负责把切换后的redolog复制到归档日志文件。————读外存写外存;
显然,LGWR的读写效率要比ARCn高得多,而在经常发生DML操作的数据库中,可能发生由于归档慢而重做日志写入速度快所造成的数据库被暂时停止执行的情况,此时数据库就是等待ARCn将当前的重做日志数据写入归档日志。
解决方案:增加归档进程的数量(log_archive_max_processes)
SQL> show parameter log_archive_max_processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes integer 4
SQL> alter system set log_archive_max_processes=5;
六、自定义存档路径
执行命令show parameter log_archive_dest;
可以查看到多条记录,这些记录都是用于存放用户自定义路径的“预定义变量”。当有一个变量被设定后,就不会再归档至默认路径。当多个变量被设定,会同时归档至各个指定路径下(安全性)。
SQL> show parameter log_archive_dest;
NAME TYPE VALUE
------------------------------------ -----------
log_archive_dest string -- 这个参数从10g开始已经被废弃!!
log_archive_dest_1 string
......
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_10 string SQL> alter system set log_archive_dest_1='location=/u01/app/oracle/archive/arch1';
SQL> alter system set log_archive_dest_8='location=/u01/app/oracle/archive/arch8';
SQL> alter system switch logfile -- 手动强制归档
执行如上代码,结果会发现在arch1和arch8目录下都会生成归档文件。
那么如果不想再归档至arch8目录了该怎么办?
每一个log_archive_dest_x参数都有一个对应的state参数,如下所示,可以执行命令alter system set log_archive_dest_state_8='defer';使其失效。
SQL> show parameter log_archive_dest; NAME TYPE VALUE
----------------------------------------------------------------------
log_archive_dest_state_1 string enable
log_archive_dest_state_2 string enable
... ...
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
七、查询成功归档日志文件组的最低数(安全性)
在第六步“自定义存档位置”的基础上,进一步提升归档安全性。
log_archive_min_succeed_dest:限定Oracle必须保证成功的归档文件组的数量;
比如之前定义了两个归档路径,如果该值设定为2,则限定Oracle必须保证该两个路径中的归档必须成功完整。
注:自定义的归档路径数量 > log_archive_min_succeed_dest的值
SQL> alter system set log_archive_min_succeed_dest=2;
alter system set log_archive_min_succeed_dest=2 ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16020: fewer destinations available than specified by LOG_ARCHIVE_MIN_SUCCEED_DEST
报错原因:当前仅有一个默认归档路径,最低数要求却设置为了2!
解决方法:再添加一个归档路径,重新设置该值。
八、一些日志统计脚本
1. 估算系统每秒产生的日志量和每天产生的日质量(待梳理验证)

declare
ac number;
sec_redo number;
day_redo number;
sec_redo_90 number;
day_redo_90 number;
str varchar(100);
begin
select count(*) into ac from v$database where log_mode = 'NOARCHIVELOG';
if ac = 1 then
dbms_output.put_line('The database is running on NOARCHIVELOG mode,No archivelog !!!');
else
str := '';
for i in (select destination
from v$archive_dest
where status = 'VALID'
and destination is not null) loop
str := str || ',' || i.destination;
end loop;
dbms_output.put_line('Archive dest is' || substr(str, 2));
select trunc(sum((blocks * block_size) / 1024) /
((max(first_time) - min(first_time)) * 24 * 3600)),
trunc(sum((blocks * block_size) / 1024 / 1024) /
((max(first_time) - min(first_time))))
into sec_redo, day_redo
from v$archived_log;
dbms_output.put_line('每秒产生日志的频率:' || sec_redo || '(KB)');
dbms_output.put_line('每天产生日志的频率:' || day_redo || '(MB)');
dbms_output.put_line('最近3个月的统计数据:');
select trunc(sum((blocks * block_size) / 1024) /
((max(first_time) - min(first_time)) * 24 * 3600)),
trunc(sum((blocks * block_size) / 1024 / 1024) /
((max(first_time) - min(first_time))))
into sec_redo_90, day_redo_90
from v$archived_log
where first_time > SYSDATE - 91;
dbms_output.put_line('每秒产生日志的频率:' || sec_redo_90 || '(KB)');
dbms_output.put_line('每天产生日志的频率:' || sec_redo_90 || '(MB)');
end if;
end;
2. 统计归档日志的每日生成量
SQL> select lpad(to_char(first_time,'yyyymmdd'),12) "Date",
trunc(sum(blocks*block_size)/1024/1024) "size(MB)",
count(*) "count"
from v$archived_log
where first_time>SYSDATE-31
group by lpad(to_char(first_time,'yyyymmdd'),12)
order by 1 desc; Date size(MB) count
------------------------------------------------ ---------- ----------
20211102 113 5
20211101 236 9
20211031 285 11
20211030 309 11
20211029 238 10
20211028 279 16
20211027 257 10
Oracle日志 归档模式管理的更多相关文章
- 把Oracle由归档模式改为非归档模式
		
把Oracle由归档模式改为非归档模式 开始–>运行命令cmd进入命令行模式 1. 使用命令sqlplus以无日志形式打开如下: sqlplus /nolog; 2. 连接数据库dev.worl ...
 - Oracle修改日志归档模式、归档路径以及空间大小的相关测试
		
ORACLE 创建数据库的时候要不要开启日志归档? oracle数据库可以运行在2种模式下:归档模式(archivelog)和非归档模式(noarchivelog) .归档模式可以提高Oracle数据 ...
 - 【Oracle】Oracle改变日志归档模式
		
一.确认工作模式: 1.查询V$DATABASE SQL>select log_mode from v$database; 归档日志:ARCHIVELOG 2.执 ...
 - Oracle之归档模式与非归档模式
		
归档模式和非归档模式 在DBA部署数据库之初,必须要做出的最重要决定之一就是选择归档模式(ARCHIVELOG)或者非 归档模式(NOARCHIVELOG )下运行数据库.我们知道,Oracle 数据 ...
 - Oracle在归档模式下恢复
		
=============== 数据库的完全恢复 =============== 在归档模式下数据库完全恢复时,数据库所经过的状态如下: 1.利用备份修复(Restores)损坏或丢失的数据文件,即将 ...
 - Oracle数据库归档模式的切换及其相关操作详解
		
SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> ...
 - Oracle日志文件的管理与查看
		
--Oracle日志文件管理与查看 select * from v$sql (#查看最近所作的操作) --select * fromv $sqlarea(#查看最近所作的操作) -- 1.查询系统使用 ...
 - 改变oracle数据库归档模式_译文
		
Changing the Database Archiving Mode 改变数据库归档模式. Purpose 目的 This module describes how you can change ...
 - 修改oracle为归档模式
		
1.查看是否为归档模式 SQL> archive log list; Database log mode No Archive Mode Automatic archival Disabled ...
 
随机推荐
- Django学习day10随堂笔记
			
每日测验 """ 今日考题 1.默写ajax基本语法,及提交json数据和文件都需要添加哪些额外参数 2.什么是序列化,截止目前为止你所接触过的序列化有哪些 3.批量插入 ...
 - Jetpack Compose学习(5)——从登录页美化开始学习布局组件使用
			
原文:Jetpack Compose学习(5)--从登录页美化开始学习布局组件使用 | Stars-One的杂货小窝 本篇主要讲解常用的布局,会与原生Android的布局控件进行对比说明,请确保了解A ...
 - 监控linux服务器工具nmon的使用
			
做压测时,需要查看服务器中的cpu.内存变化,但由于服务器是linux环境,则需要监控linux服务器的工具,下面用到的工具是nmon. 1.安装nmon.在网上下载nmon安装包,在linux服务器 ...
 - 版本管理 - Git 使用入门
			
Git 是一个分布式的版本管理系统,而 SVN 是一个集中式管理系统. 版本控制 Git与SVN的对比 对比 SVN Git 工作方式 集中式 分布式 文件管理 增量式 系统快照 权限控制 对团队中参 ...
 - 在自己的项目中使用PCL
			
在自己的项目中使用PCL项目设置:1.创建cpp文件,如pcd_write.cpp,文件内容如下例: #include <iostream>#include <pcl/io/pcd_ ...
 - 🧚♂️全套Java教程_Java基础入门教程,零基础小白自学Java必备教程👨💻004 # 第四单元 流程控制语句上 #
			
一.本单元知识点概述 二.本单元目标 (Ⅰ)重点知识目标 1.if语句的格式及执行流程2.switch语句的格式及执行流程 (Ⅱ)能力目标 1.掌握if语句的格式及执行流程2.掌握switch语句的格 ...
 - P5488-差分与前缀和【NTT,生成函数】
			
正题 题目链接:https://www.luogu.com.cn/problem/P5488 题目大意 求一个长度为$n$的序列的$k$阶差分/前缀和. 解题思路 先考虑前缀和怎么做 搞出来生成函数就 ...
 - P6657-[模板]LGV 引理
			
正题 题目链接:https://www.luogu.com.cn/problem/P6657 题目大意 给出$n\times n$的棋盘,$m$个起点第$i$个为$(1,a_i)$,对应$m$个终点第 ...
 - Linux 下 xargs 命令
			
xargs 常常被大家忽略的一个命令,对它的一些用法很多人可能不熟悉,其实它是一个功能强大的命令,特别是在结合管道进行批量处理方面 语法 xargs 语法格式如下 xargs [OPTION]... ...
 - 5-基本的sql查询以及函数的使用
			
基本SQL查询语句以及函数的使用 格式元素 描述 YYYY 四位的年份 MONTH 月份的英文全称 MON 月份的英文简写 MM 月份的数字表示 DD 日起的1-31数字表示 D 星期几的数字表示1- ...