- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于调试包体的一个思路
Hi,当我们发现一个包体有问题的时候,往往因为它过大而没法进行调试,下面我讲下前几天我们遇到的一个情况。当然,这思路不是通用的,只提供借鉴,具体问题还要具体分析。同事反应说有一个库的自动同步停止了,经过分析,我们定位到包OLRSDWPKG_DATA_REF_PP中的过程proc_wms_trans_capture。因为这个过程不大,我帖一下代码。procedureproc_wms_trans_captureiscurSQLvarchar2(1600);rtnMsgvarchar2(4000);startTimedate;beginforiin(select derp.oid,derp.schema,derp.table_name,derp.tbalias,derp.dblink,derp.where_clause,derp.primary_keyfromdw_etl_replication_propderpwherederp.app_code=WMSandderp.valid=Yorderbyderp.replicate_seq)loopcurSQL:=insert into WMS_TRANSACTIONS(TNAME, PKNAME, PKOID, VERSIONS_STARTTIME, VERSIONS_ENDTIME, VERSIONS_STARTSCN, VERSIONS_ENDSCN, VERSIONS_OPERATION, STATUS) ||select ||i.table_name||,||i.primary_key||,||i.primary_key||, VERSIONS_STARTTIME, VERSIONS_ENDTIME, VERSIONS_STARTSCN, VERSIONS_ENDSCN, VERSIONS_OPERATION, N|| from ||i.schema||i.table_name||i.dblink|| VERSIONS BETWEEN timestamp (sysdate - 15/(24*60)) AND sysdate ||i.tbalias||i.where_clause|| and VERSIONS_STARTTIME sysdate - 15/(24*60) ;startTime:=sysdate;beginexecuteimmediatecurSQL;updatedw_etl_replication_propderpsetderp.remark=OK; Used:||to_char(round((sysdate-startTime)*24*60*60,1)),derp.last_rep_date=sysdatewhere derp.oid = i.oid;commit;exceptionwhenothersthenrtnMsg:=sqlerrm;updatedw_etl_replication_propderpsetderp.remark=rtnMsg||; Used:||to_char(round((sysdate-startTime)*24*60*60,1)),derp.last_rep_date=sysdatewhere derp.oid = i.oid;commit;end;endloop;endproc_wms_trans_capture;/由于是第一次见这个包,先分析下这个过程的作用,首先,它将dw_etl_replication_prop的条件查询做成一个循环,利用其中的字段拼凑成SQL语句。下面是一个嵌套的PL/SQL语句块,首先,执行上面拼凑好的SQL,然后再更新dw_etl_replication_prop这张纪录表说明同步成功,若有任何异常,也同样纪录这张表。我们暂时把这个拼凑的SQL称为SQL1,下面的2个对纪录表的更新SQL称为SQL2,SQL3。看到这里,可猜测问题出在SQL1语句上,或因表结构变动导致无法成功执行,当然,如果大家细心,会发现这段SQL3部分有不严密的地方,即在最下面插入发现异常被捕获后,立刻SQL3对插入失败进行了纪录。假如SQL1成功而SQL2失败了呢?按下面的语句,则是成功插入,但纪录了插入失败,交提交了。当然,这样的情况一般不会出现,只是希望大家在捕获异常部分,可能先判断前面有没有可能成功但要被撤消的SQL,保证逻辑上了一致性。我们继续来分析下解决的思路,因为这是一个包体,我们不方便修改后直接进行编译,否则可能会阻塞包体的正常应用或编译time out。这时我们留意下包体的头部,看下有没有公共变量的声明,结果没有,即这个过程是一个独立的过程,我们将代码复制,然后将过程更名,这样即得一个独立的过程,再进行分析。既然
您可能关注的文档
最近下载
- 《Linux操作系统及应用技术》全套教学课件.pptx
- 第三单元基于算法的编程基础 第6课 生活中的算法-查找与排 说课稿 -2023-—2024学年青岛版(2024)初中信息技术第四册.docx VIP
- 普通混凝土长期性能和耐久性能试验方法标准.pdf VIP
- 中国新生儿复苏指南(2021年修订).pptx VIP
- 3m直尺平整度检测记录表.docx VIP
- 施工现场环境因素识别与评价表.xls VIP
- 2025_2026学年九年级上册数学第一次月考[陕西专用 北师大版九上:特殊四边形 一元二次方程 概率].docx VIP
- 产品售后服务体系.docx VIP
- 12SS508混凝土模块式室外给水管道附属构筑物.docx VIP
- 新02S3图集集合图.pdf VIP
文档评论(0)