Db2
如何在批處理模式下執行 db2pd -hadr
我正在嘗試自動化 DB2 上的一些事情,並希望使用批處理文件來執行此操作。我創建以下批處理文件
test.bat
:db2cmd - -w "db2 -tvf test.db2"
然後我嘗試在
test.db2
腳本中執行兩個命令,它們在 CLP 互動模式下協同工作:!set db2instance=INST1; !db2pd -db MYDB -hadr;
然後我得到以下輸出:
數據庫 MYDB 未在數據庫分區 0 上啟動。選項 -hadr 需要 -db 或 -alldbs 選項和活動數據庫。
我在 Windows 2008 R2 上使用 DB2 9.7 LUW。
我找到了一種使用兩個批處理文件的方法:
test1.bat ------------------------------------------------------------------------ db2cmd -c -i -w "test2.bat" PAUSE test2.bat ------------------------------------------------------------------------ set db2instance=INST1 db2pd -db MYDB -hadr
這實際上與在互動模式下執行相同,但如果有人有辦法只使用一個批處理文件來做到這一點,請告訴我!
中的兩個命令
test.db
都是 Windows 命令,您不需要 CLP 來執行它們。嘗試:db2cmd -w "set db2instance=INST1 & db2pd -db MYDB -hadr"
您最初的嘗試沒有奏效,您從 DB2 CLP 呼叫了 Windows 命令:第一個命令創建了一個新環境並在其中設置
DB2INSTANCE
變數,然後退出,這破壞了該環境。第二個命令創建了另一個環境,其中DB2INSTANCE
未設置(或設置為錯誤的值),因此db2pd
看不到數據庫。-小鬍子在 NT 的批處理文件
command1 & command2
中意味著“在 command1 完成後執行 command2,即使 command1 失敗”。如果您有很多命令要連結在一起,您可以將它們放在單獨的行上;在每行的末尾使用^
來轉義換行符,並且不要忘記最終關閉"
(^
是 NT 批處理文件中的轉義符……至少這是我在管理 Windows 的日子裡隱約記得的)。-戴夫瓊斯