初步了解过SQL*Loader之后,还有些时间
既然Oracle® Database Utilities 10g Release 2 (10.2)B14215-01文档还有很多工具的介绍
就手把另一个Oracle比较重要的工具LogMiner看看吧,毕竟此工具还是十分强大的
有些时候,DBA可能需要去寻找数据库在某个时段执行过什么操作
但Oracle本身并没有直接显示历史操作的视图
用户可以通过设置audit,trace等一些功能来实现跟踪
但这些会让Oracle产生一些额外的开销
数据库的动作,大都会记录在redo log中
但是,正常情况下,用户无法直接查看redo log的内容
LogMiner就是让用户去查看此内容的工具
它能帮助DBA查明某个错误的操作,查找某个特定条件的操作,辅助DBA进行性能调整
使用LogMiner,应当熟悉几个设置
源数据库,将要分析的redo log所属的数据库
分析数据库,进行分析的数据库,可以是源库,也可以是另一个
源库和分析库需要相同的硬件配置
LogMiner数据字典,帮助我们更友好的理解log内容,否则我们将得到难以理解的内容
需要分析的所有redo log,LogMiner不能分析来自不同源库,SCN不一直的redo log
其中,需要注意相关PL/SQL package的使用,DBMS_LOGMNR_D和DBMS_LOGMNR
(需要EXECUTE_CATALOG_ROLE权限)
经过调用相关package后,可以通过V$LOGMNR_CONTENTS来查看分析结果
(需要SELECT ANY TRANSACTION权限)
对于LogMiner数据字典的指定,可以为 在线目录,提取到redo log,提取到普通文件
(最后一项不被推荐,仅为兼容用)
对于所需的redo log文件的指定,可为 自动(设置时间或SCN),手动(DBMS_LOGMNR.ADD_LOGFILE)
而在调用LogMiner的过程中,众多的Option选项的组合
可以实现更多更复杂的功能
在举例使用LogMiner之前,有个Oracle的特性需要注意
supplement logging,以redo为基础的应用,需要一些附加列记录到redo log中
这个日志记录过程就是supplement logging
Oracle默认并没有开启这个特性
并推荐如果常规使用LogMiner,请打开minimal supplemental logging
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
是其它环境中(如分布式)进行LogMiner,可以考虑Identification Key Logging等其它特性
要关闭刚才添加的功能,可以通过命令
ALTER DATABASE DROP SUPPLEMENTAL LOG DATA;
好了,粗略总结先告一段落,进行举例,对最近的归档日志进行LogMiner操作
先来查找最近的归档日志
SELECT NAME FROM V$ARCHIVED_LOG
WHERE FIRST_TIME = (SELECT MAX(FIRST_TIME) FROM V$ARCHIVED_LOG);
然后把查到的结果,添加为要查找的LOGFILE(请注意)
EXECUTE DBMS_LOGMNR.ADD_LOGFILE(
LOGFILENAME => '/usr/oracle/data/db1arch_1_16_482701534.dbf',
OPTIONS => DBMS_LOGMNR.NEW);
开始LogMiner
EXECUTE DBMS_LOGMNR.START_LOGMNR(
OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
嗯,可以查看V$LOGMNR_CONTENTS了
另外不要忘记结束LogMiner
简单熟悉了一下Oracle强大的工具LogMiner的一些相关信息,也稍微进行了实践
还有很多强大的功能没有涉及,今后有机会慢慢使用吧~
今天主要是对Oracle的一些工具做了一项初步的了解
要精通这些工具可不是一朝一夕的事情
今后要走的路还很长啊 ◎◎
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/556359/viewspace-526436/,如需转载,请注明出处,否则将追究法律责任。