最近遇到一个需求,就是要让两套BIEE的catalog保持同步,更确切的说是是将master环境的catalog及所有操作都同步到slave环境上。
如果每次都手工操作的话,会非常繁琐。那么有没有办法自动同步呢,答案是肯定的,那就是使用biee提供的sawrepaj工具。
具体操作方法如下
1、创建共享目录
用root登录master环境(linux)
创建共享目录
[root@m1-bi-bieedev01 ~]# mkdir -p /u01/oracle/bishare/
修改NFS配置
[root@m1-bi-bieedev01 ~]# vi /etc/exports
添加如下内容
/u01/oracle/bishare slave环境的主机名(rw,sync)
保存并退出
然后重启服
重启nfs服务
[root@m1-bi-bieedev01 ~]# service nfs restart
然后root登录slave环境挂载共享目录
创建挂载点
# mkdir -p /u01/oracle/bishare/
#mount master主机名:/u01/oracle/bishare /u01/oracle/bishare
将共享目录添加到/ect/fastab中,以便重启后自动挂载
#vi/etc/fstab
添加如下内容
master主机名:/u01/oracle/bishare /u01/oracle/bishare nfs defaults 00
有关NFS目录及权限方面的内容请参考:
Linux NFS典型实例及权限详解
2、修改OBIPS配置
master和slave环境的instanceconfig.xml都要修改,在Catalog标签内添加如下内容:
<Replication>
<Enabled>true</Enabled>
<ReadLogRecordsSinceHoursAgo>120</ReadLogRecordsSinceHoursAgo>
<RecordsInFileLimit>4000</RecordsInFileLimit>
</Replication>
启用了上述配置之后,所有对catalog的操作(新建、修改、删除)都会生成相应的日志文件,日志文件分为两类,一类为change_log,一类叫playback_log。
从名称可以看出,一个是用于记录修改,一个是用于在下游目标环境重新执行对应的操作。
日志路径位于:catalog目录下的replication文件夹下
具体参数的含义请参考:
Section 17.15.6, "Editing the instanceconfig.xml File for Replication"修改之后用opmn重启所有系统组件。
3、配置sawrepaj
sawrepaj位于$FMW/Oracle_BI1/bifoundation/web/bin/sawrepaj目录下 ,其可以运行在任意一台机器上(不需要一定位于master或者slave上)
只要确保其能访问master和slave环境即可,其运行需要一个配置文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?><Config>
<General>
<ExportDirectory>/u01/oracle/bishare</ExportDirectory>
<LogExpiresHours>48</LogExpiresHours>
</General>
<Server name="MASTER" pwd="admin123" user="BISystemUser">
<Property name="oracle.bi.presentation.sawservers" value="master主机地址:obips端口"/>
<Property name="oracle.bi.presentation.usesoaptcptransport" value="Y"/>
</Server>
<Server name="SLAVE" pwd="admin123" user="BISystemUser">
<Property name="oracle.bi.presentation.sawservers" value="slave主机地址:obips端口"/>
<Property name="oracle.bi.presentation.usesoaptcptransport" value="Y"/>
</Server>
<Folderset name="all">
<Folder>/</Folder>
</Folderset>
<ReplicationTask destination="SLAVE" folders="all" source="MASTER"></ReplicationTask>
</Config>
将其保存为config.xml
注:sawrepaj是通过调用obips的ReplicationService web service来完成复制操作的,所以config.xml中的用户必须具有ReplicationService的权限,默认情况下BISystemUser就
拥有这个权限(weblogic帐号没有),所以可以直接使用BISystemUser。但是你也可以创建新的用户并在“管理”-“权限管理”-“SOAP”-"Access ReplicationService Service"中授权。
有朋友会问,BISystemUser的帐号密码我不知道啊,这个嘛 可以参考这里:Section 3.7, "Configuring a New Trusted User (BISystemUser)"
4、执行复制
本例以slave为例来执行sawrepaj。
注意:由于sawrepaj程序只是增量更新,所以一开始,你要自己手工把master的所有catalog复制到slave机器上并部署好。
标记需要同步的文件夹:
cd $FMW/Oracle_BI1/bifoundation/web/bin/sawrepaj
./sawrepaj.sh /C config.xml mark all
在master环境中执行修改操作,例如删除一个文件夹
然后在slave中执行
./sawrepaj.sh /C config.xml run
这样就会将master中的操作同步到slave上。
之后,我们就可以考虑在conrtab中定时来调用这个操作 实现自动复制catalog的目的。
如果我只想复制部分目录而不全部目录应该怎么?可以通过修改config.xml文件或者相关命令来实现,具体请参见:
Section 17.15, "Replicating Oracle BI Presentation Catalogs"