適用場景:
將正式環境(linux)的windchill 系統應用,clone 到測試環境,做數據迴歸測試等
條件:
linux –linux
步驟:
-
-
壓縮正式環境應用文件夾,對正式環境應用做備份
tar -cvf ptc20170517.tar ptc
導出正式環境數據庫備份
expdp wcdba/wcdbapw@plmdb directory=PLM_DUMP_DIR dumpfile=plmtestdb_20170519.dmp parallel=10
備份測試環境應用
在備份測試環境數據時,如果測試環境的電子倉庫在windchill 目錄下,應先將電子倉庫文件夾移出、移出或刪除日誌文件夾等,之後進行備份壓縮,否則目錄會很大,壓縮很慢。
如 mv /home/ptc/Windchill_11.0/Windchill/vaults /home/ptc20171111_bak/vaults
cd /home
tar -cvf /home/ptc20171111_bak/ptc20171111.tar ptc
備份測試環境數據庫
備份數據庫時導出數據時,需要創建directory
select * from dba_directories;
---創建文件夾
create directory PLMTEST_DUMP_DIR as '/u01/backup/plmtestdb';
---賦予用戶文件夾權限
grant read,write on directory PLMTEST_DUMP_DIR to wcdba ;
expdp wcdevdba/wcdevdbapw@plmdevdb directory= PLMDEV_DUMP_DIR dumpfile=plmdevdb_20171111.dmp parallel=10
拷貝正式環境的備份應用/數據庫到測試環境
scp -r root@xxx.xxx.xxx.xxx:/home/ptc/Windchill_11.0_201711022018.tar /home/
解壓正式環境應用
tar -xvf Windchill_11.0_201711022018.tar
導入正式環境備份數據到測試環境數據庫
導入正式數據庫,有兩種方式,
第一種,直接刪除用戶,導入數據
su - oracle
drop user wcdba cascade;
---如果出現有用戶連接的情況,斷開session
select username,sid,serial# from v$session ;
select saddr,sid,serial#,paddr,username,status from v$session where username is not null
alter system kill session '360,10547'
第二種,直接導入數據
導入時,會自動創建指定的schema用戶,密碼是重新生成的,之後需要進行修改
impdp wcdevdba/wcdevdbapw@plmdevdb directory=PLMDEV_DUMP_DIR dumpfile=20171102_plmdb2.dmp schemas=wcdba remap_schema=wcdba:wcdevdba table_exists_action=replace;
修改配置
如果配置中做過AD的配置,需要在rehost之前,將AD配置剔除掉,否則InfoEngin clone時會報錯
--剔除掉wt.properties文件配置
<Property name=”wt.federation.org.directoryServices” overridable=”true”
targetFile=”codebase/wt.properties” value=”$(wt.federation.org.defaultAdapter),$(wt.federation.org.enterpriseAdapter),com.xxx.plmdev.jndiAdapter”/>
<AddToProperty name="mapcredentials.admin.adapters" value="com.xxx.plmdev.jndiAdapter^plmadu^pwd"/>
--剔除掉apache app-Windchill-AuthProvider.xml 配置
<provider>
<name>Windchill-JNDIAD</name>
<ldapUrl>ldap://xxx.xxx.xxx.xxx:389/OU=龍旗,DC=xxx,DC=net?sAMAccountName?sub?(objectClass=user)</ldapUrl>
<bindDn>plmadu</bindDn>
<bindPwd>pwd</bindPwd>
</provider>
執行命令:
ant -f webAppConfig.xml regenWebAppConf
修改rehsot配置文件
rehost.properties 、 projects.properties
見附件, 配置具體內容,有時間再寫文章做解釋,其實很簡單
執行命令
rehost utility 根目錄 執行reshot腳本
./rehost.sh conf/rehost.properties
異常處理
如果上述步驟都做完,目前只出現一次錯誤,在系統啓動時。
在操作過程中, web.xml在執行完rehost命令之後,會出現錯誤, servlet 出現錯誤字符
com.xxx.plmdevdevdev.servlet
清除掉錯誤多餘的dev即可, 我懷疑這是執行多次rehost命令導致的,是程序的bug。
clone完成後數據庫處理
clone正式環境後,有一些數據庫的數據需要處理,這個根據具體的業務而定,我這裏只處理用戶的郵件數據,防止測試郵件發送給正式用戶
update wtuser set email = '@' ;
由於正式環境是集羣環境,會記錄一些啓動服務時,master 服務的端口和IP等在數據庫中,這些數據需要清理掉,否則在啓動時,會默認去數據庫查找這些服務,導致報錯。
### 備份並清空rmistubs, 裏面指定了CacheMaster
select * from rmistubs;
create table rmistubs_bak as select * from rmistubs
delete rmistubs
###備份並清空methodserverinfo
create table methodserverinfo_bak as select * from methodserverinfo
select * from methodserverinfo;
delete methodserverinfo
修改host文件
正式環境如果是集羣環境,會對host進行配置, 如app1 對應127.13.28.1 app2 對應127.13.28.2 所以需要將clone後的測試環境 app1 和app2 都配置到 127.0.0.1 (如果測試環境是單機)
電子倉庫重新配置
對電子倉庫的配置數據進行備份然後清除。
電子倉庫相關數據表
create table replicafolder _bak as select * from replicafolder ;
create table replicavault _bak as select * from replicavault ;
create table fvfolder_bak as select * from fvfolder;
create table fvhost_bak as select * from fvhost;
create table fvitem_bak as select * from fvitem;
create table fvmount_bak1 as select * from fvmount;
create table fvvault_bak as select * from fvvault;
create table rootfolder_bak as select * from rootfolder;
create table rootmount_bak as select * from rootmount;
select * from replicafolder
select * from replicavault;
select * from fvfolder;
select * from fvhost;
select * from fvitem;
select * from fvmount ;
select * from fvvault;
select * from rootfolder;
select * from rootmount;
不能上傳附件,只能上傳到資源裏面
附件