oracele配置logmgeiner

LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重做日志文件(归档日志文件)中的具体内容,LogMiner分析工具实际上是由一组PL/SQL包和一些动态视图组成,它作为Oracle数据库的一部分来发布,是oracle公司提供的一个完全免费的工具。

 

此文档适用于oracle11g 和 oracle19c

切换oracle用户 

su - oracle

 

1、oracle开启数据库归档

连接sqlplus

sqlplus / as sysdba

查看是否开启

SQL> archive log list
Database log mode               No Archive Mode
Automatic archival               Disabled
Archive destination               USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     12
Current log sequence               14

如果Automatic archival是Disabled 则需要修改

SQL> shutdown immediate (立即关闭数据库)
SQL> startup mount (启动实例并加载数据库,但不打开)
SQL> alter database archivelog; (更改数据库为归档模式)
SQL> alter database open; (打开数据库)
SQL> alter system archive log start; (启用自动归档)

再执行一下 archive log list

SQL> archive log list
Database log mode               Archive Mode
Automatic archival               Enabled
Archive destination               USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     12
Next log sequence to archive   14
Current log sequence               14

 

2、执行脚本

SQL>@/opt/oracle/product/19c/dbhome_1/rdbms/admin/dbmslm.sql
SQL>@/opt/oracle/product/19c/dbhome_1/rdbms/admin/dbmslmd.sql

如果dbmslm.sql和dbmslmd.sql不存在次路径,find /  -name *dbmslm.sql*

 

 3、Logminer需要开启全字段日志补全功能(suppplemental logging,表级/列级),能够补全数据库日志信息,保证传递信息的全面性。(此操作会增加Oracle数据库的日志量)

SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA(ALL,PRIMARY KEY,UNIQUE) COLUMNS;
SQL>SELECT supplemental_log_data_min min, supplemental_log_data_pk pk, supplemental_log_data_ui ui, supplemental_log_data_fk fk, supplemental_log_data_all allc FROM v$database;

 当看到如上图所示内容时,表示已经成功。

 

4、存在影响

4.1、对Oracle执行用户的权限依赖较高,官方推荐使用sys用户;

4.2、较为依赖归档日志,启用归档日志和加强日志类型后,Oracle会产生大于非归档模式下数倍的日志量,对存储空间的使用较多。但如果不使用归档日志则只能使用联机日志文件,当联机日志文件轮询较快时容易发生数据覆盖,导致数据丢失,另外过于频繁的联机日志文件的轮询会产生Oracle数据库log file sync事件,从而影响数据库服务器的IO,当应用调用Logmnr工具使用联机日志文件时还易引发服务器网络性能下降;

4.3、较为依赖固定的数据字典信息,使用Logmnr适用于数据字典变化较少的情形下,当Oracle数据字典发生改变则需要重新执行Logmnr配置流程。

 

5、测试logminer

5.1在登陆用户条件下输入

select name from V$ARCHIVED_LOG;

 5.2  选择一个archive log file作为logmnr测试分析使用

复制archive log file路径

execute sys.dbms_logmnr.add_logfile(logfilename=>'/opt/oracle/archiveARC0000000006_1094815767.0001',options=>dbms_logmnr.new);

 输入

execute sys.dbms_logmnr.start_logmnr(Options => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG)

 解析日志记录条数

select count(*) from v$logmnr_contents;

 

--加载日志文件
begin sys.dbms_logmnr.add_logfile(logfilename=>'/opt/oracle/archiveARC0000000007_1094815767.0001',options=>dbms_logmnr.new); end;

--开启logminer
BEGIN sys.dbms_logmnr.start_logmnr(options =>
SYS.DBMS_LOGMNR.skip_corruption +
SYS.DBMS_LOGMNR.no_sql_delimiter +
SYS.DBMS_LOGMNR.no_rowid_in_stmt +
SYS.DBMS_LOGMNR.dict_from_online_catalog);
END;

--开始读取数据
select
 scn,
 timestamp,
 operation,
 seg_owner,
 table_name,
 sql_redo,
 row_id,
 csf
from v$logmnr_contents where operation='INSERT' AND TABLE_NAME='TEST';

#手动切换日志
ALTER SYSTEM SWITCH LOGFILE;

create table TEST
(
  id              VARCHAR2(36) not null,
  name            VARCHAR2(50) not null
);

insert into TEST(id,name) values('3','zhangsan2');
commit;

 

 创建用户streamsets用户

CREATE USER streamsets IDENTIFIED BY 123456;
GRANT create session, alter session, execute_catalog_role, select any dictionary, select any transaction, select any table to streamsets;
GRANT select on GV_$DATABASE to streamsets;
GRANT select on V_$ARCHIVED_LOG to streamsets;
GRANT select on V_$LOGMNR_CONTENTS to streamsets;
GRANT select on v_$logmnr_parameters to streamsets;
GRANT Resource to streamsets;

 

原文链接:https://www.kancloud.cn/datapipeline-group/v2_7_0/1475268

posted @ 2022-01-25 10:31  所向披靡zz  阅读(41)  评论(0编辑  收藏  举报