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

来源:互联网 发布:淘宝集分宝 编辑:程序博客网 时间:2024/05/22 06:51

从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

 

 

完!

 

原创粉丝点击