IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Oracle Redo在线日志&Archive归档日志分析 -> 正文阅读

[大数据]Oracle Redo在线日志&Archive归档日志分析

-- 准备:查看当前的REDO(在线)日志组状态
SELECT GROUP#,THREAD#,MEMBERS,BYTES/1024/1024 AS SIZE_MB,STATUS FROM v$log;

/*
?SQL> SELECT GROUP#,THREAD#,MEMBERS,BYTES/1024/1024 AS SIZE_MB,STATUS FROM v$log;

? ? GROUP# ? ?THREAD# ? ?MEMBERS ? ?SIZE_MB STATUS
---------- ---------- ---------- ---------- ------------------------------------------------
? ? ? ? ?1 ? ? ? ? ?1 ? ? ? ? ?1 ? ? ? 2048 CURRENT
? ? ? ? ?2 ? ? ? ? ?1 ? ? ? ? ?1 ? ? ? 2048 INACTIVE
? ? ? ? ?3 ? ? ? ? ?1 ? ? ? ? ?1 ? ? ? 2048 INACTIVE
? ? ? ? ?4 ? ? ? ? ?1 ? ? ? ? ?1 ? ? ? 2048 INACTIVE

?CURRENT 状态表示当前在线日志正在使用的日志组,如果要强制切换当前日志到新的日志组,可以执行命令切换(执行多次、可以多次切换):
?alter system switch logfile;
?手动切换REDO(在线)日志文件以后,会将在线日志文件归档、会在归档目录下生成一个新的 .arc 归档日志文件。
?*/


-- 1.分析 Oracle Redo日志(在线日志)
-- Step1.创建测试表 & DML操作
CREATE TABLE REDO_TEST01 (ID NUMBER, INFO VARCHAR2(64));
INSERT INTO REDO_TEST01 VALUES(1,'test01');
INSERT INTO REDO_TEST01 VALUES(2,'test02');
COMMIT;

UPDATE REDO_TEST01 SET INFO='test--001' WHERE ID=1;
COMMIT;

DELETE FROM REDO_TEST01;
COMMIT;

-- Step2.查看REDO日志的路径
SELECT GROUP#,MEMBER FROM v$logfile;

/*
SQL> SELECT GROUP#,MEMBER FROM v$logfile;

? ? GROUP# MEMBER
---------- --------------------------------------------------------------------------------
? ? ? ? ?1 /opt/oracle/oradata/ORCL/redo01.log
? ? ? ? ?2 /opt/oracle/oradata/ORCL/redo02.log
? ? ? ? ?3 /opt/oracle/oradata/ORCL/redo03.log
? ? ? ? ?4 /opt/oracle/oradata/ORCL/redo04.log
*/


-- Step3.添加REDO日志
-- 第一个添加的日志需指定 options=>dbms_logmnr.new,如果确定要查询的信息在指定的那一个REDO日志文件内,可以只添加那个REDO日志文件,而不需要再添加其他的日志文件。如果不确定、还添加其他REDO日志文件,添加时,不是第一个添加的日志文件需要指定 options=>dbms_logmnr.addfile
exec dbms_logmnr.add_logfile(logfilename=>'/opt/oracle/oradata/ORCL/redo01.log',options=>dbms_logmnr.new);
exec dbms_logmnr.add_logfile(logfilename=>'/opt/oracle/oradata/ORCL/redo02.log',options=>dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile(logfilename=>'/opt/oracle/oradata/ORCL/redo03.log',options=>dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile(logfilename=>'/opt/oracle/oradata/ORCL/redo04.log',options=>dbms_logmnr.addfile);

/*
?dbms_logmnr.add_logfile 说明:
?作用:用于为日志分析列表增加或删除日志文件,或者建立日志分析列表。
?语法:dbms_logmnr.add_logfile(LogFileName in varchar2,Option in binary_integer default addfile);
?参数说明:
?LogFileName: 指定要增加或删除的日志文件名称,
?Option: 指定选项
? ? ?dbms_logmnr.new : 建立日志分析列表
? ? ?dbms_logmnr.addfile : 增加日志文件
? ? ?dbms_logmnr.removefile : 删除文件
*/


-- Step4.开始对添加的REDO进行分析
exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

也可以同时带多个Option参数:
exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog+dbms_logmnr.committed_data_only);

/*
?dbms_logmnr.start_logmnr 说明:
?作用:用于启动logmnr会话。
?语法:dbms_logmnr.start_logmnr(startscn in number default o,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? endscn in number default 0,?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? starttime in date default '01-jan-1988',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? endtime in date default '01-jan-2988',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dictfilename in varchar2 default '',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? option in binary_integer default 0);
?其中startscn指定日志分析的起始scn值,endscn指定日志分析的结束scn值,starttime指定日志分析的起始时间,endtime指定日志分析的结束时间,
?dictfilename指定日志分析要使用的字典文件名,option指定logminer分析选项。
*/

-- Step5.查看LOGMNR分析后得到的信息,可能会比较耗时
select timestamp,sql_redo,sql_undo from v$logmnr_contents where table_name='REDO_TEST01';

-- Step6.结束LOGMNR分析
exec dbms_logmnr.end_logmnr;

-- 2.分析 Oracle 归档日志
-- 分析归档日志的操作和分析REDO的操作基本一样,最重要的就是准确的找到需要查找的信息在哪些归档日志内。既然是利用LOGMNR分析归档日志,数据库一定是在归档模式。
-- 查看数据库归档是否开启及归档日志路径(注意:需要 sysdba 权限):
archive log list;

/*
Database log mode ? ? ? ? ? ? ?Archive Mode
Automatic archival ? ? ? ? ? ? Enabled
Archive destination ? ? ? ? ? ?USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence ? ? 153
Next log sequence to archive ? 156
Current log sequence ? ? ? ? ? 156

如果 Archive destination 为 USE_DB_RECOVERY_FILE_DEST,说明是写的闪回空间文件,可以通过命令查看闪回空间文件路径:

show parameter db_recovery_file_dest;

NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?VALUE
------------------------------------ --------------------------------- ------------------------------
db_recovery_file_dest ? ? ? ? ? ? ? ?string ? ? ? ? ? ? ? ? ? ? ? ? ? ?/opt/oracle/flash_recovery_area
db_recovery_file_dest_size ? ? ? ? ? big integer ? ? ? ? ? ? ? ? ? ? ? 300G

*/

-- Step1.切换日志,使REDO日志归档
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;

-- Step2.按照归档日志的时间,找到存放需要分析信息的归档日志(.arc 文件)
$ ls -lh /opt/oracle/flash_recovery_area/ORCL/archivelog/2022_09_13
total 2.7G
-rw-r----- 1 oracle oinstall 1.8G Sep 13 06:01 o1_mf_1_155_kkzc0omd_.arc
-rw-r----- 1 oracle oinstall 813M Sep 13 19:23 o1_mf_1_156_kl0t20v6_.arc
-rw-r----- 1 oracle oinstall ?65M Sep 13 19:42 o1_mf_1_157_kl0v4hhk_.arc
-rw-r----- 1 oracle oinstall 1.4M Sep 13 19:42 o1_mf_1_158_kl0v56mz_.arc
-rw-r----- 1 oracle oinstall 1.5M Sep 13 19:42 o1_mf_1_159_kl0v5qkj_.arc
后面时间为 19:xx 的4个文件是我四次日志切换所新生成的归档日志文件。

-- Step3.将归档日志添加到LOGMNR
exec dbms_logmnr.add_logfile(logfilename=>'/opt/oracle/flash_recovery_area/ORCL/archivelog/2022_09_13/o1_mf_1_155_kkzc0omd_.arc',options=>dbms_logmnr.new);
exec dbms_logmnr.add_logfile(logfilename=>'/opt/oracle/flash_recovery_area/ORCL/archivelog/2022_09_13/o1_mf_1_156_kl0t20v6_.arc',options=>dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile(logfilename=>'/opt/oracle/flash_recovery_area/ORCL/archivelog/2022_09_13/o1_mf_1_157_kl0v4hhk_.arc',options=>dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile(logfilename=>'/opt/oracle/flash_recovery_area/ORCL/archivelog/2022_09_13/o1_mf_1_158_kl0v56mz_.arc',options=>dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile(logfilename=>'/opt/oracle/flash_recovery_area/ORCL/archivelog/2022_09_13/o1_mf_1_159_kl0v5qkj_.arc',options=>dbms_logmnr.addfile);

-- Step4.开始分析
exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

--Step5.查看LOGMNR分析后的数据
select timestamp,sql_redo,sql_undo from v$logmnr_contents where table_name='REDO_TEST01';?

-- Step6.结束LOGMNR分析
exec dbms_logmnr.end_logmnr;
?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 02:04:35  更:2022-09-15 02:07:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:47:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码