Oracle分析ROLLBACK是否产生日志信息
2012-10-25 16:12:11 来源:WEB开发网直接使用包来分析日志(11g r2的版本)
--使用包分析日志的方法 exec dbms_logmnr.add_logfile('/data/archive/redo001.log',dbms_logmnr.new); exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog); --查询日志信息 select timestamp,scn,sql_redo from v$logmnr_contents where lower(sql_redo) like '%insert%' and seg_name='TEST' and seg_owner='TEST'; dbms_logmnr.end_logmnr(); --停止日志分析
注意:
如果所有操作只回滚不提交的话,最后生成的归档日志是不会有任何人工操作数据的(可能会有一些系统操作的数据信息),因为没有永久改变的操作.
SQL> select group#,archived,status,first_time from v$log;
GROUP# ARC STATUS FIRST_TIME
---------- --- ---------------- -------------------
1 YES INACTIVE 2012-10-25 11:17:50
2 NO CURRENT 2012-10-25 11:17:57
3 YES INACTIVE 2012-10-25 11:17:39
也就是现在分析1和3,v$logmnr_contents表里没有任何信息(之前我只有做rollback,未做任何commit事务).只有分析2、CURRENT状态的才有数据.
还要注意的是如果分析活动的日志(如现在分析GROUP 2),有时候不能使用INSERT INTO TT select * from v$logmnr_contents,来保存日志数据,它会提示如下错误:
第 1 行出现错误:
ORA-00310: 归档日志包含序列 290; 要求序列 287
ORA-00334: 归档日志: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG'
这个不是很清楚原因,个人猜想可能是ARC进程正在归档造成的,此时查询V$LOG发现如下:
SQL> select group#,archived,status,first_time from v$log
GROUP# ARC STATUS FIRST_TIME
---------- --- ---------------- -------------------
1 YES ACTIVE 2012-10-25 12:08:45
2 YES ACTIVE 2012-10-25 12:09:41
3 NO CURRENT 2012-10-25 12:09:45
在分析日志组2(状态为:CURRENT)的数据时发现,如果insert操作后(
语句为:
begin
for i in 1..1000 loop
INSERT into tt002 values(i,'aa');
end loop;
end;)
不rollback,也不commit.分析后的日志信息如下:
TIMESTAMP SCN
------------------- ----------
SQL_REDO
--------------------------------------------------------------------------------
2012-10-25 11:34:38 3813555
insert into "TEST"."TT002"("I","J") values ('1','aa');
2012-10-25 11:34:38 3813555
insert into "TEST"."TT002"("I","J") values ('2','aa');
2012-10-25 11:34:38 3813555
insert into "TEST"."TT002"("I","J") values ('3','aa');
......
如果ROLLBACK之后,产生的日志信息如下:
SQL> select timestamp,scn,sql_redo
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接