Skip to main content

Oracle配置LogMiner

注意:

1、某个Oracle数据源能同时运行的任务数量取决于该Oracle的内存大小

2、若数据量太大导致日志组频繁切换需要增加日志组数量,增大单个日志组存储大小

一、Oracle 10g(单机版)

1、查询Oracle版本信息,这里配置的是Oracle 10g

--查看oracle版本
select *
from v$version;

image

本章Oracle的版本如上图所示。

2、通过命令行方式登录Oracle,查看是否开启日志归档

--查询数据库归档模式
archive
log list;

image

图中显示No Archive Mode表示未开启日志归档。

3、开启日志归档,开启日志归档需要重启数据库,请注意

a、配置归档日志保存的路径

根据自身环境配置归档日志保存路径,需要提前创建相应目录及赋予相应访问权限

# 创建归档日志保存目录
mkdir -p /data/oracle/archivelog

# 进入Oracle目录
cd $ORACLE_HOME

# 查看Oracle权限组,本章权限组如下图所示
ls -l

# 对归档日志保存目录赋予相应权限
chown -R 下图中的用户名:下图中的组名 /data/oracle/

image

--配置归档日志保存的路径
alter
system set log_archive_dest_1='location=/data/oracle/archivelog' scope=spfile;

b、关闭数据库

shutdown
immediate;
startup
mount;

c、开启日志归档

--开启日志归档
alter
database archivelog;

d、开启扩充日志

--开启扩充日志
alter
database add supplemental log data (all) columns;

e、开启数据库

alter
database open;

再次查询数据库归档模式,Archive Mode表示已开启归档模式,Archive destination表示归档日志储存路径。

image

4、配置日志组

a、查询默认日志组信息

SELECT *
FROM v$log;

image

如上图所示,日志组的默认数量为2组,大小为4194304/1024/1024 = 4MB,这意味着日志大小每达到4MB就会进行日志组的切换,切换太过频繁会导致查询出错,因此需要增加日志组数量及大小。

b、查询日志组储存路径

SELECT *
FROM v$logfile;

image

如上图所示,默认路径为/usr/lib/oracle/xe/app/oracle/flash_recovery_area/XE/onlinelog/

c、新增日志组与删除原有日志组

请与DBA联系,决定是否可以删除原有日志组。

--增加两组日志组
alter
database add logfile group 3 ('/usr/lib/oracle/xe/app/oracle/flash_recovery_area/XE/onlinelog/redo3.log') size 200m;
alter
database add logfile group 4 ('/usr/lib/oracle/xe/app/oracle/flash_recovery_area/XE/onlinelog/redo4.log') size 200m;
--删除原有两组日志组,并继续新增两组日志组
alter
system checkpoint;
alter
system switch logfile;
alter
database drop
logfile group 1;
alter
database drop
logfile group 2;
alter
database add logfile group 1 ('/usr/lib/oracle/xe/app/oracle/flash_recovery_area/XE/onlinelog/redo1.log') size 200m;
alter
database add logfile group 2 ('/usr/lib/oracle/xe/app/oracle/flash_recovery_area/XE/onlinelog/redo2.log') size 200m;

d、查询创建的日志组

SELECT *
FROM v$log;
SELECT *
FROM v$logfile;

image

image

5、检查是否安装LogMiner工具

Oracle10g默认已安装LogMiner工具包,通过以下命令查询:

desc DBMS_LOGMNR;
desc DBMS_LOGMNR_D;

若无信息打印,则执行下列SQL初始化LogMiner工具包:

@
$ORACLE_HOME
/rdbms/admin/dbmslm.sql;
@
$ORACLE_HOME
/rdbms/admin/dbmslmd.sql;

6、创建LogMiner角色并赋权

其中roma_logminer_privs为角色名称,可根据自身需求修改。

create role roma_logminer_privs;
grant
create
session,execute_catalog_role,select any transaction,flashback any table,select any table,lock any table,select any dictionary to roma_logminer_privs;
grant select on SYSTEM.LOGMNR_COL$ to roma_logminer_privs;
grant select on SYSTEM.LOGMNR_OBJ$ to roma_logminer_privs;
grant select on SYSTEM.LOGMNR_USER$ to roma_logminer_privs;
grant select on SYSTEM.LOGMNR_UID$ to roma_logminer_privs;
grant select_catalog_role to roma_logminer_privs;

7、创建LogMiner用户并赋权

其中roma_logminer为用户名,password为密码,请根据自身需求修改。

create
user roma_logminer identified by password default tablespace users;
grant roma_logminer_privs to roma_logminer;
grant execute_catalog_role to roma_logminer;
alter
user roma_logminer quota unlimited on users;

8、验证用户权限

以创建的LogMiner用户登录Oracle数据库,执行以下SQL查询权限,结果如图所示:

 SELECT *
FROM USER_ROLE_PRIVS;

image

SELECT *
FROM SESSION_PRIVS;

image

至此,Oracle 10g数据库LogMiner实时采集配置完毕。

二、Oracle 11g(单机版)

1、查询Oracle版本信息,这里配置的是Oracle 11g

--查看oracle版本
select *
from v$version;

image

本章Oracle的版本如上图所示。

2、通过命令行方式登录Oracle,查看是否开启日志归档

--查询数据库归档模式
archive
log list;

image

图中显示No Archive Mode表示未开启日志归档。

3、开启日志归档,开启日志归档需要重启数据库,请注意

a、配置归档日志保存的路径

根据自身环境配置归档日志保存路径,需要提前创建相应目录及赋予相应访问权限

 alter
system set log_archive_dest_1='location=/data/oracle/archivelog' scope=spfile;

b、关闭数据库

shutdown
immediate;
startup
mount;

c、开启日志归档

--开启日志归档
alter
database archivelog;

d、开启扩充日志

--开启扩充日志
alter
database add supplemental log data (all) columns;

e、开启数据库

alter
database open;

再次查询数据库归档模式,Archive Mode表示已开启归档模式,Archive destination表示归档日志储存路径。 image

4、检查是否安装LogMiner工具

Oracle11g默认已安装LogMiner工具包,通过以下命令查询:

desc DBMS_LOGMNR;
desc DBMS_LOGMNR_D;

若无信息打印,则执行下列SQL初始化LogMiner工具包:

@
$ORACLE_HOME
/rdbms/admin/dbmslm.sql;
@
$ORACLE_HOME
/rdbms/admin/dbmslmd.sql;

5、创建LogMiner角色并赋权

其中roma_logminer_privs为角色名称,可根据自身需求修改。

create role roma_logminer_privs;
grant
create
session,execute_catalog_role,select any transaction,flashback any table,select any table,lock any table,select any dictionary to roma_logminer_privs;
grant select on SYSTEM.LOGMNR_COL$ to roma_logminer_privs;
grant select on SYSTEM.LOGMNR_OBJ$ to roma_logminer_privs;
grant select on SYSTEM.LOGMNR_USER$ to roma_logminer_privs;
grant select on SYSTEM.LOGMNR_UID$ to roma_logminer_privs;
grant select_catalog_role to roma_logminer_privs;

6、创建LogMiner用户并赋权

其中roma_logminer为用户名,password为密码,请根据自身需求修改。

create
user roma_logminer identified by password default tablespace users;
grant roma_logminer_privs to roma_logminer;
grant execute_catalog_role to roma_logminer;
alter
user roma_logminer quota unlimited on users;

7、验证用户权限

以创建的LogMiner用户登录Oracle数据库,执行以下SQL查询权限,结果如图所示:

 SELECT *
FROM USER_ROLE_PRIVS;

image

SELECT *
FROM SESSION_PRIVS;

image

至此,Oracle 11g数据库LogMiner实时采集配置完毕。

三、Oracle 12c(单机版非CBD)

1、查询Oracle版本信息,这里配置的是Oracle 12c

--查看oracle版本
select BANNER
from v$version;

image

本章Oracle的版本如上图所示。

2、通过命令行方式登录Oracle,查看是否开启日志归档

--查询数据库归档模式
archive
log list;

image

图中显示No Archive Mode表示未开启日志归档。

3、开启日志归档,开启日志归档需要重启数据库,请注意

a、配置归档日志保存的路径

根据自身环境配置归档日志保存路径,需要提前创建相应目录及赋予相应访问权限

 alter
system set log_archive_dest_1='location=/data/oracle/archivelog' scope=spfile;

b、关闭数据库

shutdown
immediate;
startup
mount;

c、开启日志归档

--开启日志归档
alter
database archivelog;

d、开启扩充日志

--开启扩充日志
alter
database add supplemental log data (all) columns;

e、开启数据库

alter
database open;

再次查询数据库归档模式,Archive Mode表示已开启归档模式,Archive destination表示归档日志储存路径。 image

4、创建LogMiner角色并赋权

其中roma_logminer_privs为角色名称,可根据自身需求修改。

create role roma_logminer_privs;
grant
create
session,execute_catalog_role,select any transaction,flashback any table,select any table,lock any table,logmining,select any dictionary to roma_logminer_privs;
grant select on SYSTEM.LOGMNR_COL$ to roma_logminer_privs;
grant select on SYSTEM.LOGMNR_OBJ$ to roma_logminer_privs;
grant select on SYSTEM.LOGMNR_USER$ to roma_logminer_privs;
grant select on SYSTEM.LOGMNR_UID$ to roma_logminer_privs;
grant select_catalog_role to roma_logminer_privs;
grant LOGMINING to roma_logminer_privs;

5、创建LogMiner用户并赋权

其中roma_logminer为用户名,password为密码,请根据自身需求修改。

create
user roma_logminer identified by password default tablespace users;
grant roma_logminer_privs to roma_logminer;
grant execute_catalog_role to roma_logminer;
alter
user roma_logminer quota unlimited on users;

6、验证用户权限

以创建的LogMiner用户登录Oracle数据库,执行以下SQL查询权限,结果如图所示:

 SELECT *
FROM USER_ROLE_PRIVS;

image

SELECT *
FROM SESSION_PRIVS;

image

至此,Oracle 12c数据库LogMiner实时采集配置完毕。