使用BOOST和ORACLE::OCCI
查询ORACLE数据库空间使用情况
#include
#include
#include
#include
#include
#include "odb.h"
using namespace oracle::occi;
using namespace std;
int main(int argc,char* argv[])
{
ResultSet* ress;
std::vector uspas;
string str;
//连接
ifstream in(argv[1],ios::in);
//ifstream in("192.168.11.164_msp11");
if(!in)
{ cout cout return -1;
}
while(getline(in,str))
{ uspas.push_back(str);
}
//执行sql,返回结果并显示
string strsql1("SELECT UPPER(D.TABLESPACE_NAME),D.total_size_m,D.total_size_m - F.free_m,F.free_m,F.max_m,TO_CHAR(ROUND(F.free_m / D.total_size_m * 100, 2), '990.99') || '%' FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES) / (1024 * 1024), 2) free_m,ROUND(MAX(BYTES) / (1024 * 1024), 2) max_m FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) total_size_m FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE F.TABLESPACE_NAME(+) = D.TABLESPACE_NAME ORDER BY 6 desc");
odb odb1;
try{
ress=odb1.exeQuary(uspas[0],uspas[1],uspas[2],strsql1);
}
catch(SQLException& sq)
{ cout }
cout while( ress->next() )
{
string strtbs = ress->getString(1);
float totalsize = ress->getFloat(2);
float usedsize = ress->getFloat(3);
float freesize = ress->getFloat(4);
float maxfreesize = ress->getFloat(5);
string freepecent = ress->getString(6);
cout }
}
endl;
cout