BIEE 11g 使用MDS XML来修改RPD内容实例一则

浏览: 2116

从BIEE 11g开始,oracle提供了xml api以供我们来修改RPD,这是一个很强大的功能。

 

下面就给出一个通过修改xml文件来修改rpd内容的例子。

 

背景:

有一个rpd以前是使用的mysql作为数据源,现在数据源被迁移到了oracle上,所以我们需要修改物理层的内容以切换数据源。

基本上就是修改数据库类型、连接池调用接口,连接串以及用户密码等,等等,这些就够了吗?

 

当然不够了,由于数据库在处理用户及schema上的差异(oracle的用户名就等于schema名称,mysql的用户名和schema却是分离的),导致

物理层mysql的表是挂在物理目录下,而oracle的物理表是挂在schema下,差异如下图所示:

 

管理工具并不能直接把物理目录变成schema,那我们能不能新建一个schema然后在把物理表剪切过去呢?

很遗憾这种方法表是过去了,但是表与表之间的连接关系却不能剪切过去,而表也比较多,如果重新连接的话会显得比较麻烦。

 

那我们有没有办法直接将物理目录的类型改变而维持他的id呢?

答案是修改mds xml

 

具体步骤如下:

 

1、将RPD存为mds xml

文件-另存为- mds xml文档 将xml文件存到一个目录下,如D:\xml

解压后的目录结构如下:

可以看到基本上每个对象都有一个文件夹,大家可以和RPD里的对象一一对应,如本例关注的PhysicalCatalog和Schema

 

其中每个PhysicalCatalog对应一个xml文件(如:d25c9e23-0c42-1000-8567-ac1601cf0000.xml),内容如下:

<?xml version="1.0" encoding="UTF-8" ?> 
  <PhysicalCatalog mdsid="md25c9e23-0c42-1000-8567-ac1601cf0000" name="ecom_wc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.oracle.com/obis/repository" containerRef="/oracle/bi/server/base/Database/d25c9e20-0c42-1000-8567-ac1601cf0000.xml#md25c9e20-0c42-1000-8567-ac1601cf0000" /> 

Schema的xml文件

 <?xml version="1.0" encoding="UTF-8" ?> 
  <Schema mdsid="m056c1691-0c40-1000-95db-ac16018a0000" name="ECOM_WC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.oracle.com/obis/repository" containerRef="/oracle/bi/server/base/Database/a38e3981-0c3f-1000-afa2-ac16018a0000.xml#ma38e3981-0c3f-1000-afa2-ac16018a0000" /> 

大家可以看到主要区别在标签上,物理目录的标签是<PhysicalCatalog></PhysicalCatalog>,而schema的标签是<Schema></Schema>,

所以我们要把物理目录改成schema只需要把标签改了就可以了,其它的为了维护对象之间的关联关系我们不要去改他们的mdsid!!!!


修改后的xml文件如下:

<?xml version="1.0" encoding="UTF-8" ?> 
  <Schema mdsid="md25c9e23-0c42-1000-8567-ac1601cf0000" name="ecom_wc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.oracle.com/obis/repository" containerRef="/oracle/bi/server/base/Database/d25c9e20-0c42-1000-8567-ac1601cf0000.xml#md25c9e20-0c42-1000-8567-ac1601cf0000" /> 

修改完比之后记得把该xml文件从PhysicalCatalog目录下移动到Schema目录下(注意是移动,不是复制!因为要确保每个id只对应一个对象)。

 

还没有完,还需要修改每个表的xml文件让他们指向新的schema,表的xml文件(部分内容)如下:

 <PhysicalTable mdsid="m4d009a60-0c42-1000-86c8-ac1601cf0000" name="WC_SRC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.oracle.com/obis/repository" type="none" maxConn="0" containerRef="/oracle/bi/server/base/PhysicalCatalog/a8650400-0c41-1000-86c8-ac1601cf0000.xml#ma8650400-0c41-1000-86c8-ac1601cf0000">

大家注意containerRef的内容,有一部分是PhysicalCatalog,这里标明了该表所属的PhysicalCatalog,而我们现在把PhysicalCatalog改成了schema,所以这里的

关键字也得跟着改,把PhysicalCatalog改成Schema即可!

对所有该物理目录下的表都进行同样的操作!

 

最后将修改之后的mds xml生成新的rpd

 

方法如下:

 

打开管理工具,按照如下方法新建RPD

 

 

完!

 

推荐 0
本文由 风在身后 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册