当前位置: 首页 > news >正文

河北省住房和城乡建设厅网站查餐馆网站模板

河北省住房和城乡建设厅网站查,餐馆网站模板,网站建设在哪里办公,设计wordpress需求背景#xff1a;与第三方厂商合作使用sql_loadv1.0进行数据加载#xff0c;他们负责推数#xff0c;我拉数。 执行流程#xff1a; 1.ODS推数--------》sftp服务器 2.拉数--------》sftp服务器 3.将数据文件解析到临时表中 4.将临时表中的数据通过【存储过程】同步到目… 需求背景与第三方厂商合作使用sql_loadv1.0进行数据加载他们负责推数我拉数。 执行流程 1.ODS推数--------》sftp服务器 2.拉数--------》sftp服务器 3.将数据文件解析到临时表中 4.将临时表中的数据通过【存储过程】同步到目标表模型中 5.待全部加载同步完成后进行逻辑SQL处理 目前情况 每张表是并行执行的无法判断哪张表会最后执行但是每张表执行完成后会在加载日志表中生成一条成功的记录。 文章目录一、设计总思路1.1. 总流程设计原则1.2. 方案选取1.3. 评估方案利弊及影响范围1.4. 总流程概要设计1.5. 存储过程概要设计二、监听和shell脚本2.1. 添加监听串2.2. 编写配置文件2.3. 编写存储过程2.4. 编写脚本2.5. 编写sql文件2.6. 手动执行脚本三、表设计3.1. 加载日志表3.2. 数据同步日志表四、存储过程4.1. 存储过程实现流程4.2. 存储过程案例五、定时调度5.1. 编辑定时文件5.2. 配置执行频次5.3.重新加载cron服务5.4. 查看当前用户下的定时任务列表5.5. 监控是否执行一、设计总思路 声明此逻辑SQL处理一天执行一次每次同步需要清除数据 1.1. 总流程设计原则 定时启动轮训调度 场景判断分支流转 日志记录进度追踪 容错机制实时定位1.2. 方案选取 第一种方案 首先和厂商交流分析每天数据同步的数据量有多少最多能达到多少最长数据加载的时长。 然后评估一下执行逻辑SQL有没有时间限制比如说上午10点之前必须同步处理完成。 最后评估一下影响范围。 假设数据加载开始时间为凌晨6点最大1000000数据量最长时长为1小时执行逻辑SQL需要1小时在上午10点之前执行完成那么我们可以写一个定时任务一天执行一次上午8点定时调用逻辑SQL。 第二种方案 定时轮训以当前日期为条件查询加载日志表的数据量当满足条件时在查询日志表是否已经执行过因此执行之前要有轨迹记录方便进度追踪执行执行逻辑SQL完毕后更新日志表。 1.3. 评估方案利弊及影响范围 第一种方案分析 正常场景可以满足但是如果遇到时间超长简言之超过了评估的时间范围就会在数据加载尚未完成之前提前执行逻辑SQL导致生成错误数据后期要进行数据治理。 第二种方案分析(推荐使用) 定时轮训调度为了在数据加载之后再进行逻辑SQL处理确保优先级不会漏批 轨迹记录和轨迹更新是为了进度追踪 分支判断为了满足场景的条件 容错机制处理为了快速解决问题 1.4. 总流程概要设计 已知每张表执行完成后会在load_pl_log生成一条成功的记录假设有4张表数据加载完成后在load_pl_log日志表就会生成4条为当前日期的记录。 1.以当前日志为条件查询load_pl_log表的总条数是否为4 2.场景分支走向流转1》满足总条数为4时执行下一步处理2》当不满足总条数为4时执行跳过下一步处理直接结束 3.根据已知逻辑SQL处理一天只执行一次因此需要创建一张SYNC_FINISH_LOG同步轨迹表记录是否执行过1》如果执行过就跳过逻辑SQL处理直接结束。2》当尚未执行过2.1》日志记录2.2》清除数据2.3》逻辑SQ流处理2.4》轨迹更新2.5》容错处理 1.5. 存储过程概要设计 1.判断什么时间跑存储过程标志是什么 2.判断跑步跑的 3.执行存储工程之前要先落库留存轨迹方便进度跟踪 4.执行逻辑SQL 5.完成之后更新轨迹表 6.在执行过程中出现异常要有容错机制处理二、监听和shell脚本 2.1. 添加监听串 # 进入oracle客户端监听串的目录 cd /app/oracle/product/11.2.0/db_1/network/admin/samples # 编辑监听文件 vim tnsnames.ora# 添加监听串xxx_dev (DESCRIPTION (ADDRESS_LIST (ADDRESS (PROTOCOL TCP)(HOST 数据库ip地址)(PORT 1521)))(CONNECT_DATA (SERVICE_NAME xxx)) )2.2. 编写配置文件 创建sync_db_conn.unl连接数据库配置文件 # 格式:用户名|密码|连接串 username|password|xxx_dev2.3. 编写存储过程 下面会详细介绍 2.4. 编写脚本 vim data_sync.sh#!bin/bash linecat ./sync_db_conn.unl DBUSERecho $line|awk -F | {print $1} PASSWORDecho $line|awk -F | {print $2} DSNecho $line|awk -F | {print $3} echo starting... sqlplus $DBUSER/$PASSWORD$DSN /home/oracle/shell_sync/sql/sync_data.sqlEOF EOF echo end...2.5. 编写sql文件 sync_data.sql # 存储过程名称 call C_C_G_CP();2.6. 手动执行脚本 sh data_sync.sh三、表设计 3.1. 加载日志表 LOAD_PL_LOG 记录成功轨迹 LOAD_PL_ERROR_LOG 记录异常轨迹 CREATE TABLE LOAD_PL_LOG (s_procname VARCHAR2(64),s_time DATE not null,s_msg VARCHAR2(4000),s_user VARCHAR2(64) ); CREATE TABLE LOAD_PL_ERROR_LOG (S_PROCNAME VARCHAR2(64),S_TIME DATE NOT NULL,S_MSG VARCHAR2(4000),S_USER VARCHAR2(64) );3.2. 数据同步日志表 SYNC_FINISH_LOG记录成功轨迹 SYNC_FINISH_ERROR_LOG 记录异常轨迹 DROP TABLE SYNC_FINISH_LOG; CREATE TABLE SYNC_FINISH_LOG ( PROCNAME VARCHAR2(64),START_DATE DATE,END_DATE DATE,SYNC_FLAG NUMBER(1),SYNC_MSG VARCHAR2(4000),PRIMARY KEY(PROCNAME,START_DATE) );DROP TABLE SYNC_FINISH_ERROR_LOG; CREATE TABLE SYNC_FINISH_ERROR_LOG (S_PROCNAME VARCHAR2(64),S_TIME DATE not null,S_MSG VARCHAR2(4000),S_USER VARCHAR2(64) );四、存储过程 4.1. 存储过程实现流程 1.判断什么时间跑存储过程标志是什么 2.判断跑步跑的 3.执行存储工程之前要先落库留存轨迹方便进度跟踪 4.执行逻辑SQL 5.完成之后更新轨迹表 6.在执行过程中出现异常要有容错机制处理4.2. 存储过程案例 DROP PROCEDURE PERSONP ; CREATE OR REPLACE PROCEDURE PERSONP as v_backtrace varchar2(1000); --返回错误行 v_error_cont varchar2(1000); --整合错误内容 sync_finish_flag number(2); --是否开启同步标识 SYNC_MARK number(2); BEGINSELECT count(1) into sync_finish_flagFROM load_pl_logwhere to_date(to_char(S_TIME, YYYY-MM-DD), YYYY-MM-DD) to_date(to_char(sysdate, YYYY-MM-DD), YYYY-MM-DD) and s_msgsuccess;if sync_finish_flag 4thenDBMS_OUTPUT.PUT_LINE(这是第1层的if);SELECT count(1) into SYNC_MARK FROM SYNC_FINISH_LOG sl where to_date(to_char(sl.END_DATE, YYYY-MM-DD), YYYY-MM-DD) to_date(to_char(sysdate, YYYY-MM-DD), YYYY-MM-DD) ;if (SYNC_MARK 0)thenDBMS_OUTPUT.PUT_LINE(这是第2层的if);insert into SYNC_FINISH_LOG sfb (PROCNAME, START_DATE, END_DATE, SYNC_FLAG,SYNC_MSG) values(PERSONP,sysdate,,0,数据同步中);commit;delete from PERSONP;commit;insert into PERSONP (select * from PERSONP2);commit;UPDATE SYNC_FINISH_LOG f SET f.END_DATE SYSDATE,f.SYNC_FLAG 1,f.SYNC_MSG 同步完成 WHERE 1 1 AND to_date(to_char(f.START_DATE, YYYY-MM-DD), YYYY-MM-DD) to_date(to_char(sysdate, yyyy/mm/dd), yyyy/mm/dd) AND PROCNAMEEXPORT_LOAN_INFOP;COMMIT;end if;end if; --异常错误记录处理 exceptionwhen others thenv_backtrace:dbms_utility.format_error_backtrace;--回滚未提交部分rollback;v_error_cont:异常错误为||sqlerrm||--||sqlcode||--||v_backtrace;insert into SYNC_FINISH_ERROR_LOG values(PERSONP,sysdate,v_error_cont,user);commit; end PERSONP; /五、定时调度 5.1. 编辑定时文件 crontab -e5.2. 配置执行频次 */30 * * * * /bin/sh /home/oracle/shell_sync/data_sync.sh保存退出 5.3.重新加载cron服务 /sbin/service crond restart5.4. 查看当前用户下的定时任务列表 crontab -l5.5. 监控是否执行 1》可以借助根据日志查看 2》可以借助plsql工具查询
http://www.zqtcl.cn/news/593762/

相关文章:

  • 网站短期就业培训班搜集关键词的网站
  • 社区网站开发淘宝网站打算找人做
  • 政务类网站网页管理平台
  • 淘宝联盟微信里做网站花卉市场网站建设基本步骤
  • 做网站广告语网站注册建设
  • 仓山福州网站建设哪个是网站建设里面的
  • 开网站流程开发公司起名
  • 免费建站优化网站基本设置
  • 网站建设需要上传数据库吗seo自己做网站吗
  • 网站制作ppt杭州网站的特点
  • 美丽寮步网站建设价钱杭州网站设计询问蓝韵网络
  • 毕节网站建设公司网站职业技术培训学校
  • 果洛wap网站建设比较好17岁在线观看免费高清完整版
  • 一级a做爰片在线看免播放器网站一个网站突然打不开
  • 聊城网站开发培训wordpress实时预览载入中
  • 网站设计文章国际转运网站建设
  • 南充市建设厅官方网站购物网站设计说明
  • 防疫网站网页设计wordpress不同侧边栏
  • 网站的建设多少钱长春市招标建设信息网
  • 网站加速代码百度浏览器app
  • 关于配色的网站企业宣传册文案范文
  • 免费推广网站教程湖南中核建设工程公司官方网站
  • 莱阳网站建设公司彩票类网站是如何做代理的
  • 食品公司网站建设广州做网站制作公司
  • 网站上传服务器教程搜索网站存在的关键字
  • 天河建设网站多少钱网络公司网站样本
  • 做的精美的门户网站推荐附近编程培训机构
  • 台州黄岩做网站太原网站建设王道下拉惠
  • 深圳设计网站公司互联网服务平台投诉中心
  • 做seo网站优化哪家强济南网站建设公司排名