1. func_dyn_statement_set.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "constant_definition.h"
#include "case_constant_definition.h"
#include "case_constant_sql_stmt_def.h"
#include "constant_oracle_versions.h"
extern vaciar_cadena();
extern pasar_amayus ();
char *func_dyn_statement_set (int version, int sentencia, char *opcion_uno,
char *opcion_dos, char
*opcion_tres , char *opcion_cuatro)
{
static char dyn_sts[MAX_STMT_SIZE];
vaciar_cadena (dyn_sts,MAX_STMT_SIZE);
switch (sentencia)
{
case CASE_ORACLE_VERSION:
strcpy (dyn_sts,"select ltrim(lpad(banner,70)) Version
from v$version ");
strcat (dyn_sts,"where banner like '%Oracle%' ");
break;
case CASE_ACTIVE_PARAMETERS:
strcpy (dyn_sts,"select name,value,description from
v$parameter order by 1 ");
break;
case CASE_USERS_CONNECTED:
strcpy (dyn_sts,"select saddr ADDRESS,sid SES,username
NOMBRE,command CMD, n");
strcat (dyn_sts,"status ESTADO,process PID,terminal
TERMINAL,LOCKWAIT, n");
strcat (dyn_sts,"to_char(logon_time,'DD/MM/YYYY -
HH24:MI:SS') INICIADO from v$session n ");
strcat (dyn_sts,"order by INICIADO n");
break;
case CASE_WAIT_STATISTICS:
strcpy (dyn_sts,"select count CANTIDAD,time TIEMPO,class
CLASE from v$waitstat order by 1 ");
break;
case CASE_DATAFILE_I_0:
switch (version)
{
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select f.phyrds,
f.phyblkrd, f.phywrts, ");
strcat (dyn_sts,"f.phyblkwrt,
f.lstiotim*10 , d.namen");
strcat (dyn_sts,"from v$filestat f,
v$datafile d ");
strcat (dyn_sts,"where f.file# = d.file#
and ");
strcat (dyn_sts,"f.lstiotim > 0 order by
2 n");
break;
case VERSION_ORACLE_817:
case VERSION_ORACLE_816:
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select f.phyrds,
f.phyblkrd, f.phywrts, ");
strcat (dyn_sts,"f.phyblkwrt, d.name ");
strcat (dyn_sts,"from v$filestat
f,v$datafile d ");
Página 1
2. func_dyn_statement_set.c
strcat (dyn_sts,"where f.file# = d.file#
");
strcat (dyn_sts,"order by 2 n");
break;
default:
break;
}
break;
case CASE_DATAFILE_BLOCKS_R_W:
strcpy (dyn_sts,"select d.name DATAFILE, f.phyblkrd
BLK_READ, f.phyblkwrt BLK_WRITE, n");
strcat (dyn_sts,"f.phyblkrd+f.phyblkwrt BLK_TOTAL from
v$filestat f, v$datafile d n");
strcat (dyn_sts,"where f.file# = d.file# order by 3 desc
");
break;
case CASE_WAIT_EVENTS:
strcpy (dyn_sts,"select se.sid, se.username
USUARIO,count(*) CANTIDAD,sw.event EVENTO n");
strcat (dyn_sts,"from v$session se, v$session_wait sw
where sw.sid=se.sid and n");
strcat (dyn_sts,"se.username > 'A' and sw.event not like
'SQL*Net%' and n");
strcat (dyn_sts,"sw.event not like 'PX Deq: Table Q
Normal%' and n");
strcat (dyn_sts,"sw.event not like 'PX Deq: Execution
Msg%' and n");
strcat (dyn_sts,"sw.event not like 'pipe get%' n");
strcat (dyn_sts,"group by se.sid, se.username, sw.event
");
break;
case CASE_INSTANCE_STATUS:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select
a.instance_number, a.instance_name, a.host_name, a.version, n");
strcat
(dyn_sts,"to_char(a.startup_time,'DD/MM/YYYY - HH24:MI:SS'),a.status,
a.parallel, n");
strcat (dyn_sts,"a.database_status,
a.instance_role ,b.log n");
strcat (dyn_sts,"from v$instance a,
n");
strcat (dyn_sts," (select log_mode log
from v$database ) b n");
break;
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select a.name,
a.created, a.log_mode, a.checkpoint_change#, n");
strcat (dyn_sts,"a.archive_change#,
b.val1 ,c.val2, d.val3, e.value, a.log_mode n");
strcat (dyn_sts,"from v$database a,
n");
strcat (dyn_sts,"(select decode
(value,0,'OPEN') val1 n");
strcat (dyn_sts,"from v$instance where
key='RESTRICTED MODE') b, n");
strcat (dyn_sts,"(select
decode(value,0,'NO') val2 n");
strcat (dyn_sts,"from v$instance where
key='SHUTDOWN PENDING') c, n");
strcat (dyn_sts,"(select
to_char(to_date(value, 'J'),'DD/MM/YYYY') val3 n");
strcat (dyn_sts,"from v$instance where
key='STARTUP TIME - JULIAN' ) d, n");
Página 2
3. func_dyn_statement_set.c
strcat (dyn_sts,"(select value n");
strcat (dyn_sts,"from v$instance where
key='STARTUP TIME - SECONDS' ) e n");
break;
default:
break;
}
break;
case CASE_TEMPORAL_SPACE_BY_USER:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select se.sid,
se.serial#, se.username, so.extents, so.contents, n");
strcat (dyn_sts,"sum((so.blocks)*(select
value from v$parameter n");
strcat (dyn_sts,"where name in
('db_block_size'))/1000) size_kb n");
strcat (dyn_sts,"from v$session se,
v$sort_usage so where se.saddr=so.session_addr n");
strcat (dyn_sts,"group by
se.sid,se.serial#,se.username,so.extents,so.contents n");
break;
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select tablespace_name,
extent_size, current_users, total_extents, n");
strcat (dyn_sts,"total_blocks,
used_extents, used_blocks, free_extents, free_blocks, n");
strcat (dyn_sts,"max_used_size,
max_used_blocks, max_sort_size, max_sort_blocks n");
strcat (dyn_sts,"from v$sort_segment
n");
default:
break;
}
break;
case CASE_TOT_FREELIST_WAIT_PERCENT:
strcpy (dyn_sts,"select (a.count/sum(b.value))*100
PCT_FREELIST from v$waitstat a, n");
strcat (dyn_sts,"v$sysstat b where a.class='free list'
and n");
strcat (dyn_sts,"b.name in ('db block gets','consistent
gets') group by a.count ");
break;
case CASE_LAST_CHECKPOINT_TIME:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select min(sysdate -
CHECKPOINT_TIME)*24*60 MINUTO, n");
strcat
(dyn_sts,"to_char(sysdate,'DD/MM/YYYY - HH24:MI:SS') FECHA n");
strcat (dyn_sts,"from
v$datafile_header");
break;
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select count(sid)
Cantidad from v$session n");
break;
default:
break;
}
break;
case CASE_LIST_TABLESPACES:
Página 3
4. func_dyn_statement_set.c
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select
a.tablespace_name TBL_NAME,d.contents CONTENT,a.sum_bytes/1048576 AVAILA_KB,
n");
strcat (dyn_sts,"a.max_id
MAX_ID,nvl(a.sum_bytes - c.sum_bytes,0)/1048576 USED_KB, n");
strcat
(dyn_sts,"nvl(c.sum_bytes,0)/1048576 FREE_KB, n");
strcat (dyn_sts,"round(nvl((a.sum_bytes
- c.sum_bytes),0.00)/a.sum_bytes*100.0,2) PCT_USED, d.status, n");
strcat
(dyn_sts,"d.extent_management,d.allocation_type from (select
tablespace_name,sum(bytes) sum_bytes, n");
strcat (dyn_sts,"count(1) max_id from
dba_data_files group by tablespace_name ) a, n");
strcat (dyn_sts,"(select
tablespace_name,sum(bytes) sum_bytes from dba_free_space n");
strcat (dyn_sts,"group by
tablespace_name) c, dba_tablespaces d n");
strcat (dyn_sts,"where a.tablespace_name
= c.tablespace_name(+) and n");
strcat (dyn_sts,"a.tablespace_name =
d.tablespace_name (+) order by 5,1 ");
break;
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select
a.tablespace_name TBL_NAME,d.contents CONTENT,a.sum_bytes/1048576 AVAILA_KB,
n");
strcat (dyn_sts,"a.max_id
MAX_ID,nvl(a.sum_bytes - c.sum_bytes,0)/1048576 USED_KB, n");
strcat
(dyn_sts,"nvl(c.sum_bytes,0)/1048576 FREE_KB, n");
strcat (dyn_sts,"round(nvl((a.sum_bytes
- c.sum_bytes),0.00)/a.sum_bytes*100.0,2) PCT_USED, d.status n");
strcat (dyn_sts,"from (select
tablespace_name,sum(bytes) sum_bytes, n");
strcat (dyn_sts,"count(1) max_id from
dba_data_files group by tablespace_name ) a, n");
strcat (dyn_sts,"(select
tablespace_name,sum(bytes) sum_bytes from dba_free_space n");
strcat (dyn_sts,"group by
tablespace_name) c, dba_tablespaces d n");
strcat (dyn_sts,"where a.tablespace_name
= c.tablespace_name(+) and n");
strcat (dyn_sts,"a.tablespace_name =
d.tablespace_name (+) order by 5,1 ");
break;
}
break;
case CASE_ACTIVE_TRANSACTIONS:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select tr.addr, n");
/* strcat
(dyn_sts,"to_char(tr.start_time,'DD/MM/YYYY - 24HH:MM:SS') TIME_START, n");
*/
strcat (dyn_sts,"tr.start_time, n");
strcat (dyn_sts,"tr.status
ESTADO,tr.used_ublk BLK_USED,tr.used_ublk*(select value n");
strcat (dyn_sts,"from v$parameter where
name in 'db_block_size')/1000 KB_USED,tr.used_urec, n");
Página 4
5. func_dyn_statement_set.c
strcat (dyn_sts,"se.sid SES, se.serial#
SERIAL,rn.name,se.username from v$transaction tr, n");
strcat (dyn_sts,"v$session se,
v$rollname rn where tr.xidusn=rn.usn and n");
strcat (dyn_sts,"tr.ses_addr=se.saddr
order by 2,6");
break;
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select tr.addr, ");
strcat (dyn_sts,"tr.start_time, ");
/* strcat
(dyn_sts,"to_char(tr.start_time,'DD/MM/YYYY - 24HH:MM:SS') TIME_START, n"); */
strcat (dyn_sts,"tr.status
ESTADO,tr.used_ublk BLK_USED,tr.used_ublk,n");
strcat (dyn_sts,"tr.used_urec, n");
strcat (dyn_sts,"se.sid SES, se.serial#
SERIAL,rn.name,se.username from v$transaction tr, n");
strcat (dyn_sts,"v$session se,
v$rollname rn where tr.xidusn=rn.usn and n");
strcat (dyn_sts,"tr.ses_addr=se.saddr
order by 2,6");
break;
}
break;
case CASE_LATCH_DETAILS:
strcpy (dyn_sts,"select gets GETS,misses
MISS,round((gets-misses)*100/gets,2) HITRATIO, n");
strcat (dyn_sts,"immediate_gets
IMM_GETS,immediate_misses IMM_MISS,sleeps SLEEP, n");
strcat (dyn_sts,"spin_gets GETSPIN,addr ADDR,latch#,name
NOMBRE from v$latch n");
strcat (dyn_sts,"where misses > 0 and gets > 0 n");
strcat (dyn_sts,"order by 2 desc
,round(((gets-misses)/gets),2) desc");
break;
case CASE_RESOURCE_LIMITS:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select resource_name
NOMBRE,initial_allocation INIT_ALLOC, n");
strcat (dyn_sts,"current_utilization
CURR_UTILIZA,max_utilization MAX_UTILIZA, n");
strcat (dyn_sts,"limit_value LIMITE from
v$resource_limit order by 4");
break;
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select resource_name,
limit n");
strcat (dyn_sts,"from
user_resource_limits order by 2");
break;
}
break;
case CASE_LIST_DATAFILES:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select name
DATAFILE,bytes/1048576 MBYTES, status ESTADO from v$datafile n");
strcat (dyn_sts,"union all n");
strcat (dyn_sts,"select name
DATAFILE,bytes/1048576 MBYTES, status ESTADO from v$tempfile n");
strcat (dyn_sts," order by MBYTES desc
Página 5
6. func_dyn_statement_set.c
n");
break;
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select name
DATAFILE,bytes/1048576 MBYTES, status ESTADO from v$datafile n");
/* FALTARIA VER COMO HACEMOS PARA BUSCAR LA PARTE TEMPORAL EN VERSIONES
7.3.4
strcat (dyn_sts,"union all n");
strcat (dyn_sts,"select name
DATAFILE,bytes/1048576 MBYTES, status ESTADO from v$tempfile n");
*/
strcat (dyn_sts," order by MBYTES desc
n");
break;
}
break;
case CASE_LIST_DATAFILES_NEW_9I:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select v.status ESTADO,
d.file_name DATAFILE, d.tablespace_name TBLNAME, n");
strcat
(dyn_sts,"to_char(nvl((d.bytes/1024),0),'99999990.000') SIZE_KB, n");
strcat
(dyn_sts,"to_char(nvl(((d.bytes-nvl(s.bytes,0))/1024),0),'99999999.999') || '/'
|| to_char(nvl((d.bytes/1024),0),'99999999.999') || '/' || nvl
(d.autoextensible,'NO') USED_KB, n");
strcat (dyn_sts,"to_char(nvl(((d.bytes -
nvl(s.bytes,0))/d.bytes)*100,0),'990.00') USED_PCT n");
strcat (dyn_sts,"from sys.dba_data_files
d, v$datafile v, (select file_id,sum(bytes) bytes n");
strcat (dyn_sts,"from sys.dba_free_space
group by file_id) s n");
strcat (dyn_sts,"where
s.file_id(+)=d.file_id and d.file_name=v.name n");
strcat (dyn_sts,"union all n");
strcat (dyn_sts,"select v.status ESTADO,
d.file_name DATAFILE, d.tablespace_name TBLNAME, n");
strcat
(dyn_sts,"to_char(nvl((d.bytes/1024),0),'99999990.000') SIZE_KB, n");
strcat
(dyn_sts,"to_char(nvl((t.bytes_cached / 1024),0),'9999999.999') || '/' ||
to_char(nvl((d.bytes/1024),0),'99999999.999') || '/' || nvl
(d.autoextensible,'NO') USED_KB, n");
strcat
(dyn_sts,"to_char(nvl((t.bytes_cached/d.bytes)*100,0),'990.00') USED_PCT n");
strcat (dyn_sts,"from sys.dba_temp_files
d, v$temp_extent_pool t, v$tempfile v n");
strcat (dyn_sts,"where
t.file_id(+)=d.file_id and d.file_id=v.file# n");
strcat (dyn_sts,"order by SIZE_KB desc
n");
break;
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select v.status ESTADO,
d.file_name DATAFILE, d.tablespace_name TBLNAME, n");
strcat
(dyn_sts,"to_char(nvl((d.bytes/1024),0),'99999990.000') SIZE_KB, n");
strcat
(dyn_sts,"to_char(nvl(((d.bytes-nvl(s.bytes,0))/1024),0),'99999999.999') || '/'
|| to_char(nvl((d.bytes/1024),0),'99999999.999') USED_KB, n");
strcat (dyn_sts,"to_char(nvl(((d.bytes -
nvl(s.bytes,0))/d.bytes)*100,0),'990.00') USED_PCT n");
Página 6
7. func_dyn_statement_set.c
strcat (dyn_sts,"from sys.dba_data_files
d, v$datafile v, (select file_id,sum(bytes) bytes n");
strcat (dyn_sts,"from sys.dba_free_space
group by file_id) s n");
strcat (dyn_sts,"where
s.file_id(+)=d.file_id and d.file_name=v.name n");
/* strcat (dyn_sts,"union all n");
strcat (dyn_sts,"select v.status ESTADO,
d.file_name DATAFILE, d.tablespace_name TBLNAME, n");
strcat
(dyn_sts,"to_char(nvl((d.bytes/1024),0),'99999990.000') SIZE_KB, n");
strcat
(dyn_sts,"to_char(nvl((t.bytes_cached / 1024),0),'9999999.999') || '/' ||
to_char(nvl((d.bytes/1024),0),'99999999.999') USED_KB, n");
strcat
(dyn_sts,"to_char(nvl((t.bytes_cached/d.bytes)*100,0),'990.00') USED_PCT n");
strcat (dyn_sts,"from sys.dba_temp_files
d, v$temp_extent_pool t, v$tempfile v n");
strcat (dyn_sts,"where
t.file_id(+)=d.file_id and d.file_id=v.file# n");
*/
strcat (dyn_sts,"order by SIZE_KB desc
n");
break;
}
break;
case CASE_LIST_TABLESPACES_NEW_9I:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select d.status ESTADO,
d.tablespace_name TBLNAME,d.contents TIPO, n");
strcat (dyn_sts,"d.extent_management
EXTENT_MGM,to_char(nvl((a.bytes/1024),0),'99999999.999') SIZE_KB, n");
strcat
(dyn_sts,"to_char((nvl(a.bytes-nvl(f.bytes,0),0)/1024),'99999999.999') || '/' ||
to_char(nvl((a.bytes/1024),0),'99999999.999') USED_KB, n");
strcat (dyn_sts,"to_char(nvl(((a.bytes -
nvl(f.bytes,0))/a.bytes)*100,0),'990.00') USED_PCT n");
strcat (dyn_sts,"from
sys.dba_tablespaces d, (select tablespace_name, sum(bytes) bytes n");
strcat (dyn_sts,"from dba_data_files
group by tablespace_name) a, (select tablespace_name,sum(bytes) bytes n");
strcat (dyn_sts,"from dba_free_space
group by tablespace_name ) f n");
strcat (dyn_sts,"where
d.tablespace_name=a.tablespace_name(+) and n");
strcat (dyn_sts,"d.tablespace_name =
f.tablespace_name(+) and n");
strcat (dyn_sts,"not
(d.extent_management like 'LOCAL' and d.contents LIKE 'TEMPORARY') n");
strcat (dyn_sts,"union all n");
strcat (dyn_sts,"select d.status ESTADO,
d.tablespace_name TBLNAME,d.contents TIPO, n");
strcat (dyn_sts,"d.extent_management
EXTENT_MGM,to_char(nvl((a.bytes/1024),0),'99999999.999') SIZE_KB, n");
strcat
(dyn_sts,"to_char((nvl(t.bytes,0)/1024),'99999999.999') || '/' ||
to_char(nvl((a.bytes/1024),0),'99999999.999') USED_KB, n");
strcat
(dyn_sts,"to_char(nvl((t.bytes/a.bytes)*100,0),'990.00') USED_PCT from
sys.dba_tablespaces d, n");
strcat (dyn_sts,"(select
tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name)
a, n");
Página 7
8. func_dyn_statement_set.c
strcat (dyn_sts,"(select
tablespace_name, sum(bytes_cached) bytes from v$temp_extent_pool n");
strcat (dyn_sts,"group by
tablespace_name) t where d.tablespace_name=a.tablespace_name (+) and n");
strcat
(dyn_sts,"d.tablespace_name=t.tablespace_name (+) and d.extent_management like
'LOCAL' and n");
strcat (dyn_sts,"d.contents like
'TEMPORARY' n");
strcat (dyn_sts,"order by SIZE_KB desc
n");
break;
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select d.status ESTADO,
d.tablespace_name TBLNAME,d.contents TIPO, n");
strcat
(dyn_sts,"to_char(nvl((a.bytes/1024),0),'99999999.999') SIZE_KB, n");
strcat
(dyn_sts,"to_char((nvl(a.bytes-nvl(f.bytes,0),0)/1024),'99999999.999') || '/' ||
to_char(nvl((a.bytes/1024),0),'99999999.999') USED_KB, n");
strcat (dyn_sts,"to_char(nvl(((a.bytes -
nvl(f.bytes,0))/a.bytes)*100,0),'990.00') USED_PCT n");
strcat (dyn_sts,"from
sys.dba_tablespaces d, (select tablespace_name, sum(bytes) bytes n");
strcat (dyn_sts,"from dba_data_files
group by tablespace_name) a, (select tablespace_name,sum(bytes) bytes n");
strcat (dyn_sts,"from dba_free_space
group by tablespace_name ) f n");
strcat (dyn_sts,"where
d.tablespace_name=a.tablespace_name(+) and n");
strcat (dyn_sts,"d.tablespace_name =
f.tablespace_name(+) and n");
strcat (dyn_sts,"not d.contents LIKE
'TEMPORARY' n");
/*
strcat (dyn_sts,"union all n");
strcat (dyn_sts,"select d.status ESTADO,
d.tablespace_name TBLNAME,d.contents TIPO, n");
strcat
(dyn_sts,"to_char(nvl((a.bytes/1024),0),'99999999.999') SIZE_KB, n");
strcat
(dyn_sts,"to_char((nvl(t.bytes,0)/1024),'99999999.999') || '/' ||
to_char(nvl((a.bytes/1024),0),'99999999.999') USED_KB, n");
strcat
(dyn_sts,"to_char(nvl((t.bytes/a.bytes)*100,0),'990.00') USED_PCT from
sys.dba_tablespaces d, n");
strcat (dyn_sts,"(select
tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name)
a, n");
strcat (dyn_sts,"(select
tablespace_name, sum(bytes_cached) bytes from v$temp_extent_pool n");
strcat (dyn_sts,"group by
tablespace_name) t where d.tablespace_name=a.tablespace_name (+) and n");
strcat
(dyn_sts,"d.tablespace_name=t.tablespace_name (+) and n");
strcat (dyn_sts,"d.contents like
'TEMPORARY' ");
*/
strcat (dyn_sts,"order by SIZE_KB desc
n");
break;
}
break;
case CASE_ACTIVE_SESSIONS:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
Página 8
9. func_dyn_statement_set.c
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select s.sid SES,
s.serial# SERI, s.type TIPO, s.osuser OS_USER, n");
strcat
(dyn_sts,"to_char(logon_time,'DD/MM/YYYY - HH24:MI:SS') LOGON,s.status ESTADO,
n");
strcat (dyn_sts,"s.process PROCESO,
s.machine MAQUINA, s.username NOMBRE, n");
strcat (dyn_sts,"p.spid PID, s.program
PROGRAMA n");
strcat (dyn_sts,"from v$session s,
v$process p n");
strcat (dyn_sts,"where osuser is not
null and p.addr=s.paddr n");
strcat (dyn_sts,"order by LOGON, ESTADO
n");
break;
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select s.sid SES,
s.serial# SERI, s.type TIPO, s.osuser OS_USER, n");
strcat
(dyn_sts,"to_char(logon_time,'DD/MM/YYYY - HH24:MI:SS') LOGON,s.status ESTADO,
n");
strcat (dyn_sts,"s.process PROCESO,
s.machine MAQUINA, s.username NOMBRE, n");
strcat (dyn_sts,"p.spid PID, s.program
PROGRAMA n");
strcat (dyn_sts,"from v$session s,
v$process p n");
strcat (dyn_sts,"where osuser is not
null and p.addr=s.paddr n");
strcat (dyn_sts,"order by LOGON, ESTADO
n");
break;
}
break;
case CASE_SESSIONS_WAITS:
strcpy (dyn_sts,"select sw.sid SES, sw.seq# SEQ,
nvl(sw.wait_time,0) W_T, n");
strcat (dyn_sts,"nvl(sw.seconds_in_wait,0)
S_W_T,nvl(se.username,'.') USUA, n");
strcat (dyn_sts,"nvl(se.status,'.') ESTA,sw.event EVENT,
sw.state, sw.p1text, sw.p1, n");
strcat (dyn_sts,"sw.p1raw, sw.p2text, sw.p2, sw.p2raw,
sw.p3text, sw.p3, sw.p3raw n");
strcat (dyn_sts,"from v$session_wait sw, v$session se
n");
strcat (dyn_sts,"where sw.sid = se.sid order by 6,8
n");
break;
case CASE_DEFAULT_STORAGE_SETS_TABLESPACE:
strcpy (dyn_sts,"select tablespace_name TBLNAME,
initial_extent INI_EXT, next_extent NEX_EXT, n");
strcat (dyn_sts,"min_extents MIN_EXT, max_extents
MAX_EXT, pct_increase PCT_INC n");
strcat (dyn_sts,"from dba_tablespaces n");
strcat (dyn_sts,"order by tablespace_name n");
break;
case CASE_ALL_TABLES_STORAGE_SETTINGS:
strcpy (dyn_sts,"select owner OWNER_TABLE, segment_name
SEG_NAME, tablespace_name TBL_NAME, n");
strcat (dyn_sts,"blocks BLKS, blocks SIZE_KB, n");
strcat (dyn_sts,"extents EXTS, max_extents MAX_EXT n");
strcat (dyn_sts,"from dba_segments n");
strcat (dyn_sts,"where segment_type='TABLE' order by 1,2
n");
break;
Página 9
10. func_dyn_statement_set.c
case CASE_ALL_NON_SYS_TABLES_SETTINGS:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select owner OWNER,
table_name TNAME, tablespace_name TBLNAME, n");
strcat (dyn_sts,"nvl(blocks,-1) BLOCK,
nvl(num_rows,-1) NROWS, buffer_pool BUFF_POOL, n");
strcat
(dyn_sts,"nvl(to_char(last_analyzed,'DD/MM/YYYY - HH24:MI'),-1) LAST_ANALIZE,
n");
strcat (dyn_sts,"sum(blocks) n");
strcat (dyn_sts,"from dba_tables n");
strcat (dyn_sts,"group by
owner,table_name,tablespace_name,nvl(blocks,-1),nvl(num_rows,-1), n");
strcat
(dyn_sts,"buffer_pool,nvl(to_char(last_analyzed,'DD/MM/YYYY - HH24:MI'),-1)
n");
strcat (dyn_sts,"order by 1,2 n");
break;
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select owner OWNER,
table_name TNAME, tablespace_name TBLNAME, n");
strcat (dyn_sts,"nvl(blocks,-1) BLOCK,
nvl(num_rows,-1) NROWS, n");
strcat (dyn_sts,"sum(blocks) n");
strcat (dyn_sts,"from dba_tables n");
strcat (dyn_sts,"group by
owner,table_name,tablespace_name,nvl(blocks,-1),nvl(num_rows,-1) n");
strcat (dyn_sts,"order by 1,2 n");
break;
}
break;
case CASE_ALL_NON_SYS_INDEXES_SETTINGS:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select
owner,index_name,tablespace_name, nvl(leaf_blocks,-1), nvl(num_rows,-1), n");
strcat (dyn_sts,"buffer_pool,
nvl(to_char(last_analyzed,'DD/MM/YYYY - HH24:MI'),-1), n");
strcat (dyn_sts,"sum(leaf_blocks) n");
strcat (dyn_sts,"from dba_indexes n");
strcat (dyn_sts,"group by owner,
index_name, tablespace_name, nvl(leaf_blocks,-1), n");
strcat (dyn_sts,"nvl(num_rows,-1),
buffer_pool, nvl(to_char(last_analyzed,'DD/MM/YYYY - HH24:MI'),-1) n");
strcat (dyn_sts,"order by 1,2 n");
break;
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select
owner,index_name,tablespace_name, nvl(leaf_blocks,-1), n");
strcat (dyn_sts,"sum(leaf_blocks) n");
strcat (dyn_sts,"from dba_indexes n");
strcat (dyn_sts,"group by owner,
index_name, tablespace_name, nvl(leaf_blocks,-1) n");
strcat (dyn_sts,"order by 1,2 n");
break;
}
break;
case CASE_USER_DEFINED:
Página 10
11. func_dyn_statement_set.c
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy (dyn_sts,"select * from (select
distinct username, account_status, expiry_date, n");
strcat (dyn_sts,"default_tablespace,
temporary_tablespace, profile, n");
strcat
(dyn_sts,"to_char(created,'DD/MM/YYYY - HH24:MI') from dba_users n");
strcat (dyn_sts,"union n");
strcat (dyn_sts,"select 'PUBLIC','OPEN',
to_date(null), '', '', n");
strcat (dyn_sts,"'',
to_char(to_date(null), n");
strcat (dyn_sts,"'DD/MM/YYYY - HH24:MI')
from dual) n");
strcat (dyn_sts,"order by
initcap(username) n");
break;
case VERSION_ORACLE_734:
strcpy (dyn_sts,"select distinct
username, n");
strcat (dyn_sts,"'----------',
to_date(null), n");
strcat (dyn_sts,"default_tablespace,
n");
strcat (dyn_sts,"temporary_tablespace,
profile, n");
strcat
(dyn_sts,"to_char(created,'DD/MM/YYYY - HH24:MI') from dba_users n");
strcat (dyn_sts,"union n");
strcat (dyn_sts,"select 'PUBLIC','OPEN',
to_date(null), '----------', n");
strcat (dyn_sts,"'----------',
'----------', to_char(to_date(null), n");
strcat (dyn_sts,"'DD/MM/YYYY - HH24:MI')
from dual n");
strcat (dyn_sts,"order by username n");
break;
}
break;
case CASE_LIST_DATAFILE_REDO_CONTROL_FILES:
strcpy (dyn_sts,"select file_name, tablespace_name,
status from dba_data_files n");
strcat (dyn_sts,"union all n");
strcat (dyn_sts,"select member, 'LOG FILE', status from
v$logfile n");
strcat (dyn_sts,"union all n");
strcat (dyn_sts,"select name, 'CONTROL FILE', status
from v$controlfile n");
strcat (dyn_sts,"order by 1,2 n");
break;
case CASE_LIST_DATAFILES_USED_BLOCKS:
strcpy (dyn_sts,"select a.tablespace_name, a.file_name,
a.bytes, n");
strcat (dyn_sts,"(b.maximum + c.blocks -1) *
d.db_block_size highwater n");
strcat (dyn_sts,"from dba_data_files a, n");
strcat (dyn_sts,"(select file_id, max(block_id) maximum
n");
strcat (dyn_sts,"from dba_extents n");
strcat (dyn_sts,"group by file_id ) b, n");
strcat (dyn_sts,"dba_extents c, n");
strcat (dyn_sts,"(select value db_block_size from
v$parameter where name='db_block_size') d n");
strcat (dyn_sts,"where a.file_id = b.file_id n");
Página 11