logminer实战之生产环境写入数据字典,dg环境查询拷贝日志,测试环境进行挖掘,输出结果
应客户需要,对某一天的日志进行挖掘,分析日均归档日志切换数量20增长至40的原因,是什么表的dml操作导致的日志量剧增,最终定位某个应用(需要客户自己进行甄别)
操作说明及介绍:
1.客户10.2.0.5 rac 两节点,一套10.2.0.5 dg单实例环境,一套测试库(测试库与dg在同一台主机,且测试库是一年前历史时期的生产库的备库)
2.根据对生产环境最小化原则,在主库只进行创建数据字典,并不在主库进行日志挖掘
3.根据操作简便,dg与测试库在同一台主机上,本次使用dg环境视图查询日志文件,在测试库中直接进行挖掘,省略拷贝归档日志步骤
操作流程
1.生产库rac,创建数据字典
2.dg环境,查询需要挖掘的归档日志信息+主库创建的数据字典所在的归档文件
3.测试库挖掘,使用Logminer工具进行日志挖掘
4.分析输出内容,使用sql分组查询出对象,操作类型,操作次数统计信息
1.生产库rac,创建数据字典
生产库,将数据字典,写入Online redo文件中,切换归档,拷贝至测试库,注册后使用。
alter system switch logfile;
alter database add supplemental log data;
--查询验证
SQL> select SUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI from v$database;
SUPPLEME SUP SUP
-------- --- ---
YES NO NO --数据字典,写入日志文件
exec DBMS_LOGMNR_D.BUILD(dictionary_filename=>NULL,dictionary_location=>NULL,options=>dbms_logmnr_d.STORE_IN_REDO_LOGS);
--关闭最小补充日志
alter database drop supplemental log data;
--查询确认,关闭最小补充日志
SQL> select SUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI from v$database;
SUPPLEME SUP SUP
-------- --- ---
NO NO NO --查询数据字典写入的日子文件,序列号名称sequence#
SQL> select thread#,sequence#,name,ARCHIVED,DICTIONARY_BEGIN,DICTIONARY_END from v$archived_log where DICTIONARY_BEGIN='YES';
THREAD# SEQUENCE# NAME ARC DIC DIC
---------- ---------- ------------------------------------------------------------------------------------------ --- --- ---
xxxdg YES YES YES
+ASM/xxx/thread_1_seq_xxx YES YES YES
2.dg环境,查询需要挖掘的归档日志信息+主库创建的数据字典所在的归档文件
环境确认
修改
export ORACLE_SID=newdg
查询确认
echo $ORACLE_SID
SQL>执行
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select name,thread#,COMPLETION_TIME,FIRST_TIME,NEXT_TIME from v$archived_log where name is not null; ##########选择需要挖掘的归档日志##################################
xxx -- :: -- :: -- ::
xxx -- :: -- :: -- ::
xxx -- :: -- :: -- ::
xxx -- :: -- :: -- ::
xxx -- :: -- :: -- ::
xxx -- :: -- :: -- :: ##################################################################
查询出,生产库,写入数据字典的归档日志 =>thread / =>sequence
xxx -- :: -- :: -- ::
3.测试库挖掘,使用Logminer工具进行日志挖掘
************************************test挖掘*************************************
@?/rdbms/admin/dbmslmd.sql
@?/rdbms/admin/dbmslm.sql
@?/rdbms/admin/dbmslms.sql
@?/rdbms/admin/prvtlm.plb*****************************新环境需要执行上述,已经挖掘过的环境忽略*********
)测试库,准备工作
开启归档模式
确认连接数据库是测试库
$ export ORACLE_SID=ax
$ echo $ORACLE_SID
ax
)关闭测试库,启动到Mount状态,关闭归档模式,修改归档参数
SQL> shutdown immediate;
SQL> startup mount; 查询数据库归档模式
SQL> archive log list
Database log mode No Archive Mode 非归档模式
Automatic archival Disabled
Archive destination +NDATADG
-----------------------------------------------------------------
log_archive_dest_1 string LOCATION=+NDATADG --测试库,修改归档参数,
SQL> alter system set log_archive_dest_1='location=/data/test_arch';
SQL> alter database archivelog;
SQL> alter database open;
SQL> select status from v$instance;
STATUS
------------
OPEN
SQL> show parameter pfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /xxx/spfilecdp11orcl.ora
--测试库,已开启最小(可忽略)
SQL> alter database add supplemental log data;
查询确认测试库,开启最小补充日志
SQL> select SUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI from v$database;
SUPPLEME SUP SUP
-------- --- ---
YES NO NO --Logminer用法
开启logminer
exec dbms_logmnr_d.build(options => dbms_logmnr_d.STORE_IN_REDO_LOGS);
第一个日志
exec dbms_logmnr.add_logfile('xxx',dbms_logmnr.new);
第二个日子++++
exec dbms_logmnr.add_logfile('xxx',dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile('xxx',dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile('xxx',dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile('xxx',dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile('xxx',dbms_logmnr.addfile);
建议:最后一个日志,选择包含数据字典信息的日子文件
exec dbms_logmnr.add_logfile('xxx',dbms_logmnr.addfile); 日志分析—这个步骤消耗性能,正在分析
exec DBMS_LOGMNR.START_LOGMNR(DictFileName=>'',Options=>DBMS_LOGMNR.DICT_FROM_REDO_LOGS); 可以查询日志挖掘后的行数量
select count(*) from V$LOGMNR_CONTENTS;
COUNT(*)
---------- 4.分析输出内容,使用sql分组查询出对象,操作类型,操作次数统计信息
可以创建一个临时表存放(实际发现,时间过长可忽略)
create table logmnr_04_14_one_date as select * from V$LOGMNR_CONTENTS a ; 预留的一个脚本xls,可以修改spool xxx名称,自由选择: from logmnr_04_14_one_date 表可换成V$LOGMNR_CONTENTS
@HISBK [/home/oracle/enmo/script] $ cat tab_xls.sql
set linesize 200
set term off verify off feedback off pagesize 999
set markup html on entmap on spool on preformat off
spool log_20190104_14_15.xls
select username,SEG_OWNER,SEG_NAME,seg_type_name,OPERATION,count(*)
from logmnr_04_14_one_date group by username,SEG_OWNER,SEG_NAME,seg_type_name,
OPERATION order by 6 asc;
spool off
exit 执行脚本,输出xls格式表格
@/home/oracle/enmo/script/tab_xls.sql --如果没有执行xls格式表格,备选退出挖掘模式(可选)
execute dbms_logmnr.end_logmnr;
logminer实战之生产环境写入数据字典,dg环境查询拷贝日志,测试环境进行挖掘,输出结果的更多相关文章
- 项目开发过程中什么是开发环境、测试环境、生产环境、UAT环境、仿真环境?
项目开发过程中什么是开发环境.测试环境.生产环境.UAT环境.仿真环境? 最近在公司项目开发过程中总用到测试环境,生产环境和UAT环境等,然而我对环境什么的并不是很理解它的意思,一直处于开发阶段,出于 ...
- 利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境
一.环境描述 安装有ansible的服务器:192.168.13.45 测试环境服务器:192.168.13.49 /home/app/api-tomcat/webapps/api.war为测试环境新 ...
- logminer使用测试库进行挖掘分析,10.2.0.5
上一篇测试是在dg环境进行测试挖掘,但是如果客户存在一个测试库,那样使用日志挖掘的影响性更小.本篇进行测试分析. 测试环境介绍: oracle linux 5.6,vmware虚拟机,安装两套单实例 ...
- iOS如何在一个包上切换正式环境和测试环境
最近项目处于测试阶段,所以免不了每天都得打包给测试人员,由于我们公司规模比较大,项目环境也分为了三种:测试环境.预上线(预生产)环境.上线(生产)环境.所以每到了测试后期,每天打包的时间也占了不少,遇 ...
- 一个小白的测试环境docker化之路
本文来自网易云社区 作者:叶子 学习docker搭建测试环境断断续续也有三个多月了,希望记录一下这个过程.常言道,总结过去,展望未来嘛~文章浅显,还望各位大神路过轻拍. 按照国际惯例,先说一下背景: ...
- 通过Maven配置测试环境和开发环境连接不同的数据库
通过Maven配置测试环境和开发环境连接不同的数据库 作者及来源: 通灵宝玉 - 博客园 收藏到→_→: 此文来自: 马开东博客 网址:http://www.makaidong.com ...
- SpringBoot的Profiles根据开发环境和测试环境载入不同的配置文件
参考:https://www.cnblogs.com/bjlhx/p/8325374.html 1.需要有一个默认的配置文件,然后一个正式的配置文件,一个测试的配置文件.激活配置项,默认的配置文件ap ...
- 『与善仁』Appium基础 — 14、Appium测试环境搭建
目录 1.Appium测试环境搭建整体思路 (1)Android测试环境搭建 (2)Appium测试环境搭建 (3)测试脚本语言的环境搭建 2.Appium在Android端和IOS端的工作流程 (1 ...
- Django基础四之测试环境和ORM查询
Django基础四之测试环境和ORM查询 目录 Django基础四之测试环境和ORM查询 1. 搭建测试环境 1.1 测试环境搭建方法: 1.2 使用测试环境对数据库进行CURD 1.3 返回Quer ...
随机推荐
- 【转】分享前端开发中通过js设置/获取cookie的一组方法
在前端开发中,通常都需要获取并记录用户的某些操作设置,这样可以使用户下一次访问网站时不用进行重复的调整设置同一个功能. js方法的完整代码如下: var cookie = { set:function ...
- 九、持久层框架(MyBatis)
一.基于MyBatis的对象关系配置(基于XML方式的配置) 注: MyBatis不能像Hibernate那样,在实体类上配置上注解或者配置xml映射文件,系统启动后就可以自动创建表.因为MyBati ...
- Qt Widgets——动作类与小部件菜单项
本文主要涉及以下三个类: QAction ——QWidgetAction QActionGroup QAction可称为动作类,它一般可当作菜单中的项组成菜单,也可作为工具栏上的按钮,它主要由图标.文 ...
- git上传新建项目
新建立本地项目,现在需要上传到git.对上传过程归纳如下: 一 在gitlab中新建项目:如下图所示: 二,新建后获取url地址,在本地打开gitbash,根据url把git上的项目clone到本地: ...
- nyoj-0737-石子合并(dp)
nyoj-0737-石子合并 题意:有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并 ...
- Win10系列:VC++ Direct3D模板介绍1
Visual Studio为开发Direct3D应用程序提供了便捷的模版,读者可以不必手动去新建Direct3D中所使用到的基础资源,而只需专注于图形的绘制.本小节主要为读者介绍这个模版中用于绘制图形 ...
- C++解析五-this 指针,指向类的指针
C++this指针 在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址.this 指针是所有成员函数的隐含参数.因此,在成员函数内部,它可以用来指向调用对象.友元函数没有 this 指 ...
- java集合框架图
- Linux 最小安装常用包
Linux最小安装后很多常用的工具都没有,但直接通过yum install 文件名的方式可能无法找到,汇总于此,随时更新: CentOS7 1.如果要通过SecureCRT上直接上传下载文件,最简单的 ...
- log4net 2.0.8 不支持core 数据库记录日志
经过反编译log4net 标准库的代码,原本有的数据库链接AdoNetAppender 在core里面引用的,没有掉了. 可能新版本会有.