点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)您好,专家,我们想使用此SDI ...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)您好,专家,我们想使用此SDI ...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好,专家,我们想使用此SDI Oracle Log Reader功能对BW4/HANA中源Oracle数据库的某些表执行实时数据加载,而又不对该源数据库添加任何额外负载 ,并且我们正在就此进行概念验证。
事实上,我们已经在HANA端安装了Data Provisioning Server和Data Provisioning Agent(在我们的示例中, 源Oracle数据库位于中间,而不是分开放置),设置Oracle Log Reader。
我们已经完成了设置,并且看起来工作正常,因此,只要我们更新该源Oracle中的记录, 数据库中,我们看到了Hana Virtual表级别的更改,如果创建了提取请求,我们将看到提取检索到一条数据记录。
但是,我们的疑问是该Oracle Log Reader在技术上到底有多准确 作品; 它如何从重做日志中读取信息,将其保存到启动BW提取之前,因为我们无法确定在Oracle级别创建的LogReader用户实际上不是在读取自己的数据库,也不是在读取重做日志(因为 必须授予我们要捕获的表的"选择"权限),并且我们在任何地方都找不到此过程的确切工作方式。
我个人的观点是Oracle Log Reader实际上正在检查 Oracle数据库的联机重做日志,并且当它检测到影响我们在BW4/HANA中选择的表的更改时,会将更改信息保存到其他位置,可能在我们看到代理在/下创建的文件结构中 usr/sap/dataprovagent/ds-lite/sqla/tmp/dslite_repo_
有人可以确认如何操作吗? 的工作?
然后,我们又产生了另一个疑问:HANA虚拟表的初始满负荷是如何发生的? 因为可以肯定的是,我们选择的表的所有现有更改记录都不属于重做日志的一部分(当我们有一个脚本来压缩脱机重做日志文件时,每小时将其移动到另一个位置就更是如此)。
也许是通过在Oracle级别的实际表上使用直接的"选择"语句来完成初始加载的? 还是完全正确?
非常感谢您,最好的问候!
Jose Sanz
要在Jeff的广泛回答上有所扩展...
您需要选择特权 在Oracle表上主要用于初始负载,这只是一个select-from-table这样的语句。
更改实际上是使用Oracle的日志读取器api从Oracle事务日志中读取的。 日志读取器api的请求为"我想从系统更改号xyz开始获取所有更改",并使用日志信息数据字典表来知道该交易将在何处找到。 它可以在联机重做日志中,也可以在存档日志中(如果较旧)。 您可以通过从Oracle数据库的访问范围中删除归档日志并要求更旧的系统更改来轻松证明这一点。 该请求将失败,并显示"无法访问包含更改数据的存档日志文件<..>"。
另一个证明是,增量仅从事务日志中读取,这是在安装过程中针对Oracle数据库执行的语句。 启用了一些补充日志记录以向重做日志添加更多信息。 例如,当删除一条记录时,至少应将其主键数据保存在重做日志中。
我上面所说的并不是100%正确,但足够精确。 日志读取器必须在表上选择privs才能检查当前具有哪些列。 想象一下添加了一个列。 较旧的重做日志条目将不知道该列。 日志挖掘者必须调和这两个信息,例如 为您提供宽表,但在这种情况下,此列返回null。
一周热门 更多>