首先是数据库宕机!
然后上服务器上一看磁盘空间被占满,立即清除归档日志。重启正常使用!
后续是发现DG备库数据严重延迟,跑到备库上看,很多日志都还没应用
用oracle 的 logmini 查看了归档日志
SQL> select count(1),substr(sql_redo,1,30) from v$logmnr_contents group by substr(sql_redo,1,30) order by count(1) desc;
COUNT(1) SUBSTR(SQL_REDO,1,30)
---------- ------------------------------------------------------------
93825 update "HPT"."T_CART" set "STA
15 commit;
15 set transaction read write;
1 update "SYS"."JOB$" set "LAST_
1 update "SYS"."JOB$" set "THIS_
1
1 insert into "SYSMAN"."MGMT_SYS
应用频繁 update t_cart这张表!
是应用程序的代码逻辑问题,导致一直更新购物车表...产生了大量的dml,让数据库频繁进行归档日志切换。导致拓机
是应用程序的代码逻辑问题,导致一直更新购物车表...产生了大量的dml,让数据库频繁进行归档日志切换。导致拓机
改下SQL 就消停了
手工方式运行 oracle的 LogMiner
--先注册这两个SQL
Oracle_home/rdbms/admin/dbmslm.sql
Oracle_home/rdbms/admin/dbmslmd.sql
--加载要分析的日志
exec sys.dbms_logmnr.add_logfile(LogFileName => '/oracle/flash_recovery_area/orcl/archivelog/ARC0000115753_0829578749.0001',Options => dbms_logmnr.new);
exec sys.dbms_logmnr.start_logmnr(options=>sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);
--分析结果的查询SQL
select seg_owner,count(*) from v$logmnr_contents group by seg_owner;
select count(1),substr(sql_redo,1,30) from v$logmnr_contents group by substr(sql_redo,1,30) order by count(1) desc;
--日志补全,不然redoSql出现 Unsupported SQLREDO
SELECT supplemental_log_data_min FROM v$database;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;