版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
ApplyHandlersObjectivesAftercompletingthislesson,youshouldbeabletodothefollowing:DescribethepurposeofanapplyhandlerListthedifferenttypesofapplyhandlersDescribethepurposeofanerrorhandlerCreateanduseanapplyhandlerManageapplyhandlersforadatabaseApplyAnapplyprocessdequeuesLCRsandusermessagesfromaspecificqueueanddoeseitherofthefollowing:HandleseachLCRindividuallythoughpartofthesametransactionPassestheeventasaparametertoauser-definedprocedureCommitsatransactionaftersuccessfulcompletionofallLCRswithinthetransaction.MessageProcessingMessagehandlerDMLhandlerDDLhandlerLCRsUser-enqueued
messagesApplychangesDDLLCRsDMLLCRsDMLhandlerDMLLCRsA001LCRsA002A003QueueLCRLCRUsermessageUsermessageLCRLCRUsermessageLCRLCR…PrecommithandlerApplyHandlersUser-writtencustomapplyproceduresWritteninPL/SQL,Java,C,orC++Java,C,andC++proceduresmustbewrappedinPL/SQLbeforetheycanbeused.Canbeusedfor:CustomtransformationsColumnsubsettingorrenamingNormalizingordenormalizingdataPopulatingrelatedfieldsortablesImplementingeventprocessing
logicthatcannotbeprogrammed
usingrulesApplyHandlersforLCRMessagesSingleDDLhandlerallowedMultipleDMLhandlerssupportedforeachtableandforeachapplyprocessPrecommithandlerworkswithaDMLormessagehandlerExecuteLCRDMLhandlerDDLhandlerDMLhandlerTargettableLCRPrecommithandlerCreatinganApplyHandlerProcedureADML,DDL,ormessagehandlermusttakethefollowingform:YoucanspecifyaseparateDMLhandlerforasharedtableforeachofthefollowingoperations:INSERTUPDATEDELETELOB_UPDATEPROCEDUREuser_procedure(
parameter_nameINSYS.AnyData);DMLHandler:ExampleCREATEORREPLACEPROCEDUREconv_order_totals(lcr_anydataINSYS.AnyData)ISvalSYS.AnyData;...BEGINt:=lcr_anydata.getObject(lcr);val:=(lcr.get_value('new','ORDER_TOTAL'));t:=val.getNumber(ordtotal);val:=(lcr.get_value('new','CUSTOMER_ID'));t:=val.getChar(custid);SELECTus_exchange_rateINTOcurr_exFROMoe.currency_exchangesex,oe.customerscWHEREc.customer_id=custidANDc.country=ex.cid;ordtotal:=ordtotal*curr_ex;lcr.set_value('new','ORDER_TOTAL',SYS.AnyData.ConvertNUMBER(ordtotal));lcr.execute(true);END;DMLHandler:ExampleCREATEORREPLACEPROCEDUREconv_order_totals(lcr_anydataINSYS.AnyData)ISvalSYS.AnyData;...BEGINt:=lcr_anydata.getObject(lcr);val:=(lcr.get_value('new','ORDER_TOTAL'));t:=val.getNumber(ordtotal);val:=(lcr.get_value('new','CUSTOMER_ID'));t:=val.getChar(custid);SELECTus_exchange_rateINTOcurr_exFROMoe.currency_exchangesex,oe.customerscWHEREc.customer_id=custidANDc.country=ex.cid;ordtotal:=ordtotal*curr_ex;lcr.set_value('new','ORDER_TOTAL',SYS.AnyData.ConvertNUMBER(ordtotal));lcr.execute(true);END;ImplementingaDMLHandlerSpecifyaDMLhandlerwiththeDBMS_APPLY_ADM.SET_DML_HANDLERprocedure.BEGINDBMS_APPLY_ADM.SET_DML_HANDLER(object_name=>'OE.ORDERS',object_type=>'TABLE',operation_name=>'INSERT',user_procedure=>'OE.CONV_ORDER_TOTALS',apply_name=>'APPLY_SITE1_LCRS'assemble_lobs=>true);END;/DDLHandler:ExampleCREATEORREPLACEPROCEDUREaudit_ddl_actions
(evtINSYS.ANYDATA)ISlcrSYS.LCR$_DDL_RECORD;rcPLS_INTEGER;ddl_textCLOB;BEGINrc:=evt.getObject(lcr);DBMS_LOB.CreateTemporary(ddl_text,TRUE);lcr.GET_DDL_TEXT(ddl_text);INSERTINTOstrmadmin.ddl_historyVALUES(SYSDATE,lcr.GET_SOURCE_DATABASE_NAME(),lcr.GET_COMMAND_TYPE(),lcr.GET_OBJECT_OWNER(),lcr.GET_OBJECT_NAME(),lcr.GET_OBJECT_TYPE(),ddl_text,lcr.GET_EXTRA_ATTRIBUTE('USERNAME'));lcr.EXECUTE();DBMS_LOB.FreeTemporary(ddl_text);END;ImplementingaDDLHandlerUsetheddl_handlerparameterineitherofthefollowingtwoprocedures:DBMS_APPLY_ADM.CREATE_APPLY
DBMS_APPLY_ADM.ALTER_APPLY
BEGINDBMS_APPLY_ADM.ALTER_APPLY(apply_name=>'APPLY_SITE1_LCRS',ddl_handler=>'STRMADMIN.AUDIT_DDL_ACTIONS');END;/PrecommitHandlerCanbeusedwithuser-enqueuedeventsorcapturedeventsReceivesasinputthecommitSCNgeneratedatthesourcedatabaseEnablesyoutoperformactionsattheendofatransaction,beforeitiscommittedCommitSCNPrecommithandlerPrecommitHandler:ExampleCREATEORREPLACEPROCEDUREstrmadmin.audit_commit(cscnINNUMBER)ISBEGIN--Insertcommitinformationintodml_historyINSERTINTOstrmadmin.dml_history(timestamp,commit_scn)VALUES(SYSDATE,cscn);END;/ImplementingaPrecommitHandlerUsetheprecommit_handlerparameterineitherofthefollowingtwoprocedures:DBMS_APPLY_ADM.CREATE_APPLY
DBMS_APPLY_ADM.ALTER_APPLY
BEGINDBMS_APPLY_ADM.ALTER_APPLY(apply_name=>'apply_site1_lcrs',precommit_handler=>'strmadmin.audit_commit');END;/ErrorHandlerUser-writtencustomapplyprocedureWritteninPL/SQL,Java,C,orC++Java,C,andC++proceduresmustbewrappedinPL/SQLbeforetheycanbeused.AssociatedwithaspecificDMLoperationonatableExecutedwhenarowLCRraisesanapplyprocesserrorOnepertableDefaultApplywithErrorHandlerAttempttoapplyLCR.Checkforconflictsorapplyerrors.Iferrorsoccur,callauser-specifiederrorhandlingprocedure.Afterresolvingtheerror,applythechange.Forunresolvederrors,allLCRsassociatedwiththetransactionareplacedintotheerrorqueue.TheentiretransactionisrolledbackandplacedintheerrorqueueApplychangesAnnnErrorhandlerLCRConflict
handlerExampleofErrorHandlerCREATEORREPLACEPROCEDUREregions_pk_error(messageINANYDATA,…)ISreg_idNUMBER;…BEGINIFerror_numbers(1)IN(1,2290)THENad:=DBMS_STREAMS.GET_INFORMATION('CONSTRAINT_NAME');ret:=ad.GetVarchar2(errlog_rec.text);ELSEerrlog_rec.text:=NULL;ENDIF;ad:=DBMS_STREAMS.GET_INFORMATION('SENDER');ret:=ad.GETVARCHAR2(errlog_rec.sender);apply_name:=DBMS_STREAMS.GET_STREAMS_NAME();ret:=message.GETOBJECT(lcr);errlog_rec.object_name:=lcr.GET_OBJECT_NAME();errlog_mand_type:=lcr.GET_COMMAND_TYPE();errlog_rec.errnum:=error_numbers(1);errlog_rec.errmsg:=error_messages(1);…ENDregions_pk_error;ImplementinganErrorHandlerSpecifyanerrorhandlerbysettingtheuser_procedureanderror_handlerparametersoftheSET_DML_HANDLERprocedureinDBMS_APPLY_ADM.ForaspecificdatabaseobjectForaspecificDMLoperationAnerrorhandlermustbeofthefollowingform:PROCEDUREuser_procedure(evt INSYS.AnyData,error_stack_depthINNUMBER,error_numbersINDBMS_UTILITY.NUMBER_ARRAY,error_messagesINemsg_array);RestrictionsforApplyHandlerProceduresDonotCOMMITorROLLBACKintheapplyhandlerprocedure.IfyouaremodifyingtheLCRandthenusingtheEXECUTEmemberprocedureintheapplyhandlerprocedure:Donotmanipulatemorethanonerowinarowoperation.ForUPDATEorDELETE,includetheentirekeyofthetargettableinthelistofoldvalues.ForINSERT,includetheentirekeyofthetargettableinthelistofnewvalues.DonotmodifyLONG,LONGRAW,orLOBcolumndatainanLCR.CustomizingApplyHandlerActionsUtilitiesintheDBMS_STREAMSpackageenableyoutofurthercustomizetheactionstakenbyapplyhandlers,rules,ortransformations:GET_INFORMATIONGET_STREAMS_NAMEGET_STREAMS_TYPEMemberfunctionsoftheLCRrecordtypesalsoprovideinformationforcustomizingactions:GET_COMMAND_TYPEGET_COMMIT_SCNGET_COMPATIBLELOBAssemblyINSERTLOB_UPDATELOB_UPDATELOB_TRIMUPDATELCRsINSERTLOB
locatorLCRsImplementingLOBAssemblyDBMS_APPLY_ADM.SET_DML_HANDLER(object_name=>'PM.AD_DATA',object_type=>'TABLE',operation_name=>'UPDATE',error_handler=>false,user_procedure=>'PM.STAMP_AD_IMAGES',assemble_lobs=>TRUE);LOB
assemblyLOB
locatorAD_DATAManagingApplyHandlersByusingtheDBMS_APPLY_ADM.ALTER_APPLYprocedure,youcan:SpecifyorremoveamessageorDDLhandlerforanapplyprocessSpecifyorremoveaprecommithandlerforanapplyprocessWiththeDBMS_APPLY_ADM.SET_DML_HANDLERprocedure,youcan:SpecifyorremoveaDMLhandlerforashareddatabaseobjectSpecifyorremoveanerror
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)基地選址規(guī)劃協(xié)議書
- 徐州-PEP-2024年10版小學(xué)4年級(jí)上冊(cè)英語第6單元真題試卷
- 2024-2025學(xué)年七年級(jí)第一學(xué)期期中考試卷語文試卷含答案
- 科學(xué)實(shí)驗(yàn)教學(xué)集體備課制度
- 體育俱樂部管理層聘任協(xié)議書
- 2024-2025學(xué)年河北省高三上學(xué)期省級(jí)聯(lián)測化學(xué)試題及答案
- 跨國公司數(shù)據(jù)退役合規(guī)方案
- 地下人防消防演練實(shí)施方案
- 智慧工地智能監(jiān)控與警報(bào)方案
- 幼兒園水上活動(dòng)安全保障應(yīng)急預(yù)案
- 六年級(jí)語文總復(fù)習(xí)課《修改病句》修改課件市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件
- (2024年)部隊(duì)?wèi)?zhàn)備教育教案x
- 《焚燒煙氣凈化產(chǎn)物資源化利用 工業(yè)用鹽》編制說明
- 《交互設(shè)計(jì)》課件
- 應(yīng)力的概念講解
- JF-2023-合同中小學(xué)校校外供餐合同示范文本
- 內(nèi)鏡中心考試題及答案
- 如何培養(yǎng)學(xué)生的思辨能力
- 統(tǒng)計(jì)學(xué)職業(yè)生涯規(guī)劃
- 為家長設(shè)計(jì)一份午餐食譜的步驟同課異構(gòu)
- 食堂人員操作規(guī)范培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論