I want to query a monitor element at instance level (for example the memory used for the instance) via a query like this:
SELECT MEMBER, MAX_MEMBER_MEM, CURRENT_MEMBER_MEM, PEAK_MEMBER_MEM
FROM TABLE(SYSPROC.ADMIN_GET_MEM_USAGE()) AS T
However, in order to execute the query I need to be connected to a database. What method do you use to query this kind of elements (instance level) and establishing a connection (database level):
- Connect to the first database available in the db directory.
- Create another database just for monitoring purposes.
1) For this scenario, I have to give the necessary grants in at least one database of each instance.
db2 list db directory | awk '/alias/ {print $4}'
db2 connect to $i
db2 -vf query.sql
2) In this scenario, I have to create a database for monitoring purposes in each instance of each server, and I give the necessary grant in this database.
db2 connect to monitodb
db2 -vf query.sql
I have hundreds of databases, distributed in many instances on different servers. And for this reason, the way to do a query creates a great impact in the set of database I am currently administering.
|
Best Answer
Since most of the stuff you're monitoring (locks, bufferpools, SQL performance, etc.) is database-specific you will still need to connect to each database to fetch the information, so I don't see what's wrong with using one of these connections to get instance- or server-wide monitoring information as well.