GBU技术支持部NC数据双引擎方案--NC技术支持部门代群义NC数据双引擎方案...............................................................................................................................................1方案背景.................................................................................................................................................................1实施步骤.................................................................................................................................................................2(一)确认复制库安装在存储上........................................................................................................................2(二)确定需要复制的表.....................................................................................................................................3(三)建立DATALINK...........................................................................................................................................3(四)生产库(192.168.100.112)上建立MVLOG物化试图日志.................................................................3(五)复制库(192.168.100.115)上建立MV物化试图.....................................................................................4(六)复制库(192.168.100.115)上建立刷新组和任务.....................................................................................4(七)用以下语句从生产库上导出建索引的DDL语句,然后在复制库上执行.........................................5(八)更新统计信息并建立统计分析任务.......................................................................................................6(九)业务上设置.................................................................................................................................................71.增加连接到复制库上的数据源。如:ERPLINK...............................................................................72.设置查询引擎的数据源...........................................................................................................................73.在自定义查询报表中切换数据源到ERPLINK...................................................................................94.切换完数据源后报表查询.....................................................................................................................115.查询引擎管理注册节点更改...............................................................................................................12(十)更改刷新时间的方法:..........................................................................................................................13(十一)重要的视图...........................................................................................................................................13方案背景随着NC用户使用年限的增大,数据库的数据也随着增大,有些用户即使使用时间很短,第1页共14页GBU技术支持部由于业务需要,数据量增长也很快,如果制造行业等。NC业务具有特殊性:其业务包含典型的OLTP业务如财务凭证单据录入,供应链单据录入;也包含比较典型的OLAP业务如汇总报表查询、自定义查询;同时还有相关大计算大事务的业务如月末结帐、成本计算、报表计算等等。对于大数据量的查询或复杂业务的查询(即OLAP业务),对内存、CPU、IO的消耗会很多,造成典型的OLTP业务运行也很慢,如本来一张凭证保存很快,但是,如果有用户在做复杂的自定义查询,该凭证的保存速度会很慢。某用户,一个自定义查询嵌套四层,涉及到100张左右的表,该查询需要在月末左右进行销售统计。该自定义查询只要执行,NC系统整体会变的很慢,这样的查询如果有几家公司同时进行,则严重影响NC正常业务的进行。同时还有其它类似的自定义查询,根据这种情况,做了NC数据双引擎方案,将自定义查询需要的表数据同步到另外一个数据库服务器上,通过ORACLE自定义查询的业务在该服务器上运行,效果很好。实施步骤NC数据双引擎方案介绍:在NC的自定义查询中,会用到很多基本表,由于自定义查询嵌套的表层次较多,用到临时表等,再加上数据量大,因此,查询很慢,影响NC简单业务的正常运行。还有其它业务复杂的查询等。根据这种情况,在另外一个数据库上创建这些表的物化视图,将数据同步到这些物化视图中,在NC中创建一个新的数据源,指向这些物化视图所对应的数据库。这样,在做这些查询时,对数据库的压力转移到另外一台数据库服务器。这样正式数据库服务器的压力就会减少,NC在正式数据库服务器上运行就会很快,自定义查询等查询的速度也会很快。物化视图介绍:物化视图在某种意义上说是一种特殊的物理表,物化视图是相对普通视图而言的。普通视图是虚拟表,对普通视图的查询实际上转换为视图SQL语句的查询,这样对整体查询性能的提高并没有实质上的好处。Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样在执行查询时,就可以避免进行这些耗时的操作,而从快速地得到结果.(一)确认复制库安装在存储上复制库192.168.100.115上ORACLE数据库已经创建在存储上.第2页共14页GBU技术支持部(二)确定需要复制的表自定义查询需要的数据表清单(即自定义查询用到的表).除了业务需要的表,pub_datadict,pub_datadictdetail也需要同步,自定义查询设计时需要,否则自定义查询设计打不开.ctl+shift+F1快捷键可以弹出自定义用到的表.(三)建立datalink(1)复制库(192.168.100.115)上E:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora增加ERP=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.112)(PORT=1521)))(CONNECT_DATA=(SID=ERP)(SERVER=DEDICATED)))(2)复制库(192.168.100.115)上建立datalink:以NC用户登录:CREATEpublicDATABASELINKERPLINKCONNECTTONCIDENTIFIEDBY"NC"USING'ERP’;(四)生产库(192.168.100.112)上建立MVLOG物化试图日志以NC用户登录创建.见jblmvlog.sql注意的是有些表没有主键,建mvlog的方式如下例CREATEMATERIALIZEDVIEWLOGONcm_costTABLESPACE"MATERIALIZED"WITHROWID,SEQUENCEINCLUDINGNEWVALUES;有主键的方式如下例:第3页共14页GBU技术支持部CREATEMATERIALIZEDVIEWLOGONarap_djfbTABLESPACE"MATERIALIZED"WITHROWID,PRIMARYKEY,SEQUENCEINCLUDINGNEWVALUES;MATERIALIZED为表空间(五)复制库(192.168.100.115)上建立MV物化试图以NC用户登录创建.见jblmv.sql注意的是有些表没有主键,建mvlog的方式如下例CREATEMATERIALIZEDVIEWcm_costREFRESHFASTWITHROWIDONDEMANDASSELECT*FROMcm_cost@ERPLINK;有主键的方式如下例:CREATEMATERIALIZEDVIEWarap_djfbREFRESHFASTWITHPRIMARYKEYONDEMANDASSELECT*FROMarap_djfb@ERPLINK;(六)复制库(192.168.100.115)上建立刷新组和任务以NC用户登录创建.见jvmjob.sql创建刷新组:BEGINDBMS_REFRESH.MAKE(name=>'JBLJOB',list=>'',next_date=>SYSDATE,interval=>'/*10:Mins*/sysdate+10/(60*24)',implicit_destroy=>FALSE,lax=>FALSE,job=>0,rollback_seg=>NULL,push_deferred_rpc=>FALSE,refresh_after_errors=>TRUE,purge_option=>NULL,parallelism=>NULL,第4页共14页GBU技术支持部heap_size=>NULL);END;/commit;添加任务:BEGINDBMS_REFRESH.ADD(name=>'JBLJOB',list=>'arap_djfb',lax=>TRUE);END;/(七)用以下语句从生产库上导出建索引的DDL语句,然后在复制库上执行在生产服务器上导出索引:D:\>sqlplusnc/nc@erpSQL>@D:\jbl_db\ok\jblindex.sql;在复制库上创建索引(注意生成的索引可能格式需要调整),其中唯一索引改为非唯一索引.D:\>sqlplusnc/nc@orclSQL>@c:\jblindex_result.sql;setpagesize0setlong90000setfeedbackoffsetechooffsetlinesize220spoolc:\jblindex_result.sqlSELECTDBMS_METADATA.GET_DDL('INDEX',u.index_name)FROMUSER_INDEXESuwhere(u.table_namenotlike'TMPTABSUBJ%'ANDu.table_namenotlike'TMPTINVMANPK%');spooloff;第5页共14页GBU技术支持部或setpagesize0setlong90000setfeedbackoffsetechooffsetlinesize220spoolC:/jblindex_result.sqlSELECTDBMS_METADATA.GET_DDL('INDEX',u.index_name)FROMUSER_INDEXESuwhere(u.table_namein('BD_ACCSUBJ','BD_CALBODY','BD_DEFDOC','BD_MEASDOC','BD_RDCL','CM_FEE','IA_BILL','IC_ONHANDNUM','MM_WR','PD_RT','PO_INVOICE',……………..'PO_PRAYBILL_B','PRM_TARIFFCURLIST','QC_CHECKSTANDARD','QC_CHECKTYPE','SM_USER','SO_ARSUBACCT','SO_SALEINVOICE'));spooloff;(八)更新统计信息并建立统计分析任务参照NC安装盘中的优化脚本。第6页共14页GBU技术支持部(九)业务上设置1.增加连接到复制库上的数据源。如:ERPLINK2.设置查询引擎的数据源客户化二次开发工具自定义查询查询引擎环境设置:将数据源ERPLINK选择到查询所用数据源。第7页共14页GBU技术支持部第8页共14页GBU技术支持部3.在自定义查询报表中切换数据源到ERPLINK客户化二次开发工具UAP集成开发工具:数据源可以批量修改或单个修改批量修改执行数据源:第9页共14页GBU技术支持部批量修改执行数据源:第10页共14页GBU技术支持部4.切换完数据源后报表查询第11页共14页GBU技术支持部5.查询引擎管理注册节点更改nc.ui.pub.querymodel.QueryMainUI_S是单数据源节点。修改为:nc.ui.pub.querymodel.QueryMainUI支持多数据源节点。第12页共14页GBU技术支持部(十)更改刷新时间的方法:如果更改刷新时间,更改方法如:用NC的用户登录到PLSQL,找到刷新组job,如下图,选中job号,右键编辑(EDIT)如:/*10:Mins*/sysdate+10/(60*24)表示10分钟执行一次.将10更改为2,则为2分钟执行一次.该完,点应用(APPLY)即可.(十一)重要的视图1:查看有多少个复制任务组:selectrname,job,next_date,interval,brokenfromall_refreshwhererowner='NC';2:查看复制任务组的子任务:第13页共14页GBU技术支持部SELECTname,type,rname,job,next_date,interval,brokenFROMALL_REFRESH_CHILDRENWHEREOWNER='NC';3:删除一个复制任务组,如:EXECUTEDBMS_REFRESH.DESTROY(NAME=>‘JBLJOB’);/commit;4:删除复制组中的一个子任务:BEGINDBMS_REFRESH.SUBTRACT(name=>'JBLJOB’',list=>'bd_corp',lax=>TRUE);END;/commit;5:查看各个物化视图的复制情况:selectmview_name,last_refresh_datefromdba_mviewswhereowner='NC'orderbylast_refresh_datedesc;6:查看物化视图LOG【在生产库上执行】select*fromdba_mview_logs;7:删除一个物化视图:DropMATERIALIZEDVIEWviewname;例如:DropMATERIALIZEDVIEWbd_corp;8:删除一个物化视图LOGDropMATERIALIZEDVIEWLOGon“viewlogname”;如:DropMATERIALIZEDVIEWLOGon"bd_corp";第14页共14页