怎么用SQL获取DB2表空间信息
如题,高分求援,用什么SQL语句可以获取到DB2的表空间名,再用什么语句可以获取DB2各表空间的具体信息。
或者,如果不用SQL,DB2的LIB库里面有哪些接口能够获取表空间名,哪些接口能够获取各表空间的具体信息。如果只是用list tablespaces show detail来获取所有表空间的信息就算了,我没办法把这个命令放在C++程序里面实现。
方法越详细越好,对于DB2,我实在是太陌生了。只要能够解决问题,分数不成问题。
[解决办法]
不知道你要查询什么信息
SYSIBM.SYSTABLESPACES
SYSIBM.SYSTBSPACEAUTH
这两个表能查到一些
[解决办法]
tsinfo.sqc -- How to get information at the table space level (C)
from IBM information center
/****************************************************************************
**
** SOURCE FILE NAME: tsinfo.sqc
** DB2 API USED:
** sqlbstpq -- Single Tablespace Query
** sqlbgtss -- Get Tablespace Statistics
** sqlbmtsq -- Tablespace Query
** sqlefmem -- Free Memory
** sqlbotsq -- Open Tablespace Query
** sqlbftpq -- Fetch Tablespace Query
** sqlbctsq -- Close Tablespace Query
** sqlbtcq -- Tablespace Container Query
** sqlbotcq -- Open Tablespace Container Query
** sqlbftcq -- Fetch Tablespace Container Query
** sqlbctcq -- Close Tablespace Container Query
**
** OUTPUT FILE: tsinfo.out (available in the online documentation)
*****************************************************************************
** For the latest information on programming, building, and running DB2
** applications, visit the DB2 Information Center:
** http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp
****************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlenv.h>
#include <sqlutil.h>
#include <db2ApiDf.h>
#include "utilemb.h"
int SingleTablespaceInfoGet(void);
int AllTablespacesInfoGetUsingHigherLevelAPIs(void);
int AllTablespacesInfoGetUsingLowerLevelAPIs(void);
int AllTablespaceContainersInfoGetUsingHigherLevelAPIs(void);
int AllTablespaceContainersInfoGetUsingLowerLevelAPIs(void);
/* support functions */
int TablespaceInfoDisplay(struct SQLB_TBSPQRY_DATA, struct SQLB_TBS_STATS);
int ContainerInfoDisplay(struct SQLB_TBSCONTQRY_DATA);
int main(int argc, char *argv[])
{
int rc = 0;
char dbAlias[SQL_ALIAS_SZ + 1];
char user[USERID_SZ + 1];
char pswd[PSWD_SZ + 1];
/* check the command line arguments */
rc = CmdLineArgsCheck1(argc, argv, dbAlias, user, pswd);
if (rc != 0)
{
return rc;
}
printf("\nTHIS SAMPLE SHOWS ");
printf("HOW TO GET INFORMATION AT THE TABLE SPACE LEVEL.\n");
/* connect to database */
rc = DbConn(dbAlias, user, pswd);
if (rc != 0)
{
return rc;
}
rc = SingleTablespaceInfoGet();
rc = AllTablespacesInfoGetUsingHigherLevelAPIs();
rc = AllTablespacesInfoGetUsingLowerLevelAPIs();
rc = AllTablespaceContainersInfoGetUsingHigherLevelAPIs();
rc = AllTablespaceContainersInfoGetUsingLowerLevelAPIs();
/* disconnect from database */
rc = DbDisconn(dbAlias);
return 0;
} /* main */
int TablespaceInfoDisplay(struct SQLB_TBSPQRY_DATA tablespaceData,
struct SQLB_TBS_STATS tablespaceStats)
{
int rc = 0;
struct sqlca sqlca;
printf(" Table space ID = %ld\n",
tablespaceData.id);
printf(" Table space Name= %s\n",
tablespaceData.name);
/* "Type" and "Content" are stored bitwise in the flag field */
printf(" Type = ");
switch (tablespaceData.flags & 0xF)
{
case SQLB_TBS_SMS:
printf("System-managed space\n");
break;
case SQLB_TBS_DMS:
printf("Database-managed space\n");
break;
default:
printf("UNKNOWN\n");
break;
} /* endswitch */
printf(" Contents = ");
switch (tablespaceData.flags & 0xF0)
{
case SQLB_TBS_ANY:
printf("All types of permanent data. Regular table space\n");
break;
case SQLB_TBS_LONG:
printf("All types of permanent data. Large table space\n");
break;
case SQLB_TBS_TMP:
printf("temp data\n");
break;
default:
printf("UNKNOWN:%d:\n", tablespaceData.flags & 0xF0);
break;
} /* endswitch */
printf(" State = ");
switch (tablespaceData.tbsState)
{
case SQLB_NORMAL:
printf("Normal\n");
break;
case SQLB_QUIESCED_SHARE:
printf("Quiesced: SHARE\n");
break;
case SQLB_QUIESCED_UPDATE:
printf("Quiesced: UPDATE\n");
break;
case SQLB_QUIESCED_EXCLUSIVE:
printf("Quiesced: EXCLUSIVE\n");
break;
case SQLB_LOAD_PENDING:
printf("Load pending\n");
break;
case SQLB_DELETE_PENDING:
printf("Delete pending\n");
break;
case SQLB_BACKUP_PENDING:
printf("Backup pending\n");
break;
case SQLB_ROLLFORWARD_IN_PROGRESS:
printf("Roll forward in progress\n");
break;
case SQLB_ROLLFORWARD_PENDING:
printf("Roll forward pending\n");
break;
case SQLB_RESTORE_PENDING:
printf("Restore pending\n");
break;
case SQLB_DISABLE_PENDING:
printf("Disable pending\n");
break;
case SQLB_REORG_IN_PROGRESS:
printf("Reorg in progress\n");
break;
case SQLB_BACKUP_IN_PROGRESS:
printf("Backup in progress\n");
break;
case SQLB_STORDEF_PENDING:
printf("storage must be defined\n");
break;
case SQLB_RESTORE_IN_PROGRESS:
printf("Restore in progress\n");
break;
case SQLB_STORDEF_ALLOWED:
printf("storage may be defined\n");
break;
case SQLB_STORDEF_FINAL_VERSION:
printf("storDef is in 'final' state\n");
break;
case SQLB_STORDEF_CHANGED:
printf("storDef was changed prior to rollforward\n");
break;
case SQLB_REBAL_IN_PROGRESS:
printf("dms rebalancer is active\n");
break;
case SQLB_PSTAT_DELETION:
printf("TBS deletion in progress\n");
break;
case SQLB_PSTAT_CREATION:
printf("TBS creation in progress\n");
break;
default:
printf("UNKNOWN\n");
break;
} /* endswitch */
printf(" Total pages = %ld\n",
tablespaceStats.totalPages);
printf(" Useable pages = %ld\n",
tablespaceStats.useablePages);
printf(" Used pages = %ld\n",
tablespaceStats.usedPages);
printf(" Free pages = %ld\n",
tablespaceStats.freePages);
printf(" High water mark = %ld\n",
tablespaceStats.highWaterMark);
printf("\n");
return 0;
} /* TablespaceInfoDisplay */