最近遇到一個需求,就是要讓兩套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"