oracle 11g 归档日志分析
2013-11-01 15:29
507 查看
1. 开启数据库归档模式;(必须)
2. 开启数据库补全日志;(必须)
3. 生成离线数据字典;(不推荐使用在线数据字典,日志量大的情况下会影响效率)
4. 创建数据库触发器;(用来记录客户端IP地址,可选)
5. 开始日志分析;
6. 查询分析结果;
7. 遗留问题。
1. 开启数据库归档日志
2. 开启数据库补全日志
3. 生成离线数据字典
4. 创建数据库触发器
5. 开始日志分析
6. 查询分析结果
如下图:
7. 遗留问题
虽然创建了相关触发器,且在视图v$session的client_info列成功记录了IP地址,但分析结果SESSION_INFO列中的Client_info信息仍然为空,不知道问题在哪儿,这个留待以后解决。
2. 开启数据库补全日志;(必须)
3. 生成离线数据字典;(不推荐使用在线数据字典,日志量大的情况下会影响效率)
4. 创建数据库触发器;(用来记录客户端IP地址,可选)
5. 开始日志分析;
6. 查询分析结果;
7. 遗留问题。
1. 开启数据库归档日志
--在磁盘上创建归档日志文件存放目录 SQL> HOST MKDIR d:\arch_dest_01; SQL> HOST MKDIR d:\arch_dest_02; --指定归档日志存放路径及文件命名格式: SQL> ALTER SYSTEM SET log_archive_dest_1='location=d:\arch_dest_01' SCOPE=SPFILE; SQL> ALTER SYSTEM SET log_archive_dest_2='location=d:\arch_dest_02' SCOPE=SPFILE; SQL> ALTER SYSTEM SET log_archive_format='redo_%D_%T_%R_%S.log' SCOPE=SPFILE; --关闭并重新加载数据库 SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP MOUNT; --启用归档日志模式并打开数据库 SQL> ALTER DATABASE archivelog; SQL> ALTER DATABASE open; --确认数据库为归档日志模式 SQL> SELECT log_mode FROM v$database; --返回ARCHIVELOG为归档模式 SQL> SELECT archiver FROM v$instance; --返回STARTED为归档模式 --强制日志切换并确认归档成功 SQL> ALTER SYSTEM SWITCH logfile; SQL> SELECT name FROM v$archived_log;
2. 开启数据库补全日志
SQL> ALTER DATABASE ADD SUPPELEMENTAL LOG DATA(PRIMARY KEY, UNIQUE INDEX) COLUMNS; --查看补全日志是否开启 SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_ui, supplemental_log_data_fk, supplemental_log_data_all FROM v$database;
3. 生成离线数据字典
--初始化数据字典路径 SQL> ALTER SYSTEM SET UTL_FILE_DIR='d:\ora_dic' SCOPE=SPFILE; --重启数据库 SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP; --生成离线数据字典 SQL> EXECUTE dbms_logmnr_d.build(dictionary_filename => 'test.dic', dictionary_location => 'd:\ora_dic');
4. 创建数据库触发器
SQL> CREATE OR REPLACE TRIGGER on_logon_trigger SQL> AFTER logon ON DATABASE SQL> BEGIN SQL> dbms_application_info.set_client_info(sys_context('userenv','ip_address')); SQL> END;
5. 开始日志分析
--添加待分析归档日志文件 SQL> EXECUTE dbms_logmnr.add_logfile(logfilename => 'd:\arch_dest_01\redo_xxx1.log', options => dbms_logmnr.new); SQL> EXECUTE dbms_logmnr.add_logfile(logfilename => 'd:\arch_dest_01\redo_xxx2.log'); SQL> EXECUTE dbms_logmnr.add_logfile(logfilename => 'd:\arch_dest_01\redo_xxx3.log'); --方法1:使用在线数据字典(只能在被分析数据库上使用) SQL> EXECUTE dbms_logmnr.start_logmnr(options => dbms_logmnr.dict_from_online_catalog); --方法2:使用离线数据字典 SQL> EXECUTE dbms_logmnr.start_logmnr(DictFileName => 'd:\oar_dic\test.dic'); --分析结果在v$logmnr_content,结束分析会话 SQL> EXECUTE dbms_logmnr.end_logmnr;
6. 查询分析结果
--根据相关视图创建分析结果表 SQL> CREATE TABLE logmnr_result AS (SELECT * FROM v$logmnr_contents); --创建索引以提高查询速度 CREATE INDEX LOGMNR_TIMESTAMP ON logmnr_result (TIMESTAMP) tablespace MYCRM pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited ); --查询分析结果 SELECT l.timestamp, l.operation, l.table_name, l.machine_name, l.session_info, l.sql_redo FROM logmnr_20131101 l WHERE l.table_space = 'MYCRM' AND l.table_name IN('ORDERHIST', 'ORDERDET', 'STOCK') ORDER BY l.timestamp;
如下图:
7. 遗留问题
虽然创建了相关触发器,且在视图v$session的client_info列成功记录了IP地址,但分析结果SESSION_INFO列中的Client_info信息仍然为空,不知道问题在哪儿,这个留待以后解决。
相关文章推荐
- ORACLE 11g 使用logminer 分析归档日志和在线日志
- ORACLE 11g 使用logminer 分析归档日志和在线日志
- Oracle 11G RAC开启和关闭归档日志
- oracle 11g归档日志研究_4
- Oracle 11G RAC开启和关闭归档日志
- 使用LogMiner分析oracle的redo日志和归档
- 20160519:利用Toad的LogMiner进行Oracle归档日志内容分析
- Oracle在线归档重做日志概念分析
- oracle 11g 之LogMiner分析重做日志实践
- ORACLE 11G 单实例 磁盘文件系统 DG 归档日志删除脚本 基于RED HAT LINUX 5.3 X86 64BIT
- Oracle 11g 删除归档日志
- ORACLE 11g archive log 归档日志
- oracle 11g rac开启归档日志和闪回
- oracle 11g开启归档模式及修改归档目录 日志满
- Oracle 11g正确删除归档日志方法
- Oracle 11g 更改归档模式、目录和日志大小
- oracle 11g归档日志研究_1
- ORACLE 11G 单实例 磁盘文件系统 DG 归档日志删除脚本 基于RED HAT LINUX 5.3 X86 64BIT
- oracle 11g归档日志研究_2
- oracle 11g rac 环境下 静态监听的配置 以及 归档日志备份