我们知道SAP系统软件往往在使用多年后,底层数据库中的数据会变得相当庞大。在使用的过程中会产生一部分非生产(业务)数据,这些数据的存在基本无任何意义,不会影响系统正常运行,更不会影响公司业务正常运营。
近几年,随着企业数字化转型的迫切,企业常年积累的大量数据蕴藏着巨大的经济价值,业务数据化、数据业务化,通过数据分析和挖掘,挖掘出数据资产更多价值。
本文介绍SAP系统之Oracle数据库中LOB类型表空间释放方法,通过特殊手段清理掉,然后经过重组后可释放出大量空间,以减缓数据库增长带来的性能和备份方面的压力。同时,缩小数据治理的范围,提升数据治理的工作效率。
对某公司SAP系统中每月数据库增长量最大的数据库表进行分析时,发现近半年来增长量排列前10的表中,有两个LOB类型的表以每月将近3G的速度增长,占到每月数据增长量的20%~25%左右,经分析发现该表所存放的内容并不是业务数据(或生产数据),可通过SAP提供的标准程序进行清理,然后再对LOB表进行重组。
注:Oracle LOB类型表:即LARGE OBJECT表大对象表,该表存放可以是视频、文档、特殊文件等1G以上的大对象,该表通常作为某个Oracle普通的表的某个字段存在(该普通表的实际字段存储指向LOB类型表的指针),因此命名均由系统生成,仅凭名称无法判断该表用途。
由于SAP生产系统数据量超过600G,近半年公司ERP运维部对数据库增长进行严密的追终,经分析,系统中有2个LOB表增长量极大,如图:
数据增长量排列前三的表中有2个都是LOB类型表:
“SYS_LOB0000402122C00007$$”和“SYS_LOB0000398297C00007$$”
在数据库中的大小分别为
两个表加起来将近占用了50个G的数据空间。
具体处理过程
1.分析LOB表
由于LOB类型表其实存放的是某个oracle普通表的一个字段,所以必须先定位该LOB表属于哪个普通表的什么字段:
2.对LOB表所属表分析对SOFFCONT1和SE16N_CD_DATA分析,主要分析数据条目、表大小以及表的功能,使用SE11或SE16分析条目数:经过对表的条目数和大小进行分析,发现,这些表条目数都在百万级,意味着如果需要清理,其可清理空间很大。具体分析表大小,如图:由于这些表的存储方式采用LOB方式,本表中只存放对LOB表的指针,因此本表大小并不大。只需做LOB的重组即可,不需要将本表重组。分析表作用:经分析SOFFCONT1主要记录SAP工作流相关挂接文档,在本系统中,工作流会自动生成文档提醒用户工作流的操作内容,由于工作流上线时间已有2年,系统中存放了大量自动生成的工作流提醒文档,该文档存放在CLUSTD字段,经分析可将已过期的文档删除,但是需要业务部门的认可。经分析SE16N_CD_DATA是记录所有通过SE16N维护表内容操作文档的。其中VALUE字段存放系统自动生成的变更记录文档,由于该表从未清理过,因此SAP上线3年来所有的变更记录均在此表内,因此导致数据量巨大,经分析该表保留3个月内的数据即可。具体数据清理方式由于需要清理的表是SAP标准表,所以绝对不允许使用数据库命令清理,需要通过SAP提供的标准程序进行,可通过SAP官方网站查找相关note,根据note966854可找到相关程序清理表SOFFCONT1,根据note1263844,可清理表SE16N_CD_DATA,清理掉这两个表的多余数据,可大大减少对应LOB表的数据量。重组LOB表当减少LOB表中数据量之后LOB表不会立刻释放,必须进行LOB表进行重组,重组LOB表的方式的步骤如下,以SE16N_CD_DATA为例:在原表上创建一个与现有表字对应LOB表类型相同的临时表ALTER TABLE SAPSR3.SE16N_CD_DATA ADD (VALUE_TEMP CLOB);将现有LOB表的数据拷贝进临时表UPDATE SAPSR3.SE16N_CD_DATA set VALUE_TEMP = VALUE;删除原LOB表ALTER TABLE SAPSR3.SE16N_CD_DATA DROP COLUMN VALUE;重新创建原LOB表ALTER TABLE SAPSR3.SE16N_CD_DATA ADD (VALUE CLOB);将表中数据从临时LOB表中,再拷贝回新创建的LOB表UPDATE SAPSR3.SE16N_CD_DATA SET VALUE = VALUE_TEMP;删除掉临时LOB表ALTER TABLE SAPSR3.SE16N_CD_DATA DROP COLUMN VALUE_TEMP;清理结果以SE16N_CD_DATA为例该表的LOB表“SYS_LOB0000398297C00007$$”,重组前其大小为:如图经过清理重组后:空间释放了91%左右。由于SAP系统数据库表庞大,表之间关系复杂,在分析数据库表增长量时,遇到增长速度过快LOB类型表时,需要根据本文提供的步骤,先定位该LOB关联的普通表,再分析该表的作用,然后判断是否可清理,最后去查找标准的清理方式,由于SAP是十分成熟的应用系统,其系统日志、记录等相当完善,但是使用一段时间后,都需要制定策略去定期删除,以此保证数据库的空间增长不会太快。最后总结1.在使用SAP标准程序删除包含LOB表的标准表时,由于长期没有清理,会因为LOB表中数据量过大,会导致在删除时系统资源不足,需要酌情调整系统参数,然后再进行删除。2.在重组LOB表时所创建的临时表,会因为数据冲突而导致用户前台操作失败,因此在重组LOB表时,必须确认当时其标准表无任何前台用户使用,因此建议在非工作时间完成此任务。在完成重组后,必须将临时表立即删除。广而告之:截至目前,SAP中国顾问云之家微信群(纯SAP顾问)已满。现增加SAP中国顾问雾之家微信群(纯SAP顾问),云之家群和精英顾问群在将近4年的管理中,几乎未出现过乱发游戏、广告、招聘等学习无关的垃圾信息,希望更多的顾问朋友加入进来与大家就SAP软件相关进行纯交流、学习。进群直接联系大圣(微信号:potatocorn),非诚勿扰!!
分享是一种精神
每一个ERPer都有自己独特的思考和感悟!
---SAP齐天大圣
本文是西门子开放式TCP通信的第2篇,上一篇我们讲了使用西门子1200PLC作为TCP服务器的程序编写,可以点击下方链接阅读:【公众号dotNet工控上位机:thinger_swj】基于Socket访问西门子PLC系列教程(一)在完成上述步骤后,接下来就是编写上位机软件与PLC之间进行通信。上位机UI界面设计如下图所示:从上图可以看出...
我有一个大型数据集,列出了在全国不同地区销售的竞争对手产品。我希望通过使用这些新数据帧名称中的列值的迭代过程,根据区域将该数据帧分成几个其他区域,以便我可以分别处理每个数据帧-例如根据价格对每个地区的信息进行排序,以了解每个地区的市场情况。我给出了以下数据的简化版本:Competitor Region ProductA Product...
作为一名IT从业者,我来回答一下这个问题。首先,对于具有Java编程基础的人来说,学习Python的初期并不会遇到太大的障碍,但是要结合自己的发展规划来制定学习规划,尤其要重视学习方向的选择。Java与Python都是比较典型的全场景编程语言,相比于Java语言来说,当前Python语言在大数据、人工智能领域的应用更为广泛一些,而且大...
这段时间通过学习相关的知识,最大的变化就是看待事物更加喜欢去了解事物后面的本质,碰到问题后解决问题思路也发生了改变。举个具体的例子,我在学习数据分析,将来会考虑从事这方面的工作,需要掌握的相关专业知识这个问题暂且按下不表,那哪些具体的问题是我需要了解的呢,以下简单罗列:1、了解数据分析师这个岗位在各个地区的需求情况?2、数据分析师的薪...
这一节将开始学习python的一个核心数据分析支持库---pandas,它是python数据分析实践与实战的必备高级工具。对于使用 Python 进行数据分析来说,pandas 几乎是无人不知,无人不晓的。今天,我们就来认识认识数据分析界鼎鼎大名的 pandas。目录一. pandas主要数据结构 SeriesDataFrame二...