[日期:2017-11-11] | [字体:大 中 小] |
logmnr 可以用来分析redo 日志和归档文件。将redo日志或者归档文件中的内容提取出来,供DBA进行操作分析历史操作,比如进行误删除操作的恢复。 LOGMNR 分析日志,需要创建一个数据字典,这个数据字典可以存储在外部文件(external file) 或者redo log 中。 如果要存储在外部文件中,数据库参数utl_file_dir 需要配置,并重启数据库。有些时候,我们的生产系统不能重启,因此只能选用redo log来存储数据字典。
- alter system set utl_file_dir = '/home/Oracle'sid = '*'scope = spfile;
- EXECUTE DBMS_LOGMNR_D.BUILD('dictionary.ora', '/home/oracle', OPTIONS = >DBMS_LOGMNR_D.STORE_IN_FLAT_FILE);
使用redo log 存储数据字典不需要重启数据库,也不需要配置任何参数,这种方式比较灵活.直接可以创建数据字典到redo文件。
- dbms_logmnr_d.build(options = >dbms_logmnr_d.STORE_IN_REDO_LOGS);
- dbms_logmnr.ADDFILE('+RECOC1/dbm01/archivelog/2017_09_13/thread_2_seq_808.1090.954602409', dbms_logmnr.new);
- dbms_logmnr.ADDFILE('+RECOC1/dbm01/archivelog/2017_09_13/thread_2_seq_809.1076.954602483', dbms_logmnr.addfile);
函数 | 说明 |
dbms_logmnr.new | 在数据字典中添加第一个需要分析的文件 |
dbms_logmnr.addfile | 在数据字典中添加其他需要分析的文件 |
我们使用不同的方式存储数据字典,让oracle开始分析文件的命令参数不一样。如果是外部文件方式存储数据字典,是不需要使用任何参数的,如果使用的是redo 日志文件,需要明确告知Oracle 数据字典存储在redo文件中
- dbms_logmnr.start;
- dbms_logmnr.start_logmnr(options = >dbms_logmnr.dict_from_online_catalog + dbms_logmnr.committed_data_only);
经过上一步分析后,日志中的内容,可以在视图v$logmnr_contents 中查询到。
- dbms_logmnr.end_logmnr;
来源: http://www.linuxidc.com/Linux/2017-11/148503.htm