Ant
執行系統指令沒有任何問題,這次實際系統指令中可以說遇到了兩個問題,一個是啟動服務的指令是含有空格的,第二個如何備份資料庫可以自動加上日期。
首先,我們啟動oracle資料庫,操作有兩個:
1.啟動監聽:
<exec
executable="lsnrctl" >
<arg line=" start
"/>
</exec>
2.打開資料庫執行個體:
executable='cmd' >
<arg line="/c net start
oracleservice${ORA_SID}
第一個操作在這裡沒有什麼差別,就是ant調用系統指令的标準用法,我們來看一下第二個指令,
net start
oracleservice${ORA_SID},如果你直接放入到executable屬性中,執行結果一定會是:
BUILD FAILED:
E:\java\TestAnt\build.xml:44: Execute failed: java.io.IOException:
CreateProcess: "net start oracleservicemy_oracle"
error=2
痛苦吧,帶有空格的指令應該使用以下方法:
<exec executable='cmd'
>
<arg line="/c net start oracleservice${ORA_SID}
如果在備份資料庫的時候加上時間标記,我在linux下面使用教本備份oracle資料庫,可以使用data
指令很友善的在備份的檔案上面加上日期字尾,ant可以麼?
我查了很多資料,終于搞定:
<tstamp>
<format
property="DB_BACKUP_TIME"
pattern="yyyy-MM-dd"/>
</tstamp>
使用 tstamp
target可以非常友善的定義日期屬性,這樣再生成需要備份檔案的名字,友善的解決你的問題。
Ok,你可以參考完成的ant腳本:
附錄:參考腳本
<!--
2005 by guipei. -->
<project
name="TestAntOracle" default="demo" basedir="./">
<!-- set
global properties for this build -->
<property
name="DB_BACKUP_DIR" value="." />
<property name="ORA_SID"
value="my_oracle"/>
<property name="ORA_USER"
value="scott"/>
<property name="ORA_PWD"
value="tiger"/>
<property name="ORA_RESTORE_FILE"
value="db_back.dmp"/>
<target name="demo"
<echo> ant db_backup to backup db
</echo>
<echo> ant db_restore to restore db
<echo> ant db_start to start db
<echo> ant db_stop to stop db
</target>
<target
name="db_backup">
name="DB_BACKUP_FILE" value="MYDB_${DB_BACKUP_TIME}.DMP"
/>
<echo>will backup db at
${DB_BACKUP_FILE}</echo>
<exec dir="${DB_BACKUP_DIR}"
executable="exp" >
<arg line="
${ORA_USER}/${ORA_PWD}@${ORA_SID}
file=MYDB_${DB_BACKUP_TIME}.DMP "/>
name="db_restore">
executable="imp" >
${ORA_USER}/${ORA_PWD}@${ORA_SID} file=${ORA_RESTORE_FILE}
full=y"/>
name="db_start">
<exec executable="lsnrctl"
oracleservice${ORA_SID} "/>
name="db_stop">
<arg line=" stop
<arg line="/c net stop
</project>
炊煙起了;夕陽下了;細雨來了
多調試,互動式程式設計體驗
記錄,獨立思考,對比
感謝轉載作者
修車
國産化
read and connect
匍匐前進,
講故事