Oracle配置LogMiner
注意:
1、某个Oracle数据源能同时运行的任务数量取决于该Oracle的内存大小
2、若数据量太大导致日志组频繁切换需要增加日志组数量,增大单个日志组存储大小
一、Oracle 10g(单机版)
1、查询Oracle版本信息,这里配置的是Oracle 10g
--查看oracle版本
select *
from v$version;
本章Oracle的版本如上图所示。
2、通过命令行方式登录Oracle,查看是否开启日志归档
--查询数据库归档模式
archive
log list;
图中显示No Archive Mode
表示未开启日志归档。
3、开启日志归档,开启日志归档需要重启数据库,请注意
a、配置归档日志保存的路径
根据自身环境配置归档日志保存路径,需要提前创建相应目录及赋予相应访问权限
# 创建归档日志保存目录
mkdir -p /data/oracle/archivelog
# 进入Oracle目录
cd $ORACLE_HOME
# 查看Oracle权限组,本章权限组如下图所示
ls -l
# 对归档日志保存目录赋予相应权限
chown -R 下图中的用户名:下图中的组名 /data/oracle/
--配置归档日志保存的路径
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
表示归档日志储存路径。
4、配置日志组
a、查询默认日志组信息
SELECT *
FROM v$log;
如上图所示,日志组的默认数量为2组,大小为4194304/1024/1024 = 4MB,这意味着日志大小每达到4MB就会进行日志组的切换,切换太过频繁会导致查询出错,因此需要增加日志组数量及大小。
b、查询日志组储存路径
SELECT *
FROM v$logfile;
如上图所示,默认路径为/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;
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;
SELECT *
FROM SESSION_PRIVS;
至此,Oracle 10g数据库LogMiner实时采集配置完毕。
二、Oracle 11g(单机版)
1、查询Oracle版本信息,这里配置的是Oracle 11g
--查看oracle版本
select *
from v$version;
本章Oracle的版本如上图所示。
2、通过命令行方式登录Oracle,查看是否开启日志归档
--查询数据库归档模式
archive
log list;
图中显示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
表示归档日志储存路径。
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;
SELECT *
FROM SESSION_PRIVS;
至此,Oracle 11g数据库LogMiner实时采集配置完毕。
三、Oracle 12c(单机版非CBD)
1、查询Oracle版本信息,这里配置的是Oracle 12c
--查看oracle版本
select BANNER
from v$version;
本章Oracle的版本如上图所示。
2、通过命令行方式登录Oracle,查看是否开启日志归档
--查询数据库归档模式
archive
log list;
图中显示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
表示归档日志储存路径。
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;
SELECT *
FROM SESSION_PRIVS;
至此,Oracle 12c数据库LogMiner实时采集配置完毕。