1

I am trying to automate some things on DB2 and would like to use a batch file to do this. I create the following batch file test.bat:

db2cmd - -w "db2 -tvf test.db2"

I then try to do two commands in the test.db2 script, which work together in the CLP interactive mode:

!set db2instance=INST1;
!db2pd -db MYDB -hadr;

I then get the following output:

Database MYDB not activated on database partition 0. Option -hadr requires -db or -alldbs option and active database.

I'm using DB2 9.7 LUW on Windows 2008 R2.

Paul White
  • 94,921
  • 30
  • 437
  • 687
ESP
  • 121
  • 4

2 Answers2

1

I found a way to do this using two batch files:

test1.bat
------------------------------------------------------------------------
db2cmd -c -i -w "test2.bat"
PAUSE

test2.bat
------------------------------------------------------------------------
set db2instance=INST1
db2pd -db MYDB -hadr

This is effectively the same as running in interactive mode but if anybody has a way to do this using only one batch file please let me know!

ESP
  • 121
  • 4
1

Both commands in test.db are Windows commands, you don't need the CLP to run them. Try:

db2cmd -w "set db2instance=INST1 & 
db2pd -db MYDB -hadr"

Your original attempt did not work you invoked Windows commands from the DB2 CLP: The first one created a new environment and set the DB2INSTANCE variable in it, then quit, which destroyed that environment. The second command created yet another environment, in which DB2INSTANCE was not set (or set to a wrong value), so db2pd could not see the database. - mustaccio

In NT's batch files command1 & command2 means "run command2 after command1 finishes, even if command1 fails". If you have lots of commands to chain together you can place them on separate lines; use ^ at the end of each line to escape the newline character and don't forget to eventually close the " (^ is the escape character in NT's batch files ... at least that's what I vaguely recall from my days administering Windows). - dave-jones