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