Db2

如何在批處理模式下執行 db2pd -hadr

  • March 4, 2020

我正在嘗試自動化 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 的日子裡隱約記得的)。-戴夫瓊斯

引用自:https://dba.stackexchange.com/questions/111594