当前位置:  数据库>oracle

数据交换程序异常引发的艰难的Oracle数据提纯作业

    来源: 互联网  发布时间:2017-04-19

    本文导语: 巡检数据库发现,其中一个数据库表空间一个晚上暴增了9G: 表空间状况:XML:NAMESPACE PREFIX = O /    TABLESPACE_NAME TOTAL_SPACE USED_SPACE PCT_FREE 1 SZ_DATA 75774.984375m 63662.796875M  84.02% 因为晚上的WEB业务非常稀少,马上怀疑是数...

巡检数据库发现,其中一个数据库表空间一个晚上暴增了9G:

表空间状况:XML:NAMESPACE PREFIX = O /

  

TABLESPACE_NAME

TOTAL_SPACE

USED_SPACE

PCT_FREE

1

SZ_DATA

75774.984375m

63662.796875M

 84.02%

因为晚上的WEB业务非常稀少,马上怀疑是数据交换出了问题,不是真的预订数据多就是数据交换程序出错。因为我们的交换程序有个特性,把所有的交换内容包括交换出错的详细信息都用CLOB字段保存在表里了。

于是用如下语句进一步查大字段对象

  • --大字段 
  • SELECT A.TABLE_NAME, 
  •        A.COLUMN_NAME, 
  •        B.SEGMENT_NAME, 
  •        B.SEGMENT_TYPE, 
  •        B.TABLESPACE_NAME, 
  •        B.BYTES / 1024 / 1024
  •   FROM USER_LOBS A, USER_SEGMENTS B 
  • WHERE A.SEGMENT_NAME = B.SEGMENT_NAME 
  • ORDER BY B.BYTES DESC; 
  • 查询结果:

    TABLE_NAME

    COLUMN_NAME

    SEGMENT_NAME

    SEGMENT_TYPE

    TABLESPACE_NAME

    B.BYTES/1024/1024

    java命名空间javax.print类docflavor的类成员方法:客户端格式化打印数据定义及介绍 iis7站长之家_LOG

    ERROR_TRACE

    SYS_LOB0000077498C00012$$

    LOBSEGMENT

    SZ_DATA

    50310

    SEND_CONTROL

    CONTENT

    SYS_LOB0000077595C00003$$

    LOBSEGMENT

    SZ_DATA

    2240

    ACCESSORY_UPLOAD

    FILEDATA

    SYS_LOB0000077486C00010$$

    LOBSEGMENT

    SZ_DATA

    488

    EXCHANGE_LOG_HISTORY

    ERROR_TRACE

    SYS_LOB0000133755C00012$$

    LOBSEGMENT

    SZ_DATA

    72

    SEND_CONTROL

    ERR_TRACE

    SYS_LOB0000077595C00008$$

    LOBSEGMENT

    SZ_DATA

    9

    FILES

    CONTENT

    SYS_LOB0000077501C00004$$

    LOBSEGMENT

    SZ_DATA

    2

    SEND_CONTROL_HISTORY_2009

    CONTENT

    SYS_LOB0000133605C00003$$

    LOBSEGMENT

    SZ_DATA

    0.0625

    SEND_CONTROL_HISTORY

    ERR_TRACE

    SYS_LOB0000103089C00008$$

    LOBSEGMENT

    SZ_DATA

    0.0625

    MEMOS

    CONTENT

    SYS_LOB0000077530C00006$$

    LOBSEGMENT

    SZ_DATA

    0.0625

    SEND_CONTROL_HISTORY

    CONTENT

    SYS_LOB0000103089C00003$$

    LOBSEGMENT

    SZ_DATA

    0.0625

    NOTICES

    CONTENT

    SYS_LOB0000077538C00007$$

    LOBSEGMENT

    SZ_DATA

    0.0625

    SEND_CONTROL_HISTORY_2009

    ERR_TRACE

    SYS_LOB0000133605C00008$$

    LOBSEGMENT

    SZ_DATA

    0.0625

    很显然上述EXCHANGE_LOG占据了50310M的空间,而该表空间总共消耗了63662.796875M,显然问题就出在这个大对象下。

    因为该部分数据不能测地删除,故采用如下JOB对重复数据进行提纯处理:

    我们通过建exchange_log_history表提取sz_exchange_log中的数据,删除大量的冗余数据

  • create or replace procedure p_job_exchange_log_pure Authid Current_User Is 
  •   num   number; 
  •   days  number; 
  •   v_sql varchar2(3000); 
  • begin 
  •  
  • select trunc(Sysdate- min(create_date)) into days from exchange_log; 
  •  
  •   num := 0; 
  •   while num < days 
  •  
  •   LOOP 
  •     begin 
  •       --建立断点,若异常则回滚到point1之前 
  •       savepoint point1; 
  •       v_sql := 'insert into exchange_log_history('; 
  •       v_sql := v_sql || 
  •                ' Select * from exchange_log a Where (msg_type,msg_code) in (select msg_type,msg_code from exchange_log Where trunc(create_date)=trunc(sysdate-'|| num ||') group by msg_type,msg_code having count(*) >= 1)'; 
  •       v_sql := v_sql || 
  •                ' And rowid in (select min(rowid) from exchange_log Where trunc(create_date)=trunc(sysdate-'|| num || ') group by msg_type,msg_code having count(*)>=1))'; 
  •       execute immediate v_sql; 
  •       commit; 
  •       num := num + 1; 
  •     Exception 
  •       when others then 
  •         rollback to savepoint point1; /*//*异常处理,保存点下面的操作都不会被执行*/ 
  •         return; 
  •     end; 
  •  
  •   end LOOP; 
  •   End p_job_exchange_log_pure; 

  •     
     
     
     
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.print类docflavor的类成员方法:服务格式化打印数据定义及介绍
  • 如何监控数据库的数据,如果数据库数据更改,就通知Server
  • <<大话数据结构>>中冒泡排序算法改进
  • 如何从数据库中或文本文件中提取数据到另一个数据库中?
  • java命名空间javax.print类docflavor的类成员方法:客户端格式化打印数据定义及介绍
  • 用JDBC连接Oracle数据库时,如何向数据库中写日期型数据(格式)?谢了!
  • 基于Key-Value的NOSQL数据库Redis的数据结构及常用相关命令介绍
  • linux下用libpcap库函数抓包,如何判断捕获的数据包是IP数据包还是非IP数据包,顺便说一下、捕获的数据包除了IP数据包之外,还有那些种类,非常感谢!!!
  • c#多线程更新窗口(winform)GUI的数据
  • 建立一个ftp数据连接并传送或接受完毕一些数据后,能否不关闭此数据连接,下次接着用?
  • 基于Hadoop的数据挖掘框架
  • 我从JSP页将数据插入到oracle数据库中,为何汉字插入后数据库中显示为乱码呢?
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 串口应用程序,当对方发送大量的数据时,本方的数据无法发出。对方停止发送,本方的数据仍然无法发出。不知道是什么原因。
  • Linux c++库boost unordered_set数据插入及查找代码举例
  • 公司要给客户做报表,从数据库返回数据,他们死活要返回的格式为Excel格式,请问我怎样才能把数据库返回的数据存为Excel的格式?
  • 文档数据库mongodb与列式数据库hbase详细比较
  • 数据在页面写不进数据库,也不可以从数据库中读出是什么原因?
  • SQL Server 2008如何进行数据库分离和附加详细介绍
  • mysql 本地数据库如何从远程数据库导数据
  • nosql数据库levedb介绍及levedb最新版1.18下载安装
  • 散分:Jbuilder6开发数据库应用请问你们都用什么数据库? 免费的数据库有那些?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,