- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
元数据在Oracle中的应用 曾创能 基本概念 什么是元数据(MetaData) 关于“数据”的“数据”(Data About Data) e.g. 数据源类型和位置,数据的物理存储结构,企业基础数据 元数据应用范围 EAI,BI,OLTP OLTP中的一个问题 问题提出 xx系统中的一个需求:记录重要表变动日志 分别记录重要表记录变更(增加、修改、删除)前后的各字段值。 格式例如: 交易日期,结算组代码,结算编号,银行代码,银行名称,操作人员,操作时间 , 1 , 3 , 农业银行,sys , 10:30:31 , 1 , 3 , 中国农业银行,marmot, 13:01:10 如何解决? 传统方法: 1.构造 字段中文名称字符串 (hard code) ,例如“交易日期,结算组代码,结算编号,…” 2.在进行更新(insert,update,delete)前,通过id查询出变更前的记录的各字段的值; 3.在更新后,通过id查询出变更后的记录的各字段的值; 4.组装成最后的日志记录字符串。 OLTP中的元数据 如何解决? 引入元数据 1.增加两张表,用来存放表以及表结构的数据 create table t_MetaDataTables ( TableCode char(32) not null ,TableName char(64) not null ,count number(8) ,Note varchar2(500) ,AllowOut number(1) not null ,AllowIn number(1) not null ,SchemaID char(32) not null create table t_MetaDataColumns ( TableCode char(32) not null ,ColumnCode char(32) not null ,ColumnName char(32) not null ,ColumnType char(32) ,IsKey number(1) not null ,SchemaID char(32) not null ,constraint pk_MetaDataColumns primary key (TableCode,ColumnCode,SchemaID) ); OLTP中的元数据 (接上页) 2.在t_MetaDataColumns中查出t_log_tab(重要表变动日志)的所有字段英文名和中文名 3.将中文字段名组成字符串(将作为日志信息的列标题行) 4.将英文名按逗号分隔,然后拼装成select语句,动态执行后,得到变更前该记录所有字段的值 5.在变更后,同上步,得到变更后该记录的所有字段的值 OLTP中的元数据 比较 如何利用元数据解决问题 记录复核日志up_SetChgLogForChk 如何利用元数据解决问题 修改明细对比up_Compare 如何利用元数据解决问题 复核回退up_Reject 如何利用元数据解决问题 数据迁移Data migration 还有哪些应用 ??? * 传统方法比较直接,无须借助其他表 元数据方法需借助元数据表 传统方法是硬编码,针对每一个重要日志表,都必须重新写一段代码 元数据方法可以封装成一个公共的记录日志的过程,只需传入表名和ID即可 PROCEDURE up_SetChgLogForChk(o_RetCode OUT INT, o_RetMsg OUT VARCHAR2, i_SettlementGroupID IN t_MemberEx
文档评论(0)