orastat line command

442
************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* *** *** *** *** *** ARCHIVO: CASE_CONSTANT_DEFINITION.h *** *** *** *** *** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* *** *** *** *** #define CASE_ORACLE_VERSION 0 #define CASE_ACTIVE_PARAMETERS 1 #define CASE_USERS_CONNECTED 2 #define CASE_WAIT_STATISTICS 3 #define CASE_DATAFILE_I_0 4 #define CASE_DATAFILE_BLOCKS_R_W 5 #define CASE_WAIT_EVENTS 6 #define CASE_INSTANCE_STATUS 7 #define CASE_TEMPORAL_SPACE_BY_USER 8 #define CASE_TOT_FREELIST_WAIT_PERCENT 9 #define CASE_LAST_CHECKPOINT_TIME 10 #define CASE_LIST_TABLESPACES 11 #define CASE_ACTIVE_TRANSACTIONS 12 #define CASE_LATCH_DETAILS 13 #define CASE_RESOURCE_LIMITS 14 #define CASE_LIST_DATAFILES 15 #define CASE_LIST_DATAFILES_NEW_9I 16 #define CASE_LIST_TABLESPACES_NEW_9I 17 #define CASE_ACTIVE_SESSIONS 18 #define CASE_SESSIONS_WAITS 19 #define CASE_DEFAULT_STORAGE_SETS_TABLESPACE 20 #define CASE_ALL_TABLES_STORAGE_SETTINGS 21

Upload: albertinous

Post on 22-May-2015

487 views

Category:

Technology


2 download

DESCRIPTION

A simple orastat command for Oracle 8, 9, 10 and 11, like onstat do for Informix IDS Database. You can use for free modificaction.

TRANSCRIPT

Page 1: Orastat line command

*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: CASE_CONSTANT_DEFINITION.h ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***#define CASE_ORACLE_VERSION 0#define CASE_ACTIVE_PARAMETERS 1#define CASE_USERS_CONNECTED 2#define CASE_WAIT_STATISTICS 3#define CASE_DATAFILE_I_0 4#define CASE_DATAFILE_BLOCKS_R_W 5#define CASE_WAIT_EVENTS 6#define CASE_INSTANCE_STATUS 7#define CASE_TEMPORAL_SPACE_BY_USER 8#define CASE_TOT_FREELIST_WAIT_PERCENT 9#define CASE_LAST_CHECKPOINT_TIME 10#define CASE_LIST_TABLESPACES 11#define CASE_ACTIVE_TRANSACTIONS 12#define CASE_LATCH_DETAILS 13#define CASE_RESOURCE_LIMITS 14#define CASE_LIST_DATAFILES 15#define CASE_LIST_DATAFILES_NEW_9I 16#define CASE_LIST_TABLESPACES_NEW_9I 17#define CASE_ACTIVE_SESSIONS 18#define CASE_SESSIONS_WAITS 19#define CASE_DEFAULT_STORAGE_SETS_TABLESPACE 20#define CASE_ALL_TABLES_STORAGE_SETTINGS 21

Page 2: Orastat line command

#define CASE_ALL_NON_SYS_TABLES_SETTINGS 22#define CASE_ALL_NON_SYS_INDEXES_SETTINGS 23#define CASE_USER_DEFINED 24#define CASE_LIST_DATAFILE_REDO_CONTROL_FILES 25#define CASE_LIST_DATAFILES_USED_BLOCKS 26#define CASE_LIST_SORT_BY_USER 27#define CASE_LIST_LOCK_STATUS 28#define CASE_LIST_USER_BY_CPU_USAGE 29#define CASE_SQL_STATEMENT_BY_THIS_USER 30#define CASE_REDO_LOGS_STATUS 31#define CASE_ARCHIVED_LOGS_HISTORY 32#define CASE_REDO_LOG_RECOVERY_REPORT 33#define CASE_ARCHIVE_LOG_HISTROY 34#define CASE_SESSION_LATCH_WAITS_SQL 35#define CASE_SESSION_PROGRAM_RUNNING_SQL 36#define CASE_PRIVILEGES_BY_USER 37#define CASE_DETAILED_LOCKING_CAUSES 38#define CASE_CURRENT_STATISTICS_VALUES 39#define CASE_TABLE_DESCRIPTION_USER_TABLENAME 40#define CASE_INDEX_DESCRIPTION_USER_INDEXNAME 41#define CASE_CURRENT_ACTIVITY_REPORT 42#define CASE_DICTIONARY_TABLE_COMMENTS 43#define CASE_DICTIONARY_TABLE_COLUMNS_DESCRIP 44#define CASE_SGA_STATISTIC_GENERAL 45#define CASE_SGA_STATISTIC_MEMORY_USAGE 46#define CASE_SGA_STATISTIC_INFORMATION 47#define CASE_ROW_CACHE_INFORMATION 48#define CASE_PERFORMANCE_DISK_I_O 49#define CASE_RECURSIVE_CALLS 50#define CASE_SYSTEM_EVENTS 51#define CASE_SQL_AREA_ALL_ENTRIES 52#define CASE_SQL_AREA_CPU_USAGE 53#define CASE_SQL_AREA_MEMORY_USAGE 54#define CASE_SQL_AREA_BUFFER_GET_SUM 55#define CASE_INIT_PARAMETERS_VALUES_STATUS 56#define CASE_TABLESPACE_FRAGMENTATION 57--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ----------------------

Page 3: Orastat line command

--------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: CASE_CONSTANT_FUNC_DEF.h ** **** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

#define FUNC_DB_BLOCK_SIZE 1#define FUNC_COMMAND_SQL 2#define FUNC_LOCK_MODE 3#define FUNC_LOCK_NAME_MODE 4#define FUNC_DB_BLOCK_SIZE0 5#define FUNC_DB_OBJECT_TYPE 6#define FUNC_DB_OBJECT_OWNER_NAME 7#define FUNC_DB_SESSION_SID 8#define FUNC_CONVERT_HH_MM_SS 9#define FUNC_DB_COMP_TBLSPC_INI_EXT 10

--- ---

Page 4: Orastat line command

--- ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: CASE_CONSTANT_SQL_STMT_DEF.h ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***/* Inicio de la programacion */

#define CASE_ORACLE_VERSION 0#define CASE_ACTIVE_PARAMETERS 1#define CASE_USERS_CONNECTED 2#define CASE_WAIT_STATISTICS 3#define CASE_DATAFILE_I_0 4#define CASE_DATAFILE_BLOCKS_R_W 5#define CASE_WAIT_EVENTS 6#define CASE_INSTANCE_STATUS 7#define CASE_TEMPORAL_SPACE_BY_USER 8#define CASE_TOT_FREELIST_WAIT_PERCENT 9#define CASE_LAST_CHECKPOINT_TIME 10

Page 5: Orastat line command

#define CASE_LIST_TABLESPACES 11#define CASE_ACTIVE_TRANSACTIONS 12#define CASE_LATCH_DETAILS 13#define CASE_RESOURCE_LIMITS 14#define CASE_LIST_DATAFILES 15#define CASE_LIST_DATAFILES_NEW_9I 16#define CASE_LIST_TABLESPACES_NEW_9I 17#define CASE_ACTIVE_SESSIONS 18#define CASE_SESSIONS_WAITS 19#define CASE_DEFAULT_STORAGE_SETS_TABLESPACE 20#define CASE_ALL_TABLES_STORAGE_SETTINGS 21#define CASE_ALL_NON_SYS_TABLES_SETTINGS 22#define CASE_ALL_NON_SYS_INDEXES_SETTINGS 23#define CASE_USER_DEFINED 24#define CASE_LIST_DATAFILE_REDO_CONTROL_FILES 25#define CASE_LIST_DATAFILES_USED_BLOCKS 26#define CASE_LIST_SORT_BY_USER 27#define CASE_LIST_LOCK_STATUS 28#define CASE_LIST_USER_BY_CPU_USAGE 29#define CASE_SQL_STATEMENT_BY_THIS_USER 30#define CASE_REDO_LOGS_STATUS 31#define CASE_ARCHIVED_LOGS_HISTORY 32#define CASE_REDO_LOG_RECOVERY_REPORT 33#define CASE_ARCHIVE_LOG_HISTROY 34#define CASE_SESSION_LATCH_WAITS_SQL 35#define CASE_SESSION_PROGRAM_RUNNING_SQL 36#define CASE_PRIVILEGES_BY_USER 37#define CASE_DETAILED_LOCKING_CAUSES 38#define CASE_CURRENT_STATISTICS_VALUES 39#define CASE_TABLE_DESCRIPTION_USER_TABLENAME 40#define CASE_INDEX_DESCRIPTION_USER_INDEXNAME 41#define CASE_CURRENT_ACTIVITY_REPORT 42#define CASE_DICTIONARY_TABLE_COMMENTS 43#define CASE_DICTIONARY_TABLE_COLUMNS_DESCRIP 44#define CASE_SGA_STATISTIC_GENERAL 45#define CASE_SGA_STATISTIC_MEMORY_USAGE 46#define CASE_SGA_STATISTIC_INFORMATION 47#define CASE_ROW_CACHE_INFORMATION 48#define CASE_PERFORMANCE_DISK_I_O 49#define CASE_RECURSIVE_CALLS 50

Page 6: Orastat line command

#define CASE_SYSTEM_EVENTS 51#define CASE_SQL_AREA_ALL_ENTRIES 52#define CASE_SQL_AREA_CPU_USAGE 53#define CASE_SQL_AREA_MEMORY_USAGE 54#define CASE_SQL_AREA_BUFFER_GET_SUM 55#define CASE_INIT_PARAMETERS_VALUES_STATUS 56#define CASE_TABLESPACE_FRAGMENTATION 57#define CASE_SHOW_NLS_PARAMETERS 58#define CASE_CONTROL_FILES_STATUS 59#define CASE_SORT_SEGMENTS_USERS 60#define CASE_ORACLE_QUOTAS 61#define CASE_TABLE_GENERAL_DESCRIPTION 62#define CASE_TABLE_COLUMN_DESCRIPTION 63#define CASE_TABLE_CONSTRAINTS 64#define CASE_INDEX_GENERAL_DESCRIPTION 65

/* Agregado el 19-01-2004 */#define CASE_AUDIT_DEFINITION 66#define CASE_SHOW_SEGMENTS_EXTENTS 67#define CASE_SHOW_EXTENTS_INSIDE_DATAFILES 68#define CASE_SHOW_USER_LISTS 69#define CASE_SHOW_ROLES_PRIVILEGES 70#define CASE_SHOW_PRIVILEGES_COLUMNS 71#define CASE_SHOW_LOCKS_VIEWS 72#define CASE_GRAPH_LOCK_WAITS 73#define CASE_OBJECT_ACCESS_SESSION 74#define CASE_SHOW_LATCHES 75#define CASE_SHOW_STATISTICS 76#define CASE_SHOW_TRANSACTIONS 77#define CASE_SHOW_DATAFILES_STATUS 78#define CASE_SHOW_DB_OBJECT_CACHE 79

/* Agregado el 22-01-2004 */#define CASE_TABLE_ALERT_EXTENT_USED 80#define CASE_INDEX_ALERT_EXTENT_USED 81

/* Agregado el 18-03-2004 */#define CASE_USER_TIME_WORKING 82#define CASE_IS_USER_WORKING 83

Page 7: Orastat line command

/* Agregado el 22-03-2004 */#define CASE_VER_SQL_PROGRAM 84

/* Agregado el 07-04-2004 */#define CASE_SQL_SESS_IO 85#define CASE_SQL_SESSION_EVENT 86#define CASE_SQL_SESSION_WAIT 87#define CASE_SQL_SESSION_LONG_OPER 88#define CASE_SQL_LOCKED_OBJECTS 89

/* Agregado el 13-04-2004 */#define CASE_SQL_TRANSACTION_DETAIL 90

/* Agregado el 14-04-2004 */#define CASE_SQL_LOCK_MEDIUM_INFO 91#define CASE_SQL_LOCK_FULL_INFO 92#define CASE_SQL_LOCK_BY_SESSION_ID 93#define CASE_SQL_WHO_IS_WAITING_FOR 94#define CASE_SQL_WHICH_SQL_RUNNING 95#define CASE_WHICH_OBJECTS_LOCKED_BY_USER 96

/* Agregado el 25-Agosto-2005 */

#define CASE_BUFFER_CACHE_DEFINED 97#define CASE_BUFFER_CACHE_TOTAL_SIZE 98#define CASE_OPTIMIZER_INDEX_COST_ADJ_ESTIMATE 99#define CASE_OPTIMIZER_INDEX_CACHING_ESTIMAGE 100--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* **********************

Page 8: Orastat line command

*************************************************** ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: CONSTANT_DEFINITION.h ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

#define MAX_NRO_OPCION 100 // OPCION INCLUSIVE ///* Modificado el 25-Ago-2005 - 14:00 (ex valor 99) *//* Modificado el 25-Ago-2005 - 14:00 (ex valor 98) *//* Modificado el 25-Ago-2005 - 14:00 (ex valor 97) *//* Modificado el 25-Ago-2005 - 14:00 (ex valor 96) *//* Modificado el 18-03-2004 - 14:00 (ex valor 81) * //* Modificado el 18-03-2004 - 16:45 (ex valor 82) * //* Modificado el 22-03-2004 - 10:13 (ex valor 83) * //* Modificado el 07-04-2004 - 13:40 (ex valor 84) * //* Modificado el 07-04-2004 - 14:20 (ex valor 85) * //* Modificado el 07-04-2004 - 14:33 (ex valor 86) * //* Modificado el 07-04-2004 - 14:33 (ex valor 87) * //* Modificado el 07-04-2004 - 14:33 (ex valor 88) * //* Modificado el 07-04-2004 - 14:33 (ex valor 89) * //* Modificado el 14-04-2004 - 09:59 (ex valor 90) * //* Modificado el 14-04-2004 - 09:59 (ex valor 91) * //* Modificado el 14-04-2004 - 11:30 (ex valor 92) * //* Modificado el 14-04-2004 - 12:11 (ex valor 93) * //* Modificado el 14-04-2004 - 12:11 (ex valor 94) * //* Modificado el 14-04-2004 - 15:08 (ex valor 95) * /

Page 9: Orastat line command

#define MAX_ITEMS 512#define MAX_VNAME_LEN 512#define MAX_INAME_LEN 512#define MAX_BUFFER 512#define MAX_LINE 512#define MAX_STMT 16384#define MAX_STMT_SIZE 16384#define MAX_BIND_VARIABLE 512#define MAX_VAR_SIZE 512#define MAX_VERSION_LEN 256#define MAX_LEN_ARG 512#define MAX_LEN_CONNECT 512#define MAX_WORD_STMT 256

#define MAX_LEN_DATOS_AUXI 1024#define MAX_LEN_VARCHAR 128

#define SI_PROCESAR 1#define NO_PROCESAR 0

#define SI_ERROR 1#define NO_ERROR 0

#define ASCII_SEPARADOR 124#define ASCII_FIN_LINEA 0#define ASCII_SLASH 47#define ASCII_ARROBA 64#define ASCII_PUNTO 46#define ASCII_SPACE 32#define ASCII_COMA 44#define ASCII_IGUAL 61#define ASCII_MENOR 60#define ASCII_MAYOR 62#define ASCII_PARENT_IZQ 40#define ASCII_PARENT_DER 41#define ASCII_COMILLA 34#define ASCII_PORCENTAJE 37#define ASCII_COMITA_SIMPLE 39#define ASCII_SIGNO_MAS 43#define ASCII_ASTERISCO 42

Page 10: Orastat line command

#define ASCII_SIGNO_MENOS 45#define ASCII_PUNTO_Y_COMA 59#define ASCII_DOS_PUNTOS 58#define ASCII_ENTER 13#define ASCII_RETURN 10

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

#define USERNAME 1#define PASSWORD 2#define CONEXION 3

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: CONSTANT_ORACLE_VERSIONS.h ****** ****** ****************************************************** ************************************************************************* **********************

Page 11: Orastat line command

*************************************************** ************************************************************************* ************************************************************************* ************************* ****** ***/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

#define VERSION_ORACLE_734 734#define VERSION_ORACLE_816 816#define VERSION_ORACLE_817 817#define VERSION_ORACLE_901 901#define VERSION_ORACLE_902 902#define VERSION_ORACLE_910 910#define VERSION_ORACLE_920 920#define VERSION_ORACLE_1000 1000#define VERSION_ORACLE_UNK 000--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: decode_command_oracle.c ****** ****** ****************************************************** **********************

Page 12: Orastat line command

*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***#include <stdio.h>#include <stdlib.h>#include <string.h>

extern vaciar_cadena ();

char *decode_command_oracle (int nro_decodificar){static char dato_1[64];

vaciar_cadena (dato_1,64);switch (nro_decodificar)

{case 0: strcpy (dato_1,"BACKGROUND"); break;case 1: strcpy (dato_1,"CREATE TABLE"); break;case 2: strcpy (dato_1,"INSERT"); break;case 3: strcpy (dato_1,"SELECT"); break;case 4: strcpy (dato_1,"CREATE CLUSTER"); break;case 5: strcpy (dato_1,"ALTER CLUSTER"); break;case 6: strcpy (dato_1,"UPDATE"); break;case 7: strcpy (dato_1,"DELETE"); break;case 8: strcpy (dato_1,"DROP"); break;case 9: strcpy (dato_1,"CREATE INDEX"); break;case 10: strcpy (dato_1,"DROP INDEX"); break;case 11: strcpy (dato_1,"ALTER INDEX"); break;case 12: strcpy (dato_1,"DROP TABLE"); break;case 13: strcpy (dato_1,"CREATE SEQUENCE"); break;case 14: strcpy (dato_1,"ALTER SEQUENCE"); break;case 15: strcpy (dato_1,"ALTER TABLE"); break;case 16: strcpy (dato_1,"DROP SEQUENCE"); break;case 17: strcpy (dato_1,"GRANT"); break;case 18: strcpy (dato_1,"REVOKE"); break;case 19: strcpy (dato_1,"CREATE SYNONYM"); break;case 20: strcpy (dato_1,"DROP SYNONYM"); break;

Page 13: Orastat line command

case 21: strcpy (dato_1,"CREATE VIEW"); break;case 22: strcpy (dato_1,"DROP VIEW"); break;case 23: strcpy (dato_1,"VALIDATE INDEX"); break;case 24: strcpy (dato_1,"CREATE PROCEDURE"); break;case 25: strcpy (dato_1,"ALTER PROCEDURE"); break;case 26: strcpy (dato_1,"LOCK TABLE"); break;case 27: strcpy (dato_1,"NO OPERATION"); break;case 28: strcpy (dato_1,"RENAME"); break;case 29: strcpy (dato_1,"COMMENT"); break;case 30: strcpy (dato_1,"AUDIT"); break;case 31: strcpy (dato_1,"NOAUDIT"); break;case 32: strcpy (dato_1,"CREATE EXTERNAL DATABASE") ; break;case 33: strcpy (dato_1,"DROP EXTERNAL DATABASE"); break;case 34: strcpy (dato_1,"CREATE DATABASE"); break;case 35: strcpy (dato_1,"ALTER DATABASE"); break;case 36: strcpy (dato_1,"CREATE ROLLBACK SEGMENT"); break;case 37: strcpy (dato_1,"ALTER ROLLBACK SEGMENT"); break;case 38: strcpy (dato_1,"DROP ROLLBACK SEGMENT"); b reak;case 39: strcpy (dato_1,"CREATE TABLESPACE"); break ;case 40: strcpy (dato_1,"ALTER TABLESPACE"); break;case 41: strcpy (dato_1,"DROP TABLESPACE"); break;case 42: strcpy (dato_1,"ALTER SESSION"); break;case 43: strcpy (dato_1,"ALTER USER"); break;case 44: strcpy (dato_1,"COMMIT"); break;case 45: strcpy (dato_1,"ROLLBACK"); break;case 46: strcpy (dato_1,"SAVEPOINT"); break;case 47: strcpy (dato_1,"PL/SQL EXECUTE"); break;case 48: strcpy (dato_1,"SET TRANSACTION"); break;case 49: strcpy (dato_1,"ALTER SYSTEM SWITCH LOG"); break;case 50: strcpy (dato_1,"EXPLAIN"); break;case 51: strcpy (dato_1,"CREATE USER"); break;case 52: strcpy (dato_1,"CREATE ROLE"); break;case 53: strcpy (dato_1,"DROP USER"); break;case 54: strcpy (dato_1,"DROP ROLE"); break;case 55: strcpy (dato_1,"SET ROLE"); break;case 56: strcpy (dato_1,"CREATE SCHEMA"); break;case 57: strcpy (dato_1,"CREATE CONTROL FILE"); bre ak;case 58: strcpy (dato_1,"ALTER TRACING"); break;case 59: strcpy (dato_1,"CREATE TRIGGER"); break;case 60: strcpy (dato_1,"ALTER TRIGGER"); break;

Page 14: Orastat line command

case 61: strcpy (dato_1,"DROP TRIGGER"); break;case 62: strcpy (dato_1,"ANALYZE TABLE"); break;case 63: strcpy (dato_1,"ANALYZE INDEX"); break;case 64: strcpy (dato_1,"ANALYZE CLUSTER"); break;case 65: strcpy (dato_1,"CREATE PROFILE"); break;case 66: strcpy (dato_1,"DROP PROFILE"); break;case 67: strcpy (dato_1,"ALTER PROFILE"); break;case 68: strcpy (dato_1,"DROP PROCEDURE"); break;case 69: strcpy (dato_1,"DROP PROCEDURE"); break;case 70: strcpy (dato_1,"ALTER RESOURCE COST"); bre ak;case 71: strcpy (dato_1,"CREATE SNAPSHOT LOG"); bre ak;case 72: strcpy (dato_1,"ALTER SNAPSHOT LOG"); brea k;case 73: strcpy (dato_1,"DROP SNAPSHOT LOG"); break ;case 74: strcpy (dato_1,"CREATE SNAPSHOT"); break;case 75: strcpy (dato_1,"ALTER SNAPSHOT"); break;case 76: strcpy (dato_1,"DROP SNAPSHOT"); break;case 79: strcpy (dato_1,"ALTER ROLE"); break;case 85: strcpy (dato_1,"TRUNCATE TABLE"); break;case 86: strcpy (dato_1,"TRUNCATE CLUSTER"); break;case 88: strcpy (dato_1,"ALTER VIEW"); break;case 91: strcpy (dato_1,"CREATE FUNCTION"); break;case 92: strcpy (dato_1,"ALTER FUNCTION"); break;case 93: strcpy (dato_1,"DROP FUNCTION"); break;case 94: strcpy (dato_1,"CREATE PACKAGE"); break;case 95: strcpy (dato_1,"ALTER PACKAGE"); break;case 96: strcpy (dato_1,"DROP PACKAGE"); break;case 97: strcpy (dato_1,"CREATE PACKAGE BODY"); bre ak;case 98: strcpy (dato_1,"ALTER PACKAGE BODY"); brea k;case 99: strcpy (dato_1,"DROP PACKAGE BODY"); break ;default: strcpy (dato_1,"-"); break;

}return dato_1;}

--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ---

Page 15: Orastat line command

--- ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: decode_lock_mode.c ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***#include <stdio.h>#include <stdlib.h>#include <string.h>

extern vaciar_cadena ();

char *decode_lock_mode (int nro_decodificar){static char dato_1[64];

vaciar_cadena (dato_1,64);switch (nro_decodificar)

{case 1: strcpy (dato_1,"No Lock"); break; case 2: strcpy (dato_1,"Row Share"); break; case 3: strcpy (dato_1,"Row Exclusive"); break; case 4: strcpy (dato_1,"Share"); break; case 5: strcpy (dato_1,"Share Row Exclusive"); bre ak;case 6: strcpy (dato_1,"Exclusive"); break;

Page 16: Orastat line command

default: strcpy (dato_1,"NONE"); break;}

return dato_1;}--- ---

--- ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: decode_name_lock.c ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***#include <stdio.h>#include <stdlib.h>#include <string.h>

extern vaciar_cadena ();

extern char *decode_name_lock (char *cad_decodifica r){static char dato_1[256];

Page 17: Orastat line command

vaciar_cadena (dato_1,256);

if ( strncmp (cad_decodificar,"BL",2) == 0) strcpy (dato_1,"Buffer hash table instance lock"); elseif ( strncmp (cad_decodificar,"CF",2) == 0) strcpy (dato_1," Control file schema global enqueue lock") ; elseif ( strncmp (cad_decodificar,"CI",2) == 0) strcpy (dato_1,"Cross-instance function invocation instanc e lock"); elseif ( strncmp (cad_decodificar,"CS",2) == 0) strcpy (dato_1,"Control file schema global enqueue lock"); elseif ( strncmp (cad_decodificar,"CU",2) == 0) strcpy (dato_1,"Cursor bind lock"); elseif ( strncmp (cad_decodificar,"DF",2) == 0) strcpy (dato_1,"Data file instance lock"); elseif ( strncmp (cad_decodificar,"DL",2) == 0) strcpy (dato_1,"Direct loader parallel index create"); els eif ( strncmp (cad_decodificar,"DM",2) == 0) strcpy (dato_1,"Mount/startup db primary/secondary instanc e lock"); elseif ( strncmp (cad_decodificar,"DR",2) == 0) strcpy (dato_1,"Distributed recovery process lock"); elseif ( strncmp (cad_decodificar,"DX",2) == 0) strcpy (dato_1,"Distributed transaction entry lock"); elseif ( strncmp (cad_decodificar,"FI",2) == 0) strcpy (dato_1,"SGA open-file information lock"); elseif ( strncmp (cad_decodificar,"FS",2) == 0) strcpy (dato_1,"File set lock"); elseif ( strncmp (cad_decodificar,"HW",2) == 0) strcpy (dato_1,"Space management operations on a specific segment lock"); elseif ( strncmp (cad_decodificar,"IN",2) == 0) strcpy (dato_1,"Instance number lock"); elseif ( strncmp (cad_decodificar,"IR",2) == 0) strcpy (dato_1,"Instance recovery serialization global enq ueue lock"); elseif ( strncmp (cad_decodificar,"IS",2) == 0) strcpy (dato_1,"Instance state lock"); elseif ( strncmp (cad_decodificar,"IV",2) == 0) strcpy (dato_1,"Library cache invalidation instance lock") ; elseif ( strncmp (cad_decodificar,"JQ",2) == 0) strcpy (dato_1,"Job queue lock"); elseif ( strncmp (cad_decodificar,"KK",2) == 0) strcpy (dato_1,"Thread kick lock"); elseif ( strncmp (cad_decodificar,"MB",2) == 0) strcpy (dato_1,"Master buffer hash table instance lock"); elseif ( strncmp (cad_decodificar,"MM",2) == 0) strcpy (dato_1,"Mount definition gloabal enqueue lock"); e lseif ( strncmp (cad_decodificar,"MR",2) == 0) strcpy (dato_1,"Media recovery lock"); elseif ( strncmp (cad_decodificar,"PF",2) == 0) strcpy (dato_1,"Password file lock"); elseif ( strncmp (cad_decodificar,"PI",2) == 0) strcpy (dato_1,"Parallel operation lock"); elseif ( strncmp (cad_decodificar,"PR",2) == 0) strcpy (dato_1,"Process startup lock"); elseif ( strncmp (cad_decodificar,"PS",2) == 0) strcpy (dato_1,"Parallel operation lock"); elseif ( strncmp (cad_decodificar,"RE",2) == 0) strcpy (dato_1,"USE_ROW_ENQUEUE enforcement lock"); elseif ( strncmp (cad_decodificar,"RT",2) == 0) strcpy (dato_1,"Redo thread global enqueue lock"); elseif ( strncmp (cad_decodificar,"RW",2) == 0) strcpy (dato_1,"Row wait enqueue lock"); elseif ( strncmp (cad_decodificar,"SC",2) == 0) strcpy (dato_1,"System commit number instance lock"); elseif ( strncmp (cad_decodificar,"SH",2) == 0) strcpy (dato_1,"System commit number high water mark enque ue lock"); elseif ( strncmp (cad_decodificar,"SM",2) == 0) strcpy (dato_1,"SMON lock"); elseif ( strncmp (cad_decodificar,"SN",2) == 0) strcpy (dato_1,"Sequence number instance lock"); elseif ( strncmp (cad_decodificar,"SQ",2) == 0) strcpy (dato_1,"Sequence number enqueue lock"); elseif ( strncmp (cad_decodificar,"SS",2) == 0) strcpy (dato_1,"Sort segment lock"); elseif ( strncmp (cad_decodificar,"ST",2) == 0) strcpy (dato_1,"Space transaction enqueue lock"); elseif ( strncmp (cad_decodificar,"SV",2) == 0) strcpy (dato_1,"Sequence number value lock"); else

Page 18: Orastat line command

if ( strncmp (cad_decodificar,"TA",2) == 0) strcpy (dato_1,"Generic enqueue lock"); elseif ( strncmp (cad_decodificar,"TD",2) == 0) strcpy (dato_1,"DDL enqueue lock"); elseif ( strncmp (cad_decodificar,"TE",2) == 0) strcpy (dato_1,"Extend-segment enqueue lock"); elseif ( strncmp (cad_decodificar,"TM",2) == 0) strcpy (dato_1,"DML enqueue lock"); elseif ( strncmp (cad_decodificar,"TT",2) == 0) strcpy (dato_1,"Temporary table enqueue lock"); elseif ( strncmp (cad_decodificar,"TX",2) == 0) strcpy (dato_1,"Transaction enqueue lock"); elseif ( strncmp (cad_decodificar,"UL",2) == 0) strcpy (dato_1,"User supplied lock"); elseif ( strncmp (cad_decodificar,"UN",2) == 0) strcpy (dato_1,"User name lock"); elseif ( strncmp (cad_decodificar,"US",2) == 0) strcpy (dato_1,"Undo segment DDL lock"); elseif ( strncmp (cad_decodificar,"WL",2) == 0) strcpy (dato_1,"Being-written redo log instance lock"); el seif ( strncmp (cad_decodificar,"WS",2) == 0) strcpy (dato_1,"Write-atomic-log-switch global enqueue loc k"); elseif ( strncmp (cad_decodificar,"TS",2) == 0) strcpy (dato_1,"Temporary segment enqueue lock (ID2=0) New block allocation enqueue lock

(ID2=1)"); elseif ( strncmp (cad_decodificar,"LA",2) == 0) strcpy (dato_1,"Library cache lock instance lock (A=namesp ace)"); elseif ( strncmp (cad_decodificar,"LB",2) == 0) strcpy (dato_1,"Library cache lock instance lock (B=namesp ace)"); elseif ( strncmp (cad_decodificar,"LC",2) == 0) strcpy (dato_1,"Library cache lock instance lock (C=namesp ace)"); elseif ( strncmp (cad_decodificar,"LD",2) == 0) strcpy (dato_1,"Library cache lock instance lock (D=namesp ace)"); elseif ( strncmp (cad_decodificar,"LE",2) == 0) strcpy (dato_1,"Library cache lock instance lock (E=namesp ace)"); elseif ( strncmp (cad_decodificar,"LF",2) == 0) strcpy (dato_1,"Library cache lock instance lock (F=namesp ace)"); elseif ( strncmp (cad_decodificar,"LG",2) == 0) strcpy (dato_1,"Library cache lock instance lock (G=namesp ace)"); elseif ( strncmp (cad_decodificar,"LH",2) == 0) strcpy (dato_1,"Library cache lock instance lock (H=namesp ace)"); elseif ( strncmp (cad_decodificar,"LI",2) == 0) strcpy (dato_1,"Library cache lock instance lock (I=namesp ace)"); elseif ( strncmp (cad_decodificar,"LJ",2) == 0) strcpy (dato_1,"Library cache lock instance lock (J=namesp ace)"); elseif ( strncmp (cad_decodificar,"LK",2) == 0) strcpy (dato_1,"Library cache lock instance lock (K=namesp ace)"); elseif ( strncmp (cad_decodificar,"LL",2) == 0) strcpy (dato_1,"Library cache lock instance lock (L=namesp ace)"); elseif ( strncmp (cad_decodificar,"LM",2) == 0) strcpy (dato_1,"Library cache lock instance lock (M=namesp ace)"); elseif ( strncmp (cad_decodificar,"LN",2) == 0) strcpy (dato_1,"Library cache lock instance lock (N=namesp ace)"); elseif ( strncmp (cad_decodificar,"LO",2) == 0) strcpy (dato_1,"Library cache lock instance lock (O=namesp ace)"); elseif ( strncmp (cad_decodificar,"LP",2) == 0) strcpy (dato_1,"Library cache lock instance lock (P=namesp ace)"); elseif ( strncmp (cad_decodificar,"LS",2) == 0) strcpy (dato_1,"Log start/log switch enqueue lock"); elseif ( strncmp (cad_decodificar,"PA",2) == 0) strcpy (dato_1,"Library cache pin instance lock (A=namespa ce)"); elseif ( strncmp (cad_decodificar,"PB",2) == 0) strcpy (dato_1,"Library cache pin instance lock (B=namespa ce)"); elseif ( strncmp (cad_decodificar,"PC",2) == 0) strcpy (dato_1,"Library cache pin instance lock (C=namespa ce)"); elseif ( strncmp (cad_decodificar,"PD",2) == 0) strcpy (dato_1,"Library cache pin instance lock (D=namespa ce)"); elseif ( strncmp (cad_decodificar,"PE",2) == 0) strcpy (dato_1,"Library cache pin instance lock (E=namespa ce)"); elseif ( strncmp (cad_decodificar,"PF",2) == 0) strcpy (dato_1,"Library cache pin instance lock (F=namespa ce)"); elseif ( strncmp (cad_decodificar,"PG",2) == 0) strcpy (dato_1,"Library cache pin instance lock (G=namespa ce)"); elseif ( strncmp (cad_decodificar,"PH",2) == 0) strcpy (dato_1,"Library cache pin instance lock (H=namespa ce)"); elseif ( strncmp (cad_decodificar,"PI",2) == 0) strcpy (dato_1,"Library cache pin instance lock (I=namespa ce)"); elseif ( strncmp (cad_decodificar,"PJ",2) == 0) strcpy (dato_1,"Library cache pin instance lock (J=namespa ce)"); else

Page 19: Orastat line command

if ( strncmp (cad_decodificar,"PL",2) == 0) strcpy (dato_1,"Library cache pin instance lock (K=namespa ce)"); elseif ( strncmp (cad_decodificar,"PK",2) == 0) strcpy (dato_1,"Library cache pin instance lock (L=namespa ce)"); elseif ( strncmp (cad_decodificar,"PM",2) == 0) strcpy (dato_1,"Library cache pin instance lock (M=namespa ce)"); elseif ( strncmp (cad_decodificar,"PN",2) == 0) strcpy (dato_1,"Library cache pin instance lock (N=namespa ce)"); elseif ( strncmp (cad_decodificar,"PO",2) == 0) strcpy (dato_1,"Library cache pin instance lock (O=namespa ce)"); elseif ( strncmp (cad_decodificar,"PP",2) == 0) strcpy (dato_1,"Library cache pin instance lock (P=namespa ce)"); elseif ( strncmp (cad_decodificar,"PQ",2) == 0) strcpy (dato_1,"Library cache pin instance lock (Q=namespa ce)"); elseif ( strncmp (cad_decodificar,"PR",2) == 0) strcpy (dato_1,"Library cache pin instance lock (R=namespa ce)"); elseif ( strncmp (cad_decodificar,"PS",2) == 0) strcpy (dato_1,"Library cache pin instance lock (S=namespa ce)"); elseif ( strncmp (cad_decodificar,"PT",2) == 0) strcpy (dato_1,"Library cache pin instance lock (T=namespa ce)"); elseif ( strncmp (cad_decodificar,"PU",2) == 0) strcpy (dato_1,"Library cache pin instance lock (U=namespa ce)"); elseif ( strncmp (cad_decodificar,"PV",2) == 0) strcpy (dato_1,"Library cache pin instance lock (V=namespa ce)"); elseif ( strncmp (cad_decodificar,"PW",2) == 0) strcpy (dato_1,"Library cache pin instance lock (W=namespa ce)"); elseif ( strncmp (cad_decodificar,"PX",2) == 0) strcpy (dato_1,"Library cache pin instance lock (X=namespa ce)"); elseif ( strncmp (cad_decodificar,"PY",2) == 0) strcpy (dato_1,"Library cache pin instance lock (Y=namespa ce)"); elseif ( strncmp (cad_decodificar,"PZ",2) == 0) strcpy (dato_1,"Library cache pin instance lock (Z=namespa ce)"); elseif ( strncmp (cad_decodificar,"QA",2) == 0) strcpy (dato_1,"Row cache instance lock (A=cache)"); elseif ( strncmp (cad_decodificar,"QB",2) == 0) strcpy (dato_1,"Row cache instance lock (B=cache)"); elseif ( strncmp (cad_decodificar,"QC",2) == 0) strcpy (dato_1,"Row cache instance lock (C=cache)"); elseif ( strncmp (cad_decodificar,"QD",2) == 0) strcpy (dato_1,"Row cache instance lock (D=cache)"); elseif ( strncmp (cad_decodificar,"QE",2) == 0) strcpy (dato_1,"Row cache instance lock (E=cache)"); elseif ( strncmp (cad_decodificar,"QF",2) == 0) strcpy (dato_1,"Row cache instance lock (F=cache)"); elseif ( strncmp (cad_decodificar,"QG",2) == 0) strcpy (dato_1,"Row cache instance lock (G=cache)"); elseif ( strncmp (cad_decodificar,"QH",2) == 0) strcpy (dato_1,"Row cache instance lock (H=cache)"); elseif ( strncmp (cad_decodificar,"QI",2) == 0) strcpy (dato_1,"Row cache instance lock (I=cache)"); elseif ( strncmp (cad_decodificar,"QJ",2) == 0) strcpy (dato_1,"Row cache instance lock (J=cache)"); elseif ( strncmp (cad_decodificar,"QL",2) == 0) strcpy (dato_1,"Row cache instance lock (K=cache)"); elseif ( strncmp (cad_decodificar,"QK",2) == 0) strcpy (dato_1,"Row cache instance lock (L=cache)"); elseif ( strncmp (cad_decodificar,"QM",2) == 0) strcpy (dato_1,"Row cache instance lock (M=cache)"); elseif ( strncmp (cad_decodificar,"QN",2) == 0) strcpy (dato_1,"Row cache instance lock (N=cache)"); elseif ( strncmp (cad_decodificar,"QO",2) == 0) strcpy (dato_1,"Row cache instance lock (O=cache)"); elseif ( strncmp (cad_decodificar,"QP",2) == 0) strcpy (dato_1,"Row cache instance lock (P=cache)"); elseif ( strncmp (cad_decodificar,"QQ",2) == 0) strcpy (dato_1,"Row cache instance lock (Q=cache)"); elseif ( strncmp (cad_decodificar,"QR",2) == 0) strcpy (dato_1,"Row cache instance lock (R=cache)"); elseif ( strncmp (cad_decodificar,"QS",2) == 0) strcpy (dato_1,"Row cache instance lock (S=cache)"); elseif ( strncmp (cad_decodificar,"QT",2) == 0) strcpy (dato_1,"Row cache instance lock (T=cache)"); elseif ( strncmp (cad_decodificar,"QU",2) == 0) strcpy (dato_1,"Row cache instance lock (U=cache)"); elseif ( strncmp (cad_decodificar,"QV",2) == 0) strcpy (dato_1,"Row cache instance lock (V=cache)"); elseif ( strncmp (cad_decodificar,"QW",2) == 0) strcpy (dato_1,"Row cache instance lock (W=cache)"); elseif ( strncmp (cad_decodificar,"QX",2) == 0) strcpy (dato_1,"Row cache instance lock (X=cache)"); else

Page 20: Orastat line command

if ( strncmp (cad_decodificar,"QY",2) == 0) strcpy (dato_1,"Row cache instance lock (Y=cache)"); elseif ( strncmp (cad_decodificar,"QZ",2) == 0) strcpy (dato_1,"Row cache instance lock (Z=cache)");

return (dato_1);}

--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: decode_name_mode.c ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***#include <stdio.h>#include <stdlib.h>#include <string.h>

extern char *decode_name_lock (char *cad_decodifica r){static char dato_1[256];

Page 21: Orastat line command

vaciar_cadena (dato_1,256);

if ( strncmp (cad_decodificar,"BL",2) == 0) strcpy (dato_1,"Buffer hash table instance lock"); elseif ( strncmp (cad_decodificar,"CF",2) == 0) strcpy (dato_1," Control file schema global enqueue lock") ; elseif ( strncmp (cad_decodificar,"CI",2) == 0) strcpy (dato_1,"Cross-instance function invocation instanc e lock"); elseif ( strncmp (cad_decodificar,"CS",2) == 0) strcpy (dato_1,"Control file schema global enqueue lock"); elseif ( strncmp (cad_decodificar,"CU",2) == 0) strcpy (dato_1,"Cursor bind lock"); elseif ( strncmp (cad_decodificar,"DF",2) == 0) strcpy (dato_1,"Data file instance lock"); elseif ( strncmp (cad_decodificar,"DL",2) == 0) strcpy (dato_1,"Direct loader parallel index create"); els eif ( strncmp (cad_decodificar,"DM",2) == 0) strcpy (dato_1,"Mount/startup db primary/secondary instanc e lock"); elseif ( strncmp (cad_decodificar,"DR",2) == 0) strcpy (dato_1,"Distributed recovery process lock"); elseif ( strncmp (cad_decodificar,"DX",2) == 0) strcpy (dato_1,"Distributed transaction entry lock"); elseif ( strncmp (cad_decodificar,"FI",2) == 0) strcpy (dato_1,"SGA open-file information lock"); elseif ( strncmp (cad_decodificar,"FS",2) == 0) strcpy (dato_1,"File set lock"); elseif ( strncmp (cad_decodificar,"HW",2) == 0) strcpy (dato_1,"Space management operations on a specific segment lock"); elseif ( strncmp (cad_decodificar,"IN",2) == 0) strcpy (dato_1,"Instance number lock"); elseif ( strncmp (cad_decodificar,"IR",2) == 0) strcpy (dato_1,"Instance recovery serialization global enq ueue lock"); elseif ( strncmp (cad_decodificar,"IS",2) == 0) strcpy (dato_1,"Instance state lock"); elseif ( strncmp (cad_decodificar,"IV",2) == 0) strcpy (dato_1,"Library cache invalidation instance lock") ; elseif ( strncmp (cad_decodificar,"JQ",2) == 0) strcpy (dato_1,"Job queue lock"); elseif ( strncmp (cad_decodificar,"KK",2) == 0) strcpy (dato_1,"Thread kick lock"); elseif ( strncmp (cad_decodificar,"MB",2) == 0) strcpy (dato_1,"Master buffer hash table instance lock"); elseif ( strncmp (cad_decodificar,"MM",2) == 0) strcpy (dato_1,"Mount definition gloabal enqueue lock"); e lseif ( strncmp (cad_decodificar,"MR",2) == 0) strcpy (dato_1,"Media recovery lock"); elseif ( strncmp (cad_decodificar,"PF",2) == 0) strcpy (dato_1,"Password file lock"); elseif ( strncmp (cad_decodificar,"PI",2) == 0) strcpy (dato_1,"Parallel operation lock"); elseif ( strncmp (cad_decodificar,"PR",2) == 0) strcpy (dato_1,"Process startup lock"); elseif ( strncmp (cad_decodificar,"PS",2) == 0) strcpy (dato_1,"Parallel operation lock"); elseif ( strncmp (cad_decodificar,"RE",2) == 0) strcpy (dato_1,"USE_ROW_ENQUEUE enforcement lock"); elseif ( strncmp (cad_decodificar,"RT",2) == 0) strcpy (dato_1,"Redo thread global enqueue lock"); elseif ( strncmp (cad_decodificar,"RW",2) == 0) strcpy (dato_1,"Row wait enqueue lock"); elseif ( strncmp (cad_decodificar,"SC",2) == 0) strcpy (dato_1,"System commit number instance lock"); elseif ( strncmp (cad_decodificar,"SH",2) == 0) strcpy (dato_1,"System commit number high water mark enque ue lock"); elseif ( strncmp (cad_decodificar,"SM",2) == 0) strcpy (dato_1,"SMON lock"); elseif ( strncmp (cad_decodificar,"SN",2) == 0) strcpy (dato_1,"Sequence number instance lock"); elseif ( strncmp (cad_decodificar,"SQ",2) == 0) strcpy (dato_1,"Sequence number enqueue lock"); elseif ( strncmp (cad_decodificar,"SS",2) == 0) strcpy (dato_1,"Sort segment lock"); elseif ( strncmp (cad_decodificar,"ST",2) == 0) strcpy (dato_1,"Space transaction enqueue lock"); elseif ( strncmp (cad_decodificar,"SV",2) == 0) strcpy (dato_1,"Sequence number value lock"); elseif ( strncmp (cad_decodificar,"TA",2) == 0) strcpy (dato_1,"Generic enqueue lock"); else

Page 22: Orastat line command

if ( strncmp (cad_decodificar,"TD",2) == 0) strcpy (dato_1,"DDL enqueue lock"); elseif ( strncmp (cad_decodificar,"TE",2) == 0) strcpy (dato_1,"Extend-segment enqueue lock"); elseif ( strncmp (cad_decodificar,"TM",2) == 0) strcpy (dato_1,"DML enqueue lock"); elseif ( strncmp (cad_decodificar,"TT",2) == 0) strcpy (dato_1,"Temporary table enqueue lock"); elseif ( strncmp (cad_decodificar,"TX",2) == 0) strcpy (dato_1,"Transaction enqueue lock"); elseif ( strncmp (cad_decodificar,"UL",2) == 0) strcpy (dato_1,"User supplied lock"); elseif ( strncmp (cad_decodificar,"UN",2) == 0) strcpy (dato_1,"User name lock"); elseif ( strncmp (cad_decodificar,"US",2) == 0) strcpy (dato_1,"Undo segment DDL lock"); elseif ( strncmp (cad_decodificar,"WL",2) == 0) strcpy (dato_1,"Being-written redo log instance lock"); el seif ( strncmp (cad_decodificar,"WS",2) == 0) strcpy (dato_1,"Write-atomic-log-switch global enqueue loc k"); elseif ( strncmp (cad_decodificar,"TS",2) == 0) strcpy (dato_1,"Temporary segment enqueue lock (ID2=0) New block allocation enqueue lock

(ID2=1)"); elseif ( strncmp (cad_decodificar,"LA",2) == 0) strcpy (dato_1,"Library cache lock instance lock (A=namesp ace)"); elseif ( strncmp (cad_decodificar,"LB",2) == 0) strcpy (dato_1,"Library cache lock instance lock (B=namesp ace)"); elseif ( strncmp (cad_decodificar,"LC",2) == 0) strcpy (dato_1,"Library cache lock instance lock (C=namesp ace)"); elseif ( strncmp (cad_decodificar,"LD",2) == 0) strcpy (dato_1,"Library cache lock instance lock (D=namesp ace)"); elseif ( strncmp (cad_decodificar,"LE",2) == 0) strcpy (dato_1,"Library cache lock instance lock (E=namesp ace)"); elseif ( strncmp (cad_decodificar,"LF",2) == 0) strcpy (dato_1,"Library cache lock instance lock (F=namesp ace)"); elseif ( strncmp (cad_decodificar,"LG",2) == 0) strcpy (dato_1,"Library cache lock instance lock (G=namesp ace)"); elseif ( strncmp (cad_decodificar,"LH",2) == 0) strcpy (dato_1,"Library cache lock instance lock (H=namesp ace)"); elseif ( strncmp (cad_decodificar,"LI",2) == 0) strcpy (dato_1,"Library cache lock instance lock (I=namesp ace)"); elseif ( strncmp (cad_decodificar,"LJ",2) == 0) strcpy (dato_1,"Library cache lock instance lock (J=namesp ace)"); elseif ( strncmp (cad_decodificar,"LK",2) == 0) strcpy (dato_1,"Library cache lock instance lock (K=namesp ace)"); elseif ( strncmp (cad_decodificar,"LL",2) == 0) strcpy (dato_1,"Library cache lock instance lock (L=namesp ace)"); elseif ( strncmp (cad_decodificar,"LM",2) == 0) strcpy (dato_1,"Library cache lock instance lock (M=namesp ace)"); elseif ( strncmp (cad_decodificar,"LN",2) == 0) strcpy (dato_1,"Library cache lock instance lock (N=namesp ace)"); elseif ( strncmp (cad_decodificar,"LO",2) == 0) strcpy (dato_1,"Library cache lock instance lock (O=namesp ace)"); elseif ( strncmp (cad_decodificar,"LP",2) == 0) strcpy (dato_1,"Library cache lock instance lock (P=namesp ace)"); elseif ( strncmp (cad_decodificar,"LS",2) == 0) strcpy (dato_1,"Log start/log switch enqueue lock"); elseif ( strncmp (cad_decodificar,"PA",2) == 0) strcpy (dato_1,"Library cache pin instance lock (A=namespa ce)"); elseif ( strncmp (cad_decodificar,"PB",2) == 0) strcpy (dato_1,"Library cache pin instance lock (B=namespa ce)"); elseif ( strncmp (cad_decodificar,"PC",2) == 0) strcpy (dato_1,"Library cache pin instance lock (C=namespa ce)"); elseif ( strncmp (cad_decodificar,"PD",2) == 0) strcpy (dato_1,"Library cache pin instance lock (D=namespa ce)"); elseif ( strncmp (cad_decodificar,"PE",2) == 0) strcpy (dato_1,"Library cache pin instance lock (E=namespa ce)"); elseif ( strncmp (cad_decodificar,"PF",2) == 0) strcpy (dato_1,"Library cache pin instance lock (F=namespa ce)"); elseif ( strncmp (cad_decodificar,"PG",2) == 0) strcpy (dato_1,"Library cache pin instance lock (G=namespa ce)"); elseif ( strncmp (cad_decodificar,"PH",2) == 0) strcpy (dato_1,"Library cache pin instance lock (H=namespa ce)"); elseif ( strncmp (cad_decodificar,"PI",2) == 0) strcpy (dato_1,"Library cache pin instance lock (I=namespa ce)"); elseif ( strncmp (cad_decodificar,"PJ",2) == 0) strcpy (dato_1,"Library cache pin instance lock (J=namespa ce)"); elseif ( strncmp (cad_decodificar,"PL",2) == 0) strcpy (dato_1,"Library cache pin instance lock (K=namespa ce)"); else

Page 23: Orastat line command

if ( strncmp (cad_decodificar,"PK",2) == 0) strcpy (dato_1,"Library cache pin instance lock (L=namespa ce)"); elseif ( strncmp (cad_decodificar,"PM",2) == 0) strcpy (dato_1,"Library cache pin instance lock (M=namespa ce)"); elseif ( strncmp (cad_decodificar,"PN",2) == 0) strcpy (dato_1,"Library cache pin instance lock (N=namespa ce)"); elseif ( strncmp (cad_decodificar,"PO",2) == 0) strcpy (dato_1,"Library cache pin instance lock (O=namespa ce)"); elseif ( strncmp (cad_decodificar,"PP",2) == 0) strcpy (dato_1,"Library cache pin instance lock (P=namespa ce)"); elseif ( strncmp (cad_decodificar,"PQ",2) == 0) strcpy (dato_1,"Library cache pin instance lock (Q=namespa ce)"); elseif ( strncmp (cad_decodificar,"PR",2) == 0) strcpy (dato_1,"Library cache pin instance lock (R=namespa ce)"); elseif ( strncmp (cad_decodificar,"PS",2) == 0) strcpy (dato_1,"Library cache pin instance lock (S=namespa ce)"); elseif ( strncmp (cad_decodificar,"PT",2) == 0) strcpy (dato_1,"Library cache pin instance lock (T=namespa ce)"); elseif ( strncmp (cad_decodificar,"PU",2) == 0) strcpy (dato_1,"Library cache pin instance lock (U=namespa ce)"); elseif ( strncmp (cad_decodificar,"PV",2) == 0) strcpy (dato_1,"Library cache pin instance lock (V=namespa ce)"); elseif ( strncmp (cad_decodificar,"PW",2) == 0) strcpy (dato_1,"Library cache pin instance lock (W=namespa ce)"); elseif ( strncmp (cad_decodificar,"PX",2) == 0) strcpy (dato_1,"Library cache pin instance lock (X=namespa ce)"); elseif ( strncmp (cad_decodificar,"PY",2) == 0) strcpy (dato_1,"Library cache pin instance lock (Y=namespa ce)"); elseif ( strncmp (cad_decodificar,"PZ",2) == 0) strcpy (dato_1,"Library cache pin instance lock (Z=namespa ce)"); elseif ( strncmp (cad_decodificar,"QA",2) == 0) strcpy (dato_1,"Row cache instance lock (A=cache)"); elseif ( strncmp (cad_decodificar,"QB",2) == 0) strcpy (dato_1,"Row cache instance lock (B=cache)"); elseif ( strncmp (cad_decodificar,"QC",2) == 0) strcpy (dato_1,"Row cache instance lock (C=cache)"); elseif ( strncmp (cad_decodificar,"QD",2) == 0) strcpy (dato_1,"Row cache instance lock (D=cache)"); elseif ( strncmp (cad_decodificar,"QE",2) == 0) strcpy (dato_1,"Row cache instance lock (E=cache)"); elseif ( strncmp (cad_decodificar,"QF",2) == 0) strcpy (dato_1,"Row cache instance lock (F=cache)"); elseif ( strncmp (cad_decodificar,"QG",2) == 0) strcpy (dato_1,"Row cache instance lock (G=cache)"); elseif ( strncmp (cad_decodificar,"QH",2) == 0) strcpy (dato_1,"Row cache instance lock (H=cache)"); elseif ( strncmp (cad_decodificar,"QI",2) == 0) strcpy (dato_1,"Row cache instance lock (I=cache)"); elseif ( strncmp (cad_decodificar,"QJ",2) == 0) strcpy (dato_1,"Row cache instance lock (J=cache)"); elseif ( strncmp (cad_decodificar,"QL",2) == 0) strcpy (dato_1,"Row cache instance lock (K=cache)"); elseif ( strncmp (cad_decodificar,"QK",2) == 0) strcpy (dato_1,"Row cache instance lock (L=cache)"); elseif ( strncmp (cad_decodificar,"QM",2) == 0) strcpy (dato_1,"Row cache instance lock (M=cache)"); elseif ( strncmp (cad_decodificar,"QN",2) == 0) strcpy (dato_1,"Row cache instance lock (N=cache)"); elseif ( strncmp (cad_decodificar,"QO",2) == 0) strcpy (dato_1,"Row cache instance lock (O=cache)"); elseif ( strncmp (cad_decodificar,"QP",2) == 0) strcpy (dato_1,"Row cache instance lock (P=cache)"); elseif ( strncmp (cad_decodificar,"QQ",2) == 0) strcpy (dato_1,"Row cache instance lock (Q=cache)"); elseif ( strncmp (cad_decodificar,"QR",2) == 0) strcpy (dato_1,"Row cache instance lock (R=cache)"); elseif ( strncmp (cad_decodificar,"QS",2) == 0) strcpy (dato_1,"Row cache instance lock (S=cache)"); elseif ( strncmp (cad_decodificar,"QT",2) == 0) strcpy (dato_1,"Row cache instance lock (T=cache)"); elseif ( strncmp (cad_decodificar,"QU",2) == 0) strcpy (dato_1,"Row cache instance lock (U=cache)"); elseif ( strncmp (cad_decodificar,"QV",2) == 0) strcpy (dato_1,"Row cache instance lock (V=cache)"); elseif ( strncmp (cad_decodificar,"QW",2) == 0) strcpy (dato_1,"Row cache instance lock (W=cache)"); elseif ( strncmp (cad_decodificar,"QX",2) == 0) strcpy (dato_1,"Row cache instance lock (X=cache)"); elseif ( strncmp (cad_decodificar,"QY",2) == 0) strcpy (dato_1,"Row cache instance lock (Y=cache)"); else

Page 24: Orastat line command

if ( strncmp (cad_decodificar,"QZ",2) == 0) strcpy (dato_1,"Row cache instance lock (Z=cache)"); return (dato_1);}

--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: EXTERN_FUNCTIONS_FUNCIONES_AUXILIARE S.h ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

extern char *db_object_type ();extern char *db_object_owner_name ();extern char *db_session_sid_locked ();extern int db_tablspace_ini_ext_size ();

Page 25: Orastat line command

extern int db_block_size ();extern int version_oracle ();extern char *decode_command_oracle ();extern char *decode_lock_mode ();extern char *decode_name_lock ();

extern void esperar_seg();extern void sleep();--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: EXTERN_FUNCTIONS_ORASTAT_PRINCIPAL.h ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****---- FUNCIONES DECLARADAS EXTERN AS ****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

extern int col_size ();extern int filtrar_char ();

Page 26: Orastat line command

extern char *separar_dato ();extern int procesar_columna_funcion ();extern char *convert_ss_to_hh_mm_ss ();extern void vaciar_cadena ();extern void vaciar_estructura ();extern int procesar_encabe ();extern int procesar_cadena ();extern char *pasar_amayus ();extern char *funcion_columna ();extern char *decode_name_lock ();extern char *decode_command_oracle ();extern char *decode_lock_mode ();extern char *ver_menu_opcion();extern char *func_dyn_column_set ();extern char *func_dyn_title_set();extern char *func_dyn_size_set();extern char *func_dyn_statement_set();extern char *func_dyn_proc_func_set();extern char *formatear_sql_statement();extern int func_menu_mostrar();--- ---

--- ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: func_dyn_column_set.c ****** ****** ***

Page 27: Orastat line command

*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***#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();

char *func_dyn_column_set (int version, int sentenc ia){static char dyn_column [MAX_VAR_SIZE];

vaciar_cadena (dyn_column,MAX_VAR_SIZE );switch (sentencia)

{case CASE_ORACLE_VERSION:

strcpy (dyn_column,"|ORACLE_VERSION|");break;

case CASE_ACTIVE_PARAMETERS:strcpy (dyn_column,"|NOMBRE|VALOR|DESCRIPCION|");break;

case CASE_USERS_CONNECTED:strcpy (dyn_column,"|DIRECCION|SES|NOMBRE|CMD|ESTAD O|PID|TERMINAL|LOCKWAIT|INICIADO|");break;

case CASE_WAIT_STATISTICS:strcpy (dyn_column,"|CANTIDAD|TIEMPO|CLASE|");break;

case CASE_DATAFILE_I_0:switch (version)

{case VERSION_ORACLE_920:

Page 28: Orastat line command

strcpy (dyn_column,"|READPHY|READBLK|WRITPHY||WRITB LK|DATAFILE|IO_STAT|");break;

case VERSION_ORACLE_817:case VERSION_ORACLE_816:case VERSION_ORACLE_734:

strcpy (dyn_column,"|READPHY|READBLK|WRITPHY|WRITBL K|DATAFILE|");break;

default:break;

}break;

case CASE_DATAFILE_BLOCKS_R_W:strcpy (dyn_column,"|DATAFILE|BLKREAD|BLKWRITE|BLKT OT|");break;

case CASE_WAIT_EVENTS:strcpy (dyn_column,"|SID|USUARIO|CANTIDAD|EVENTO|") ;break;

case CASE_INSTANCE_STATUS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|INSTNRO|INSTNAME|HOSTNAME|VERSION|INI CIADO|ESTADO|PARALELO|DATAESTA|INSTROLE|ACTSTATUS|LOG_MODE|");

break;case VERSION_ORACLE_734:

strcpy (dyn_column,"|INSTNAME|CREADA|ARCHIVESTATUS| CHECK_CHANGE|ARCHI_CHANGE|DATASTATE|SHUTDOWN?|INICIADA|HORA|LOG_MODE|");

break;default:

break;}

break;case CASE_TEMPORAL_SPACE_BY_USER:

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

Page 29: Orastat line command

strcpy (dyn_column,"|SES|SERIAL|USER|EXTENTS|CONTEN TS|SIZEKB");break;

case VERSION_ORACLE_734:strcpy

(dyn_column,"|TBLSPACE|EXTSIZE|CURUSER|TOTEXT|TOTBL K|USEXT|USEBLK|FREEXT|FREEBLK|MUSESIZE|MUSEBLK|MSORTSIZE|MSORTBLK|");default:

break;}

break;case CASE_TOT_FREELIST_WAIT_PERCENT:

strcpy (dyn_column,"|PCTFREE|");break;

case CASE_LAST_CHECKPOINT_TIME:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|CHEKPOINT_VALUE|FECHA|");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|CHEKPOINT_VALUE|FECHA|");break;

default:break;

}break;

case CASE_LIST_TABLESPACES:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|TBLSPACE|CONTENT|AVAILA_KB|MAX _ID|USED_KB|FREE_KB|PCT_USED|STATUS|MANAGMENT|ALLOCTYPE|");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|TBLSPACE|CONTENT|AVAILA_KB|MAX _ID|USED_KB|FREE_KB|PCT_USED|STATUS|");break;

}break;

Page 30: Orastat line command

case CASE_ACTIVE_TRANSACTIONS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|ADDRESS|TIMESTART|ESTADO|BLK_U SED|KB_USED|USED_UREC|SESSION|SERIAL|NOMBRE|USUARIO|");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|ADDRESS|TIMESTART|ESTADO|BLK_U SED|KB_USED|USED_UREC|SESSION|SERIAL|NOMBRE|USUARIO|");

break;}

break;case CASE_LATCH_DETAILS:

strcpy (dyn_column,"|GETS|MISS|HITRATIO|IMM_GETS|IM M_MISS|SLEEP|GETSPIN|ADDRESS|LATCH|NOMBRE|");break;

case CASE_RESOURCE_LIMITS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|NOMBRE|INIT_ALLOC|CURR_UTILIZA |MAX_UTILIZA|LIMITE|");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|NOMBRE|LIMITE|");break;

}break;

case CASE_LIST_DATAFILES:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|DATAFILE|MBYTES|ESTADO|");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|DATAFILE|MBYTES|ESTADO|");break;

Page 31: Orastat line command

}break;

case CASE_LIST_DATAFILES_NEW_9I:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|ESTADO|DATAFILE|TBLSPACE|SIZE_ KB|USED_KB|USED_PCT|");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|ESTADO|DATAFILE|TBLSPACE|SIZE_ KB|USED_KB|USED_PCT|");break;

}break;

case CASE_LIST_TABLESPACES_NEW_9I:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|ESTADO|TBLSPACE|TIPO|EXTENT_MG M|SIZE_KB|USED_KB|USED_PCT|");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|ESTADO|TBLSPACE|TIPO|EXTENT_MG M|SIZE_KB|USED_KB|USED_PCT|");break;

}break;

case CASE_ACTIVE_SESSIONS:strcpy (dyn_column,"|SES|SERIAL|TIPO|OS_USER|LOGON| ESTADO|PROCESO|MAQUINA|NOMBRE|PID|PROGRAMA|");break;

case CASE_SESSIONS_WAITS:strcpy (dyn_column,"|SES|SEQ|W_T|S_W_T|USUARIO|ESTA DO|EVENT|STATE|P1TEXT|P1|P1RAW|P2TEXT|P2|P2RAW|P3TE XT|P3|P3RAW|");break;

case CASE_DEFAULT_STORAGE_SETS_TABLESPACE:strcpy (dyn_column,"|TBLSPACE|INI_EXT|NEX_EXT|MIN_E XT|MAX_EXT|PCT_INC|");break;

case CASE_ALL_TABLES_STORAGE_SETTINGS:switch (version)

{

Page 32: Orastat line command

case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|OWNER_TABLE|SEG_NAME|TBLSPACE| BLOCKS|SIZE_KB|EXTENTS|MAX_EXT|");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|OWNER_TABLE|SEG_NAME|TBLSPACE| BLOCKS|SIZE_KB|EXTENTS|MAX_EXT|");break;

}break;

case CASE_ALL_NON_SYS_TABLES_SETTINGS:strcpy (dyn_column,"|OWNER|TABLNAME|TBLSPACE|BLOCK| NROWS|BUFF_POOL|LAST_ANALIZE|SIZE_KB");break;

case CASE_ALL_NON_SYS_INDEXES_SETTINGS:strcpy (dyn_column,"|OWNER|INDEXNAME|TBLSPACE|LEAFB LK|NROROWS|BUFFPOOL|LASTANALIZ|SIZE_KB|");break;

case CASE_USER_DEFINED:printf ("Pasando Seteo Columna 24 \n");switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|USUARIO|ESTADO|EXPIRY DATE|DEF AULT TBLNAME|TEMP TBLNAME|PROFILE|CREATED|");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|USUARIO|ESTADO|EXPIRY DATE|DEF AULT TBLNAME|TEMP TBLNAME|PROFILE|CREATED|");break;

}break;

case CASE_LIST_DATAFILE_REDO_CONTROL_FILES:strcpy (dyn_column,"|FILENAME|TBLSPACE|ESTADO|");break;

case CASE_LIST_DATAFILES_USED_BLOCKS:strcpy (dyn_column,"|TBLSPACE|FILENAME|BYTES|HIGHWA TER|");break;

case CASE_LIST_SORT_BY_USER:strcpy (dyn_column,"|VALOR|TYPESORT|SID|OS_USER|DB_ USER|");break;

case CASE_LIST_LOCK_STATUS:

Page 33: Orastat line command

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|ADDRESS|KADDRESS|SES|TIPO|OBJ_ ID|ID2|LOCK TYP|REQU TYP|OBJECT TYPE|OWNER.NAME|LOCK_SID|TIME|");

break;case VERSION_ORACLE_734:

strcpy (dyn_column,"|ADDRESS|KADDRESS|SES|TIPO|OBJ_ ID|ID2|LOCK TYP|REQU TYP|OBJECT TYPE|OWNER.NAME|LOCK_SID|TIME|");

break;}

break;case CASE_LIST_USER_BY_CPU_USAGE:

strcpy (dyn_column,"|SES|SERIAL|TYPE|OSUSER|LOGON|P ROCESS|MACHINE|USER|VALUE|PROGRAM|");break;

case CASE_SQL_STATEMENT_BY_THIS_USER:strcpy (dyn_column,"|TEXT_SQL|");break;

case CASE_REDO_LOGS_STATUS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|GRUPO|THREAD|SEQUENCE|BYTES|ME MBER|ARCHIVED|ESTADO|FSTCHANGE|FSTTIME|");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|GRUPO|THREAD|SEQUENCE|BYTES|ME MBER|ARCHIVED|ESTADO|FSTCHANGE|FSTTIME|");break;

}break;

case CASE_ARCHIVED_LOGS_HISTORY:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|THREAD|SEQUEN|NAME|FSTCHANGE|F STTIME|BLOCKS|BLKSIZE|COMPTIME|");

Page 34: Orastat line command

break;case VERSION_ORACLE_734:

strcpy (dyn_column,"|THREAD|SEQUEN|TIME|LOW_CHANGE| HIGH_CHANGE|NAME");break;

}break;

case CASE_REDO_LOG_RECOVERY_REPORT:strcpy (dyn_column,"|GROUP|FSTCHANGE|MEMBER|SEQUENC E|");break;

case CASE_ARCHIVE_LOG_HISTROY:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|THREAD|SEQUENCE|FSTCHANGE|SWIC HANGE|FSTTIME|");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|THREAD|SEQUENCE|FSTCHANGE|SWIC HANGE|FSTTIME|");break;

}break;

case CASE_SESSION_LATCH_WAITS_SQL:strcpy (dyn_column,"|SES|USER|STATUS|SQLTEXT|");break;

case CASE_SESSION_PROGRAM_RUNNING_SQL:strcpy (dyn_column,"|SES|USER|PROGRAM|SQLTEXT|");break;

case CASE_PRIVILEGES_BY_USER:strcpy (dyn_column,"|GRANTEE|USER|PRIVILEGE|");break;

case CASE_DETAILED_LOCKING_CAUSES:strcpy (dyn_column,"|USERNAME|SID|TERMINAL|TAB|COMM AND|LMODE|REQUEST|LADDR|LOCKT|LOCKTYPE|");break;

case CASE_CURRENT_STATISTICS_VALUES:strcpy (dyn_column,"|STATISTIC|NOMBRE|VALOR|");break;

case CASE_TABLE_DESCRIPTION_USER_TABLENAME:switch (version)

{

Page 35: Orastat line command

case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|TBLSPACE|OWNER|TABLENAME|NROWS |LAST ANALIZED|INIEXT|NEXEXT|MINEXT|MAXEXT|PCTINC|BUFPOL| BLOCKS|FREELST|PCTFREE|INITRANS|MAXTRANS|FREEGRP");

break;case VERSION_ORACLE_734:

strcpy (dyn_column,"|TBLSPACE|OWNER|TABLENAME|NROWS |LAST ANALIZED|INIEXT|NEXEXT|MINEXT|MAXEXT|PCTINC|BUFPOL| BLOCKS|FREELST|PCTFREE|INITRANS|MAXTRANS|FREEGRP");

break;}

break;case CASE_INDEX_DESCRIPTION_USER_INDEXNAME:

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|OWNER|IDXNAME|TABLEOWNER|TABLENAME|TB LTYPE|UNIQUE|TBLSPACE|INITRA|MAXTRA|INIEXT|NEXEXT|M INEXT|MAXEXT|PCTINC|FREELIST|FRELISTGRP|PCTFREE|BLEVEL|LEAFBLK|");

break;case VERSION_ORACLE_734:

strcpy (dyn_column,"|OWNER|IDXNAME|TABLEOWNER|TABLENAME|TB LTYPE|UNIQUE|TBLSPACE|INITRA|MAXTRA|INIEXT|NEXEXT|M INEXT|MAXEXT|PCTINC|FREELIST|FRELISTGRP|PCTFREE|BLEVEL|LEAFBLK|");

break;}

break;case CASE_CURRENT_ACTIVITY_REPORT:

strcpy (dyn_column,"|DIRECCION|BUF_GETS|NRO_EXEC|AV G_EXEC|SQL_TEXT|");break;

case CASE_DICTIONARY_TABLE_COMMENTS:strcpy (dyn_column,"|TABLE NAME|COMMENTS|");break;

case CASE_DICTIONARY_TABLE_COLUMNS_DESCRIP:strcpy (dyn_column,"|TABNAME|COL_NAME|COMMENTS|SQL_ TYPE|IMAGEIDX|COL_ID|STATUS|");break;

case CASE_SGA_STATISTIC_GENERAL:strcpy

Page 36: Orastat line command

(dyn_column,"|NUM|VALUE|ISDEFAULT|ISMODIFIED|ISADJU STED|TYPE|ISSES_MODIFIABLE|ISSYS_MODIFIABLE|DESCRIP TION|UPDATE_COMMENT|");break;

case CASE_SGA_STATISTIC_MEMORY_USAGE:strcpy (dyn_column,"|POOL|NAME|KBYTES|USAGE_PCT|VAL UE|");break;

case CASE_SGA_STATISTIC_INFORMATION:strcpy (dyn_column,"|NAME|VALUE_KBYTE|");break;

case CASE_ROW_CACHE_INFORMATION:strcpy

(dyn_column,"CACHE#|SUBORDINATE#|PARAMETER|GETS|GET MISSES|GETMISSRATIO|SCANS|SCANMISSES|SCANCOMPLETES|SCANMISSRATIO|COUNT|USAGE|FIXED|FLUSHES|MODIFICATIONS|");

break;case CASE_PERFORMANCE_DISK_I_O:

strcpy (dyn_column,"|NAMES|READS|WRITES|WEIGHT|");break;

case CASE_RECURSIVE_CALLS:strcpy (dyn_column,"|NAME|VALUE|");break;

case CASE_SYSTEM_EVENTS:strcpy (dyn_column,"|EVENT|TOTAL_WAITS|TOTAL_TIMEOU TS|TIME_WAITED|AVERAGE_WAIT|");break;

/* ------------------------------------------------ -------------- *//*

#define CASE_SQL_AREA_ALL_ENTRIES 52*/

case CASE_SQL_AREA_ALL_ENTRIES:strcpy (dyn_column,"|AVGETS|SQLTEX|SHAMEM|PERMEM|RU NMEM|");strcat (dyn_column,"SORTS|VCO|VLO|VOP|UOP|EXECS|UEX EC|LOADS|");strcat (dyn_column,"FIRSTLOADTIME|INVAL|PARCALLS|DS KREADS|");strcat (dyn_column,"BUFGETS|SQLADDR|HASHVAL|SQLHVAL |");strcat (dyn_column,"ROWPROC|CMDTYPE|OPTMODE|PARUSER |");strcat (dyn_column,"PARSCHEM|KEPTVER|MOD|ACTION|SER ABEND|");break;/*

#define CASE_SQL_AREA_CPU_USAGE 53*/

case CASE_SQL_AREA_CPU_USAGE:strcpy (dyn_column,"|AVGETS|SQLTEX|SHAMEM|PERMEM|RU NMEM|");

Page 37: Orastat line command

strcat (dyn_column,"SORTS|VCO|VLO|VOP|UOP|EXECS|UEX EC|LOADS|");strcat (dyn_column,"FIRSTLOADTIME|INVAL|PARCALLS|DS KREADS|");strcat (dyn_column,"BUFGETS|SQLADDR|SQLHVAL|ROWPROC |");strcat (dyn_column,"CMDTYPE|OPTMODE|PARUSER|PARSCHE M|");strcat (dyn_column,"KEPTVER|MOD|ACTION|SERABEND|");break;/*

#define CASE_SQL_AREA_MEMORY_USAGE 54*/

case CASE_SQL_AREA_MEMORY_USAGE:strcpy (dyn_column,"|AVGETS|SHAMEM|PERMEM|RUNMEM|SO RTS|");strcat (dyn_column,"VCO|VLO|VOP|UOP|EXECS|UEXEC|LOA DS|INVAL|PARCALLS|");strcat (dyn_column,"DSKREADS|BUFGETS|ROWSPROC|KEPTV ER|");strcat (dyn_column,"SERABEND|");break;/*

#define CASE_SQL_AREA_BUFFER_GET_SUM 55*/

case CASE_SQL_AREA_BUFFER_GET_SUM:strcpy (dyn_column,"|AVGETS|SQLTEXT|SHAMEM|PERMEM|R UNMEM|");strcat (dyn_column,"SORTS|VCO|VLO|VOP|UOP|EXECS|UEX EC|LOADS|FIRSTLOADTIME|INVAL|");strcat (dyn_column,"PARCALLS|DSKREADS|BUFGETS|SQLAD DR|HASHVAL|");strcat (dyn_column,"SQLHVAL|ROWPROC|CMDTYPE|OPTMODE |");strcat (dyn_column,"PARUSER|PARSCHEM|KEPTVER|MOD|AC TION|SERABEND|");break;/*/*

#define CASE_INIT_PARAMETERS_VALUES_STATUS 56*/

case CASE_INIT_PARAMETERS_VALUES_STATUS:strcpy (dyn_column,"|NUM|NAME|VALUE|ISDEF|ISMOD|ISA DJ|TYPE|");strcat (dyn_column,"ISSESMOD|ISSYSMOD|DESCRIP|");break;

/* ------------------------------------------------ -------------- */

case CASE_TABLESPACE_FRAGMENTATION:strcpy (dyn_column,"|TABLESPACE|KBYTES|NROEXT|SUMKB YTE|USAGE|BYTESEXT|CHANGED?|FILEID|EXTID|BLKID|");break;

case CASE_SHOW_NLS_PARAMETERS:

Page 38: Orastat line command

strcpy (dyn_column,"|NAME|VALUE_DBMS|VALUE_INST|VAL UE_SES|COMMENTS|");break;

case CASE_CONTROL_FILES_STATUS:strcpy (dyn_column,"|NAME|STATUS|");break;

case CASE_SORT_SEGMENTS_USERS:strcpy (dyn_column,"|TABLESPACE_NAME|SEGFIL|SEGBLOC K|EXTSIZE|");strcat (dyn_column,"CURUSR|TOTEXTENT|TOTBLCKS|USEDE XT|");strcat (dyn_column,"USEDBLCKS|FREEXT|FREEBLCKS|ADDE XTS|");strcat (dyn_column,"EXTHITS|FREEEXT|FREEREQU|MSIZE| MBLCKS|");strcat (dyn_column,"MUSEDSIZE|MUSEDBLCKS|MSORTSIZE| ");strcat (dyn_column,"MSORTBLCKS|TEMP|");break;

case CASE_ORACLE_QUOTAS:strcpy (dyn_column,"|TABLESPACE_NAME|USERNAME|KBYTE S|MAX_KBYTES|");strcat (dyn_column,"BLOCKS|MAX_BLOCKS|USAGEPERC|");break;

case CASE_TABLE_GENERAL_DESCRIPTION:strcpy (dyn_column,"|OWNER|OBJECT_NAME|TABLE_NAME|O BJECT_TYPE|OBJECT_TYPE|R_OBJECT_TYPE|IMAGE_INDEX|") ;strcat (dyn_column,"OBJECT_NAME|SYNONYM_OWNER|CREAT ED|LAST_DDL_TIME|STATUS|TABLESPACE_NAME|PCT_FREE|");strcat (dyn_column,"PCT_USED|PCT_INCREASE|NEXT_EXTE NT|INI_TRANSMAX_TRANS|INITIAL_EXTENT|MIN_EXTENTS|") ;strcat (dyn_column,"MAX_EXTENTS|FREELISTS|FREELIST_ GROUPS|BACKED_UP|NUM_ROWS|BLOCKS|EMPTY_BLOCKS|AVG_SPACE|");strcat (dyn_column,"CHAIN_CNT|AVG_ROW_LEN|DEGREE|IN STANCES|CACHE|LAST_ANALYZED|LOGGING|PARTITIONED|");strcat (dyn_column,"BUFFER_POOL|IOT_NAME|IOT_TYPE|T ABLE_LOCK|NESTED|AVG_SPACE_FREELIST_BLOCKS|");strcat (dyn_column,"NUM_FREELIST_BLOCKS|SAMPLE_SIZE |table_type_owner|table_type|SECONDARY|ROW_MOVEMENT |");strcat (dyn_column,"GLOBAL_STATS|USER_STATS|DURATIO N|SKIP_CORRUPT|MONITORING|TEMPORARY|");break;

case CASE_TABLE_COLUMN_DESCRIPTION:strcpy (dyn_column,"|OWNER|TABLNAME|COLUMN|");break;

case CASE_TABLE_CONSTRAINTS:strcpy (dyn_column,"| | | | | | | | | | | | | | | | | |");strcat (dyn_column,"| | | | | | | | | | | | | | | | | |");strcat (dyn_column,"| | | | | | | | | | | | | | | | | |");strcat (dyn_column,"| | | | | | | | | | | | | | | | | |");break;

case CASE_INDEX_GENERAL_DESCRIPTION:strcpy (dyn_column,"|INDEX_OWNER|INDEX_NAME|COLPOS| COLUMN_NAME|");strcat (dyn_column,"SQL_TYPE|NULLABLE|DESCEND|IMAGE _INDEX|");break;

Page 39: Orastat line command

case CASE_AUDIT_DEFINITION:strcpy (dyn_column,"|OBJECT_NAME|OBJECT_TYPE|AUDIT_ OPTION|WHENEVER_SUCC|WHENEVER_UNSUCC|");break;

case CASE_SHOW_SEGMENTS_EXTENTS:strcpy (dyn_column,"|OWNER|SEGMENT_NAME|SEGMENT_TYP E|TABLESPACE_NAME|KBYTES|");strcat (dyn_column,"BLOCKS|EXTENTS|NEXT_EXTENT|PCT_ INCREASE|MAX_EXTENTS|");strcat (dyn_column,"FREE_EXTENTS|IMAGE_INDEX|");break;

case CASE_SHOW_EXTENTS_INSIDE_DATAFILES:strcpy (dyn_column,"|EXTENT_ID|OWNER|SEGMENT_NAME|S EGMENT_TYPE|");strcat (dyn_column,"TABLESPACE_NAME|FILE_ID|BLOCK_I D|KBYTES|BLOCKS|FILE_NAME|");break;

case CASE_SHOW_USER_LISTS:strcpy (dyn_column,"|USERNAME|USER_ID|DEFAULT_TABLE SPACE|password|TEMPORARY_TABLESPACE|");strcat (dyn_column,"CREATED|PROFILE|ACCOUNT_STATUS| LOCK_DATE|EXPIRY_DATE|");strcat (dyn_column,"INITIAL_RSRC_CONSUMER_GROUP|SYS DBA|SYSOPER|");break;

case CASE_SHOW_ROLES_PRIVILEGES:strcpy (dyn_column,"|PRIVILEGE|OWNER|TABLE_NAME|GRA NTOR|GRANTEE|GRANTABLE|COL_PRIVS|");break;

case CASE_SHOW_PRIVILEGES_COLUMNS:strcpy (dyn_column,"|COLUMN_NAME|GRANTOR|GRANTEE|PR IVILEGE|GRANTABLE|DATA_TYPE|");strcat (dyn_column,"SQL_TYPE|NULLABLE|IMAGE_INDEX|" );break;

case CASE_SHOW_LOCKS_VIEWS:strcpy (dyn_column,"|id1|type|lmode|request|object_ name|owner|");strcat (dyn_column,"object_type|image_index|");break;

case CASE_GRAPH_LOCK_WAITS:strcpy (dyn_column,"|SID|PROGRAM|USERNAME|TERMINAL| ");break;

case CASE_OBJECT_ACCESS_SESSION:strcpy (dyn_column,"|SID|OBJECT ACCESED|TYPE|");break;

case CASE_SHOW_LATCHES:strcpy (dyn_column,"|ADDR|LATCH#|LEVEL#|NAME|GETS|M ISSES|SLEEPS|IMMEDIATE_GETS|");strcat (dyn_column,"IMMEDIATE_MISSES|WAITERS_WOKEN| WAITS_HOLDING_LATCH|SPIN_GETS|");strcat (dyn_column,"SLEEP1|SLEEP2|SLEEP3|SLEEP4|SLE EP5|SLEEP6|SLEEP7|SLEEP8|");strcat (dyn_column,"SLEEP9|SLEEP10|SLEEP11|NAME|");break;

Page 40: Orastat line command

case CASE_SHOW_STATISTICS:strcpy (dyn_column,"|ID|NAME|SET_MSIZE|CNUM_REPL|CN UM_WRITE|");strcat (dyn_column,"CNUM_SET|BUF_GOT|SUM_WRITE|SUM_ SCAN|");strcat (dyn_column,"FREE_BUF_WAIT|WRI_COM_WAIT|BUF_ BUSY_WAIT|");strcat (dyn_column,"FREE_BUF_INSPECTED|DIRTY_BUF_IN SPECTED|");strcat (dyn_column,"DB_BLOCK_CHANGE|DB_BLOCK_GETS|" );strcat (dyn_column,"CONSIST_GETS|PHYS_READ|PHYS_WRI T|");break;

case CASE_SHOW_TRANSACTIONS:strcpy (dyn_column,"|SID|ADDR|XIDUSN|XIDSLOT|XIDSQN |UBAFIL|UBABLK|UBASQN|UBAREC|STATUS|");strcat (dyn_column,"START_TI|START_SCNB|START_SCNW| START_UEXT|START_UBAFIL|");strcat (dyn_column,"START_UBABLK|START_UBASQN|START _UBAREC|SES_ADDR|FLAG|SPACE|");strcat (dyn_column,"RECURSIVE|NOUNDO|PRV_XIDUSN|PRV _XIDSLT|PRV_XIDSQN|PTX|PTX_XIDUSN|");strcat (dyn_column,"PTX_XIDSLT|PTX_XIDSQN|DSCN_B|DS CN_W|USED_UBLK|USED_UREC|LOG_IO|");strcat (dyn_column,"PHY_IO|CR_GET|CR_CHANGE|");break;

case CASE_SHOW_DATAFILES_STATUS:strcpy (dyn_column,"|FILEID|TABLESPACE_NAME|AUEXT|M AXBYTES|NEXT_SIZE|");strcat (dyn_column,"KBYTES|BLOCKS|STATUS|MAX_CHUNK_ SPACE|MIN_CHUNK_SPACE|FREE_SPACE|");strcat (dyn_column,"FRAGMENTS|USAGE_PCT|BACKUP_STAT US|BACKUP_CHANGE#|BACKUP_TIME|");strcat (dyn_column,"FILE_NAME|");break;

case CASE_SHOW_DB_OBJECT_CACHE:strcpy (dyn_column,"|OWNER|NAMESPACE|LOADS|EXECS|LO CKS|PINS|KEPT|SHAREDMEM|NAME|");break;

case CASE_TABLE_ALERT_EXTENT_USED:strcpy (dyn_column,"|OWNER|TABLENAME|TIPO|MINEXT|MA XEXT|EXTUSED|PORCEN|");break;

case CASE_INDEX_ALERT_EXTENT_USED:strcpy (dyn_column,"|OWNER|INDEXNAME|TIPO|MINEXT|MA XEXT|EXTUSED|PORCEN|");break;

case CASE_USER_TIME_WORKING:strcpy (dyn_column,"|OSUSER|USUARIO|ESTADO|KILL|PID UNIX|VTEXT|READS|GETS|");strcat (dyn_column,"MINUTOS|LOGON|");break;

case CASE_IS_USER_WORKING:strcpy (dyn_column,"|OSUSER|USERNAME|ESTADO|KILL|PI DUNIX|VTEXT|READS|GETS|");strcat (dyn_column,"MINUTOS|LOGON|");break;

case CASE_VER_SQL_PROGRAM:

Page 41: Orastat line command

strcpy (dyn_column,"|PID|SPID|SID|STATUS|OSUSER|USE RNAME|MACHINE|TERMINAL|KILL|VTEXT|MINUTOS|");break;

case CASE_SQL_SESS_IO:strcpy (dyn_column,"|SID|USERNAME|TERMINAL|MACHINE| BLCKGETS|");strcat (dyn_column,"CONSISGETS|PHYSREADS|BLCKCHGS|" );strcat (dyn_column,"CONSISCHGS|");break;

case CASE_SQL_SESSION_EVENT:strcpy (dyn_column,"|SID|USERNAME|TERMINAL|MACHINE| ");strcat (dyn_column,"EVENT|TOTWAIT|TOTTIME|TIMWAITED |");strcat (dyn_column,"AVGWAIT|MAXWAIT|");break;

case CASE_SQL_SESSION_WAIT:strcpy (dyn_column,"|SID|USERNAME|TERMINAL|MACHINE| ");strcat (dyn_column,"SEQ#|EVENT|P1TEXT|P1|P1RAW|");strcat (dyn_column,"P2TEXT|P2|P2RAW|P3|P3TEXT|P3RAW |");strcat (dyn_column,"WAIT_TIME|SECINWAIT|STATE|");break;

case CASE_SQL_SESSION_LONG_OPER:strcpy (dyn_column,"|SID|USERNAME|TERMINAL|MACHINE| SERIAL#|OPNAME|TARGET|");strcat (dyn_column,"TARGET_DESC|SOFAR|TOTALWORK|UNI TS|START_TIME|");strcat (dyn_column,"LAST_UPDATE_TIME|TIME_REMAINING |ELAPSED_SECONDS|");strcat (dyn_column,"CONTEXT|MESSAGE|USERNAME|SQL_AD DRESS|");strcat (dyn_column,"SQL_HASH_VALUE|QCSID|");break;

case CASE_SQL_LOCKED_OBJECTS:strcpy (dyn_column,"|XIDUSN|XIDSLOT|XIDSQN|OBJID|SE SID|ORAUSER|");strcat (dyn_column,"OSUSER|PROCESS|LOCKMODE|");break;

case CASE_SQL_TRANSACTION_DETAIL:strcpy (dyn_column,"|ADDR|XIDUSN|XIDSLOT|XIDSQN|UBA FIL|");strcat (dyn_column,"UBABLK|UBASQN|UBAREC|START_UBAF IL|");strcat (dyn_column,"START_UBABLK|START_UBASQN|START _UBAREC|");strcat (dyn_column,"LOG_IO|PHY_IO|");break;

case CASE_SQL_LOCK_MEDIUM_INFO:strcpy (dyn_column,"|SADDR|SID|SERIAL|USERNAME|TERM INAL|TYPE|");strcat (dyn_column,"TABLE|OWNER|ID1|ID2|LMODE|RMODE |");break;

case CASE_SQL_LOCK_FULL_INFO:

Page 42: Orastat line command

strcpy (dyn_column,"|USER|SID|TERMINAL||||||||||||| |||");break;

case CASE_SQL_LOCK_BY_SESSION_ID:strcpy (dyn_column,"|USER OS|PID|SID|USER ORA|LOCKS |TYPE|MODE|WAIT|");break;

case CASE_SQL_WHO_IS_WAITING_FOR:strcpy (dyn_column,"|WAITING USER|USER OS|SID|PID|H OLDING USER|");strcat (dyn_column,"USER OS|SID|PID|");break;

case CASE_SQL_WHICH_SQL_RUNNING:strcpy (dyn_column,"||||||||||||||||");break;

case CASE_WHICH_OBJECTS_LOCKED_BY_USER:strcpy (dyn_column,"|ADDR|INDX|INST_ID|KGLLKADR|KGL LKUSE|");strcat (dyn_column,"KGLLKSES|KGLLKSNM|KGLLKHDL|KGLL KPNC|KGLLKPNS|");strcat (dyn_column,"KGLLKCNT|KGLLKMOD|KGLLKREQ|KGLL KFLG|KGLLKSPN|");strcat (dyn_column,"KGLLKHTB|KGLNAHSH|KGLHDPAR|KGLH DNSP|USER_NAME|");strcat (dyn_column,"KGLNAOBJ|");break;

/* ------------------------------------------------ - *//************* Agregado 25-Agosto-2005 ************ ***/

case CASE_BUFFER_CACHE_DEFINED:switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_column,"|ID|NAME|BLOCK_SZ|CURRENT_SZ|") ;strcat (dyn_column,"BUFFERS|");

break;}

break;/* ------------------------------------------------ - */

case CASE_BUFFER_CACHE_TOTAL_SIZE:switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_column,"|TOT_CUR_SIZE|TOT_BUFFERS|");break;}

break;

Page 43: Orastat line command

/* ------------------------------------------------ - */case CASE_OPTIMIZER_INDEX_COST_ADJ_ESTIMATE:

switch (version){case VERSION_ORACLE_920:

strcpy (dyn_column,"|OPTIMIZER_INDEX_COST_ADJ|");break;}

break;/* ------------------------------------------------ - */

case CASE_OPTIMIZER_INDEX_CACHING_ESTIMAGE:switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_column,"|OPTIMIZER_INDEX_CACHING|");break;}

break;/* ------------------------------------------------ - *//* ------------------------------------------------ - */

default:strcpy (dyn_column,"|ORACLE_VERSION|");break;

}return (dyn_column);}--- ---

--- ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* **********************

Page 44: Orastat line command

*************************************************** ************************************************************************* ************************* ****** ****** ARCHIVO: func_dyn_proc_func_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();

char *func_dyn_proc_func_set (int version, int sent encia){static char dyn_proc_func [MAX_VAR_SIZE];

vaciar_cadena (dyn_proc_func,MAX_VAR_SIZE);strcpy (dyn_proc_func,"|NO|");switch (sentencia)

{case CASE_ORACLE_VERSION:

break;case CASE_ACTIVE_PARAMETERS:

break;case CASE_USERS_CONNECTED:

break;case CASE_WAIT_STATISTICS:

break;

Page 45: Orastat line command

case CASE_DATAFILE_I_0:switch (version)

{case VERSION_ORACLE_920:

break;case VERSION_ORACLE_817:case VERSION_ORACLE_816:case VERSION_ORACLE_734:

break;default:

break;}

break;case CASE_DATAFILE_BLOCKS_R_W:

break;case CASE_WAIT_EVENTS:

break;case CASE_INSTANCE_STATUS:

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

break;case VERSION_ORACLE_734:

strcpy (dyn_proc_func,"|SI|0809|");break;

default:break;

}break;

case CASE_TEMPORAL_SPACE_BY_USER:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

break;case VERSION_ORACLE_734:default:

Page 46: Orastat line command

break;}

break;case CASE_TOT_FREELIST_WAIT_PERCENT:

break;case CASE_LAST_CHECKPOINT_TIME:

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

break;case VERSION_ORACLE_734:

break;default:

break;}

break;case CASE_LIST_TABLESPACES:

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

break;case VERSION_ORACLE_734:

break;}

break;case CASE_ACTIVE_TRANSACTIONS:

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

break;case VERSION_ORACLE_734:

/* FORMATO |<SI PROCESO>|<NRO COLUMNA -1><NRO FUNC ION>| *//* LAS COLUMNAS EMPIEZAN A ENUMERARSE A PARTIR DE LA CERO (0) */strcpy (dyn_proc_func,"|SI|0401|");

Page 47: Orastat line command

/* PROCESANDO ESTA PARTE DEL NUEVO SELECT */break;

}break;

case CASE_LATCH_DETAILS:break;

case CASE_RESOURCE_LIMITS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

break;case VERSION_ORACLE_734:

break;}

break;case CASE_LIST_DATAFILES:

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

break;case VERSION_ORACLE_734:

break;}

break;case CASE_LIST_DATAFILES_NEW_9I:

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

break;case VERSION_ORACLE_734:

break;}

break;case CASE_LIST_TABLESPACES_NEW_9I:

Page 48: Orastat line command

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

break;case VERSION_ORACLE_734:

break;}

break;case CASE_ACTIVE_SESSIONS:

break;case CASE_SESSIONS_WAITS:

break;case CASE_DEFAULT_STORAGE_SETS_TABLESPACE:

break;case CASE_ALL_TABLES_STORAGE_SETTINGS:

/* FORMATO |<SI PROCESO>|<NRO COLUMNA -1><NRO FUNC ION>| *//* LAS COLUMNAS EMPIEZAN A ENUMERARSE A PARTIR DE LA CERO (0) */

strcpy (dyn_proc_func,"|SI|0405|");/* PROCESANDO ESTA PARTE DEL NUEVO SELECT */

break;case CASE_ALL_NON_SYS_TABLES_SETTINGS:

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

/* FORMATO |<SI PROCESO>|<NRO COLUMNA -1><NRO FUNC ION>| *//* LAS COLUMNAS EMPIEZAN A ENUMERARSE A PARTIR DE LA CERO (0) */

strcpy (dyn_proc_func,"|SI|0701|");/* PROCESANDO ESTA PARTE DEL NUEVO SELECT */

break;case VERSION_ORACLE_734:

/* FORMATO |<SI PROCESO>|<NRO COLUMNA -1><NRO FUNC ION>| *//* LAS COLUMNAS EMPIEZAN A ENUMERARSE A PARTIR DE LA CERO (0) */

strcpy (dyn_proc_func,"|SI|0501|");/* PROCESANDO ESTA PARTE DEL NUEVO SELECT */

break;}

Page 49: Orastat line command

break;case CASE_ALL_NON_SYS_INDEXES_SETTINGS:

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

/* FORMATO |<SI PROCESO>|<NRO COLUMNA -1><NRO FUNC ION>| *//* LAS COLUMNAS EMPIEZAN A ENUMERARSE A PARTIR DE LA CERO (0) */

strcpy (dyn_proc_func,"|SI|0701|");/* PROCESANDO ESTA PARTE DEL NUEVO SELECT */

break;case VERSION_ORACLE_734:

/* FORMATO |<SI PROCESO>|<NRO COLUMNA -1><NRO FUNC ION>| *//* LAS COLUMNAS EMPIEZAN A ENUMERARSE A PARTIR DE LA CERO (0) */

strcpy (dyn_proc_func,"|SI|0401|");/* PROCESANDO ESTA PARTE DEL NUEVO SELECT */

break;}

break;case CASE_USER_DEFINED:

printf ("Pasando Seteo Funcion 24 \n");break;

case CASE_LIST_DATAFILE_REDO_CONTROL_FILES:break;

case CASE_LIST_DATAFILES_USED_BLOCKS:break;

case CASE_LIST_SORT_BY_USER:break;

case CASE_LIST_LOCK_STATUS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

/* FORMATO |<SI PROCESO>|<NRO COLUMNA -1><NRO FUNC ION>| *//* LAS COLUMNAS EMPIEZAN A ENUMERARSE A PARTIR DE LA CERO (0) */strcpy (dyn_proc_func,"|SI|0603||1109|");/* PROCESANDO ESTA PARTE DEL NUEVO SELECT */

break;

Page 50: Orastat line command

case VERSION_ORACLE_734:/* FORMATO |<SI PROCESO>|<NRO COLUMNA -1><NRO FUNC ION>| *//* LAS COLUMNAS EMPIEZAN A ENUMERARSE A PARTIR DE LA CERO (0) */strcpy (dyn_proc_func,"|SI|0703||0603||0806||0907|| 1008||1109|"); /* |1008|"); *//* PROCESANDO ESTA PARTE DEL NUEVO SELECT */

break;}

break;case CASE_LIST_USER_BY_CPU_USAGE:

break;case CASE_SQL_STATEMENT_BY_THIS_USER:

break;case CASE_REDO_LOGS_STATUS:

break;case CASE_ARCHIVED_LOGS_HISTORY:

break;case CASE_REDO_LOG_RECOVERY_REPORT:

break;case CASE_ARCHIVE_LOG_HISTROY:

break;case CASE_SESSION_LATCH_WAITS_SQL:

break;case CASE_SESSION_PROGRAM_RUNNING_SQL:

break;case CASE_PRIVILEGES_BY_USER:

break;case CASE_DETAILED_LOCKING_CAUSES:

/* FORMATO |<SI PROCESO>|<NRO COLUMNA -1><NRO FUNC ION>| *//* LAS COLUMNAS EMPIEZAN A ENUMERARSE A PARTIR DE LA CERO (0) */

strcpy (dyn_proc_func,"|SI|0402||0503||0603||0804|" );/* PROCESANDO ESTA PARTE DEL NUEVO SELECT */

break;case CASE_CURRENT_STATISTICS_VALUES:

break;case CASE_TABLE_DESCRIPTION_USER_TABLENAME:

break;case CASE_INDEX_DESCRIPTION_USER_INDEXNAME:

break;case CASE_CURRENT_ACTIVITY_REPORT:

break;

Page 51: Orastat line command

case CASE_DICTIONARY_TABLE_COMMENTS:break;

case CASE_DICTIONARY_TABLE_COLUMNS_DESCRIP:break;

case CASE_SGA_STATISTIC_GENERAL:break;

case CASE_SGA_STATISTIC_MEMORY_USAGE:break;

case CASE_SGA_STATISTIC_INFORMATION:break;

case CASE_ROW_CACHE_INFORMATION:break;

case CASE_PERFORMANCE_DISK_I_O:break;

case CASE_RECURSIVE_CALLS:break;

case CASE_SYSTEM_EVENTS:break;

/* ------------------------------------------------ -------------- */case CASE_SQL_AREA_ALL_ENTRIES:

break;case CASE_SQL_AREA_CPU_USAGE:

break;case CASE_SQL_AREA_MEMORY_USAGE:

break;case CASE_SQL_AREA_BUFFER_GET_SUM:

break;case CASE_INIT_PARAMETERS_VALUES_STATUS:

break;

/* ------------------------------------------------ -------------- */

case CASE_TABLESPACE_FRAGMENTATION:strcpy (dyn_proc_func,"|SI|0610|");break;

case CASE_SHOW_NLS_PARAMETERS:break;

case CASE_CONTROL_FILES_STATUS:break;

Page 52: Orastat line command

case CASE_SORT_SEGMENTS_USERS:break;

case CASE_ORACLE_QUOTAS:break;

case CASE_TABLE_GENERAL_DESCRIPTION:break;

case CASE_TABLE_COLUMN_DESCRIPTION:break;

case CASE_TABLE_CONSTRAINTS:break;

case CASE_INDEX_GENERAL_DESCRIPTION:break;

case CASE_AUDIT_DEFINITION:break;

case CASE_SHOW_SEGMENTS_EXTENTS:break;

case CASE_SHOW_EXTENTS_INSIDE_DATAFILES:break;

case CASE_SHOW_USER_LISTS:break;

case CASE_SHOW_ROLES_PRIVILEGES:break;

case CASE_SHOW_PRIVILEGES_COLUMNS:break;

case CASE_SHOW_LOCKS_VIEWS:break;

case CASE_GRAPH_LOCK_WAITS:break;

case CASE_OBJECT_ACCESS_SESSION:break;

case CASE_SHOW_LATCHES:break;

case CASE_SHOW_STATISTICS:break;

case CASE_SHOW_DATAFILES_STATUS:break;

case CASE_SHOW_DB_OBJECT_CACHE:break;

case CASE_TABLE_ALERT_EXTENT_USED:break;

Page 53: Orastat line command

case CASE_INDEX_ALERT_EXTENT_USED:break;

case CASE_USER_TIME_WORKING:break;

case CASE_IS_USER_WORKING:break;

case CASE_VER_SQL_PROGRAM:break;

case CASE_SQL_SESS_IO:break;

case CASE_SQL_SESSION_EVENT:break;

case CASE_SQL_SESSION_WAIT:break;

case CASE_SQL_SESSION_LONG_OPER:break;

case CASE_SQL_LOCKED_OBJECTS:break;

case CASE_SQL_TRANSACTION_DETAIL:break;

case CASE_SQL_LOCK_MEDIUM_INFO:break;

case CASE_SQL_LOCK_FULL_INFO:break;

case CASE_SQL_LOCK_BY_SESSION_ID:break;

case CASE_SQL_WHO_IS_WAITING_FOR:break;

case CASE_SQL_WHICH_SQL_RUNNING:break;

case CASE_WHICH_OBJECTS_LOCKED_BY_USER:break;

/* ------------------------------------------------ - *//************* Agregado 25-Agosto-2005 ************ ***/

case CASE_BUFFER_CACHE_DEFINED:break;

/* ------------------------------------------------ - */case CASE_BUFFER_CACHE_TOTAL_SIZE:

break;/* ------------------------------------------------ - */

Page 54: Orastat line command

case CASE_OPTIMIZER_INDEX_COST_ADJ_ESTIMATE:break;

/* ------------------------------------------------ - */case CASE_OPTIMIZER_INDEX_CACHING_ESTIMAGE:

break;/* ------------------------------------------------ - *//* ------------------------------------------------ - */

default:break;

}return (dyn_proc_func);}--- ---

--- ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: func_dyn_size_set.c ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***#include <stdio.h>

Page 55: Orastat line command

#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();

char *func_dyn_size_set (int version, int sentencia ){static char dyn_size[MAX_VAR_SIZE];

vaciar_cadena (dyn_size,MAX_VAR_SIZE);switch (sentencia)

{case CASE_ORACLE_VERSION:

strcpy (dyn_size,"80\0");break;

case CASE_ACTIVE_PARAMETERS:strcpy (dyn_size,"355540\0");break;

case CASE_USERS_CONNECTED:strcpy (dyn_size,"080415060815161122\0");break;

case CASE_WAIT_STATISTICS:strcpy (dyn_size,"101030\0");break;

case CASE_DATAFILE_I_0:switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_size,"080808086010\0");break;

case VERSION_ORACLE_817:case VERSION_ORACLE_816:case VERSION_ORACLE_734:

strcpy (dyn_size,"0606060660\0");break;

default:

Page 56: Orastat line command

break;}

break;case CASE_DATAFILE_BLOCKS_R_W:

strcpy (dyn_size,"60060606\0");break;

case CASE_WAIT_EVENTS:strcpy (dyn_size,"08201030\0");break;

case CASE_INSTANCE_STATUS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"0308091022050310102030\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"06181512120908101020\0");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_size,"101010101030\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"0907070606050606080808080806\0");

default:break;

}break;

case CASE_TOT_FREELIST_WAIT_PERCENT:strcpy (dyn_size,"12\0");

Page 57: Orastat line command

break;case CASE_LAST_CHECKPOINT_TIME:

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"1522\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"15\0");break;

default:break;

}break;

case CASE_LIST_TABLESPACES:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"151010061010070810101010\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"151010061010070810101010\0");break;

}break;

case CASE_ACTIVE_TRANSACTIONS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"10220808081004060540\0");break;case VERSION_ORACLE_734:

strcpy (dyn_size,"082007080810070605101010\0");break;

Page 58: Orastat line command

}break;

case CASE_LATCH_DETAILS:strcpy (dyn_size,"10040808080507080825\0");break;

case CASE_RESOURCE_LIMITS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"3010101010\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"5010\0");break;

}break;

case CASE_LIST_DATAFILES:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"701008\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"701008\0");break;

}break;

case CASE_LIST_DATAFILES_NEW_9I:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"066018121208\0");break;

case VERSION_ORACLE_734:

Page 59: Orastat line command

strcpy (dyn_size,"066018121208\0");break;

}break;

case CASE_LIST_TABLESPACES_NEW_9I:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"06251012121212121212121010101010\ 0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"06251012121212121212121010101010\ 0");break;

}break;

case CASE_ACTIVE_SESSIONS:strcpy (dyn_size,"0404101522100922150940\0");break;

case CASE_SESSIONS_WAITS:strcpy (dyn_size,"040405051508252010101010101010101 0101010101010\0");break;

case CASE_DEFAULT_STORAGE_SETS_TABLESPACE:strcpy (dyn_size,"201212121207\0");break;

case CASE_ALL_TABLES_STORAGE_SETTINGS:strcpy (dyn_size,"15202010101008\0");break;

case CASE_ALL_NON_SYS_TABLES_SETTINGS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"1820200808101808\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"1820200808101808\0");break;

Page 60: Orastat line command

}break;

case CASE_ALL_NON_SYS_INDEXES_SETTINGS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"1225200808101808\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"1225200808101808\0");break;

}break;

case CASE_USER_DEFINED:printf ("Pasando Seteo ColSize 24 \n\0");switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"20181220202022101010\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"20181220202022101010\0");break;

}break;

case CASE_LIST_DATAFILE_REDO_CONTROL_FILES:strcpy (dyn_size,"702010\0");break;

case CASE_LIST_DATAFILES_USED_BLOCKS:strcpy (dyn_size,"256012121212\0");break;

case CASE_LIST_SORT_BY_USER:strcpy (dyn_size,"14180620251010\0");break;

case CASE_LIST_LOCK_STATUS:switch (version)

Page 61: Orastat line command

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"090904060704111108250409\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"090904040504111108250409\0");break;

}break;

case CASE_LIST_USER_BY_CPU_USAGE:strcpy (dyn_size,"05071010231025200770\0");break;

case CASE_SQL_STATEMENT_BY_THIS_USER:strcpy (dyn_size,"70\0");break;

case CASE_REDO_LOGS_STATUS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"070710101010101220\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"070710101010101220\0");break;

}break;

case CASE_ARCHIVED_LOGS_HISTORY:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"0607501023080810\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"060718080850\0");

Page 62: Orastat line command

break;}

break;case CASE_REDO_LOG_RECOVERY_REPORT:

strcpy (dyn_size,"06125208\0");break;

case CASE_ARCHIVE_LOG_HISTROY:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"0810171722\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"0608080822\0");break;

}break;

case CASE_SESSION_LATCH_WAITS_SQL:strcpy (dyn_size,"05303060\0");break;

case CASE_SESSION_PROGRAM_RUNNING_SQL:strcpy (dyn_size,"07306080\0");break;

case CASE_PRIVILEGES_BY_USER:strcpy (dyn_size,"252540\0");break;

case CASE_DETAILED_LOCKING_CAUSES:strcpy (dyn_size,"300515281018181450\0");break;

case CASE_CURRENT_STATISTICS_VALUES:strcpy (dyn_size,"085515\0");break;

case CASE_TABLE_DESCRIPTION_USER_TABLENAME:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

Page 63: Orastat line command

strcpy (dyn_size,"121232081907070707070707070707070 7\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"121232081907070707070707070707070 7\0");break;

}break;

case CASE_INDEX_DESCRIPTION_USER_INDEXNAME:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_size,"151215120809150606060606060607060 7070707\0");break;

case VERSION_ORACLE_734:strcpy (dyn_size,"151215120809150606060606060607060 7070707\0");break;

}break;

case CASE_CURRENT_ACTIVITY_REPORT:strcpy (dyn_size,"1012081299\0");break;

case CASE_DICTIONARY_TABLE_COMMENTS:strcpy (dyn_size,"3570\0");break;

case CASE_DICTIONARY_TABLE_COLUMNS_DESCRIP:strcpy (dyn_size,"25306515080612\0");break;

case CASE_SGA_STATISTIC_GENERAL:strcpy (dyn_size,"04251010100510101045\0");break;

case CASE_SGA_STATISTIC_MEMORY_USAGE:strcpy (dyn_size,"1535121212\0");break;

case CASE_SGA_STATISTIC_INFORMATION:strcpy (dyn_size,"4020\0");break;

case CASE_ROW_CACHE_INFORMATION:strcpy (dyn_size,"06062510100710101007050606\0");

Page 64: Orastat line command

break;case CASE_PERFORMANCE_DISK_I_O:

strcpy (dyn_size,"50101010\0");break;

case CASE_RECURSIVE_CALLS:strcpy (dyn_size,"3020\0");break;

case CASE_SYSTEM_EVENTS:strcpy (dyn_size,"4012121212\0");break;

/* ------------------------------------------------ -------------- *//*

#define CASE_SQL_AREA_ALL_ENTRIES 52*/

case CASE_SQL_AREA_ALL_ENTRIES:strcpy (dyn_size,"0807090909050303030305050519");strcat (dyn_size,"050808081515150807121508050506\0" );break;/*

#define CASE_SQL_AREA_CPU_USAGE 53*/

case CASE_SQL_AREA_CPU_USAGE:strcpy (dyn_size,"0807070707050303030305050519");strcat (dyn_size,"050808081515150807121508050506");break;/*

#define CASE_SQL_AREA_MEMORY_USAGE 54*/

case CASE_SQL_AREA_MEMORY_USAGE:strcpy (dyn_size,"0807070707050303030305050519");strcat (dyn_size,"050808081515150807121508050506");break;/*/*

#define CASE_SQL_AREA_BUFFER_GET_SUM 55*/

case CASE_SQL_AREA_BUFFER_GET_SUM:strcpy (dyn_size,"0807070707050303030305050519");strcat (dyn_size,"050808081515150807121508050506");

Page 65: Orastat line command

break;/*

#define CASE_INIT_PARAMETERS_VALUES_STATUS 56*/

case CASE_INIT_PARAMETERS_VALUES_STATUS:strcpy (dyn_size,"05355005050508050535");break;

/* ------------------------------------------------ -------------- */

case CASE_TABLESPACE_FRAGMENTATION:strcpy (dyn_size,"25090909151612060606\0");break;

case CASE_SHOW_NLS_PARAMETERS:strcpy (dyn_size,"3040404035\0");break;

case CASE_CONTROL_FILES_STATUS:strcpy (dyn_size,"5012\0");break;

case CASE_SORT_SEGMENTS_USERS:strcpy (dyn_size,"1506080706070707090709");strcat (dyn_size,"0707070806060909090909\0");break;

case CASE_ORACLE_QUOTAS:strcpy (dyn_size,"30191111111111");break;

case CASE_TABLE_GENERAL_DESCRIPTION:strcpy (dyn_size,"20303012120909090909");strcat (dyn_size,"09090909090909090909");strcat (dyn_size,"09090909090909090909");strcat (dyn_size,"09090909090909090909");strcat (dyn_size,"09090909090909090909");strcat (dyn_size,"09090909");break;

case CASE_TABLE_COLUMN_DESCRIPTION:strcpy (dyn_size,"204035\0");break;

case CASE_TABLE_CONSTRAINTS:strcpy (dyn_size,"09090909090909090909");strcat (dyn_size,"09090909090909090909");

Page 66: Orastat line command

strcat (dyn_size,"09090909090909090909");strcat (dyn_size,"09090909090909090909");strcat (dyn_size,"09090909090909090909");strcat (dyn_size,"09090909090909090909");break;

case CASE_INDEX_GENERAL_DESCRIPTION:strcpy (dyn_size,"2535063525151515");break;

case CASE_AUDIT_DEFINITION:strcpy (dyn_size,"3520301212");break;

case CASE_SHOW_SEGMENTS_EXTENTS:strcpy (dyn_size,"122525301212121212121212");break;

case CASE_SHOW_EXTENTS_INSIDE_DATAFILES:strcpy (dyn_size,"08253012250808080880");break;

case CASE_SHOW_USER_LISTS:strcpy (dyn_size,"30083010302312081010101010101010" );break;

case CASE_SHOW_ROLES_PRIVILEGES:strcpy (dyn_size,"1010101010101010101010101010");break;

case CASE_SHOW_PRIVILEGES_COLUMNS:strcpy (dyn_size,"10101010101010101010");break;

case CASE_SHOW_LOCKS_VIEWS:strcpy (dyn_size,"082020201020101020101010");break;

case CASE_GRAPH_LOCK_WAITS:strcpy (dyn_size,"08653025");break;

case CASE_OBJECT_ACCESS_SESSION:strcpy (dyn_size,"087015");break;

case CASE_SHOW_LATCHES:strcpy (dyn_size,"10101010101010101010");strcat (dyn_size,"10101010101010101010");strcat (dyn_size,"10101010");break;

Page 67: Orastat line command

case CASE_SHOW_STATISTICS:strcpy (dyn_size,"051010101010101010151515151515151 51515");break;

case CASE_SHOW_TRANSACTIONS:strcpy (dyn_size,"0509060606060606060609");strcat (dyn_size,"10101010101010100707");strcat (dyn_size,"10071010100610101008");strcat (dyn_size,"08101008080810101010");break;

case CASE_SHOW_DATAFILES_STATUS:strcpy (dyn_size,"063007101010101010");strcat (dyn_size,"1010101013121260");break;

case CASE_SHOW_DB_OBJECT_CACHE:strcpy (dyn_size,"202006060606061060");break;

case CASE_TABLE_ALERT_EXTENT_USED:strcpy (dyn_size,"30301010101006");break;

case CASE_INDEX_ALERT_EXTENT_USED:strcpy (dyn_size,"30301010101006");break;

case CASE_USER_TIME_WORKING:strcpy (dyn_size,"13200923122008081522");break;

case CASE_IS_USER_WORKING:strcpy (dyn_size,"10200923122008081522");break;

case CASE_VER_SQL_PROGRAM:strcpy (dyn_size,"0606060813201222212010");break;

case CASE_SQL_SESS_IO:strcpy (dyn_size,"05301218090909090909");break;

case CASE_SQL_SESSION_EVENT:strcpy (dyn_size,"05301218320808080808");break;

case CASE_SQL_SESSION_WAIT:strcpy (dyn_size,"053012180615121009121009121009070 707");break;

Page 68: Orastat line command

case CASE_SQL_SESSION_LONG_OPER:strcpy (dyn_size,"05281218071840060808061818050505" );strcat (dyn_size,"1825101408");break;

case CASE_SQL_LOCKED_OBJECTS:strcpy (dyn_size,"080808080830121509");break;

case CASE_SQL_TRANSACTION_DETAIL:strcpy (dyn_size,"1010101010101010101010101010");break;

case CASE_SQL_LOCK_MEDIUM_INFO:strcpy (dyn_size,"160507251218252507071212");break;

case CASE_SQL_LOCK_FULL_INFO:strcpy (dyn_size,"300610351515151525");break;

case CASE_SQL_LOCK_BY_SESSION_ID:strcpy (dyn_size,"101010101010101010101010101010101 010");break;

case CASE_SQL_WHO_IS_WAITING_FOR:strcpy (dyn_size,"101010101010101010101010101010101 010");break;

case CASE_SQL_WHICH_SQL_RUNNING:strcpy (dyn_size,"101010101010101010101010101010101 010");break;

case CASE_WHICH_OBJECTS_LOCKED_BY_USER:strcpy (dyn_size,"101010101010101010101010101010101 0101010101010101010");break;

/* ------------------------------------------------ - *//************* Agregado 25-Agosto-2005 ************ ***/

case CASE_BUFFER_CACHE_DEFINED:switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_size,"101010101010101010101010101010101 0101010101010101010");break;}

break;/* ------------------------------------------------ - */

Page 69: Orastat line command

case CASE_BUFFER_CACHE_TOTAL_SIZE:switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_size,"101010101010101010101010101010101 0101010101010101010");break;}

break;/* ------------------------------------------------ - */

case CASE_OPTIMIZER_INDEX_COST_ADJ_ESTIMATE:switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_size,"1010");break;}

break;/* ------------------------------------------------ - */

case CASE_OPTIMIZER_INDEX_CACHING_ESTIMAGE:switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_size,"1010");break;}

/* ------------------------------------------------ - */default:

strcpy (dyn_size,"80\0");break;

}return (dyn_size);}--- ---

--- ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ---

Page 70: Orastat line command

--- ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: 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 sent encia, char *opcion_uno, char *opcion_dos, char *opcion_tres , char *opci on_cuatro)

{static char dyn_sts[MAX_STMT_SIZE];

vaciar_cadena (dyn_sts,MAX_STMT_SIZE);

switch (sentencia)

Page 71: Orastat line command

{case CASE_ORACLE_VERSION:

strcpy (dyn_sts,"select ltrim(lpad(banner,70)) Ver sion 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,usern ame 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 - H H24: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.phy wrts, ");strcat (dyn_sts,"f.phyblkwrt, f.lstiotim*10 , d.nam e\n");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.phy wrts, ");strcat (dyn_sts,"f.phyblkwrt, d.name ");strcat (dyn_sts,"from v$filestat f,v$datafile d ");strcat (dyn_sts,"where f.file# = d.file# ");strcat (dyn_sts,"order by 2 \n");break;

default:break;

}break;

Page 72: Orastat line command

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 f rom 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: Executi on Msg%' and \n");strcat (dyn_sts,"sw.event not like 'pipe get%' \n") ;strcat (dyn_sts,"group by se.sid, se.username, sw.e vent ");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.instan ce_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$datab ase ) b \n");break;

case VERSION_ORACLE_734:strcpy (dyn_sts,"select a.name, a.created, a.log_mo de, 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') va l1 \n");strcat (dyn_sts,"from v$instance where key='RESTRIC TED MODE') b, \n");strcat (dyn_sts,"(select decode(value,0,'NO') val2 \n");strcat (dyn_sts,"from v$instance where key='SHUTDOW N 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");strcat (dyn_sts,"(select value \n");strcat (dyn_sts,"from v$instance where key='STARTUP TIME - SECONDS' ) e \n");break;

default:

Page 73: Orastat line command

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.user name, 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'))/1 000) 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.user name,so.extents,so.contents \n");break;

case VERSION_ORACLE_734:strcpy (dyn_sts,"select tablespace_name, extent_siz e, current_users, total_extents, \n");strcat (dyn_sts,"total_blocks, used_extents, used_b locks, free_extents, free_blocks, \n");strcat (dyn_sts,"max_used_size, max_used_blocks, ma x_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 li st' and \n");strcat (dyn_sts,"b.name in ('db block gets','consis tent 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_TI ME)*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:

Page 74: Orastat line command

strcpy (dyn_sts,"select count(sid) Cantidad from v$ session \n");break;

default:break;

}break;

case CASE_LIST_TABLESPACES: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_byt es),0.00)/a.sum_bytes*100.0,2) PCT_USED, d.status, \n");strcat (dyn_sts,"d.extent_management,d.allocation_t ype from (select tablespace_name,sum(bytes) sum_byt es, \n");strcat (dyn_sts,"count(1) max_id from dba_data_file s 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_t ablespaces d \n");strcat (dyn_sts,"where a.tablespace_name = c.tables pace_name(+) and \n");strcat (dyn_sts,"a.tablespace_name = d.tablespace_n ame (+) 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_byt es),0.00)/a.sum_bytes*100.0,2) PCT_USED, d.status \ n");strcat (dyn_sts,"from (select tablespace_name,sum(b ytes) sum_bytes, \n");strcat (dyn_sts,"count(1) max_id from dba_data_file s 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_t ablespaces d \n");strcat (dyn_sts,"where a.tablespace_name = c.tables pace_name(+) and \n");strcat (dyn_sts,"a.tablespace_name = d.tablespace_n ame (+) order by 5,1 ");break;

}break;

case CASE_ACTIVE_TRANSACTIONS:switch (version)

{

Page 75: Orastat line command

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/YYY Y - 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");strcat (dyn_sts,"se.sid SES, se.serial# SERIAL,rn.n ame,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/YYY Y - 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.n ame,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-miss es)/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,initia l_allocation INIT_ALLOC, \n");strcat (dyn_sts,"current_utilization CURR_UTILIZA,m ax_utilization MAX_UTILIZA, \n");strcat (dyn_sts,"limit_value LIMITE from v$resource _limit order by 4");

Page 76: Orastat line command

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 \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.4strcat (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_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s,0))/d.bytes)*100,0),'990.00') USED_PCT \n");

Page 77: Orastat line command

strcat (dyn_sts,"from sys.dba_data_files d, v$dataf ile v, (select file_id,sum(bytes) bytes \n");strcat (dyn_sts,"from sys.dba_free_space group by f ile_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_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s)*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_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s,0))/d.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_data_files d, v$dataf ile v, (select file_id,sum(bytes) bytes \n");strcat (dyn_sts,"from sys.dba_free_space group by f ile_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_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s)*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:

Page 78: Orastat line command

case VERSION_ORACLE_920:strcpy (dyn_sts,"select d.status ESTADO, d.tablespa ce_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.byte s,0))/a.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_tablespaces d, (selec t tablespace_name, sum(bytes) bytes \n");strcat (dyn_sts,"from dba_data_files group by table space_name) a, (select tablespace_name,sum(bytes) b ytes \n");strcat (dyn_sts,"from dba_free_space group by table space_name ) f \n");strcat (dyn_sts,"where d.tablespace_name=a.tablespa ce_name(+) and \n");strcat (dyn_sts,"d.tablespace_name = f.tablespace_n ame(+) and \n");strcat (dyn_sts,"not (d.extent_management like 'LOC AL' and d.contents LIKE 'TEMPORARY') \n");strcat (dyn_sts,"union all \n"); strcat (dyn_sts,"select d.status ESTADO, d.tablespa ce_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),'999 99999.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_nam e) 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_nam e (+) 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.tablespa ce_name TBLNAME,d.contents TIPO, \n");strcat (dyn_sts,"to_char(nvl((a.bytes/1024),0),'999 99999.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.byte s,0))/a.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_tablespaces d, (selec t tablespace_name, sum(bytes) bytes \n");strcat (dyn_sts,"from dba_data_files group by table space_name) a, (select tablespace_name,sum(bytes) b ytes \n");strcat (dyn_sts,"from dba_free_space group by table space_name ) f \n");strcat (dyn_sts,"where d.tablespace_name=a.tablespa ce_name(+) and \n");strcat (dyn_sts,"d.tablespace_name = f.tablespace_n ame(+) 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.tablespa ce_name TBLNAME,d.contents TIPO, \n");

Page 79: Orastat line command

strcat (dyn_sts,"to_char(nvl((a.bytes/1024),0),'999 99999.999') SIZE_KB, \n");strcat (dyn_sts,"to_char((nvl(t.bytes,0)/1024),'999 99999.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_nam e) 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_nam e (+) 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: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 - H H24:MI:SS') LOGON,s.status ESTADO, \n");strcat (dyn_sts,"s.process PROCESO, s.machine MAQUI NA, 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.add r=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 - H H24:MI:SS') LOGON,s.status ESTADO, \n");strcat (dyn_sts,"s.process PROCESO, s.machine MAQUI NA, 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.add r=s.paddr \n");strcat (dyn_sts,"order by LOGON, ESTADO \n");break;

}break;

case CASE_SESSIONS_WAITS:

Page 80: Orastat line command

strcpy (dyn_sts,"select sw.sid SES, sw.seq# SEQ, nv l(sw.wait_time,0) W_T, \n");strcat (dyn_sts,"nvl(sw.seconds_in_wait,0) S_W_T,nv l(se.username,'.') USUA, \n");strcat (dyn_sts,"nvl(se.status,'.') ESTA,sw.event E VENT, sw.state, sw.p1text, sw.p1, \n");strcat (dyn_sts,"sw.p1raw, sw.p2text, sw.p2, sw.p2r aw, 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, in itial_extent INI_EXT, next_extent NEX_EXT, \n");strcat (dyn_sts,"min_extents MIN_EXT, max_extents M AX_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 b y 1,2 \n");break;

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 TNA ME, 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/Y YYY - 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,tablespa ce_name,nvl(blocks,-1),nvl(num_rows,-1), \n");strcat (dyn_sts,"buffer_pool,nvl(to_char(last_analy zed,'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 TNA ME, 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");

Page 81: Orastat line command

strcat (dyn_sts,"group by owner,table_name,tablespa ce_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_anal yzed,'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, tables pace_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, tables pace_name, nvl(leaf_blocks,-1) \n");strcat (dyn_sts,"order by 1,2 \n");break;

}break;

case CASE_USER_DEFINED:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_sts,"select * from (select distinct use rname, account_status, expiry_date, \n");strcat (dyn_sts,"default_tablespace, temporary_tabl espace, 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(nu ll), '', '', \n");

Page 82: Orastat line command

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(nu ll), '----------', \n");strcat (dyn_sts,"'----------', '----------', to_cha r(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', statu s 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_n ame, a.bytes, \n");strcat (dyn_sts,"(b.maximum + c.blocks -1) * d.db_b lock_size highwater \n");strcat (dyn_sts,"from dba_data_files a, \n");strcat (dyn_sts,"(select file_id, max(block_id) max imum \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");strcat (dyn_sts,"and c.file_id = b.file_id \n");strcat (dyn_sts,"and c.block_id = b.maximum \n");strcat (dyn_sts,"order by a.bytes, a.tablespace_nam e, a.file_name \n");break;

Page 83: Orastat line command

case CASE_LIST_SORT_BY_USER:strcpy (dyn_sts,"select vss.value VALOR, substr(vsn .name,1,20) TYPE_SORT, \n");strcat (dyn_sts,"vs.sid SID, \n");strcat (dyn_sts,"substr(vs.osuser,1,20) OS_USER, su bstr(vs.username,1,20) DB_USER \n");strcat (dyn_sts,"from v$session vs, v$sesstat vss, v$statname vsn \n");strcat (dyn_sts,"where (vss.statistic# = vsn.statis tic#) and \n");strcat (dyn_sts,"(vs.sid = vss.sid ) and \n");strcat (dyn_sts,"(vsn.name like '%sort%') and \n");strcat (dyn_sts,"vss.value <> 0 \n");strcat (dyn_sts,"order by 1,2,3 \n");break;

case CASE_LIST_LOCK_STATUS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_sts,"select lo.addr, lo.kaddr, lo.sid S ES, lo.type TIP, \n");strcat (dyn_sts,"lo.id1 OBJID, lo.id2, \n");strcat (dyn_sts,"lo.lmode, \n");strcat (dyn_sts,"lo.request REQT, \n");strcat (dyn_sts,"(select ltrim(object_type) \n");strcat (dyn_sts,"from all_objects where object_id=l o.id1) OBJ_TYP, \n");strcat (dyn_sts,"(select ltrim(owner)||'.'||ltrim(o bject_name) \n");strcat (dyn_sts,"from all_objects where object_id=l o.id1) OWN_OBJ, \n");strcat (dyn_sts,"(select sid SES \n");strcat (dyn_sts,"from v$session where lockwait=lo.k addr) LOC_SID, \n");strcat (dyn_sts,"ctime \n");strcat (dyn_sts,"from v$lock lo \n");strcat (dyn_sts,"order by lo.sid \n");break;

case VERSION_ORACLE_734:strcpy (dyn_sts,"select lo.addr, lo.kaddr, lo.sid, \n");strcat (dyn_sts,"lo.type, lo.id1, lo.id2, \n");strcat (dyn_sts,"lo.lmode, \n");strcat (dyn_sts,"lo.request, \n");strcat (dyn_sts,"lo.id1, \n");strcat (dyn_sts,"lo.id1, \n");strcat (dyn_sts,"lo.kaddr, \n");strcat (dyn_sts,"lo.ctime \n");

Page 84: Orastat line command

strcat (dyn_sts,"from v$lock lo \n");strcat (dyn_sts,"order by lo.sid \n");break;

}break;

case CASE_LIST_USER_BY_CPU_USAGE:strcpy (dyn_sts,"select vs.sid, vs.serial#, vs.type , vs.osuser, \n");strcat (dyn_sts,"to_char(logon_time,'DD/MM/YYYY - H H24:MI:SS'), \n");

/* strcat (dyn_sts,"sysdate - logon_time, \n"); */strcat (dyn_sts,"vs.process, vs.machine, vs.usernam e, vss.value, \n");strcat (dyn_sts,"vs.program \n");strcat (dyn_sts,"from v$session vs, v$sesstat vss, v$statname vsn \n");strcat (dyn_sts,"where vss.statistic# = vsn.statist ic# and \n");strcat (dyn_sts,"vs.sid = vss.sid and \n");strcat (dyn_sts,"vsn.name = 'CPU used by this sessi on' \n");strcat (dyn_sts,"and vss.value <> 0 \n");strcat (dyn_sts,"order by 10 \n");break;

case CASE_SQL_STATEMENT_BY_THIS_USER:strcpy (dyn_sts,"select vsql.sql_text \n");strcat (dyn_sts,"from v$sqltext vsql \n");strcat (dyn_sts,"where vsql.address in ( select vse s.sql_address \n");strcat (dyn_sts,"from v$session vses \n");strcat (dyn_sts,"where vses.sid=");strcat (dyn_sts,opcion_uno);strcat (dyn_sts," )\n");strcat (dyn_sts,"order by vsql.piece \n");break;

case CASE_REDO_LOGS_STATUS:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_sts,"select group#, thread#, sequence#, bytes, members, \n");strcat (dyn_sts,"archived, status, first_change#, \ n");strcat (dyn_sts,"to_char(first_time,'DD/MM/YYYY - H H24:MI') \n");strcat (dyn_sts,"from v$log \n");break;

case VERSION_ORACLE_734:

Page 85: Orastat line command

strcpy (dyn_sts,"select group#, thread#, sequence#, bytes, members, \n");strcat (dyn_sts,"archived, status, first_change#, \ n");strcat (dyn_sts,"first_time \n");strcat (dyn_sts,"from v$log \n");break;

}break;

case CASE_ARCHIVED_LOGS_HISTORY:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_sts,"select thread#, sequence#, name, f irst_change#, \n");strcat (dyn_sts,"to_char (first_time,'DD/MM/YYYY - HH24:MI:SS'), \n");strcat (dyn_sts,"blocks, block_size, \n");strcat (dyn_sts,"to_char (completion_time,'DD/MM/YY YY - HH24:MI:SS') \n");strcat (dyn_sts,"from v$archived_log order by 6 \n" );break;

case VERSION_ORACLE_734:strcpy (dyn_sts,"select thread#, sequence#,time, \n ");strcat (dyn_sts,"low_change#, high_change#, archive _name \n");strcat (dyn_sts,"from v$log_history \n");break;

}break;

case CASE_REDO_LOG_RECOVERY_REPORT:strcpy (dyn_sts,"select a.group#, a.first_change#, b.member, a.sequence# \n");strcat (dyn_sts,"from v$log a, v$logfile b \n");strcat (dyn_sts,"where a.group# = b.group# \n");strcat (dyn_sts,"and a.status = 'CURRENT' \n");break;

case CASE_ARCHIVE_LOG_HISTROY:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_sts,"select thread#, sequence#, first_c hange#, \n");strcat (dyn_sts,"switch_change#, \n");

Page 86: Orastat line command

strcat (dyn_sts,"to_char(first_time,'DD/MM/YYYY - H H24:MI:SS') \n");strcat (dyn_sts,"from v$loghist \n");strcat (dyn_sts,"order by 5 \n");break;

case VERSION_ORACLE_734:strcpy (dyn_sts,"select thread#, sequence#, first_c hange#, \n");strcat (dyn_sts,"switch_change#, \n");strcat (dyn_sts,"first_time \n");strcat (dyn_sts,"from v$loghist \n");strcat (dyn_sts,"order by 5 \n");break;

}break;

case CASE_SESSION_LATCH_WAITS_SQL:strcpy (dyn_sts,"select sw.sid , nvl(se.username,'. ') , \n");strcat (dyn_sts,"nvl(se.status,'.') , sq.sql_text \ n");strcat (dyn_sts,"from v$session_wait sw, v$session se, v$sqltext sq \n");strcat (dyn_sts,"where sw.sid = se.sid and \n");strcat (dyn_sts,"se.sql_address = sq.address and \n ");strcat (dyn_sts,"se.sql_hash_value = sq.hash_value and \n");strcat (dyn_sts,"sw.event = 'latch_free' \n");strcat (dyn_sts,"order by 1 \n");break;

case CASE_SESSION_PROGRAM_RUNNING_SQL:strcpy (dyn_sts,"select substr(v2.sid,1,5), \n");strcat (dyn_sts,"substr(v2.username,1,30), \n");strcat (dyn_sts,"program, sql_text \n");strcat (dyn_sts,"from sys.v_$sqlarea v1, \n");strcat (dyn_sts,"sys.v_$session v2 \n");strcat (dyn_sts,"where v1.address = v2.sql_address and \n");strcat (dyn_sts,"v1.hash_value = v2.sql_hash_value \n");break;

case CASE_PRIVILEGES_BY_USER:strcpy (dyn_sts,"select decode (sa1.grantee#, 1, 'P UBLIC', u1.name), \n");strcat (dyn_sts,"substr (u2.name,1,25), substr(spm. name,1,40) \n");strcat (dyn_sts,"from sys.sysauth$ sa1, sys.sysauth $ sa2, sys.user$ u1, \n");strcat (dyn_sts,"sys.user$ u2, sys.system_privilege _map spm \n");strcat (dyn_sts,"where sa1.grantee# = u1.user# and \n");strcat (dyn_sts,"sa1.privilege# = u2.user# and \n") ;strcat (dyn_sts,"u2.user# = sa2.grantee# and \n");

Page 87: Orastat line command

strcat (dyn_sts,"sa2.privilege# = spm.privilege \n" );strcat (dyn_sts,"union \n");strcat (dyn_sts,"select u.name, NULL, substr(spm.na me,1,40) \n");strcat (dyn_sts,"from sys.system_privilege_map spm, sys.sysauth$ sa, \n");strcat (dyn_sts,"sys.user$ u \n");strcat (dyn_sts,"where sa.grantee#=u.user# and \n") ;strcat (dyn_sts,"sa.privilege# = spm.privilege \n") ;break;

case CASE_DETAILED_LOCKING_CAUSES:strcpy (dyn_sts,"select nvl(S.USERNAME,'Internal'), L.SID, nvl(S.TERMINAL,'None'),\n");strcat (dyn_sts,"decode(command, 0,'None',decode(l. id2,0,U1.NAME||'.'||substr(T1.NAME,1,20),'None')),\ n");strcat (dyn_sts,"command,\n");strcat (dyn_sts,"L.LMODE,L.REQUEST,\n");strcat (dyn_sts,"l.id1||'-'||l.id2, \n");strcat (dyn_sts,"l.type ||' - '|| l.type \n");strcat (dyn_sts,"from v$lock l, v$session s, sys.us er$ u1, sys.obj$ t1 \n");strcat (dyn_sts,"where l.sid = s.sid and t1.obj# = decode (l.id2,0,l.id1,1) and \n");strcat (dyn_sts,"u1.user# = t1.owner# and s.type != 'BACKGROUND' \n");

/* strcat (dyn_sts,"order by 1,5"); */break;

case CASE_CURRENT_STATISTICS_VALUES:strcpy (dyn_sts,"select statistic#, name, value \n" );strcat (dyn_sts,"from v$sysstat \n");strcat (dyn_sts,"order by name \n");break;

case CASE_TABLE_DESCRIPTION_USER_TABLENAME:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_sts,"select tablespace_name,owner, tabl e_name, \n");strcat (dyn_sts,"nvl(to_char (num_rows),\'(Null)\') , \n");strcat (dyn_sts,"nvl(to_char (last_analyzed,'YYYY/M M/DD-HH24:MI:SS'),\'(Null)\'), \n");strcat (dyn_sts,"initial_extent,next_extent,\n");strcat (dyn_sts,"min_extents,max_extents,pct_increa se,buffer_pool,\n");strcat (dyn_sts,"nvl(to_char (blocks),\'(Null)\'),\ n");strcat (dyn_sts,"freelists,pct_free,ini_trans,max_t rans,\n");strcat (dyn_sts,"freelist_groups \n");strcat (dyn_sts,"from dba_tables \n");

Page 88: Orastat line command

if ( (strlen (opcion_uno) > 0) && (strlen (opcion_d os) == 0) ){strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");}

else if ( (strlen(opcion_uno) == 0) && ( strlen (op cion_dos) > 0 )){strcat (dyn_sts,"where table_name = '");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

else if ( (strlen (opcion_uno) > 0) && ( strlen (op cion_dos) > 0 )){strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");strcat (dyn_sts,"and table_name = '");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

else strcat (dyn_sts,"\n");break;

case VERSION_ORACLE_734:strcpy (dyn_sts,"select tablespace_name,owner, tabl e_name, \n");strcat (dyn_sts,"nvl(to_char (num_rows),'(Null)'), \n");strcat (dyn_sts,"'(Null)', \n");strcat (dyn_sts,"initial_extent,next_extent,\n");strcat (dyn_sts,"min_extents,max_extents,pct_increa se,'(Null)',\n");strcat (dyn_sts,"nvl(to_char (blocks),'(Null)'),\n" );strcat (dyn_sts,"freelists,pct_free,ini_trans,max_t rans,\n");strcat (dyn_sts,"freelist_groups \n");strcat (dyn_sts,"from dba_tables \n");if ( (strlen (opcion_uno) > 0) && (strlen (opcion_d os) == 0) )

{strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");}

else if ( (strlen(opcion_uno) == 0) && ( strlen (op cion_dos) > 0 ))

Page 89: Orastat line command

{strcat (dyn_sts,"where table_name = '");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

else if ( (strlen (opcion_uno) > 0) && ( strlen (op cion_dos) > 0 )){strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");strcat (dyn_sts,"and table_name = '");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

else strcat (dyn_sts,"\n");break;

}break;

case CASE_INDEX_DESCRIPTION_USER_INDEXNAME:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_sts,"select owner,index_name,table_owne r, \n");strcat (dyn_sts,"table_name,table_type,uniqueness,t ablespace_name, \n");strcat (dyn_sts,"ini_trans,max_trans,initial_extent ,next_extent, \n");strcat (dyn_sts,"min_extents,max_extents,pct_increa se,freelists, \n");strcat (dyn_sts,"freelist_groups,pct_free,blevel,le af_blocks \n");strcat (dyn_sts,"from dba_indexes \n");if ( (strlen (opcion_uno) > 0) && (strlen (opcion_d os) == 0) )

{strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");}

else if ( (strlen(opcion_uno) == 0) && ( strlen (op cion_dos) > 0 )){strcat (dyn_sts,"where index_name = '");strcat (dyn_sts,opcion_dos);

Page 90: Orastat line command

strcat (dyn_sts,"' \n");}

else if ( (strlen (opcion_uno) > 0) && ( strlen (op cion_dos) > 0 )){strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");strcat (dyn_sts,"and index_name = '");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

else strcat (dyn_sts,"\n");break;

case VERSION_ORACLE_734:strcpy (dyn_sts,"select owner,index_name,table_owne r, \n");strcat (dyn_sts,"table_name,table_type,uniqueness,t ablespace_name, \n");strcat (dyn_sts,"ini_trans,max_trans,initial_extent ,next_extent, \n");strcat (dyn_sts,"min_extents,max_extents,pct_increa se,freelists, \n");strcat (dyn_sts,"freelist_groups,pct_free,blevel,le af_blocks \n");strcat (dyn_sts,"from dba_indexes \n");if ( (strlen (opcion_uno) > 0) && (strlen (opcion_d os) == 0) )

{strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");}

else if ( (strlen(opcion_uno) == 0) && ( strlen (op cion_dos) > 0 )){strcat (dyn_sts,"where index_name = '");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

else if ( (strlen (opcion_uno) > 0) && ( strlen (op cion_dos) > 0 )){strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");strcat (dyn_sts,"and index_name = '");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");

Page 91: Orastat line command

}else strcat (dyn_sts,"\n");

}break;

case CASE_CURRENT_ACTIVITY_REPORT:strcpy (dyn_sts,"SELECT address, buffer_gets, execu tions, ");strcat (dyn_sts,"round(buffer_gets/executions), SUB STR(sql_text,1,150) ");strcat (dyn_sts,"FROM v$sqlarea WHERE executions > 0 AND ");strcat (dyn_sts,"buffer_gets > 10000 ORDER BY 3 des c, 3 desc \n");break;

case CASE_DICTIONARY_TABLE_COMMENTS:strcpy (dyn_sts,"SELECT TABLE_NAME, COMMENTS \n");strcat (dyn_sts,"FROM DICT ORDER BY 1 \n");break;

case CASE_DICTIONARY_TABLE_COLUMNS_DESCRIP:strcpy (dyn_sts,"SELECT /*+ RULE */ DC.TABLE_NAME, DC.COLUMN_NAME, DC.COMMENTS, ");strcat (dyn_sts,"TC.DATA_TYPE || DECODE( TC.DATA_TY PE, 'NUMBER', ");strcat (dyn_sts,"DECODE(TC.DATA_PRECISION,NULL,NULL ,' (' || TC.DATA_PRECISION || ");strcat (dyn_sts,"DECODE( TC.DATA_SCALE, NULL, NULL, ',' || TC.DATA_SCALE) || ')'), ");strcat (dyn_sts,"'VARCHAR2', ' (' || TC.DATA_LENGT H || ')', 'CHAR', ' (' || ");strcat (dyn_sts,"TC.DATA_LENGTH || ')', NULL) SQ L_TYPE, ");strcat (dyn_sts,"DECODE ( TC.DATA_TYPE, 'VARCHAR2', 0, 'CHAR', 0, 'NUMBER', 1, 'DATE', ");strcat (dyn_sts,"2 ,'LONG', 3, 'RAW', 4, 'LONG ROW' , 5, 'MLSLABEL', 6, -1) IMAGE_INDEX, ");strcat (dyn_sts,"TC.COLUMN_ID, TC.DATA_TYPE \n");strcat (dyn_sts,"FROM ALL_COL_COMMENTS DC, \n");strcat (dyn_sts,"( SELECT S.SYNONYM_NAME, S.TABLE_N AME, C.COLUMN_NAME, C.DATA_TYPE, ");strcat (dyn_sts,"C.DATA_PRECISION, C.DATA_SCALE, C. DATA_LENGTH, C.COLUMN_ID ");strcat (dyn_sts,"FROM SYS.ALL_TAB_COLUMNS C, SYS.AL L_SYNONYMS S ");strcat (dyn_sts,"WHERE C.OWNER = S.TABLE_OWNER AND C.OWNER = 'SYS' AND ");strcat (dyn_sts,"S.TABLE_OWNER = 'SYS' AND C.TABLE_ NAME = S.TABLE_NAME AND ");

/* -------------------------- hacer referencia a va riable host --------------------- */strcat (dyn_sts,"S.OWNER = 'PUBLIC' ");if ( (strlen (opcion_uno) > 0) )

{strcat (dyn_sts,"AND S.SYNONYM_NAME ='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");}

/* ------------------------------------------------ --------------------------------- */strcat (dyn_sts,"UNION ");

Page 92: Orastat line command

strcat (dyn_sts,"SELECT C.TABLE_NAME SYNONYM_NAME, C.TABLE_NAME, C.COLUMN_NAME, ");strcat (dyn_sts,"C.DATA_TYPE, C.DATA_PRECISION, C.D ATA_SCALE, C.DATA_LENGTH, ");strcat (dyn_sts,"C.COLUMN_ID ");strcat (dyn_sts,"FROM SYS.ALL_TAB_COLUMNS C ");

/* -------------------------- hacer referencia a va riable host --------------------- *//* strcat (dyn_sts,"WHERE C.OWNER = 'SYS' AND C.TAB LE_NAME = :TABLE_NAME ) TC \n"); */strcat (dyn_sts,"WHERE C.OWNER = 'SYS' ");if ( (strlen (opcion_uno) > 0) )

{strcat (dyn_sts,"AND C.TABLE_NAME = '");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ) TC \n");}

else{strcat (dyn_sts," ) TC \n");}

/* ------------------------------------------------ --------------------------------- *//* -------------------------- hacer referencia a va riable host --------------------- */

strcat (dyn_sts,"WHERE DC.OWNER = 'SYS' \n");/**** --AND DC.TABLE_NAME = 'ALL_OBJECTS' \n"); *** */strcat (dyn_sts,"AND ");

/* ------------------------------------------------ --------------------------------- *//* -------------------------- hacer referencia a va riable host --------------------- */

strcat (dyn_sts,"TC.TABLE_NAME = DC.TABLE_NAME AND ");if ( (strlen (opcion_uno) > 0) )

{strcat (dyn_sts,"TC.SYNONYM_NAME = '");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' AND \n");}

/* ------------------------------------------------ --------------------------------- */strcat (dyn_sts,"TC.COLUMN_NAME = DC.COLUMN_NAME \n");strcat (dyn_sts,"ORDER BY DC.TABLE_NAME, COLUMN_ID \n");break;

case CASE_SGA_STATISTIC_GENERAL:strcpy (dyn_sts,"SELECT NUM, NAME, VALUE, ISDEFAULT , ISMODIFIED, ISADJUSTED, \n");strcat (dyn_sts,"DECODE( TYPE, 1, 'Boolean', 2, 'st ring', 3, 'integer', ");strcat (dyn_sts,"4, 'file', 6, 'big integer', TO_CH AR(TYPE)) TYPE, ");strcat (dyn_sts,"DECODE(ISSES_MODIFIABLE, 'TRUE', ' yes', NULL) ISSES_MODIFIABLE, ");

Page 93: Orastat line command

strcat (dyn_sts,"DECODE(ISSYS_MODIFIABLE, 'IMMEDIAT E', 'immediate', 'DEFERRED', ");strcat (dyn_sts,"'deferred', NULL) ISSYS_MODIFIABLE , DESCRIPTION \n");strcat (dyn_sts,"FROM sys.V_$PARAMETER \n");strcat (dyn_sts,"where (name = 'shared_pool_size' o r name = 'large_pool_size' or ");strcat (dyn_sts,"name = 'create_bitmap_area_size' o r name = 'java_pool_size' or ");strcat (dyn_sts,"name = 'sort_area_retained_size' o r name = 'sort_area_size' or ");strcat (dyn_sts,"name = 'db_block_buffers' or name = 'db_block_lru_latches' or ");strcat (dyn_sts,"name = 'db_block_size' or name = 'buffer_pool_keep' or ");strcat (dyn_sts,"name = 'buffer_pool_recycle') ");strcat (dyn_sts,"ORDER BY NUM \n");break;

case CASE_SGA_STATISTIC_MEMORY_USAGE:strcpy (dyn_sts,"SELECT 'shared pool', SS.NAME, SS. BYTES/1024, ");strcat (dyn_sts,"100 * SS.BYTES / S.VALUE ,S.VALUE ");strcat (dyn_sts,"FROM sys.V_$SGASTAT SS, sys.V_$SGA S ");strcat (dyn_sts,"WHERE S.NAME = 'Variable Size' ") ;strcat (dyn_sts,"ORDER BY 1 desc, 3 DESC \n");break;

case CASE_SGA_STATISTIC_INFORMATION:strcpy (dyn_sts,"SELECT NAME, VALUE/1024 VALUE ");strcat (dyn_sts,"FROM sys.V_$SGA \n");break;

case CASE_ROW_CACHE_INFORMATION:strcpy (dyn_sts,"SELECT CACHE#, SUBORDINATE#, PARAM ETER, GETS, ");strcat (dyn_sts,"GETMISSES, ");strcat (dyn_sts,"to_number(decode( GETS, 0, null, 1 00 * nvl(GETMISSES,0) / GETS)) ");strcat (dyn_sts,"SCANS, SCANMISSES, SCANCOMPLETES, \n");strcat (dyn_sts,"to_number(decode( SCANS, 0, NULL, 100 * nvl(SCANMISSES,0) / SCANS)) ");

strcat (dyn_sts,"COUNT, USAGE, FIXED, F LUSHES, MODIFICATIONS ");strcat (dyn_sts,"FROM sys.V_$ROWCACHE ");strcat (dyn_sts,"ORDER BY GETMISSES,GETS \n");break;

case CASE_PERFORMANCE_DISK_I_O:strcpy (dyn_sts,"SELECT SUBSTR(NAME,1,255) NAME, \ n");strcat (dyn_sts,"DECODE(READTIM,0,PHYBLKRD, READTIM ) READS, ");strcat (dyn_sts,"DECODE(WRITETIM,0,PHYBLKWRT, WRITE TIM) WRITES, ");strcat (dyn_sts,"DECODE(READTIM+WRITETIM,0,PHYBLKRD +PHYBLKWRT, ");strcat (dyn_sts,"READTIM+WRITETIM) \n");strcat (dyn_sts,"FROM SYS.V_$DATAFILE DF, SYS.V_$FI LESTAT FS ");strcat (dyn_sts,"WHERE DF.FILE# = FS.FILE# \n");

Page 94: Orastat line command

strcat (dyn_sts,"ORDER BY 4 \n");break;

case CASE_RECURSIVE_CALLS:strcpy (dyn_sts,"SELECT NAME, VALUE \n");strcat (dyn_sts,"FROM SYS.V_$SYSSTAT \n");strcat (dyn_sts,"WHERE NAME IN ('execute count', 'r ecursive calls') \n");strcat (dyn_sts,"ORDER BY 1 \n");break;

case CASE_SYSTEM_EVENTS:strcpy (dyn_sts,"SELECT EVENT, TOTAL_WAITS, TOTAL_T IMEOUTS, \n");strcat (dyn_sts,"TIME_WAITED, AVERAGE_WAIT \n");strcat (dyn_sts,"FROM SYS.V_$SYSTEM_EVENT \n");strcat (dyn_sts,"ORDER BY TOTAL_WAITS, TIME_WAITED \n");break;

/* ------------------------------------------------ -------------- *//*

#define CASE_SQL_AREA_ALL_ENTRIES 52*/

case CASE_SQL_AREA_ALL_ENTRIES:strcpy (dyn_sts,"SELECT TO_NUMBER(DECODE( A.EXECUTI ONS, NULL,");strcat (dyn_sts,"NULL, 0, NULL, A.BUFFER_GETS/A.EXE CUTIONS)) AVG_GETS,");strcat (dyn_sts,"A.SQL_TEXT, A.SHARABLE_MEM, A.PERS ISTENT_MEM,");strcat (dyn_sts,"A.RUNTIME_MEM, A.SORTS, A.VERSION_ COUNT, A.LOADED_VERSIONS,");strcat (dyn_sts,"A.OPEN_VERSIONS, A.USERS_OPENING, A.EXECUTIONS, ");strcat (dyn_sts,"A.USERS_EXECUTING, A.LOADS, A.FIRS T_LOAD_TIME, ");strcat (dyn_sts,"A.INVALIDATIONS, A.PARSE_CALLS, A. DISK_READS, ");strcat (dyn_sts,"A.BUFFER_GETS, rawtohex(A.ADDRESS) SQL_ADDRESS, ");strcat (dyn_sts,"A.HASH_VALUE SQL_HASH_VALUE, A.ROW S_PROCESSED, ");strcat (dyn_sts,"A.COMMAND_TYPE, A.OPTIMIZER_MODE, PU.USERNAME PARSING_USER,");strcat (dyn_sts,"PS.USERNAME PARSING_SCHEMA, A.KEPT _VERSIONS, A.MODULE,");strcat (dyn_sts,"A.ACTION, A.SERIALIZABLE_ABORTS \n ");strcat (dyn_sts,"FROM sys.V_$SQLAREA A, SYS.ALL_USE RS PU, SYS.ALL_USERS PS \n");strcat (dyn_sts,"WHERE PU.USER_ID = A.PARSING_USER_ ID AND ");strcat (dyn_sts,"PS.USER_ID = A.PARSING_SCHEMA_ID \ n");strcat (dyn_sts,"ORDER BY sharable_mem+persistent_m em+runtime_mem desc \n");break;/*

#define CASE_SQL_AREA_CPU_USAGE 53*/

Page 95: Orastat line command

case CASE_SQL_AREA_CPU_USAGE:strcpy (dyn_sts,"SELECT TO_NUMBER(DECODE( A.EXECUTI ONS, NULL, NULL,");strcat (dyn_sts,"0, NULL, A.BUFFER_GETS/A.EXECUTION S)) AVG_GETS, ");strcat (dyn_sts,"A.SQL_TEXT, A.SHARABLE_MEM, A.PERS ISTENT_MEM, ");strcat (dyn_sts,"A.RUNTIME_MEM, A.SORTS, A.VERSION_ COUNT, ");strcat (dyn_sts,"A.LOADED_VERSIONS, A.OPEN_VERSIONS , A.USERS_OPENING,");strcat (dyn_sts,"A.EXECUTIONS, A.USERS_EXECUTING, A .LOADS, ");strcat (dyn_sts,"A.FIRST_LOAD_TIME, A.INVALIDATIONS , A.PARSE_CALLS,");strcat (dyn_sts,"A.DISK_READS, A.BUFFER_GETS, rawto hex(A.ADDRESS) SQL_ADDRESS,");strcat (dyn_sts,"A.HASH_VALUE SQL_HASH_VALUE, A.ROW S_PROCESSED, ");strcat (dyn_sts,"A.COMMAND_TYPE, A.OPTIMIZER_MODE, PU.USERNAME PARSING_USER,");strcat (dyn_sts,"PS.USERNAME PARSING_SCHEMA, A.KEPT _VERSIONS, ");strcat (dyn_sts,"A.MODULE, A.ACTION, A.SERIALIZABLE _ABORTS \n");strcat (dyn_sts,"FROM sys.V_$SQLAREA A, SYS.ALL_USE RS PU, ");strcat (dyn_sts,"SYS.ALL_USERS PS, v$session s \n") ;strcat (dyn_sts,"WHERE PU.USER_ID = A.PARSING_USER_ ID AND ");strcat (dyn_sts,"PS.USER_ID = A.PARSING_SCHEMA_ID a nd ");strcat (dyn_sts,"(s. sid in (SELECT sid FROM V$SESS TAT ");strcat (dyn_sts,"WHERE STATISTIC# = 12 and value > 0) and ");strcat (dyn_sts,"a.executions > 0 and s.sql_address = a.address) \n");strcat (dyn_sts,"ORDER BY sharable_mem+persistent_m em+runtime_mem desc \n");break;/*

#define CASE_SQL_AREA_MEMORY_USAGE 54*/

case CASE_SQL_AREA_MEMORY_USAGE:strcpy (dyn_sts,"SELECT MAX(TO_NUMBER(DECODE( A.EXE CUTIONS, NULL,");strcat (dyn_sts,"NULL, 0, NULL, A.BUFFER_GETS/A.EXE CUTIONS))) AVG_GETS,");strcat (dyn_sts,"MAX(A.SHARABLE_MEM) SHARABLE_MEM, ");strcat (dyn_sts,"MAX(A.PERSISTENT_MEM) PERSISTENT_M EM, ");strcat (dyn_sts,"MAX(A.RUNTIME_MEM) RUNTIME_MEM, MA X(A.SORTS) SORTS, ");strcat (dyn_sts,"MAX(A.VERSION_COUNT) VERSION_COUNT , ");strcat (dyn_sts,"MAX(A.LOADED_VERSIONS) LOADED_VERS IONS, ");strcat (dyn_sts,"MAX(A.OPEN_VERSIONS) OPEN_VERSIONS , ");strcat (dyn_sts,"MAX(A.USERS_OPENING) USERS_OPENING , ");strcat (dyn_sts,"MAX(A.EXECUTIONS) EXECUTIONS, ");strcat (dyn_sts,"MAX(A.USERS_EXECUTING) USERS_EXECU TING, MAX(A.LOADS) LOADS,");strcat (dyn_sts,"MAX(A.INVALIDATIONS) INVALIDATIONS ,MAX(A.PARSE_CALLS) PARSE_CALLS, ");strcat (dyn_sts,"MAX(A.DISK_READS) DISK_READS,MAX(A .BUFFER_GETS) BUFFER_GETS, ");strcat (dyn_sts,"MAX(A.ROWS_PROCESSED) ROWS_PROCESS ED, MAX(A.KEPT_VERSIONS) KEPT_VERSIONS, ");

Page 96: Orastat line command

strcat (dyn_sts,"MAX(A.SERIALIZABLE_ABORTS) SERIALI ZABLE_ABORTS \n");strcat (dyn_sts,"FROM sys.V_$SQLAREA A \n");break;/*

#define CASE_SQL_AREA_BUFFER_GET_SUM 55*/

case CASE_SQL_AREA_BUFFER_GET_SUM:strcpy (dyn_sts,"SELECT TO_NUMBER(DECODE( A.EXECUTI ONS, NULL, NULL, 0, ");strcat (dyn_sts,"NULL, A.BUFFER_GETS/A.EXECUTIONS)) AVG_GETS, A.SQL_TEXT, ");strcat (dyn_sts,"A.SHARABLE_MEM, A.PERSISTENT_MEM, A.RUNTIME_MEM, A.SORTS, ");strcat (dyn_sts,"A.VERSION_COUNT, A.LOADED_VERSIONS , A.OPEN_VERSIONS, ");strcat (dyn_sts,"A.USERS_OPENING, A.EXECUTIONS, A.U SERS_EXECUTING, ");strcat (dyn_sts,"A.LOADS, A.FIRST_LOAD_TIME, A.INVA LIDATIONS, A.PARSE_CALLS,");strcat (dyn_sts,"A.DISK_READS, A.BUFFER_GETS, rawto hex(A.ADDRESS) SQL_ADDRESS, ");strcat (dyn_sts,"A.HASH_VALUE SQL_HASH_VALUE, A.ROW S_PROCESSED, ");strcat (dyn_sts,"A.COMMAND_TYPE, A.OPTIMIZER_MODE, PU.USERNAME PARSING_USER,");strcat (dyn_sts,"PS.USERNAME PARSING_SCHEMA, A.KEPT _VERSIONS, A.MODULE, ");strcat (dyn_sts,"A.ACTION, A.SERIALIZABLE_ABORTS \n ");strcat (dyn_sts,"FROM sys.V_$SQLAREA A, SYS.ALL_USE RS PU, SYS.ALL_USERS PS ");strcat (dyn_sts,"WHERE PU.USER_ID = A.PARSING_USER_ ID AND ");strcat (dyn_sts,"PS.USER_ID = A.PARSING_SCHEMA_ID a nd ");strcat (dyn_sts,"buffer_gets > 1282729/10 \n");strcat (dyn_sts,"ORDER BY buffer_gets desc \n");break;/*

#define CASE_INIT_PARAMETERS_VALUES_STATUS 56*/

case CASE_INIT_PARAMETERS_VALUES_STATUS:strcpy (dyn_sts,"SELECT NUM, NAME, VALUE, ISDEFAULT , ISMODIFIED, ");strcat (dyn_sts,"ISADJUSTED, DECODE( TYPE, 1, 'Bool ean', 2, 'string',");strcat (dyn_sts,"3, 'integer', 4, 'file', 6, 'big i nteger', ");strcat (dyn_sts,"TO_CHAR(TYPE)) TYPE, DECODE(ISSES_ MODIFIABLE, ");strcat (dyn_sts,"'TRUE', 'yes', NULL) ISSES_MODIFIA BLE, ");strcat (dyn_sts,"DECODE(ISSYS_MODIFIABLE, 'IMMEDIAT E', 'immediate', ");strcat (dyn_sts,"'DEFERRED', 'deferred', NULL) ISS YS_MODIFIABLE, ");strcat (dyn_sts,"DESCRIPTION \n");strcat (dyn_sts,"FROM sys.V_$PARAMETER \n");strcat (dyn_sts,"ORDER BY NUM \n");break;

Page 97: Orastat line command

/* ------------------------------------------------ -------------- */

case CASE_TABLESPACE_FRAGMENTATION:strcpy (dyn_sts,"SELECT TABLESPACE_NAME, BYTES/1024 KBYTES, ");strcat (dyn_sts,"COUNT( *) NUM_EXTENTS, SUM(BYTES) / 1024 SUM_KBYTES, ");strcat (dyn_sts,"'Used Extents' USAGE, ");

/* strcat (dyn_sts,"DECODE( BYTES, :INITIAL_EXTENT,' INITIAL_SIZE','CHANGED_SIZE'), "); */strcat (dyn_sts,"TO_CHAR(BYTES,'99999999999'), ");strcat (dyn_sts,"BYTES ");

/* strcat (dyn_sts,"FILE_ID, EXTENT_ID "); */strcat (dyn_sts,"FROM SYS.DBA_EXTENTS \n");if ( strlen (opcion_uno) > 0 )

{strcat (dyn_sts,"WHERE TABLESPACE_NAME = '");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' \n");}

strcat (dyn_sts,"GROUP BY TABLESPACE_NAME, BYTES/10 24, ");/* strcat (dyn_sts,"DECODE( BYTES, :INITIAL_EXTENT,' INITIAL_SIZE','CHANGED_SIZE'), "); */

strcat (dyn_sts,"BYTES,");strcat (dyn_sts,"BYTES ");

/* strcat (dyn_sts,"FILE_ID, EXTENT_ID "); */strcat (dyn_sts,"\n");strcat (dyn_sts,"UNION ");strcat (dyn_sts,"SELECT TABLESPACE_NAME, BYTES/1024 KBYTES, ");strcat (dyn_sts,"COUNT (*) NUM_EXTENTS, SUM(BYTES)/ 1024 SUM_KBYTES, ");strcat (dyn_sts,"'Free Chunks' USAGE, ");strcat (dyn_sts,"'0'CERO, ");strcat (dyn_sts,"to_number(null) bytes ");

/* strcat (dyn_sts,"to_number(null),to_number(null) \n"); */strcat (dyn_sts,"FROM SYS.DBA_FREE_SPACE ");if ( strlen (opcion_uno) > 0 )

{strcat (dyn_sts,"WHERE TABLESPACE_NAME = '");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' \n");}

strcat (dyn_sts,"GROUP BY TABLESPACE_NAME, BYTES/10 24 ");strcat (dyn_sts,"ORDER BY 1,2,3 \n");break;

Page 98: Orastat line command

case CASE_SHOW_NLS_PARAMETERS:strcpy (dyn_sts,"select p.name, d.VALUE value_datab ase, ");strcat (dyn_sts,"i.VALUE value_instance,s.VALUE val ue_session, ");strcat (dyn_sts,"p.comment$ comments \n");strcat (dyn_sts,"from sys.props$ p, nls_session_par ameters s, ");strcat (dyn_sts,"nls_database_parameters d, nls_ins tance_parameters i ");strcat (dyn_sts,"where p.name = s.PARAMETER (+) and ");strcat (dyn_sts,"p.name = d.PARAMETER (+) and p.nam e = i.PARAMETER (+) \n");break;

case CASE_CONTROL_FILES_STATUS:strcpy (dyn_sts,"SELECT NAME, NVL( STATUS, 'OK') S TATUS \n");strcat (dyn_sts,"FROM sys.V_$CONTROLFILE \n");break;

case CASE_SORT_SEGMENTS_USERS:strcpy (dyn_sts,"SELECT TABLESPACE_NAME, SEGMENT_FI LE, SEGMENT_BLOCK, ");strcat (dyn_sts,"EXTENT_SIZE, CURRENT_USERS, TOTAL_ EXTENTS, ");strcat (dyn_sts,"TOTAL_BLOCKS, USED_EXTENTS, USED_B LOCKS, FREE_EXTENTS,");strcat (dyn_sts,"FREE_BLOCKS, ADDED_EXTENTS, EXTENT _HITS, FREED_EXTENTS,");strcat (dyn_sts,"FREE_REQUESTS, MAX_SIZE, MAX_BLOCK S, MAX_USED_SIZE, ");strcat (dyn_sts,"MAX_USED_BLOCKS, MAX_SORT_SIZE, MA X_SORT_BLOCKS, ");strcat (dyn_sts,"'TO_NUMBER(NULL) RELATIVE_FNO' \n" );strcat (dyn_sts,"FROM SYS.V_$SORT_SEGMENT \n");if ( strlen (opcion_uno) > 0 )

{strcat (dyn_sts,"WHERE TABLESPACE_NAME = '");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' \n");}

strcat (dyn_sts,"ORDER BY TABLESPACE_NAME,SEGMENT_F ILE \n");break;

case CASE_ORACLE_QUOTAS:strcpy (dyn_sts,"SELECT Q.TABLESPACE_NAME, Q.USERNA ME, Q.BYTES/1024 KBYTES, ");strcat (dyn_sts,"DECODE( Q.MAX_BYTES, -1, -1, Q.MAX _BYTES/1024) MAX_KBYTES, ");strcat (dyn_sts,"Q.BLOCKS, DECODE( Q.MAX_BLOCKS, -1 , -1, Q.MAX_BLOCKS) MAX_BLOCKS, ");strcat (dyn_sts,"TO_NUMBER(DECODE( Q.MAX_BYTES, -1, NULL, 100*Q.BYTES/Q.MAX_BYTES)) USAGE_PERCENT ");strcat (dyn_sts,"FROM SYS.DBA_TS_QUOTAS Q \n");if ( strlen (opcion_uno) > 0 )

{strcat (dyn_sts,"WHERE TABLESPACE_NAME = '");strcat (dyn_sts,opcion_uno);

Page 99: Orastat line command

strcat (dyn_sts,"' \n");}

strcat (dyn_sts,"ORDER BY TABLESPACE_NAME \n");break;

case CASE_TABLE_GENERAL_DESCRIPTION:strcpy (dyn_sts,"SELECT SEL.*, COMMENTS ");strcat (dyn_sts,"FROM ( ");strcat (dyn_sts,"SELECT O.OWNER, O.OBJECT_NAME TABL E_NAME, O.OBJECT_TYPE, ");strcat (dyn_sts,"O.OBJECT_TYPE R_OBJECT_TYPE, DECOD E( O.OBJECT_TYPE, 'TABLE', 0, 'VIEW', 1, 5) IMAGE_I NDEX, ");strcat (dyn_sts,"O.OBJECT_NAME NAME, O.OWNER SYNONY M_OWNER, O.CREATED, O.LAST_DDL_TIME, O.STATUS, ");strcat (dyn_sts,"T.TABLESPACE_NAME, T.PCT_FREE, T.P CT_USED, T.PCT_INCREASE, T.NEXT_EXTENT / 1024 NEXT_ EXTENT, ");strcat (dyn_sts,"T.INI_TRANS, T.MAX_TRANS, T.INITIA L_EXTENT / 1024 INITIAL_EXTENT, T.MIN_EXTENTS, ");strcat (dyn_sts,"T.MAX_EXTENTS, T.FREELISTS, T.FREE LIST_GROUPS, T.BACKED_UP, T.NUM_ROWS, T.BLOCKS, ");strcat (dyn_sts,"T.EMPTY_BLOCKS, T.AVG_SPACE, T.CHA IN_CNT, T.AVG_ROW_LEN, T.DEGREE, T.INSTANCES, ");strcat (dyn_sts,"LTRIM(T.CACHE) CACHE, TO_DATE(NULL ) LAST_ANALYZED, 'YES' LOGGING, 'NO' PARTITIONED, ");strcat (dyn_sts,"'DEFAULT' BUFFER_POOL, ' ' IOT_NA ME, ' ' IOT_TYPE, ' ' TABLE_LOCK, ");strcat (dyn_sts,"' ' NESTED, TO_NUMBER(0) AVG_SPAC E_FREELIST_BLOCKS, TO_NUMBER(NULL) NUM_FREELIST_BLOCKS, ");strcat (dyn_sts,"TO_NUMBER(NULL) SAMPLE_SIZE, null table_type_owner, null table_type, ' ' SECONDARY, " );strcat (dyn_sts,"' ' ROW_MOVEMENT, ' ' GLOBAL_STATS , ' ' USER_STATS, ' ' DURATION, ' ' SKIP_CORRUPT, " );strcat (dyn_sts,"' ' MONITORING, 'N' TEMPORARY \n") ;strcat (dyn_sts,"FROM SYS.ALL_OBJECTS O, ALL_TABLES T \n");strcat (dyn_sts,"WHERE \n");if ( strlen (opcion_uno) > 0 )

{strcat (dyn_sts,"O.OWNER = '");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' AND T.OWNER = '");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' AND \n");}

strcat (dyn_sts,"T.TABLE_NAME = O.OBJECT_NAME AND O .OBJECT_TYPE = 'TABLE' \n");strcat (dyn_sts,") SEL, SYS.ALL_TAB_COMMENTS C \n") ;strcat (dyn_sts,"WHERE C.OWNER = SEL.OWNER AND C. TABLE_NAME = SEL.TABLE_NAME AND \n");strcat (dyn_sts,"SEL.OBJECT_TYPE = 'TABLE' \n");strcat (dyn_sts,"ORDER BY NLSSORT(SEL.NAME,'NLS_SOR T=BINARY') \n");break;

case CASE_TABLE_COLUMN_DESCRIPTION:strcpy (dyn_sts,"select c.owner,c.table_name,column _name \n");strcat (dyn_sts,"from sys.all_cons_columns cc, sys. all_constraints c ");strcat (dyn_sts,"where cc.owner = c.owner \n");

Page 100: Orastat line command

if ( strlen (opcion_uno) > 0 ){strcat (dyn_sts,"and c.owner = '");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' and cc.owner = '");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' \n");}

strcat (dyn_sts,"and cc.constraint_name = c.constra int_name and ");if ( strlen (opcion_dos) > 0 ){strcat (dyn_sts,"c.table_name = '");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' AND \n");}

strcat (dyn_sts,"c.constraint_type = 'P' \n");strcat (dyn_sts,"order by c.owner,c.table_name,cc.p osition \n");break;

case CASE_TABLE_CONSTRAINTS:strcpy (dyn_sts,"SELECT DISTINCT C1.POSITION, SUBST R(C1.COLUMN_NAME,1,30) COLUMN_NAME, ");strcat (dyn_sts,"C2.TABLE_NAME, SUBSTR(C2.COLUMN_NA ME,1,30) R_COLUMN_NAME, ");strcat (dyn_sts,"DATA_TYPE || DECODE(DATA_TYPE,'NUM BER',DECODE( DATA_PRECISION, NULL, ");strcat (dyn_sts,"NULL, ' (' ||DATA_PRECISION || DEC ODE( DATA_SCALE, NULL, NULL, ',' || DATA_SCALE) || ')'), ");strcat (dyn_sts,"'VARCHAR2', ' (' || DATA_LENGTH | | ')', 'CHAR', ' (' || DATA_LENGTH || ')', N ULL) SQL_TYPE, ");strcat (dyn_sts,"DECODE( C.NULLABLE, 'N', 'NOT NULL ', NULL) NULLABLE, ");strcat (dyn_sts,"DECODE( DATA_TYPE, 'VARCHAR2', 0, 'CHAR', 0, 'NUMBER', 1, 'DATE', 2, ");strcat (dyn_sts,"'LONG', 3, 'RAW', 4, 'LONG RAW', 5 , 'MLSLABEL', 6, -1) IMAGE_INDEX \n");strcat (dyn_sts,"FROM SYS.ALL_TAB_COLUMNS C, SYS.AL L_CONS_COLUMNS C1, SYS.ALL_CONS_COLUMNS C2 \n");strcat (dyn_sts,"WHERE C1.OWNER = :OWNER AND C1.CO NSTRAINT_NAME = :CONSTRAINT_NAME AND \n");strcat (dyn_sts,"C1.TABLE_NAME = :TABLE_NAME AND C. OWNER = :OWNER AND ");strcat (dyn_sts,"C.TABLE_NAME = :TABLE_NAME AND C .OWNER = C1.OWNER AND C.TABLE_NAME = C1.TABLE_NAM E ");strcat (dyn_sts,"AND C.COLUMN_NAME = C1.COLUMN_NAME AND C2.OWNER = :R_OWNER AND C2.CONSTRAINT_NAME = : R_CONSTRAINT_NAME ");strcat (dyn_sts,"AND C2.TABLE_NAME = :R_TABLE_NAME AND C1.POSITION= C2.POSITION \n");strcat (dyn_sts,"UNION \n");strcat (dyn_sts,"SELECT DISTINCT C1.POSITION, SUBST R(C1.COLUMN_NAME,1,30) COLUMN_NAME, NULL TABLE_NAME, ");strcat (dyn_sts,"NULL R_COLUMN_NAME, DATA_TYPE || D ECODE( DATA_TYPE, 'NUMBER', ");strcat (dyn_sts,"DECODE( DATA_PRECISION, NULL, NULL , ' (' || DATA_PRECISION || ");strcat (dyn_sts,"DECODE( DATA_SCALE, NULL, NULL, ', ' || DATA_SCALE) || ')'), 'VARCHAR2', ' (' || DA TA_LENGTH || ')', ");strcat (dyn_sts,"'CHAR', ' (' || DATA_LENGTH || ') ', NULL) SQL_TYPE, DECODE( C.NULLABLE, 'N', 'NOT NULL', NULL) NULLABLE,

");

Page 101: Orastat line command

strcat (dyn_sts,"DECODE( DATA_TYPE, 'VARCHAR2', 0, 'CHAR', 0, 'NUMBER', 1, 'DATE', 2, 'LONG', ");strcat (dyn_sts,"3, 'RAW', 4, 'LONG RAW', 5, 'MLSLA BEL', 6, -1) IMAGE_INDEX \n");strcat (dyn_sts,"FROM (select * from SYS.ALL_TAB_CO LUMNS \n");strcat (dyn_sts,"where owner = :owner and table_nam e = :table_name) C, \n");strcat (dyn_sts,"SYS.ALL_CONS_COLUMNS C1 \n");strcat (dyn_sts,"WHERE C1.OWNER = :OWNER AND C1.CO NSTRAINT_NAME = :CONSTRAINT_NAME AND \n");strcat (dyn_sts,"C1.TABLE_NAME = :TABLE_NAME AND C. OWNER (+) = C1.OWNER AND \n");strcat (dyn_sts,"C.TABLE_NAME (+) = C1.TABLE_NAME A ND C.COLUMN_NAME (+) = C1.COLUMN_NAME AND \n");strcat (dyn_sts,":R_CONSTRAINT_NAME IS NULL \n");strcat (dyn_sts,"AND :R_TABLE_NAME IS NULL \n");break;

case CASE_INDEX_GENERAL_DESCRIPTION:strcpy (dyn_sts,"SELECT I.INDEX_OWNER OWNER, I.INDE X_NAME, I.COLUMN_POSITION, ");strcat (dyn_sts,"SUBSTR(I.COLUMN_NAME,1,255) COLUMN _NAME,DATA_TYPE || ");strcat (dyn_sts,"DECODE( DATA_TYPE,'NUMBER', DECODE ( DATA_PRECISION, NULL, NULL,");strcat (dyn_sts,"' (' || DATA_PRECISION || DECODE( DATA_SCALE , NULL, NULL, ',' || ");strcat (dyn_sts,"DATA_SCALE) || ')'),'VARCHAR2', ' (' || DATA_LENGTH || ')', 'CHAR',");strcat (dyn_sts,"' (' || DATA_LENGTH || ')', NU LL) SQL_TYPE, DECODE( C.NULLABLE, 'N',");strcat (dyn_sts,"'NOT NULL', 'NULL ') NULLABLE, 'ASC' DESCEND,DECODE( C.DATA_TYPE, 'VARCHAR2',");strcat (dyn_sts,"0 , 'CHAR', 0, 'NUMBER', 1, 'DATE' , 2, 'LONG', 3, 'RAW', 4, 'LONG RAW', 5,");strcat (dyn_sts,"'MLSLABEL', 6, -1) IMAGE_INDEX \n" );strcat (dyn_sts,"FROM (select * from SYS.ALL_TAB_CO LUMNS \n");if ( (strlen (opcion_uno) > 0) && (strlen (opcion_d os) == 0) )

{strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");}

else if ( (strlen(opcion_uno) == 0) && ( strlen (op cion_dos) > 0 )){strcat (dyn_sts,"where table_name = '");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

else if ( (strlen (opcion_uno) > 0) && ( strlen (op cion_dos) > 0 )){strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");strcat (dyn_sts,"and table_name = '");

Page 102: Orastat line command

strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

strcat (dyn_sts," ) C, \n");strcat (dyn_sts,"SYS.ALL_IND_COLUMNS I \n");strcat (dyn_sts,"WHERE \n");if ( (strlen (opcion_uno) > 0) )

{strcat (dyn_sts,"I.INDEX_OWNER ='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' AND ");}

if ( (strlen (opcion_tres) > 0) ){strcat (dyn_sts,"I.INDEX_NAME ='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' AND ");}

strcat (dyn_sts,"C.OWNER (+) = I.INDEX_OWNER AND C. TABLE_NAME (+) = I.TABLE_NAME ");strcat (dyn_sts,"AND C.COLUMN_NAME (+) = I.COLUMN_N AME \n");strcat (dyn_sts,"ORDER BY I.INDEX_OWNER,I.INDEX_NAM E,I.COLUMN_POSITION \n");break;

case CASE_AUDIT_DEFINITION:strcpy (dyn_sts,"SELECT OBJECT_NAME, OBJECT_TYPE, A UDIT_OPTION, ");strcat (dyn_sts,"decode ( substr(SUCCESS,1,1), '-', null, 'S',");strcat (dyn_sts,"'BY SESSION', 'A', 'BY ACCESS', su bstr(SUCCESS,1,1)) ");strcat (dyn_sts,"WHENEVER_SUCCESSFUL, decode( subst r (SUCCESS,3,1),");strcat (dyn_sts,"'-', null, 'S', 'BY SESSION', 'A', 'BY ACCESS', ");strcat (dyn_sts,"substr(SUCCESS,3,1)) WHENEVER_UNSU CCESSFUL \n");strcat (dyn_sts,"FROM \n");strcat (dyn_sts,"(SELECT OBJECT_NAME, OBJECT_TYPE, ");strcat (dyn_sts,"'ALTER' AUDIT_OPTION,ALT SUCCESS " );strcat (dyn_sts,"FROM sys.DBA_OBJ_AUDIT_OPTS \n");

/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- */if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");

}

Page 103: Orastat line command

if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts," and object_name ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," and object_type='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- *//* strcat (dyn_sts,"WHERE OWNER = :OWNER AND \n");

strcat (dyn_sts,"OBJECT_NAME = :TABLE_NAME AND \n") ;strcat (dyn_sts,"OBJECT_TYPE = :OBJECT_TYPE \n");

*/strcat (dyn_sts,"UNION \n");strcat (dyn_sts,"SELECT OBJECT_NAME, OBJECT_TYPE, ' AUDIT', AUD ");strcat (dyn_sts,"FROM sys.DBA_OBJ_AUDIT_OPTS \n");

/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- */if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts," and object_name ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," and object_type='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- */

Page 104: Orastat line command

/* strcat (dyn_sts,"WHERE OWNER = :OWNER AND \n");strcat (dyn_sts,"OBJECT_NAME = :TABLE_NAME AND \n") ;strcat (dyn_sts,"OBJECT_TYPE = :OBJECT_TYPE \n");

*/strcat (dyn_sts,"UNION \n");strcat (dyn_sts,"SELECT OBJECT_NAME, OBJECT_TYPE, 'COMMENT', COM ");strcat (dyn_sts,"FROM sys.DBA_OBJ_AUDIT_OPTS \n");

/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- */if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts," and object_name ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," and object_type='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- *//* strcat (dyn_sts,"WHERE OWNER = :OWNER AND \n");

strcat (dyn_sts,"OBJECT_NAME = :TABLE_NAME AND \n") ;strcat (dyn_sts,"OBJECT_TYPE = :OBJECT_TYPE \n");

*/strcat (dyn_sts,"UNION \n");strcat (dyn_sts,"SELECT OBJECT_NAME, OBJECT_TYPE, ' DELETE', DEL ");strcat (dyn_sts,"FROM sys.DBA_OBJ_AUDIT_OPTS \n");

/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- */if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");

Page 105: Orastat line command

}if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts," and object_name ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," and object_type='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- *//* strcat (dyn_sts,"WHERE OWNER = :OWNER AND \n");

strcat (dyn_sts,"OBJECT_NAME = :TABLE_NAME AND \n") ;strcat (dyn_sts,"OBJECT_TYPE = :OBJECT_TYPE \n");

*/strcat (dyn_sts," UNION \n");strcat (dyn_sts,"SELECT OBJECT_NAME, OBJECT_TYPE, ' GRANT', GRA ");strcat (dyn_sts,"FROM sys.DBA_OBJ_AUDIT_OPTS \n");

/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- */if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts," and object_name ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," and object_type='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}

Page 106: Orastat line command

/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- *//* strcat (dyn_sts,"WHERE OWNER = :OWNER AND \n");

strcat (dyn_sts," OBJECT_NAME = :TABLE_NAME AND \n" );strcat (dyn_sts,"OBJECT_TYPE = :OBJECT_TYPE \n");

*/strcat (dyn_sts," UNION \n");strcat (dyn_sts,"SELECT OBJECT_NAME, OBJECT_TYPE, ' INDEX', IND FROM sys.DBA_OBJ_AUDIT_OPTS ");

/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- */if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts," and object_name ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," and object_type='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- *//* strcat (dyn_sts," WHERE OWNER = :OWNER AND \n");

strcat (dyn_sts,"OBJECT_NAME = :TABLE_NAME AND \n") ;strcat (dyn_sts,"OBJECT_TYPE = :OBJECT_TYPE \n");

*/strcat (dyn_sts,"UNION \n");strcat (dyn_sts,"SELECT OBJECT_NAME, OBJECT_TYPE, ' INSERT', INS FROM sys.DBA_OBJ_AUDIT_OPTS ");

/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- */if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");

}

Page 107: Orastat line command

if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts," and object_name ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," and object_type='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- *//* strcat (dyn_sts,"WHERE OWNER = :OWNER AND \n");

strcat (dyn_sts,"OBJECT_NAME = :TABLE_NAME AND \n") ;strcat (dyn_sts,"OBJECT_TYPE = :OBJECT_TYPE \n");

*/strcat (dyn_sts," UNION \n");strcat (dyn_sts,"SELECT OBJECT_NAME, OBJECT_TYPE, ' LOCK', LOC FROM sys.DBA_OBJ_AUDIT_OPTS ");

/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- */if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts," and object_name ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," and object_type='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- *//* strcat (dyn_sts,"WHERE OWNER = :OWNER AND \n");

Page 108: Orastat line command

strcat (dyn_sts,"OBJECT_NAME = :TABLE_NAME AND \n") ;strcat (dyn_sts,"OBJECT_TYPE = :OBJECT_TYPE \n");

*/strcat (dyn_sts,"UNION \n");strcat (dyn_sts,"SELECT OBJECT_NAME, OBJECT_TYPE, ' RENAME', REN FROM sys.DBA_OBJ_AUDIT_OPTS ");

/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- */if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts," and object_name ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," and object_type='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- *//* strcat (dyn_sts," WHERE OWNER =:OWNER AND \n");

strcat (dyn_sts,"OBJECT_NAME = :TABLE_NAME AND \n") ;strcat (dyn_sts,"OBJECT_TYPE = :OBJECT_TYPE \n");

*/strcat (dyn_sts," UNION \n");strcat (dyn_sts,"SELECT OBJECT_NAME, OBJECT_TYPE, ' SELECT', SEL FROM sys.DBA_OBJ_AUDIT_OPTS ");

/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- */if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_dos) > 0) ){

Page 109: Orastat line command

strcat (dyn_sts," and object_name ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," and object_type='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- *//* strcat (dyn_sts,"WHERE OWNER = :OWNER AND \n");

strcat (dyn_sts,"OBJECT_NAME = :TABLE_NAME AND \n") ;strcat (dyn_sts,"OBJECT_TYPE = :OBJECT_TYPE \n");

*/strcat (dyn_sts," UNION \n");strcat (dyn_sts,"SELECT OBJECT_NAME, OBJECT_TYPE, ' UPDATE', UPD FROM sys.DBA_OBJ_AUDIT_OPTS ");

/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- */if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts," and object_name ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," and object_type='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- *//* strcat (dyn_sts,"WHERE OWNER = :OWNER AND \n");

strcat (dyn_sts,"OBJECT_NAME = :TABLE_NAME AND \n") ;strcat (dyn_sts,"OBJECT_TYPE = :OBJECT_TYPE \n");

Page 110: Orastat line command

*/strcat (dyn_sts," UNION \n");strcat (dyn_sts,"SELECT OBJECT_NAME, OBJECT_TYPE, ' REFERENCES', REF FROM sys.DBA_OBJ_AUDIT_OPTS ");

/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- */if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"where owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts," and object_name ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," and object_type='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}/* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*-*-*-*-*- *//* strcat (dyn_sts,"WHERE OWNER = :OWNER AND \n");

strcat (dyn_sts,"OBJECT_NAME = :TABLE_NAME AND \n") ;strcat (dyn_sts,"OBJECT_TYPE = :OBJECT_TYPE \n");

*/strcat (dyn_sts,") \n");break;

case CASE_SHOW_SEGMENTS_EXTENTS:strcpy (dyn_sts,"SELECT S.OWNER, S.SEGMENT_NAME, S. SEGMENT_TYPE, S.TABLESPACE_NAME, ");strcat (dyn_sts,"S.BYTES/1024 KBYTES, S.BLOCKS, S.E XTENTS, S.NEXT_EXTENT/1024 NEXT_EXTENT , ");strcat (dyn_sts,"S.PCT_INCREASE, S.MAX_EXTENTS, S.M AX_EXTENTS - S.EXTENTS FREE_EXTENTS, ");strcat (dyn_sts,"DECODE( SEGMENT_TYPE, 'CACHE', 14, 'CLUSTER', 15, 'INDEX', 17, ");strcat (dyn_sts,"'ROLLBACK', 13, 'TABLE' , 0, 'TABL E PARTITION', 38, 'INDEX PARTITION', 39, -1) IMAGE_ INDEX \n");strcat (dyn_sts,"FROM SYS.DBA_SEGMENTS S \n");if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"where TABLESPACE_NAME ='");strcat (dyn_sts,opcion_uno);

Page 111: Orastat line command

strcat (dyn_sts,"' AND ");}if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts," OWNER ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' AND ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," SEGMENT_TYPE='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}strcat (dyn_sts,"ORDER BY S.OWNER, FREE_EXTENTS \n" );break;

case CASE_SHOW_EXTENTS_INSIDE_DATAFILES:strcpy (dyn_sts,"SELECT TO_CHAR(X.EXTENT_ID) EXTENT _ID, X.OWNER, ");strcat (dyn_sts,"X.SEGMENT_NAME, X.SEGMENT_TYPE, X. TABLESPACE_NAME, ");strcat (dyn_sts,"X.FILE_ID, X.BLOCK_ID, X.BYTES/102 4 KBYTES, X.BLOCKS, ");strcat (dyn_sts,"F.FILE_NAME \n");strcat (dyn_sts,"FROM SYS.DBA_EXTENTS X, SYS.DBA_DA TA_FILES F \n");strcat (dyn_sts,"WHERE \n");strcat (dyn_sts,"F.TABLESPACE_NAME = X.TABLESPACE_N AME AND \n");strcat (dyn_sts,"F.FILE_ID = X.FILE_ID \n");if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"AND TABLESPACE_NAME ='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts," AND OWNER ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' ");

}if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts," AND SEGMENT_NAME='");

Page 112: Orastat line command

strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' \n");

}strcat (dyn_sts,"ORDER BY 1 \n");break;

case CASE_SHOW_USER_LISTS:strcpy (dyn_sts,"SELECT u.USERNAME, u.USER_ID, u.DE FAULT_TABLESPACE, \n");strcat (dyn_sts,"u.password, u.TEMPORARY_TABLESPACE , u.CREATED, u.PROFILE, ");strcat (dyn_sts,"'N/A' ACCOUNT_STATUS, to_date(null ) LOCK_DATE, ");strcat (dyn_sts,"to_date(null) EXPIRY_DATE, null IN ITIAL_RSRC_CONSUMER_GROUP, ");strcat (dyn_sts,"p.SYSDBA, p.SYSOPER \n");strcat (dyn_sts,"FROM SYS.DBA_USERS u, SYS.V_$PWFIL E_USERS p \n");strcat (dyn_sts,"WHERE u.USERNAME = p.USERNAME (+) \n");strcat (dyn_sts,"UNION \n");strcat (dyn_sts,"SELECT 'PUBLIC' USERNAME, TO_NUMBE R(NULL) USER_ID, ");strcat (dyn_sts,"NULL DEFAULT_TABLESPACE, null pass word, NULL TEMPORARY_TABLESPACE, ");strcat (dyn_sts,"TO_DATE(NULL) CREATED, NULL PROFIL E, 'LOCKED' ACCOUNT_STATUS, ");strcat (dyn_sts,"TO_DATE(NULL) LOCK_DATE, TO_DATE(N ULL) EXPIRY_DATE, ");strcat (dyn_sts,"null INITIAL_RSRC_CONSUMER_GROUP, 'FALSE' SYSDBA, 'FALSE' SYSOPER ");strcat (dyn_sts,"FROM DUAL \n");strcat (dyn_sts,"ORDER BY 1 \n");break;

case CASE_SHOW_ROLES_PRIVILEGES:strcpy (dyn_sts,"SELECT distinct PRIVILEGE, OWNER, TABLE_NAME, GRANTOR, \n");strcat (dyn_sts,"GRANTEE,GRANTABLE, 'NO' COL_PRIVS ");strcat (dyn_sts,"FROM SYS.DBA_TAB_PRIVS \n");strcat (dyn_sts,"WHERE \n");strcat (dyn_sts," OWNER = :OWNER \n");strcat (dyn_sts," AND TABLE_NAME = :TABLE_NAME \n" );strcat (dyn_sts," AND GRANTEE = :GRANTEE \n");strcat (dyn_sts,"UNION ");strcat (dyn_sts, "SELECT DISTINCT PRIVILEGE, OWNER, TABLE_NAME, GRANTOR, \n");strcat (dyn_sts,"GRANTEE,NULL GRANTABLE, 'YES' COL _PRIVS \n");strcat (dyn_sts,"FROM SYS.DBA_COL_PRIVS \n");strcat (dyn_sts,"WHERE \n");strcat (dyn_sts," OWNER = :OWNER \n");strcat (dyn_sts," AND TABLE_NAME = :TABLE_NAME \n") ;strcat (dyn_sts," AND GRANTEE = :GRANTEE \n");strcat (dyn_sts," ORDER BY 1 \n");break;

Page 113: Orastat line command

case CASE_SHOW_PRIVILEGES_COLUMNS:strcpy (dyn_sts,"SELECT P.COLUMN_NAME, P.GRANTOR, P .GRANTEE, P.PRIVILEGE, ");strcat (dyn_sts,"P.GRANTABLE, DATA_TYPE || DECODE( DATA_TYPE,'NUMBER', ");strcat (dyn_sts,"DECODE( DATA_PRECISION, NULL, NULL , ' (' || DATA_PRECISION || ");strcat (dyn_sts,"DECODE( DATA_SCALE, NULL, NULL, ', ' || DATA_SCALE) || ')'), ");strcat (dyn_sts,"'VARCHAR2', ' (' || DATA_LENGTH | | ')', 'CHAR', ");strcat (dyn_sts," ' (' || DATA_LENGTH || ')', NU LL) SQL_TYPE, ");strcat (dyn_sts,"DECODE( C.NULLABLE, 'N', 'NOT NULL ', NULL) NULLABLE, ");strcat (dyn_sts,"DECODE( C.DATA_TYPE, ' VARCHAR2', 0, 'CHAR', 0, 'NUMBER',");strcat (dyn_sts," 1, 'DATE', 2, 'LONG', 3, 'RAW', 4 , 'LONG RAW',");strcat (dyn_sts," 5, 'MLSLABEL', 6, -1) IMAGE_INDEX \n");strcat (dyn_sts,"FROM SYS.ALL_COL_PRIVS P, SYS.ALL_ TAB_COLUMNS C \n");strcat (dyn_sts,"WHERE C.COLUMN_NAME = P.COLUMN_NAM E \n");

/* ************************************************* ************** */if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"AND P.TABLE_SCHEMA ='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' AND ");strcat (dyn_sts,"AND C.OWNER ='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' \n");

}/*strcat (dyn_sts," AND P.TABLE_SCHEMA = :OWNER \n");strcat (dyn_sts," AND C.OWNER = :OWNER \n");*/

/* ************************************************* ************** */if ( (strlen (opcion_dos) > 0) ){

strcat (dyn_sts,"AND P.TABLE_NAME ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' AND ");strcat (dyn_sts,"AND C.TABLE_NAME ='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");

}/*strcat (dyn_sts," AND P.TABLE_NAME = :TABLE_NAME \n ");strcat (dyn_sts," AND C.TABLE_NAME = :TABLE_NAME \n ");

Page 114: Orastat line command

*//* ************************************************* ************** */

if ( (strlen (opcion_tres) > 0) ){

strcat (dyn_sts,"AND P.PRIVILEGE ='");strcat (dyn_sts,opcion_tres);strcat (dyn_sts,"' ");

}/*strcat (dyn_sts," AND P.PRIVILEGE = :PRIVILEGE \n") ;*/

/* ************************************************* ************** */if ( (strlen (opcion_cuatro) > 0) ){

strcat (dyn_sts,"AND P.GRANTEE ='");strcat (dyn_sts,opcion_cuatro);strcat (dyn_sts,"' ");

}/*strcat (dyn_sts," AND P.GRANTEE = :GRANTEE \n");*/

/* ************************************************* ************** */strcat (dyn_sts," ORDER BY C.COLUMN_ID \n");break;

case CASE_SHOW_LOCKS_VIEWS:strcpy (dyn_sts,"select l.id1,decode(l.type, 'MR', 'Media Recovery', 'RT', 'Redo Thread', 'UN', 'Us er Name', ");strcat (dyn_sts,"'TX', 'Transaction', 'TM', 'DML', 'UL', 'PL/SQL User Lock', 'DX', 'Distributed Xac tion', ");strcat (dyn_sts,"'CF', 'Control File', 'IS', 'Inst ance State', 'FS', 'File Set', 'IR', 'Instance Rec overy', ");strcat (dyn_sts,"'ST', 'Disk Space Transaction', ' TS', 'Temp Segment', 'IV', 'Library Cache Invalida tion', ");strcat (dyn_sts,"'LS', 'Log Start or Switch', 'RW' , 'Row Wait', 'SQ', 'Sequence Number', ");strcat (dyn_sts,"'TE', 'Extend Table', 'TT', 'Temp Table', l.type) type, ");strcat (dyn_sts,"decode( l.lmode, 2,'share update', 3, 'row exclusive', 4, 'share', 5, 'share ro w exclusive', ");strcat (dyn_sts,"6, 'exclusive', 0, '-', l.lmode) lmode, ");strcat (dyn_sts,"decode( l.request, 0, '-', 2, 'sh are update', 3, 'row exclusive', 4, 'share', ") ;strcat (dyn_sts,"5, 'share row exclusive', 6, 'exc lusive', l.request) request , ");

/* strcat (dyn_sts,"null object_name, \n"); */strcat (dyn_sts,"o.object_name object_name, \n");

/* strcat (dyn_sts,"null owner, \n"); */strcat (dyn_sts,"o.owner owner, \n");

Page 115: Orastat line command

/* strcat (dyn_sts,"null object_type, \n"); */strcat (dyn_sts,"o.object_type object_type, \n");

strcat (dyn_sts," -1 image_index , \n");strcat (dyn_sts," nvl(o.object_name, '(ID='||to_ch ar(l.id1)||')')object_name, o.owner, o.object_type, ");strcat (dyn_sts," DECODE( O.OBJECT_TYPE, 'TABLE', 0, 'VIEW', 1, 'SYNONYM', 2, 'TRIGGER', ");strcat (dyn_sts,"4, 'PACKAGE', 5, 'PACKAGE BODY', 6 , 'PROCEDURE', 7, 'FUNCTION', 8, 'INDEX', 17, ") ;strcat (dyn_sts," 'SEQUENCE', 18, -1) IMAGE_IN DEX \n");strcat (dyn_sts,"from sys.v_$lock l , SYS.all_obje cts o \n");strcat (dyn_sts,"where l.id1 = o.object_id (+) \n") ;if ( (strlen (opcion_uno) > 0) )

{strcat (dyn_sts,"AND l.sid ='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");}

/* strcat (dyn_sts,"and l.sid = :SID \n"); */strcat (dyn_sts,"order by lmode desc, request \n");break;

case CASE_GRAPH_LOCK_WAITS:strcpy (dyn_sts,"select l.sid, S.PROGRAM, S.USERNAM E, S.TERMINAL \n");strcat (dyn_sts,"from \n");strcat (dyn_sts," (SELECT SID FROM SYS.V_$LOCK WHER E LMODE>1 \n");strcat (dyn_sts," MINUS select SID FROM sys.v_$LOCK WHERE REQUEST>0 ) L, \n");strcat (dyn_sts," SYS.V_$SESSION S \n");strcat (dyn_sts,"WHERE L.SID = S.SID AND S.USERNAME IS NOT NULL \n");break;

case CASE_OBJECT_ACCESS_SESSION:strcpy (dyn_sts,"SELECT SID, DECODE( OWNER, USER, NULL, OWNER || '.' ) || ");strcat (dyn_sts,"OBJECT OBJECT, TYPE OBJ_TYPE \n");strcat (dyn_sts,"FROM SYS.V_$ACCESS \n");if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts,"WHERE SID=");strcat (dyn_sts,opcion_uno);strcat (dyn_sts," ");

}strcat (dyn_sts,"ORDER BY 1 \n");break;

Page 116: Orastat line command

case CASE_SHOW_LATCHES:strcpy (dyn_sts,"SELECT L.*, N.NAME \n");strcat (dyn_sts,"FROM SYS.V_$LATCH L, \n");strcat (dyn_sts,"SYS.V_$LATCHHOLDER H, \n");strcat (dyn_sts,"SYS.V_$LATCHNAME N \n");strcat (dyn_sts,"WHERE L.ADDR = H.LADDR \n");strcat (dyn_sts," AND N.LATCH# = L.LATCH# \n");if ( (strlen (opcion_uno) > 0) )

{strcat (dyn_sts,"AND H.PID=");strcat (dyn_sts,opcion_uno);strcat (dyn_sts," \n");}

break;case CASE_SHOW_STATISTICS:

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_sts,"select id, name, set_msize, cnum_r epl, \n");strcat (dyn_sts,"cnum_write, cnum_set, buf_got, sum _write, \n");strcat (dyn_sts,"sum_scan, free_buffer_wait, \n");strcat (dyn_sts,"write_complete_wait, buffer_busy_w ait, \n");strcat (dyn_sts,"free_buffer_inspected, dirty_buffe rs_inspected, \n");strcat (dyn_sts,"db_block_change, db_block_gets, \n ");strcat (dyn_sts,"consistent_gets, physical_reads, \ n");strcat (dyn_sts,"physical_writes \n");strcat (dyn_sts,"from v$buffer_pool_statistics \n") ;break;

case VERSION_ORACLE_734:strcpy (dyn_sts,"select banner\n");strcat (dyn_sts," from v$version ");break;

}break;

case CASE_SHOW_TRANSACTIONS:strcpy (dyn_sts,"SELECT s.sid,t.ADDR, t.XIDUSN, t.X IDSLOT, t.XIDSQN, t.UBAFIL, t.UBABLK, ");strcat (dyn_sts,"t.UBASQN,t.UBAREC,t.STATUS,to_date ( t.start_time, 'MM/DD/RR HH24:MI:SS') start_time, ");strcat (dyn_sts,"t.START_SCNB, t.START_SCNW, t.STAR T_UEXT, t.START_UBAFIL,t.START_UBABLK, ");

Page 117: Orastat line command

strcat (dyn_sts,"t.START_UBASQN, t.START_UBAREC, t. SES_ADDR, t.FLAG, t.SPACE, t.RECURSIVE, ");strcat (dyn_sts,"t.NOUNDO, t.PRV_XIDUSN, t.PRV_XIDS LT, t.PRV_XIDSQN, null PTX, null PTX_XIDUSN, ");strcat (dyn_sts,"null PTX_XIDSLT, null PTX_XIDSQN, null DSCN_B, null DSCN_W, t.USED_UBLK, ");strcat (dyn_sts,"t.USED_UREC, t.LOG_IO, t.PHY_IO, t .CR_GET, t.CR_CHANGE \n");strcat (dyn_sts,"FROM SYS.V_$TRANSACTION T, SYS.V_$ SESSION S \n");strcat (dyn_sts,"WHERE S.SADDR = T.SES_ADDR \n");if ( (strlen (opcion_uno) > 0) ){

strcat (dyn_sts," AND SID=");strcat (dyn_sts,opcion_uno);strcat (dyn_sts," ");

}strcat (dyn_sts,"ORDER BY t.start_scnb \n");break;

case CASE_SHOW_DATAFILES_STATUS:strcpy (dyn_sts,"SELECT F.FILE_ID, F.TABLESPACE_NAM E, ");strcat (dyn_sts,"'N/A' AUTOEXTENSIBLE, TO_NUMBER(nu ll) MAXBYTES, ");strcat (dyn_sts,"TO_NUMBER(null) NEXT_SIZE, F.BYTES /1024 KBYTES, F.BLOCKS, ");strcat (dyn_sts,"F.STATUS, NVL(MAX(S.BYTES)/1024,0) MAX_CHUNK_SPACE, ");strcat (dyn_sts,"NVL(MIN (S.BYTES)/1024,0) MIN_CHUN K_SPACE, NVL(SUM(S.BYTES)/1024, 0) FREE_SPACE, ");strcat (dyn_sts,"NVL(COUNT(S.BYTES),0) FRAGMENTS, 1 00*(F.BYTES-NVL(SUM(S.BYTES),0))/F.BYTES USAGE_PCT, ");strcat (dyn_sts,"B.STATUS BACKUP_STATUS, B.CHANGE# BACKUP_CHANGE#, B.TIME BACKUP_TIME, \n");strcat (dyn_sts,"F.FILE_NAME \n");strcat (dyn_sts,"FROM SYS.DBA_DATA_FILES F, SYS.DBA _FREE_SPACE S, \n");strcat (dyn_sts,"SYS.V_$BACKUP B \n");strcat (dyn_sts,"WHERE F.TABLESPACE_NAME = S.TABLESP ACE_NAME (+) AND \n");strcat (dyn_sts,"F.FILE_ID = S.FILE_ID (+) AND F.FI LE_ID = B.FILE# \n");strcat (dyn_sts,"GROUP BY F.FILE_NAME, F.FILE_ID , F.TABLESPACE_NAME, \n");strcat (dyn_sts,"F.BYTES, F.BLOCKS, F.STATUS, 'N/A' , TO_NUMBER(null), \n");strcat (dyn_sts,"TO_NUMBER(null), B.STATUS, B.CH ANGE#, B.TIME \n");strcat (dyn_sts,"ORDER BY F.FILE_NAME \n");break;

case CASE_SHOW_DB_OBJECT_CACHE:strcpy (dyn_sts,"select owner, namespace, loads, ex ecutions, locks, pins, kept, ");strcat (dyn_sts,"sum(sharable_mem), name \n");strcat (dyn_sts," from v$db_object_cache \n");strcat (dyn_sts," group by owner, name, namespace, loads, ");strcat (dyn_sts," executions, locks, pins, kept \n" );strcat (dyn_sts," order by sum(sharable_mem) desc \ n");break;

Page 118: Orastat line command

case CASE_TABLE_ALERT_EXTENT_USED:strcpy (dyn_sts,"select t1.owner,t1.segment_name,t1 .segment_type, \n");strcat (dyn_sts,"t2.min_extents, t2.max_extents, co unt(*), \n");strcat (dyn_sts,"to_char(100*count(*)/t2.max_extent s,'99.99') \n");strcat (dyn_sts,"from dba_extents t1, dba_segments t2 \n");strcat (dyn_sts,"where t1.segment_type='TABLE' \n") ;strcat (dyn_sts,"and t1.owner = t2.owner \n");strcat (dyn_sts,"and t1.segment_type = t2.segment_t ype \n");strcat (dyn_sts,"and t1.segment_name = t2.segment_n ame \n");if ( (strlen (opcion_uno) > 0) )

{strcat (dyn_sts,"and t1.owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"'\n ");}

if ( (strlen (opcion_dos) > 0) ){strcat (dyn_sts,"and t1.segment_name='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

strcat (dyn_sts,"group by t1.owner,t1.segment_name, t1.segment_type, ");strcat (dyn_sts,"t2.min_extents, t2.max_extents \n" );strcat (dyn_sts,"order by 7 desc \n");break;

case CASE_INDEX_ALERT_EXTENT_USED:strcpy (dyn_sts,"select t1.owner,t1.segment_name,t1 .segment_type, \n");strcat (dyn_sts,"t2.min_extents, t2.max_extents, co unt(*), \n");strcat (dyn_sts,"to_char(100*count(*)/t2.max_extent s,'99.99') \n");strcat (dyn_sts,"from dba_extents t1, dba_segments t2 \n");strcat (dyn_sts,"where t1.segment_type='INDEX' \n") ;strcat (dyn_sts,"and t1.owner = t2.owner \n");strcat (dyn_sts,"and t1.segment_type = t2.segment_t ype \n");strcat (dyn_sts,"and t1.segment_name = t2.segment_n ame \n");if ( (strlen (opcion_uno) > 0) )

{strcat (dyn_sts,"and t1.owner='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"'\n ");}

Page 119: Orastat line command

if ( (strlen (opcion_dos) > 0) ){strcat (dyn_sts,"and t1.segment_name='");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

strcat (dyn_sts,"group by t1.owner,t1.segment_name, t1.segment_type, ");strcat (dyn_sts,"t2.min_extents, t2.max_extents \n" );strcat (dyn_sts,"order by 7 desc \n");break;

case CASE_USER_TIME_WORKING:strcpy (dyn_sts,"select vse.osuser, vse.username us ernm, vse.status status, \n");strcat (dyn_sts,"'@$SCR/killer '||rpad(vse.sid||',' ||vse.serial#,9) kill, \n");strcat (dyn_sts,"spid UNIX, nvl(substr(vse.module,1 ,60),substr(vse.program,1,60)) vtext, \n");strcat (dyn_sts,"to_char(to_number(sysdate - vse.lo gon_time)*24*60, '99999.99') minutos, \n");strcat (dyn_sts,"to_char(vse.logon_time,'dd-mon hh2 4:mm') logon \n");strcat (dyn_sts,"from v$session vse, v$process vps \n");strcat (dyn_sts,"where vse.PADDR = vps.ADDR \n");strcat (dyn_sts,"order by vtext, minutos desc \n");break;

case CASE_IS_USER_WORKING:strcpy (dyn_sts,"select vse.osuser, vse.username us ernm, vse.status status, \n");strcat (dyn_sts,"'@$SCR/killer '||rpad(vse.sid||',' ||vse.serial#,9) kill, \n");strcat (dyn_sts,"spid UNIX, nvl(substr(vse.module,1 ,60),substr(vse.program,1,60)) vtext, \n");strcat (dyn_sts,"sum(vsa.disk_reads) reads, sum(vsa .buffer_gets) gets , \n");strcat (dyn_sts,"to_char(to_number(sysdate - vse.lo gon_time)*24*60, '99999.99') minutos, \n");strcat (dyn_sts,"to_char(vse.logon_time,'dd-mon hh2 4:mm') logon \n");strcat (dyn_sts,"from v$session vse, v$sqlarea vsa, v$process vps \n");strcat (dyn_sts,"where vse.sql_address=vsa.address and \n");strcat (dyn_sts,"vse.sql_hash_value=vsa.hash_value and \n");strcat (dyn_sts,"vse.username is not null and vse.P ADDR = vps.ADDR \n");strcat (dyn_sts,"group by vse.osuser, vse.username, vse.status, \n");strcat (dyn_sts,"vse.sid, vse.serial#, vps.spid, \n ");strcat (dyn_sts,"nvl(substr(vse.module,1,60),substr (vse.program,1,60)) , \n");strcat (dyn_sts,"vsa.disk_reads, vsa.buffer_gets, v se.logon_time \n");strcat (dyn_sts,"order by minutos desc \n");break;

case CASE_VER_SQL_PROGRAM:strcpy (dyn_sts,"select vps.pid, vps.spid,vse.sid,v se.status, vse.osuser,vse.username usernm, \n");strcat (dyn_sts,"vse.terminal, vse.machine, \n");

Page 120: Orastat line command

strcat (dyn_sts,"'@$SCR/killer '||rpad(vse.sid||',' ||vse.serial#,9) kill, \n");strcat (dyn_sts,"nvl(substr(vse.module,1,60),substr (vse.program,1,60)) vtext, \n");strcat (dyn_sts,"to_char(to_number(sysdate - vse.lo gon_time)*24*60, '99999.99') minutos \n");strcat (dyn_sts,"from v$session vse, v$process vps \n");strcat (dyn_sts,"where vse.PADDR = vps.ADDR \n");strcat (dyn_sts,"and ( \n");strcat (dyn_sts," ( UPPER ( nvl(substr(vse.module, 1,60),substr(vse.program,1,60))) like 'SQL*PLUS%' ) or \n");strcat (dyn_sts," ( UPPER ( nvl(substr(vse.module, 1,60),substr(vse.program,1,60))) like '%PLUS%' ) or \n");strcat (dyn_sts," ( UPPER ( nvl(substr(vse.module, 1,60),substr(vse.program,1,60))) like '%T.O.A.D%' ) or \n");strcat (dyn_sts," ( UPPER ( nvl(substr(vse.module, 1,60),substr(vse.program,1,60))) like '%SQLNAV%' ) or \n");strcat (dyn_sts," ( UPPER ( nvl(substr(vse.module, 1,60),substr(vse.program,1,60))) like '%SQL%' ) ) \ n");strcat (dyn_sts," order by minutos desc \n");break;

case CASE_SQL_SESS_IO:strcpy (dyn_sts,"select s.sid, s.username, s.termin al, s.machine, \n");strcat (dyn_sts,"i.block_gets, i.consistent_gets, i .physical_reads, \n");strcat (dyn_sts,"i.block_changes, i.consistent_chan ges \n");strcat (dyn_sts,"from v$session s, v$sess_io i \n") ;strcat (dyn_sts,"where s.sid = i.sid \n");if ( (strlen (opcion_uno) > 0) )

{strcat (dyn_sts,"and s.sid='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"'\n ");}

strcat (dyn_sts,"order by i.block_gets, i.physical_ reads \n");break;

case CASE_SQL_SESSION_EVENT:strcpy (dyn_sts,"select s.sid, s.username, s.termin al, s.machine, \n");strcat (dyn_sts,"e.event, e.total_waits, e.total_ti meouts, \n");strcat (dyn_sts,"e.time_waited, e.average_wait, e.m ax_wait \n");strcat (dyn_sts,"from v$session s, v$session_event e \n");strcat (dyn_sts,"where s.sid = e.sid \n");if ( (strlen (opcion_uno) > 0) )

{strcat (dyn_sts,"and s.sid='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"'\n ");}

strcat (dyn_sts,"order by s.sid, e.total_waits, e.a verage_wait \n");

Page 121: Orastat line command

break;case CASE_SQL_SESSION_WAIT:

strcpy (dyn_sts,"select s.sid,s.username,s.terminal ,s.machine, \n");strcat (dyn_sts,"w.seq#,w.event,w.p1text,w.p1, w.p1 raw, w.p2text, \n");strcat (dyn_sts,"w.p2,w.p2raw, w.p3text, w.p3, w.p3 raw, w.wait_time, \n");strcat (dyn_sts,"w.seconds_in_wait, w.state \n");strcat (dyn_sts,"from v$session s, v$session_wait w \n");strcat (dyn_sts,"where s.sid = w.sid \n");if ( (strlen (opcion_uno) > 0) )

{strcat (dyn_sts,"and s.sid='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"'\n ");}

break;case CASE_SQL_SESSION_LONG_OPER:

strcpy (dyn_sts,"select s.SID, s.USERNAME, s.TERMIN AL, s.MACHINE, \n");strcat (dyn_sts,"sl.SERIAL#, sl.OPNAME, sl.TARGET, \n");strcat (dyn_sts,"sl.TARGET_DESC, sl.SOFAR, sl.TOTAL WORK, sl.UNITS, \n");strcat (dyn_sts,"to_char(sl.start_time,'DD/MM/YYYY - HH24:MI:SS'), \n");strcat (dyn_sts,"to_char(sl.last_update_time,'DD/MM /YYYY - HH24:MI:SS'), \n");strcat (dyn_sts,"sl.time_remaining, \n");strcat (dyn_sts,"sl.ELAPSED_SECONDS, \n");strcat (dyn_sts,"sl.CONTEXT, sl.MESSAGE, sl.USERNAM E, sl.SQL_ADDRESS, \n");strcat (dyn_sts,"sl.SQL_HASH_VALUE, sl.QCSID \n");strcat (dyn_sts,"from v$session_longops sl, v$sessi on s\n");strcat (dyn_sts,"where sl.sid = s.sid \n");if ( (strlen (opcion_uno) > 0) )

{strcat (dyn_sts,"and s.sid='");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"'\n ");}

break;case CASE_SQL_LOCKED_OBJECTS:

strcpy (dyn_sts,"select XIDUSN,XIDSLOT,XIDSQN,OBJEC T_ID, \n");strcat (dyn_sts,"SESSION_ID,ORACLE_USERNAME,OS_USER _NAME, \n");strcat (dyn_sts,"PROCESS,LOCKED_MODE \n");strcat (dyn_sts,"from v$locked_object \n");break;

Page 122: Orastat line command

case CASE_SQL_TRANSACTION_DETAIL:strcpy (dyn_sts,"select addr,xidusn,xidslot,xidsqn, ubafil, \n");strcat (dyn_sts,"ubablk,ubasqn,ubarec,start_ubafil, start_ubablk, \n");strcat (dyn_sts,"start_ubasqn,start_ubarec,log_io, phy_io \n");strcat (dyn_sts,"from v$transaction \n");break;

case CASE_SQL_LOCK_MEDIUM_INFO:strcpy (dyn_sts,"select s.saddr,l.sid, s.serial#, s .username, s.terminal, \n");strcat (dyn_sts,"decode(l.type,'RW','RW - Row Wait Enqueue','TM','TM - DML Enqueue', \n");strcat (dyn_sts,"'TX','TX - Trans Enqueue','UL','UL - User',l.type||'System') res, \n");strcat (dyn_sts,"t.name tab, u.name owner, l.id1, l. id2, decode(l.lmode, \n");strcat (dyn_sts,"1,'No Lock',2,'Row Share',3,'Row E xclusive',4,'Share',5,'Shr Row Excl', \n");strcat (dyn_sts,"6,'Exclusive','NONE') lmode,decode (l.request,1,'No Lock',2,'Row Share', \n");strcat (dyn_sts,"3,'Row Excl',4,'Share',5,'Shr Row Excl',6,'Exclusive','NONE') request \n");strcat (dyn_sts,"from v$lock l, v$session s, sys.us er$ u, sys.obj$ t \n");strcat (dyn_sts,"where l.sid = s.sid and s.type != 'BACKGROUND' and \n");strcat (dyn_sts,"t.obj# = l.id1 and u.user# = t.own er# \n");break;

case CASE_SQL_LOCK_FULL_INFO:strcpy (dyn_sts,"select nvl(S.USERNAME,'Internal') username,L.SID, nvl(S.TERMINAL,'None') terminal,\n" );strcat (dyn_sts,"decode(command,0,'None',decode(l.i d2,0,U1.NAME||'.'||substr(T1.NAME,1,35),'None')) ta b,\n");strcat (dyn_sts,"decode(command,0,'BACKGROUND',1,'C reate Table',2,'INSERT',3,'SELECT', \n");strcat (dyn_sts,"4,'CREATE CLUSTER',5,'ALTER CLUSTE R',6,'UPDATE',7,'DELETE',8,'DROP', \n");strcat (dyn_sts,"9,'CREATE INDEX',10,'DROP INDEX',1 1,'ALTER INDEX',12,'DROP TABLE', \n");strcat (dyn_sts,"13,'CREATE SEQUENCE',14,'ALTER SEQ UENCE',15,'ALTER TABLE', \n");strcat (dyn_sts,"16,'DROP SEQUENCE',17,'GRANT',18,' REVOKE',19,'CREATE SYNONYM', \n");strcat (dyn_sts,"20,'DROP SYNONYM',21,'CREATE VIEW' ,22,'DROP VIEW',23,'VALIDATE INDEX', \n");strcat (dyn_sts,"24,'CREATE PROCEDURE',25,'ALTER PR OCEDURE',26,'LOCK TABLE', \n");strcat (dyn_sts,"27,'NO OPERATION',28,'RENAME',29,' COMMENT',30,'AUDIT',31,'NOAUDIT', \n");strcat (dyn_sts,"32,'CREATE EXTERNAL DATABASE',33,' DROP EXTERNAL DATABASE', \n");strcat (dyn_sts,"34,'CREATE DATABASE',35,'ALTER DAT ABASE',36,'CREATE ROLLBACK SEGMENT',\n");strcat (dyn_sts,"37,'ALTER ROLLBACK SEGMENT',38,'DR OP ROLLBACK SEGMENT',39,'CREATE TABLESPACE', \n");strcat (dyn_sts,"40,'ALTER TABLESPACE',41,'DROP TAB LESPACE',42,'ALTER SESSION',43,'ALTER USER', \n");strcat (dyn_sts,"44,'COMMIT',45,'ROLLBACK',46,'SAVE POINT',47,'PL/SQL EXECUTE',48,'SET TRANSACTION', \n ");strcat (dyn_sts,"49,'ALTER SYSTEM SWITCH LOG',50,'E XPLAIN',51,'CREATE USER',52,'CREATE ROLE', \n");strcat (dyn_sts,"53,'DROP USER',54,'DROP ROLE',55,' SET ROLE',56,'CREATE SCHEMA',57,'CREATE CONTROL FIL E', \n");strcat (dyn_sts,"58,'ALTER TRACING',59,'CREATE TRIG GER',60,'ALTER TRIGGER',61,'DROP TRIGGER',\n");strcat (dyn_sts,"62,'ANALYZE TABLE',63,'ANALYZE IND EX',64,'ANALYZE CLUSTER',65,'CREATE PROFILE', \n");strcat (dyn_sts,"66,'DROP PROFILE',67,'ALTER PROFIL E',68,'DROP PROCEDURE',69,'DROP PROCEDURE', \n");strcat (dyn_sts,"70,'ALTER RESOURCE COST',71,'CREAT E SNAPSHOT LOG',72,'ALTER SNAPSHOT LOG', \n");

Page 123: Orastat line command

strcat (dyn_sts,"73,'DROP SNAPSHOT LOG',74,'CREATE SNAPSHOT',75,'ALTER SNAPSHOT',76,'DROP SNAPSHOT', \ n");strcat (dyn_sts,"79,'ALTER ROLE',85,'TRUNCATE TABLE ',86,'TRUNCATE CLUSTER',87,'-',88,'ALTER VIEW',\n") ;strcat (dyn_sts,"89,'-',90,'-',91,'CREATE FUNCTION' ,92,'ALTER FUNCTION',93,'DROP FUNCTION',94,'CREATE PACKAGE', \n");strcat (dyn_sts,"95,'ALTER PACKAGE',96,'DROP PACKAG E',97,'CREATE PACKAGE BODY',98,'ALTER PACKAGE BODY' , \n");strcat (dyn_sts,"99,'DROP PACKAGE BODY',command||' - \?\?\?') COMMAND, decode(L.LMODE,1,'No Lock', \n" );strcat (dyn_sts," 2,'Row Share',3,'Row Exclusive',4 ,'Share',5,'Share Row Exclusive',6,'Exclusive','NON E') lmode, \n");strcat (dyn_sts," decode(L.REQUEST,1,'No Lock',2,'R ow Share',3,'Row Exclusive',4,'Share',5,'Share Row Exclusive', \n");strcat (dyn_sts,"6,'Exclusive','NONE') request,l.id 1||'-'||l.id2 Laddr,l.type||' - '||decode(l.type,'B L','Buffer hash table

instance lock', \n");strcat (dyn_sts,"'CF',' Control file schema global enqueue lock','CI','Cross-instance function invocat ion instance lock',

\n");strcat (dyn_sts,"'CS','Control file schema global e nqueue lock','CU','Cursor bind lock','DF','Data fil e instance lock', \n");strcat (dyn_sts,"'DL','Direct loader parallel index create','DM','Mount/startup db primary/secondary i nstance lock', \n");strcat (dyn_sts,"'DR','Distributed recovery process lock','DX','Distributed transaction entry lock','F I','SGA open-file

information lock', \n");strcat (dyn_sts,"'FS','File set lock','HW','Space m anagement operations on a specific segment lock','I N','Instance number

lock', \n");strcat (dyn_sts,"'IR','Instance recovery serializat ion global enqueue lock','IS','Instance state lock' ,'IV','Library cache

invalidation instance lock', \n");strcat (dyn_sts,"'JQ','Job queue lock','KK','Thread kick lock','MB','Master buffer hash table instance lock','MM','Mount

definition gloabal enqueue lock', \n");strcat (dyn_sts,"'MR','Media recovery lock','PF','P assword file lock','PI','Parallel operation lock',' PR','Process startup

lock', \n");strcat (dyn_sts,"'PS','Parallel operation lock','RE ','USE_ROW_ENQUEUE enforcement lock','RT','Redo thr ead global enqueue

lock', \n");strcat (dyn_sts,"'RW','Row wait enqueue lock','SC', 'System commit number instance lock','SH','System c ommit number high water

mark enqueue lock', \n");strcat (dyn_sts,"'SM','SMON lock','SN','Sequence nu mber instance lock','SQ','Sequence number enqueue l ock','SS','Sort segment

lock', \n");strcat (dyn_sts,"'ST','Space transaction enqueue lo ck','SV','Sequence number value lock','TA','Generic enqueue lock','TD','DDL

enqueue lock', \n");strcat (dyn_sts,"'TE','Extend-segment enqueue lock' ,'TM','DML enqueue lock','TT','Temporary table enqu eue

lock','TX','Transaction enqueue lock', \n");strcat (dyn_sts,"'UL','User supplied lock','UN','Us er name lock','US','Undo segment DDL lock','WL','Be ing-written redo log

instance lock', \n");strcat (dyn_sts,"'WS','Write-atomic-log-switch glob al enqueue lock','TS',decode(l.id2,0,'Temporary seg ment enqueue lock (ID2=

0)',");strcat (dyn_sts,"'New block allocation enqueue lock (ID2=1)'),'LA','Library cache lock instance lock ( A=namespace)', \n");strcat (dyn_sts,"'LB','Library cache lock instance lock (B=namespace)','LC','Library cache lock instan ce lock (C=namespace)',

\n");

Page 124: Orastat line command

strcat (dyn_sts,"'LD','Library cache lock instance lock (D=namespace)','LE','Library cache lock instan ce lock (E=namespace)', \n");

strcat (dyn_sts,"'LF','Library cache lock instance lock (F=namespace)','LG','Library cache lock instan ce lock (G=namespace)', \n");

strcat (dyn_sts,"'LH','Library cache lock instance lock (H=namespace)','LI','Library cache lock instan ce lock (I=namespace)', \n");

strcat (dyn_sts,"'LJ','Library cache lock instance lock (J=namespace)','LK','Library cache lock instan ce lock (K=namespace)', \n");

strcat (dyn_sts,"'LL','Library cache lock instance lock (L=namespace)','LM','Library cache lock instan ce lock (M=namespace)', \n");

strcat (dyn_sts,"'LN','Library cache lock instance lock (N=namespace)','LO','Library cache lock instan ce lock (O=namespace)', \n");

strcat (dyn_sts,"'LP','Library cache lock instance lock (P=namespace)','LS','Log start/log switch enqu eue lock','PA','Library cache pin instance lock (A=namespace)', \n");

strcat (dyn_sts,"'PB','Library cache pin instance l ock (B=namespace)','PC','Library cache pin instance lock (C=namespace)', \n");

strcat (dyn_sts,"'PD','Library cache pin instance l ock (D=namespace)','PE','Library cache pin instance lock (E=namespace)', \n");

strcat (dyn_sts,"'PF','Library cache pin instance l ock (F=namespace)','PG','Library cache pin instance lock (G=namespace)', \n");

strcat (dyn_sts,"'PH','Library cache pin instance l ock (H=namespace)','PI','Library cache pin instance lock (I=namespace)', \n");

strcat (dyn_sts,"'PJ','Library cache pin instance l ock (J=namespace)','PL','Library cache pin instance lock (K=namespace)', \n");

strcat (dyn_sts,"'PK','Library cache pin instance l ock (L=namespace)','PM','Library cache pin instance lock (M=namespace)', \n");

strcat (dyn_sts,"'PN','Library cache pin instance l ock (N=namespace)','PO','Library cache pin instance lock (O=namespace)', \n");

strcat (dyn_sts,"'PP','Library cache pin instance l ock (P=namespace)','PQ','Library cache pin instance lock (Q=namespace)', \n");

strcat (dyn_sts,"'PR','Library cache pin instance l ock (R=namespace)','PS','Library cache pin instance lock (S=namespace)', \n");

strcat (dyn_sts,"'PT','Library cache pin instance l ock (T=namespace)','PU','Library cache pin instance lock (U=namespace)', \n");

strcat (dyn_sts,"'PV','Library cache pin instance l ock (V=namespace)','PW','Library cache pin instance lock (W=namespace)', \n");

strcat (dyn_sts,"'PX','Library cache pin instance l ock (X=namespace)','PY','Library cache pin instance lock (Y=namespace)', \n");

strcat (dyn_sts,"'PZ','Library cache pin instance l ock (Z=namespace)','QA','Row cache instance lock (A =cache)', \n");strcat (dyn_sts,"'QB','Row cache instance lock (B=c ache)','QC','Row cache instance lock (C=cache)','QD ','Row cache instance

Page 125: Orastat line command

lock (D=cache)', \n");strcat (dyn_sts,"'QE','Row cache instance lock (E=c ache)','QF','Row cache instance lock (F=cache)','QG ','Row cache instance

lock (G=cache)',\n");strcat (dyn_sts,"'QH','Row cache instance lock (H=c ache)','QI','Row cache instance lock (I=cache)','QJ ','Row cache instance

lock (J=cache)', \n");strcat (dyn_sts,"'QL','Row cache instance lock (K=c ache)','QK','Row cache instance lock (L=cache)','QM ','Row cache instance

lock (M=cache)', \n");strcat (dyn_sts,"'QN','Row cache instance lock (N=c ache)','QO','Row cache instance lock (O=cache)','QP ','Row cache instance

lock (P=cache)',\n");strcat (dyn_sts,"'QQ','Row cache instance lock (Q=c ache)','QR','Row cache instance lock (R=cache)','QS ','Row cache instance

lock (S=cache)', \n");strcat (dyn_sts,"'QT','Row cache instance lock (T=c ache)','QU','Row cache instance lock (U=cache)','QV ','Row cache instance

lock (V=cache)', \n");strcat (dyn_sts,"'QW','Row cache instance lock (W=c ache)','QX','Row cache instance lock (X=cache)','QY ','Row cache instance

lock (Y=cache)', \n");strcat (dyn_sts,"'QZ','Row cache instance lock (Z=c ache)','\?\?\?\?') Lockt \n");strcat (dyn_sts,"FROM V$LOCK L,V$SESSION S, SYS.USE R$ U1, SYS.OBJ$ T1 \n");strcat (dyn_sts,"where L.SID = S.SID \n");strcat (dyn_sts,"and T1.OBJ# = decode(L.ID2,0,L.ID1 ,1) \n");strcat (dyn_sts,"and U1.USER# = T1.OWNER# and S.TYP E != 'BACKGROUND' \n");strcat (dyn_sts,"order by 1,2,5 \n");break;

case CASE_SQL_LOCK_BY_SESSION_ID:strcat (dyn_sts,"SELECT p.username,p.pid,p.spid,s.u sername ora,DECODE(l2.type, \n");strcat (dyn_sts,"'TX','TRANSACTION ROW-LEVEL','TS', 'TEMPORARY SEGMENT ', \n");strcat (dyn_sts,"'TD','TABLE LOCK','TM','ROW LOCK', l2.type ) vlock, \n");strcat (dyn_sts,"DECODE(l2.type,'TX','DML LOCK','TS ','TEMPORARY SEGMENT', \n");strcat (dyn_sts,"'TD',DECODE(l2.lmode+l2.request,4, \n");strcat (dyn_sts,"'PARSE '||u.name||'.'||o.name,6,'D DL', l2.lmode+l2.request), \n");strcat (dyn_sts,"'TM','DML '||u.name||'.'||o.name,l 2.type ) type, \n");strcat (dyn_sts,"DECODE(l2.lmode+l2.request,2,'RS', 3,'RX',4,'S',5,'SRX',6,'X',l2.lmode+l2.request) lmo de, \n");strcat (dyn_sts,"DECODE(l2.request,0,NULL,'WAIT') w ait \n");strcat (dyn_sts,"FROM v$process p, v$_lock l1, v$lo ck l2, v$resource r, \n");strcat (dyn_sts,"sys.obj$ o, sys.user$ u, v$session s \n");strcat (dyn_sts,"WHERE s.paddr=p.addr AND s.saddr = l1.saddr \n");strcat (dyn_sts,"AND l1.raddr = r.addr AND l2.a ddr = l1.laddr \n");strcat (dyn_sts,"AND l2.type <> 'MR' AND l2.ty pe <> 'RT' \n");strcat (dyn_sts,"AND r.id1 = o.obj# (+) AND o.owner# = u.user# (+) \n");if ( (strlen (opcion_uno) > 0) )

{

Page 126: Orastat line command

strcat (dyn_sts,"and p.username LIKE NVL ('");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"','%') \n ");}

strcat (dyn_sts,"AND p.username LIKE NVL('&&us_',' %') \n");strcat (dyn_sts,"ORDER BY 1, 2, 3, 4, 5 \n");break;

case CASE_SQL_WHO_IS_WAITING_FOR:strcpy (dyn_sts,"SELECT substr(s1.username,1,12) , \n");strcat (dyn_sts,"substr(s1.osuser,1,8) ,substr(to_c har(w.session_id),1,5) , \n");strcat (dyn_sts,"P1.spid , substr(s2.username,1,12), \n");strcat (dyn_sts,"substr(s2.osuser,1,8) ,substr(to_c har(h.session_id),1,5) , \n");strcat (dyn_sts,"P2.spid \n");strcat (dyn_sts,"FROM v$process P1, \n");strcat (dyn_sts,"v$process P2, \n");strcat (dyn_sts,"v$session S1, \n");strcat (dyn_sts,"v$session S2, \n");strcat (dyn_sts,"dba_locks w, \n");strcat (dyn_sts,"dba_locks h \n");strcat (dyn_sts,"WHERE (((h.mode_held != 'None') an d (h.mode_held != 'Null') \n");strcat (dyn_sts,"and ((h.mode_requested = 'None') o r (h.mode_requested = 'Null'))) \n");strcat (dyn_sts,"and (((w.mode_held = 'None') or (w .mode_held = 'Null')) \n");strcat (dyn_sts,"and ((w.mode_requested != 'None') and (w.mode_requested != 'Null')))) \n");strcat (dyn_sts,"and w.lock_type = h.lock_type and w.lock_id1 = h.lock_id1 \n");strcat (dyn_sts,"and w.lock_id2 = h.lock_id2 and w. session_id != h.session_id \n");strcat (dyn_sts,"and w.session_id = S1.sid and h.se ssion_id = S2.sid AND \n");strcat (dyn_sts,"S1.paddr = P1.addr AND S2.paddr = P2.addr \n");break;

case CASE_SQL_WHICH_SQL_RUNNING:strcpy (dyn_sts,"SELECT s.sid, s.username, s.osuser , \n");strcat (dyn_sts,"nvl(s.machine, '?') machine, nvl(s .program, '?') program, \n");strcat (dyn_sts,"s.process F_Ground, p.spid B_Groun d, X.sql_text \n");strcat (dyn_sts,"FROM \n");strcat (dyn_sts,"sys.v_$session S, \n");strcat (dyn_sts,"sys.v_$process P, \n");strcat (dyn_sts,"sys.v_$sqlarea X \n");strcat (dyn_sts,"WHERE s.osuser like lower(nvl('&O S_User','%')) AND \n");strcat (dyn_sts,"s.username like upper(nvl('&Oracle _User','%')) AND \n");strcat (dyn_sts,"s.sid like nvl('&SID','%') AND s.p addr = p.addr AND \n");strcat (dyn_sts,"s.type != 'BACKGROUND'AND s.sql_ad dress = x.address AND \n");

Page 127: Orastat line command

strcat (dyn_sts,"s.sql_hash_value = x.hash_value \n ");strcat (dyn_sts,"ORDER BY S.sid \n");break;

case CASE_WHICH_OBJECTS_LOCKED_BY_USER:strcpy (dyn_sts,"select ADDR, INDX, INST_ID, KGLLKA DR, KGLLKUSE, \n");strcat (dyn_sts,"KGLLKSES, KGLLKSNM, KGLLKHDL, KGLL KPNC, KGLLKPNS, \n");strcat (dyn_sts,"KGLLKCNT, KGLLKMOD, KGLLKREQ, KGLL KFLG, KGLLKSPN, \n");strcat (dyn_sts,"KGLLKHTB, KGLNAHSH, KGLHDPAR, KGLH DNSP, USER_NAME, \n");strcat (dyn_sts,"KGLNAOBJ \n");strcat (dyn_sts,"from X$KGLLK \n");if ( (strlen (opcion_uno) > 0) )

{strcat (dyn_sts,"where kgllkses in (select saddr \n ");strcat (dyn_sts,"from v$session where sid =");strcat (dyn_sts,opcion_uno);strcat (dyn_sts," ) \n ");}

strcat (dyn_sts,"order by KGLLKSES \n");break;

/* ------------------------------------------------ - *//************* Agregado 25-Agosto-2005 ************ ***/

case CASE_BUFFER_CACHE_DEFINED:switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_sts,"select id, name, block_size, curre nt_size, \n");strcat (dyn_sts,"buffers \n");strcat (dyn_sts,"from v$buffer_pool \n");

break;}

break;

case CASE_BUFFER_CACHE_TOTAL_SIZE:switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_sts,"select sum(current_size),sum(buffe rs) \n");strcat (dyn_sts,"from v$buffer_pool \n");

break;

Page 128: Orastat line command

}break;

/* ------------------------------------------------ - */case CASE_OPTIMIZER_INDEX_COST_ADJ_ESTIMATE:

switch (version){case VERSION_ORACLE_920:

strcpy (dyn_sts,"select 100 * (sum(decode(event,");strcat (dyn_sts,"'db file sequential read',average_ wait,0))/");strcat (dyn_sts,"sum(decode(event,'db file scattere d read',");strcat (dyn_sts,"average_wait,0))) \n");strcat (dyn_sts,"from v$system_event \n");strcat (dyn_sts,"where event like 'db file s%' \n") ;

break;}

break;/* ------------------------------------------------ - */

case CASE_OPTIMIZER_INDEX_CACHING_ESTIMAGE:switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_sts," SELECT TO ESTIMAGE BUFFER HIT RAT IO ");break;}

/* ------------------------------------------------ - */default:

strcpy (dyn_sts,"select banner\n");strcat (dyn_sts," from v$version ");break;

}return (dyn_sts);}

--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ---

Page 129: Orastat line command

--- ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: func_dyn_title_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();

char *func_dyn_title_set (int version, int sentenci a ){static char dyn_title[MAX_VAR_SIZE];

vaciar_cadena (dyn_title,MAX_VAR_SIZE);switch ( sentencia )

{case CASE_ORACLE_VERSION:

strcpy (dyn_title,"Oracle Version \0");

Page 130: Orastat line command

break;case CASE_ACTIVE_PARAMETERS:

strcpy (dyn_title,"Active Parameters \0");break;

case CASE_USERS_CONNECTED:strcpy (dyn_title,"User conected\0");break;

case CASE_WAIT_STATISTICS:strcpy (dyn_title,"Wait Statistics\0");break;

case CASE_DATAFILE_I_0:strcpy (dyn_title,"Datafile I-O \0");break;

case CASE_DATAFILE_BLOCKS_R_W:strcpy (dyn_title,"Datafile Blocks R+W \0");break;

case CASE_WAIT_EVENTS:strcpy (dyn_title,"Wait Events \0");break;

case CASE_INSTANCE_STATUS:strcpy (dyn_title,"Instance status \0");break;

case CASE_TEMPORAL_SPACE_BY_USER:strcpy (dyn_title,"Temporal Space by user \0");break;

case CASE_TOT_FREELIST_WAIT_PERCENT:strcpy (dyn_title,"Total Freelist Wait Percentage \ 0");break;

case CASE_LAST_CHECKPOINT_TIME:strcpy (dyn_title,"Last Checkpoint Time \0");break;

case CASE_LIST_TABLESPACES:strcpy (dyn_title,"List Tablespaces \0");break;

case CASE_ACTIVE_TRANSACTIONS:strcpy (dyn_title,"Active Transactions \0");break;

case CASE_LATCH_DETAILS:strcpy (dyn_title,"Latch Details \0");break;

Page 131: Orastat line command

case CASE_RESOURCE_LIMITS:strcpy (dyn_title,"Resource Limits \0");break;

case CASE_LIST_DATAFILES:strcpy (dyn_title,"List Datafiles \0");break;

case CASE_LIST_DATAFILES_NEW_9I:strcpy (dyn_title,"List Datafiles New 9i \0");break;

case CASE_LIST_TABLESPACES_NEW_9I:strcpy (dyn_title,"List Tablespaces New 9i\0");break;

case CASE_ACTIVE_SESSIONS:strcpy (dyn_title,"Active Sessions \0");break;

case CASE_SESSIONS_WAITS:strcpy (dyn_title,"Session Waits \0");break;

case CASE_DEFAULT_STORAGE_SETS_TABLESPACE:strcpy (dyn_title,"Default Storage Settings - By Ta blespace \0");break;

case CASE_ALL_TABLES_STORAGE_SETTINGS:strcpy (dyn_title,"All tables Storage (Except SYS a nd SYSTEM) \0");break;

case CASE_ALL_NON_SYS_TABLES_SETTINGS:strcpy (dyn_title,"Non-Sys Tables \0");break;

case CASE_ALL_NON_SYS_INDEXES_SETTINGS:strcpy (dyn_title,"Non-Sys Indexes \0");break;

case CASE_USER_DEFINED:strcpy (dyn_title,"User Defined \0");break;

case CASE_LIST_DATAFILE_REDO_CONTROL_FILES:strcpy (dyn_title,"List Datafiles, Online Redo Logs , Control Files \0");break;

case CASE_LIST_DATAFILES_USED_BLOCKS:strcpy (dyn_title,"List Datafiles and their Used Bl ocks \0");break;

case CASE_LIST_SORT_BY_USER:

Page 132: Orastat line command

strcpy (dyn_title,"List sorts by user \0");break;

case CASE_LIST_LOCK_STATUS:strcpy (dyn_title,"List lock status \0");break;

case CASE_LIST_USER_BY_CPU_USAGE:strcpy (dyn_title,"List Users by CPU Usage \0");break;

case CASE_SQL_STATEMENT_BY_THIS_USER:strcpy (dyn_title,"Sql statement by this user \0");break;

case CASE_REDO_LOGS_STATUS:strcpy (dyn_title,"Redo Logs - Status \0");break;

case CASE_ARCHIVED_LOGS_HISTORY:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_title,"Archived Logs History - by firs t TimeStamp \0");break;

case VERSION_ORACLE_734:strcpy (dyn_title,"Archived Logs History - by firs t TimeStamp \0");break;

}break;

case CASE_REDO_LOG_RECOVERY_REPORT:strcpy (dyn_title,"Redo Log Recovery Report - CURRE NT Online Redo log info \0");break;

case CASE_ARCHIVE_LOG_HISTROY:strcpy (dyn_title,"Archive Log History \0");break;

case CASE_SESSION_LATCH_WAITS_SQL:strcpy (dyn_title,"Session Latch Waits - SQL \0");break;

case CASE_SESSION_PROGRAM_RUNNING_SQL:strcpy (dyn_title,"Session and Program Running - SQ L \0");break;

case CASE_PRIVILEGES_BY_USER:

Page 133: Orastat line command

strcpy (dyn_title,"Privileges by User \0");break;

case CASE_DETAILED_LOCKING_CAUSES:strcpy (dyn_title,"Detailed locking causes \0");break;

case CASE_CURRENT_STATISTICS_VALUES:strcpy (dyn_title,"Current Statistics Values \0");break;

case CASE_TABLE_DESCRIPTION_USER_TABLENAME:strcpy (dyn_title,"Table Description del Usuario [< OWNER>] [<TABLENAME>] \0");break;

case CASE_CURRENT_ACTIVITY_REPORT:strcpy (dyn_title,"Current Activity Report \0");break;

case CASE_DICTIONARY_TABLE_COMMENTS:strcpy (dyn_title,"Table Dictionary Comments \0");break;

case CASE_DICTIONARY_TABLE_COLUMNS_DESCRIP:strcpy (dyn_title,"Table Dictionary Columns Descrip tion \0");break;

case CASE_SGA_STATISTIC_GENERAL:strcpy (dyn_title,"Sga Statistic General \0");break;

case CASE_SGA_STATISTIC_MEMORY_USAGE:strcpy (dyn_title,"Sga Statistic Memory Usage \0");break;

case CASE_SGA_STATISTIC_INFORMATION:strcpy (dyn_title,"Sga Statistic Memory Information \0");break;

case CASE_ROW_CACHE_INFORMATION:strcpy (dyn_title,"Row Cache Information \0");break;

case CASE_PERFORMANCE_DISK_I_O:strcpy (dyn_title,"Performance Disk I-O \0");break;

case CASE_RECURSIVE_CALLS:strcpy (dyn_title,"Recursive Calls \0");break;

case CASE_SYSTEM_EVENTS:strcpy (dyn_title,"System Events \0");

Page 134: Orastat line command

break;

/* ------------------------------------------------ -------------- *//*

#define CASE_SQL_AREA_ALL_ENTRIES 52*/

case CASE_SQL_AREA_ALL_ENTRIES:strcpy (dyn_title,"Sql Area All Information \0");break;/*

#define CASE_SQL_AREA_CPU_USAGE 53*/

case CASE_SQL_AREA_CPU_USAGE:strcpy (dyn_title,"Sql Area Cpu Usage \0");break;/*

#define CASE_SQL_AREA_MEMORY_USAGE 54*/

case CASE_SQL_AREA_MEMORY_USAGE:strcpy (dyn_title,"Sql Area Memory Usage \0");break;/*/*

#define CASE_SQL_AREA_BUFFER_GET_SUM 55*/

case CASE_SQL_AREA_BUFFER_GET_SUM:strcpy (dyn_title,"Sql Area Buffer Get Sum \0");break;/*

#define CASE_INIT_PARAMETERS_VALUES_STATUS 56*/

case CASE_INIT_PARAMETERS_VALUES_STATUS:strcpy (dyn_title,"Init Parameters Values - Status \0");break;

/* ------------------------------------------------ -------------- */case CASE_TABLESPACE_FRAGMENTATION:

strcpy (dyn_title,"Tablespace Defragmentation \0");break;

case CASE_SHOW_NLS_PARAMETERS:strcpy (dyn_title,"Show Nls Parameters \0");

Page 135: Orastat line command

break;case CASE_CONTROL_FILES_STATUS:

strcpy (dyn_title,"Control File Status \0");break;

case CASE_SORT_SEGMENTS_USERS:strcpy (dyn_title,"Show Sort Segments - Users \0");break;

case CASE_ORACLE_QUOTAS:strcpy (dyn_title,"Quotas by TableSpace - User \0") ;break;

case CASE_TABLE_GENERAL_DESCRIPTION:strcpy (dyn_title,"Tables General Description \0");break;

case CASE_TABLE_COLUMN_DESCRIPTION:strcpy (dyn_title,"Tables Column Description \0");break;

case CASE_TABLE_CONSTRAINTS:strcpy (dyn_title,"Tables Constraints \0");break;

case CASE_INDEX_GENERAL_DESCRIPTION:strcpy (dyn_title,"Index General Description \0");break;

case CASE_AUDIT_DEFINITION:strcpy (dyn_title,"Audit Definition \0");break;

case CASE_SHOW_SEGMENTS_EXTENTS:strcpy (dyn_title," Show Segments - Extents \0");break;

case CASE_SHOW_EXTENTS_INSIDE_DATAFILES:strcpy (dyn_title," Show Extents Inside Datafiles \ 0");break;

case CASE_SHOW_USER_LISTS:strcpy (dyn_title," Show Users Lists \0");break;

case CASE_SHOW_ROLES_PRIVILEGES:strcpy (dyn_title," Show Roles - Privileges \0");break;

case CASE_SHOW_PRIVILEGES_COLUMNS:strcpy (dyn_title," Show Privileges by Columns \0") ;break;

Page 136: Orastat line command

case CASE_SHOW_LOCKS_VIEWS:strcpy (dyn_title," Show Locks Views (Another Way ) \0");break;

case CASE_GRAPH_LOCK_WAITS:strcpy (dyn_title," Graph Session Lock Waits \0");break;

case CASE_OBJECT_ACCESS_SESSION:strcpy (dyn_title," Object access by Sid \0");break;

case CASE_SHOW_LATCHES:strcpy (dyn_title," Show Latches \0");break;

case CASE_SHOW_STATISTICS:strcpy (dyn_title," Show Statistics \0");break;

case CASE_SHOW_TRANSACTIONS:strcpy (dyn_title," Show Transaction Status \0");break;

case CASE_SHOW_DATAFILES_STATUS:strcpy (dyn_title," Datafile Status \0");break;

case CASE_SHOW_DB_OBJECT_CACHE:strcpy (dyn_title," Show Database Object Cache \0") ;break;

case CASE_TABLE_ALERT_EXTENT_USED:strcpy (dyn_title," Table Alert Extent Used \0");break;

case CASE_INDEX_ALERT_EXTENT_USED:strcpy (dyn_title," Index Alert Extent Used \0");break;

case CASE_USER_TIME_WORKING:strcpy (dyn_title," User Active Program Working \0" );break;

case CASE_IS_USER_WORKING:strcpy (dyn_title," User Time User Working \0");break;

case CASE_VER_SQL_PROGRAM:strcpy (dyn_title," See SQL*Plus/Other Programs \0" );break;

case CASE_SQL_SESS_IO:

Page 137: Orastat line command

strcpy (dyn_title," Show Session I/O Activity \0");break;

case CASE_SQL_SESSION_EVENT:strcpy (dyn_title," Show Session Event Times \0");break;

case CASE_SQL_SESSION_WAIT:strcpy (dyn_title," Show Session Wait Reasons \0");break;

case CASE_SQL_SESSION_LONG_OPER:strcpy (dyn_title," Show Session Long Opers \0");break;

case CASE_SQL_LOCKED_OBJECTS:strcpy (dyn_title," Show Locked Objects \0");break;

case CASE_SQL_TRANSACTION_DETAIL:strcpy (dyn_title," Show Transactions Details \0");break;

case CASE_SQL_LOCK_MEDIUM_INFO:strcpy (dyn_title," Show Lock Medium Details \0");break;

case CASE_SQL_LOCK_FULL_INFO:strcpy (dyn_title," Show Lock Full Details \0");break;

case CASE_SQL_LOCK_BY_SESSION_ID:strcpy (dyn_title," Show Lock Session by SID \0");break;

case CASE_SQL_WHO_IS_WAITING_FOR:strcpy (dyn_title,"Locking for who is waiting ? \0" );break;

case CASE_SQL_WHICH_SQL_RUNNING:strcpy (dyn_title,"Which Sql is Running \0");break;

case CASE_WHICH_OBJECTS_LOCKED_BY_USER:strcpy (dyn_title,"Which Object Locked By User \0") ;break;

/* ------------------------------------------------ - *//************* Agregado 25-Agosto-2005 ************ ***/

case CASE_BUFFER_CACHE_DEFINED:strcpy (dyn_title,"Show Buffer Cached Defined \0");break;

Page 138: Orastat line command

/* ------------------------------------------------ - */case CASE_BUFFER_CACHE_TOTAL_SIZE:

strcpy (dyn_title,"Show Buffer Total Size \0");break;

/* ------------------------------------------------ - */case CASE_OPTIMIZER_INDEX_COST_ADJ_ESTIMATE:

strcpy (dyn_title,"Estimate parameter optimizer_ind ex_cost_adj \0");break;

/* ------------------------------------------------ - */case CASE_OPTIMIZER_INDEX_CACHING_ESTIMAGE:

strcpy (dyn_title,"Estimate parameter optimizer_ind ex_caching \0");break;

/* ------------------------------------------------ - *//* ------------------------------------------------ - */

default:strcpy (dyn_title,"Oracle Version \0");break;

}return dyn_title;}--- ---

--- ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: funciones_auxiliares.c ****** ****** ***

Page 139: Orastat line command

*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***

/* Result Sets Interface */#ifndef SQL_CRSR# define SQL_CRSR struct sql_cursor { unsigned int curocn; void *ptr1; void *ptr2; unsigned int magic; }; typedef struct sql_cursor sql_cursor; typedef struct sql_cursor SQL_CURSOR;#endif /* SQL_CRSR */

/* Thread Safety */typedef void * sql_context;typedef void * SQL_CONTEXT;

/* Object support */struct sqltvn{ unsigned char *tvnvsn; unsigned short tvnvsnl; unsigned char *tvnnm; unsigned short tvnnml; unsigned char *tvnsnm; unsigned short tvnsnml;};typedef struct sqltvn sqltvn;

struct sqladts{

Page 140: Orastat line command

unsigned int adtvsn; unsigned short adtmode; unsigned short adtnum; sqltvn adttvn[1]; };typedef struct sqladts sqladts;

static struct sqladts sqladt = { 1,0,0,};

/* Binding to PL/SQL Records */struct sqltdss{ unsigned int tdsvsn; unsigned short tdsnum; unsigned char *tdsval[1]; };typedef struct sqltdss sqltdss;static struct sqltdss sqltds ={ 1, 0,};

/* File name & Package Name */struct sqlcxp{ unsigned short fillen; char filnam[24];};static const struct sqlcxp sqlfpn ={ 23, "funciones_auxiliares.pc"};

static unsigned int sqlctx = 628383107;

Page 141: Orastat line command

static struct sqlexd { unsigned int sqlvsn; unsigned int arrsiz; unsigned int iters; unsigned int offset; unsigned short selerr; unsigned short sqlety; unsigned int occurs; const short *cud; unsigned char *sqlest; const char *stmt; sqladts *sqladtp; sqltdss *sqltdsp; void **sqphsv; unsigned int *sqphsl; int *sqphss; void **sqpind; int *sqpins; unsigned int *sqparm; unsigned int **sqparc; unsigned short *sqpadto; unsigned short *sqptdso; unsigned int sqlcmax; unsigned int sqlcmin; unsigned int sqlcincr; unsigned int sqlctimeout; unsigned int sqlcnowait; int sqfoff; unsigned int sqcmod; unsigned int sqfmod; void *sqhstv[1]; unsigned int sqhstl[1]; int sqhsts[1]; void *sqindv[1]; int sqinds[1]; unsigned int sqharm[1]; unsigned int *sqharc[1]; unsigned short sqadto[1]; unsigned short sqtdso[1];

Page 142: Orastat line command

} sqlstm = {12,1};

/* SQLLIB Prototypes */extern void sqlcxt (void **, unsigned int *, struct sqlexd *, const struct s qlcxp *);extern void sqlcx2t(void **, unsigned int *, struct sqlexd *, const struct s qlcxp *);extern void sqlbuft(void **, char *);extern void sqlgs2t(void **, char *);extern void sqlorat(void **, unsigned int *, void * );

/* Forms Interface */static const int IAPSUCC = 0;static const int IAPFAIL = 1403;static const int IAPFTL = 535;extern void sqliem(char *, int *);

typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;typedef struct { unsigned short len; unsigned char arr[1]; } varchar;

/* cud (compilation unit data) array */static const short sqlcud0[] ={12,4242,178,1,0,};

#include <stdio.h>#include <stdlib.h>#include <string.h>#include "constant_definition.h"#include "case_constant_func_def.h"#include "case_constant_sql_stmt_def.h"#include "constant_oracle_versions.h"

#include <oraca.h>#include <sqlca.h>

#include "extern_functions_funciones_auxiliares.h"

/* EXEC SQL INCLUDE sqlca;

Page 143: Orastat line command

*/ /* * $Header: sqlca.h,v 1.3 1994/12/12 19:27:27 jbasu Exp $ sqlca.h */

/* Copyright (c) 1985,1986, 1998 by Oracle Corporat ion. */ /*NAME SQLCA : SQL Communications Area.FUNCTION Contains no code. Oracle fills in the SQLCA with status info during the execution of a SQL stmt.NOTES ************************************************* ************* *** *** *** This file is SOSD. Porters must change the d ata types *** *** appropriately on their platform. See notes/p cport.doc *** *** for more information. *** *** *** ************************************************* *************

If the symbol SQLCA_STORAGE_CLASS is defined, the n the SQLCA will be defined to have this storage class. For e xample: #define SQLCA_STORAGE_CLASS extern will define the SQLCA as an extern. If the symbol SQLCA_INIT is defined, then the SQL CA will be statically initialized. Although this is not nece ssary in order to use the SQLCA, it is a good pgming practice no t to have unitialized variables. However, some C compilers/ OS's don't allow automatic variables to be init'd in this ma nner. Therefore, if you are INCLUDE'ing the SQLCA in a place where it would be an automatic AND your C compiler/OS doesn't allow this style of initialization, then SQLCA_INIT should be left undefined -- all others can define SQLCA_INIT if they wish.

If the symbol SQLCA_NONE is defined, then the SQL CA variable will

Page 144: Orastat line command

not be defined at all. The symbol SQLCA_NONE sho uld not be defined in source modules that have embedded SQL. Howeve r, source modules that have no embedded SQL, but need to manipulate a sqlca struct passed in as a parameter, can set the SQLCA_NONE symbol to avoid creation of an extraneous sqlca variable. MODIFIED lvbcheng 07/31/98 - long to int jbasu 12/12/94 - Bug 217878: note this is an SOSD file losborne 08/11/92 - No sqlca var if SQLCA_NO NE macro set Clare 12/06/84 - Ch SQLCA to not be an exter n. Clare 10/21/85 - Add initialization. Bradbury 01/05/86 - Only initialize when SQLCA_ INIT set Clare 06/12/86 - Add SQLCA_STORAGE_CLASS opt ion.*/ #ifndef SQLCA#define SQLCA 1 struct sqlca { /* ub1 */ char sqlcaid[8]; /* b4 */ int sqlabc; /* b4 */ int sqlcode; struct { /* ub2 */ unsigned short sqlerrml; /* ub1 */ char sqlerrmc[70]; } sqlerrm; /* ub1 */ char sqlerrp[8]; /* b4 */ int sqlerrd[6]; /* ub1 */ char sqlwarn[8]; /* ub1 */ char sqlext[8]; };

#ifndef SQLCA_NONE #ifdef SQLCA_STORAGE_CLASSSQLCA_STORAGE_CLASS struct sqlca sqlca#else struct sqlca sqlca

Page 145: Orastat line command

#endif #ifdef SQLCA_INIT = { {'S', 'Q', 'L', 'C', 'A', ' ', ' ', ' '}, sizeof(struct sqlca), 0, { 0, {0}}, {'N', 'O', 'T', ' ', 'S', 'E', 'T', ' '}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0} }#endif ;#endif #endif /* end SQLCA *//* EXEC SQL INCLUDE sqlda; */ /* * $Header: sqlda.h 31-jul-99.19:34:41 apopat Exp $ sqlda.h */

/************************************************** ************** The SQLDA descriptor definition **-------------------------------------------------- ------------** VAX/3B Version ** ** Copyright (c) 1987, 1997, 1998, 1999 by Oracle C orporation **************************************************** ************/

/* NOTES ************************************************* ************* *** *** *** This file is SOSD. Porters must change the d ata types *** *** appropriately on their platform. See notes/p cport.doc ***

Page 146: Orastat line command

*** for more information. *** *** *** ************************************************* **************/

/* MODIFIED apopat 07/31/99 - [707588] TAB to blanks f or OCCS lvbcheng 10/27/98 - change long to int for s qlda lvbcheng 08/15/97 - Move sqlda protos to sql cpr.h lvbcheng 06/25/97 - Move sqlda protos to thi s file jbasu 01/29/95 - correct typo jbasu 01/27/95 - correct comment - ub2->s b2 jbasu 12/12/94 - Bug 217878: note this is an SOSD file Morse 12/01/87 - undef L and S for v6 incl ude files Richey 07/13/87 - change int defs to long Clare 09/13/84 - Port: Ch types to match S QLLIB structs Clare 10/02/86 - Add ifndef SQLDA*/

#ifndef SQLDA_#define SQLDA_ 1 #ifdef T# undef T#endif#ifdef F# undef F#endif

#ifdef S# undef S#endif#ifdef L# undef L#endif struct SQLDA { /* ub4 */ int N; /* Descriptor size in number of entries */ /* text** */ char **V; /* Ptr to Arr of addre sses of main variables */ /* ub4* */ int *L; /* Ptr to Arr of lengt hs of buffers */

Page 147: Orastat line command

/* sb2* */ short *T; /* Ptr to Arr of types of buffers */ /* sb2** */ short **I; /* Ptr to Arr of addre sses of indicator vars */ /* sb4 */ int F; /* Number of variables found by DESCRIBE */ /* text** */ char **S; /* Ptr to Arr of varia ble name pointers */ /* ub2* */ short *M; /* Ptr to Arr of max l engths of var. names */ /* ub2* */ short *C; /* Ptr to Arr of curre nt lengths of var. names */ /* text** */ char **X; /* Ptr to Arr of ind. var. name pointers */ /* ub2* */ short *Y; /* Ptr to Arr of max l engths of ind. var. names */ /* ub2* */ short *Z; /* Ptr to Arr of cur l engths of ind. var. names */ }; typedef struct SQLDA SQLDA; #endif

/* ----------------- *//* defines for sqlda *//* ----------------- */

#define SQLSQLDAAlloc(arg1, arg2, arg3, arg4) sqlal dt(arg1, arg2, arg3, arg4)

#define SQLSQLDAFree(arg1, arg2) sqlclut(arg1, arg2 )

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

int stmtsqlncmp (char *punt_cad1, char *punt_cad2, int largo){int pos=0;int caracter1=0;int caracter2=0;int sizecad1=(int )strlen (punt_cad1);int sizecad2=(int )strlen (punt_cad2);

/* printf ("A comparar [%s] = [%s] \n",punt_cad1, pu nt_cad2); */

Page 148: Orastat line command

for (pos=0; pos < largo; pos ++){if (( pos > sizecad1 ) || ( pos > sizecad2) )

return 1;else

{caracter1= tolower (punt_cad1[pos]);caracter2= tolower (punt_cad2[pos]);

/* printf ("Carater [%c] == [%c] \n",caracter1,cara cter2); */if ( caracter1 != caracter2 ) return 1;}

}/* printf ("Encontrado [%s] \n",punt_cad1); */

return 0;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

void vaciar_cadena (void *punt_cadena, int largo){int pos;

for (pos = 0; pos < largo; pos ++)((char *) punt_cadena ) [pos] = ASCII_FIN_LINEA;

}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

col_size (char *puntero, int posicion){char ascii_nro[3];static int numero;int i;

for ( i = posicion*2; i < posicion*2+2; i++)ascii_nro[i-posicion*2]=puntero[i];

Page 149: Orastat line command

ascii_nro[2]=ASCII_FIN_LINEA;numero=atoi(ascii_nro);return numero;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

int filtrar_char (int caracter){if ( (caracter >= 32 && caracter <= 127 ) ) return caracter;else

{switch (caracter)

{case 164: break;case 165: break;case 168: break;case 173: break;default: caracter=32;break;}

}return caracter;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *separar_dato (void *punt_cad, int opcion ){static char cadena[MAX_LEN_CONNECT];int posicion=0;int pos_arroba=0;int pos_slash=0;int largocad=0;int caracter=0;int contador=0;

Page 150: Orastat line command

largocad=(int )strlen ((char *) punt_cad);vaciar_cadena (cadena,MAX_LEN_CONNECT);

for ( posicion=0; posicion < largocad; posicion++){caracter = ((char *) punt_cad )[posicion];if ( caracter == ASCII_SLASH )

pos_slash = posicion;else if (caracter == ASCII_ARROBA)

pos_arroba = posicion;}

switch (opcion ){case USERNAME:

for (posicion=0; posicion < pos_slash; posicion++){caracter = ((char *) punt_cad )[posicion];cadena[contador]=caracter;contador++;}

break;case PASSWORD:

for (posicion=pos_slash+1; posicion < pos_arroba; p osicion++){caracter = ((char *) punt_cad )[posicion];cadena[contador]=caracter;contador++;}

break;case CONEXION:

for (posicion=pos_arroba+1; posicion < largocad; po sicion++){caracter = ((char *) punt_cad )[posicion];cadena[contador]=caracter;contador++;}

break;}

cadena[contador]=ASCII_FIN_LINEA;return (cadena);

Page 151: Orastat line command

}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_columna_funcion ( void *punt_cadena, int n ro_columna, int *nro_funcion ){char procesar[10];char col_char[10];char func_char[10];

int pos_col = 0;int flag_procesar = 0;int caracter = 0;int delimitador = 0;int contador = 0;int nro_col = 0;int nro_func = 0;

for ( pos_col = 1; pos_col < 3; pos_col ++){procesar [pos_col-1] = ( (char *) punt_cadena)[pos_ col];procesar [pos_col] = ASCII_FIN_LINEA;}

if (strncmp (procesar,"SI",2) == 0 )flag_procesar = SI_PROCESAR;

if (strncmp (procesar,"NO",2) == 0 ){flag_procesar = NO_PROCESAR;return (NO_PROCESAR);}

vaciar_cadena (col_char,10);vaciar_cadena (func_char,10);for ( pos_col = 3; pos_col < (int ) (strlen ( (char *) punt_cadena )); pos_col ++ )

{caracter = ( (char *) punt_cadena )[pos_col];

/* printf (" ______> CHAR={%c} POS_COL=[%d] CON TADOR=[%d] LIMITADOR=[%d]\n",caracter,pos_col,conta dor,delimitador); */if ( caracter == ASCII_SEPARADOR )

Page 152: Orastat line command

if ( delimitador == 0 ) delimitador++;

elsedelimitador--;

if ( ( delimitador == 1 ) && ( caracter != ASCII_SE PARADOR ) ){if ( contador < 2 )

{col_char[contador] = caracter;col_char[contador+1] = ASCII_FIN_LINEA;}

else if (contador >=2 ){func_char [contador-2] = caracter;func_char [contador-2+1]= ASCII_FIN_LINEA;}

/* printf (" ______________>>>>>> COL_CHAR [%s] F UNC_CHAR [%s] NRO_COLUMNA [%d] \n",col_char,func_ch ar,nro_columna); */contador++;if ( contador == 4 )

{nro_col = atoi (col_char);nro_func = atoi (func_char);contador=0;vaciar_cadena (col_char,10);vaciar_cadena (func_char,10);if ( nro_col == nro_columna )

{*nro_funcion = nro_func;return (SI_PROCESAR);}

}}

}return (NO_PROCESAR);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

Page 153: Orastat line command

char *convert_ss_to_hh_mm_ss (char *punt_cadena ){static char dato_1[MAX_LEN_VARCHAR];char auxiliar[12];

int hora,minuto,segundo;float numero= (float )atoi (punt_cadena);

vaciar_cadena (dato_1,MAX_LEN_VARCHAR);vaciar_cadena (auxiliar,12);

hora = (int )(numero/60/60);minuto = (int ) ((numero/60/60 - (int )(numero/60/60 ))*60);segundo = (int ) ((numero/60 - (int )(numero/60))*6 0);

if (hora < 10)sprintf (auxiliar,"00%d:",hora);

else if ((hora > 9) && (hora < 100))sprintf (auxiliar,"0%d:",hora);

elsesprintf (auxiliar,"%d:",hora);

strcat (dato_1,auxiliar);if (minuto < 10)

sprintf (auxiliar,"0%d:",minuto);else

sprintf (auxiliar,"%2d:",minuto);strcat (dato_1,auxiliar);if (segundo < 10)

sprintf (auxiliar,"0%d\n\0",segundo);else

sprintf (auxiliar,"%2d\n\0",segundo);strcat (dato_1,auxiliar);return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

void vaciar_estructura ( void *punt_sqlda )

Page 154: Orastat line command

{int pos_k, pos_j;int limite_k = ((SQLDA *) punt_sqlda ) ->F;int limite_j;

for ( pos_k = 0; pos_k < limite_k ; pos_k++ ){limite_j = ((SQLDA *) punt_sqlda ) ->L[ pos_k ];

for ( pos_j = 0; pos_j < limite_j ; pos_j++)(char ) (((SQLDA *) punt_sqlda )->V[pos_k])[pos_j] = ASCII_FIN_LINEA;

}}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_encabe (int tamano, int posicion, char *pu ntero_char){int pos_col=0;int pos_cad=0;int columna=-1;int caracter=0;int salto=0;

for ( pos_col = 0; pos_col < (int )strlen(puntero_c har); pos_col ++){if ( puntero_char[pos_col] == ASCII_SEPARADOR ) col umna++;if ( columna == posicion ) break;}

for ( pos_cad = pos_col+1; pos_cad < tamano+pos_col +1; pos_cad++ ){if ( puntero_char[pos_cad]==ASCII_SEPARADOR) salto+ +;if (salto==0)

{caracter = filtrar_char ( puntero_char[pos_cad] );printf ("%c",caracter);}

else printf (" ");}

Page 155: Orastat line command

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_cadena (int nrocolum, char *puntero_char){int pos, caracter;

for ( pos=0; pos < nrocolum; pos++ ){caracter=filtrar_char(puntero_char[pos]);printf ("%c",caracter);}

fflush(stdout);return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *pasar_amayus (char *cadena ){int pos=0;

/* printf ("Iniciando conversion \n"); */for (pos =0; pos < (int ) strlen (cadena); pos ++)

cadena[pos]=toupper(cadena[pos]);

return cadena;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *funcion_columna (int nro_bytes, void *punt_ca dena, int nro_funcion)

Page 156: Orastat line command

{static char dato_1 [1024];

long valor_salida;long valor_entrada;

vaciar_cadena (dato_1,1024);switch (nro_funcion)

{case FUNC_DB_BLOCK_SIZE:

/* Calculo DB_BLOCK_SIZE, multiplico por la COLUMNA y devuelvo el RESULTADO *//* ------------------------------------------------ ------------------------ */itoa ((atoi ( (char *) punt_cadena ) * db_block_siz e() ) / 1000,dato_1,10);break;

case FUNC_COMMAND_SQL:/* Decodifico el nro de la Columna y lo relaciono c on el nombre del COMANDO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_command_oracle ( atoi ( (ch ar *) punt_cadena) ) );break;

case FUNC_LOCK_MODE:/* Decodifico el nro de la Columna y lo relaciono c on el tipo de LOCKEO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_lock_mode ( atoi ( (char *) punt_cadena) ) );break;

case FUNC_LOCK_NAME_MODE:/* Decodifico el nro de la Columna y lo relaciono c on el nombre de LOCKEO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_name_lock ( (char *) punt_c adena) );break;

case FUNC_DB_BLOCK_SIZE0:/* Calculo DB_BLOCK_SIZE, multiplico por la COLUMNA y devuelvo el RESULTADO *//* ------------------------------------------------ ------------------------ */itoa ((atoi ( (char *) punt_cadena ) * db_block_siz e() ) / 1024,dato_1,10);break;

case FUNC_DB_OBJECT_TYPE:/* Busco el OBJECT_TYPE dentro de la tabla ALL_OBJE CTS *//* ------------------------------------------------ ------------------------ */strcpy (dato_1,db_object_type ( atoi ( (char *) pun t_cadena ) ) );break;

case FUNC_DB_OBJECT_OWNER_NAME:

Page 157: Orastat line command

/* Busco el OBJECT_OWNER_NAME dentro de la tabla AL L_OBJECTS *//* ------------------------------------------------ ------------------------ */strcpy (dato_1,db_object_owner_name ( atoi ( (char *) punt_cadena ) ) );/* printf ("[%s] \n",dato_1); */break;

case FUNC_DB_SESSION_SID:/* Busco el OBJECT_OWNER_NAME dentro de la tabla AL L_OBJECTS *//* ------------------------------------------------ ------------------------ */

/* printf ("Cons[%s]\n",((char *) punt_cadena)); */strcpy (dato_1,db_session_sid_locked ((char *) punt _cadena ));/* printf ("[%s] \n",dato_1);*/break;

case FUNC_CONVERT_HH_MM_SS:/* Busco el OBJECT_OWNER_NAME dentro de la tabla AL L_OBJECTS *//* ------------------------------------------------ ------------------------ */strcpy (dato_1,convert_ss_to_hh_mm_ss ((char *) pun t_cadena ));break;

case FUNC_DB_COMP_TBLSPC_INI_EXT:/* Busco el INIT_EXTENT de un TABLESPACE, y lo comp aro en el valor *//* ------------------------------------------------ --------------- */valor_entrada = atoi ((char *) punt_cadena);valor_salida = db_tablspace_ini_ext_size ((char *) punt_cadena);if (valor_entrada == 0)

strcpy (dato_1,"FREE\n");else

if (valor_entrada != valor_salida )strcpy (dato_1,"CHANGED\n");

else strcpy (dato_1,"INITIAL\n");

break;default:

break;}

return (dato_1);}

--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ----------------------

Page 158: Orastat line command

--------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: funciones_auxiliares.pc ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***#include <stdio.h>#include <stdlib.h>#include <string.h>#include "constant_definition.h"#include "case_constant_func_def.h"#include "case_constant_sql_stmt_def.h"#include "constant_oracle_versions.h"

#include <oraca.h>#include <sqlca.h>

#include "extern_functions_funciones_auxiliares.h"

EXEC SQL INCLUDE sqlca; EXEC SQL INCLUDE sqlda;

/* ----****----****----****----****----****----**** ----****----****----****----**** */

Page 159: Orastat line command

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

int stmtsqlncmp (char *punt_cad1, char *punt_cad2, int largo){int pos=0;int caracter1=0;int caracter2=0;int sizecad1=(int )strlen (punt_cad1);int sizecad2=(int )strlen (punt_cad2);

/* printf ("A comparar [%s] = [%s] \n",punt_cad1, pu nt_cad2); */

for (pos=0; pos < largo; pos ++){if (( pos > sizecad1 ) || ( pos > sizecad2) )

return 1;else

{caracter1= tolower (punt_cad1[pos]);caracter2= tolower (punt_cad2[pos]);

/* printf ("Carater [%c] == [%c] \n",caracter1,cara cter2); */if ( caracter1 != caracter2 ) return 1;}

}/* printf ("Encontrado [%s] \n",punt_cad1); */

return 0;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

void vaciar_cadena (void *punt_cadena, int largo){int pos;

for (pos = 0; pos < largo; pos ++)((char *) punt_cadena ) [pos] = ASCII_FIN_LINEA;

}

Page 160: Orastat line command

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

col_size (char *puntero, int posicion){char ascii_nro[3];static int numero;int i;

for ( i = posicion*2; i < posicion*2+2; i++)ascii_nro[i-posicion*2]=puntero[i];

ascii_nro[2]=ASCII_FIN_LINEA;numero=atoi(ascii_nro);return numero;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

int filtrar_char (int caracter){if ( (caracter >= 32 && caracter <= 127 ) ) return caracter;else

{switch (caracter)

{case 164: break;case 165: break;case 168: break;case 173: break;default: caracter=32;break;}

}return caracter;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

Page 161: Orastat line command

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *separar_dato (void *punt_cad, int opcion ){static char cadena[MAX_LEN_CONNECT];int posicion=0;int pos_arroba=0;int pos_slash=0;int largocad=0;int caracter=0;int contador=0;

largocad=(int )strlen ((char *) punt_cad);vaciar_cadena (cadena,MAX_LEN_CONNECT);

for ( posicion=0; posicion < largocad; posicion++){caracter = ((char *) punt_cad )[posicion];if ( caracter == ASCII_SLASH )

pos_slash = posicion;else if (caracter == ASCII_ARROBA)

pos_arroba = posicion;}

switch (opcion ){case USERNAME:

for (posicion=0; posicion < pos_slash; posicion++){caracter = ((char *) punt_cad )[posicion];cadena[contador]=caracter;contador++;}

break;case PASSWORD:

for (posicion=pos_slash+1; posicion < pos_arroba; p osicion++){caracter = ((char *) punt_cad )[posicion];cadena[contador]=caracter;contador++;

Page 162: Orastat line command

}break;

case CONEXION:for (posicion=pos_arroba+1; posicion < largocad; po sicion++)

{caracter = ((char *) punt_cad )[posicion];cadena[contador]=caracter;contador++;}

break;}

cadena[contador]=ASCII_FIN_LINEA;return (cadena);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_columna_funcion ( void *punt_cadena, int n ro_columna, int *nro_funcion ){char procesar[10];char col_char[10];char func_char[10];

int pos_col = 0;int flag_procesar = 0;int caracter = 0;int delimitador = 0;int contador = 0;int nro_col = 0;int nro_func = 0;

for ( pos_col = 1; pos_col < 3; pos_col ++){procesar [pos_col-1] = ( (char *) punt_cadena)[pos_ col];procesar [pos_col] = ASCII_FIN_LINEA;}

if (strncmp (procesar,"SI",2) == 0 )flag_procesar = SI_PROCESAR;

Page 163: Orastat line command

if (strncmp (procesar,"NO",2) == 0 ){flag_procesar = NO_PROCESAR;return (NO_PROCESAR);}

vaciar_cadena (col_char,10);vaciar_cadena (func_char,10);for ( pos_col = 3; pos_col < (int ) (strlen ( (char *) punt_cadena )); pos_col ++ )

{caracter = ( (char *) punt_cadena )[pos_col];

/* printf (" ______> CHAR={%c} POS_COL=[%d] CON TADOR=[%d] LIMITADOR=[%d]\n",caracter,pos_col,conta dor,delimitador); */if ( caracter == ASCII_SEPARADOR )

if ( delimitador == 0 ) delimitador++;

elsedelimitador--;

if ( ( delimitador == 1 ) && ( caracter != ASCII_SE PARADOR ) ){if ( contador < 2 )

{col_char[contador] = caracter;col_char[contador+1] = ASCII_FIN_LINEA;}

else if (contador >=2 ){func_char [contador-2] = caracter;func_char [contador-2+1]= ASCII_FIN_LINEA;}

/* printf (" ______________>>>>>> COL_CHAR [%s] F UNC_CHAR [%s] NRO_COLUMNA [%d] \n",col_char,func_ch ar,nro_columna); */contador++;if ( contador == 4 )

{nro_col = atoi (col_char);nro_func = atoi (func_char);contador=0;vaciar_cadena (col_char,10);vaciar_cadena (func_char,10);if ( nro_col == nro_columna )

{

Page 164: Orastat line command

*nro_funcion = nro_func;return (SI_PROCESAR);}

}}

}return (NO_PROCESAR);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *convert_ss_to_hh_mm_ss (char *punt_cadena ){static char dato_1[MAX_LEN_VARCHAR];char auxiliar[12];

int hora,minuto,segundo;float numero= (float )atoi (punt_cadena);

vaciar_cadena (dato_1,MAX_LEN_VARCHAR);vaciar_cadena (auxiliar,12);

hora = (int )(numero/60/60);minuto = (int ) ((numero/60/60 - (int )(numero/60/60 ))*60);segundo = (int ) ((numero/60 - (int )(numero/60))*6 0);

if (hora < 10)sprintf (auxiliar,"00%d:",hora);

else if ((hora > 9) && (hora < 100))sprintf (auxiliar,"0%d:",hora);

elsesprintf (auxiliar,"%d:",hora);

strcat (dato_1,auxiliar);if (minuto < 10)

sprintf (auxiliar,"0%d:",minuto);else

sprintf (auxiliar,"%2d:",minuto);strcat (dato_1,auxiliar);

Page 165: Orastat line command

if (segundo < 10)sprintf (auxiliar,"0%d\n\0",segundo);

elsesprintf (auxiliar,"%2d\n\0",segundo);

strcat (dato_1,auxiliar);return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

void vaciar_estructura ( void *punt_sqlda ){int pos_k, pos_j;int limite_k = ((SQLDA *) punt_sqlda ) ->F;int limite_j;

for ( pos_k = 0; pos_k < limite_k ; pos_k++ ){limite_j = ((SQLDA *) punt_sqlda ) ->L[ pos_k ];

for ( pos_j = 0; pos_j < limite_j ; pos_j++)(char ) (((SQLDA *) punt_sqlda )->V[pos_k])[pos_j] = ASCII_FIN_LINEA;

}}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_encabe (int tamano, int posicion, char *pu ntero_char){int pos_col=0;int pos_cad=0;int columna=-1;int caracter=0;int salto=0;

for ( pos_col = 0; pos_col < (int )strlen(puntero_c har); pos_col ++){

Page 166: Orastat line command

if ( puntero_char[pos_col] == ASCII_SEPARADOR ) col umna++;if ( columna == posicion ) break;}

for ( pos_cad = pos_col+1; pos_cad < tamano+pos_col +1; pos_cad++ ){if ( puntero_char[pos_cad]==ASCII_SEPARADOR) salto+ +;if (salto==0)

{caracter = filtrar_char ( puntero_char[pos_cad] );printf ("%c",caracter);}

else printf (" ");}

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_cadena (int nrocolum, char *puntero_char){int pos, caracter;

for ( pos=0; pos < nrocolum; pos++ ){caracter=filtrar_char(puntero_char[pos]);printf ("%c",caracter);}

fflush(stdout);return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *pasar_amayus (char *cadena ){int pos=0;

Page 167: Orastat line command

/* printf ("Iniciando conversion \n"); */for (pos =0; pos < (int ) strlen (cadena); pos ++)

cadena[pos]=toupper(cadena[pos]);

return cadena;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *funcion_columna (int nro_bytes, void *punt_ca dena, int nro_funcion){static char dato_1 [1024];

long valor_salida;long valor_entrada;

vaciar_cadena (dato_1,1024);switch (nro_funcion)

{case FUNC_DB_BLOCK_SIZE:

/* Calculo DB_BLOCK_SIZE, multiplico por la COLUMNA y devuelvo el RESULTADO *//* ------------------------------------------------ ------------------------ */itoa ((atoi ( (char *) punt_cadena ) * db_block_siz e() ) / 1000,dato_1,10);break;

case FUNC_COMMAND_SQL:/* Decodifico el nro de la Columna y lo relaciono c on el nombre del COMANDO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_command_oracle ( atoi ( (ch ar *) punt_cadena) ) );break;

case FUNC_LOCK_MODE:/* Decodifico el nro de la Columna y lo relaciono c on el tipo de LOCKEO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_lock_mode ( atoi ( (char *) punt_cadena) ) );break;

case FUNC_LOCK_NAME_MODE:/* Decodifico el nro de la Columna y lo relaciono c on el nombre de LOCKEO *//* ------------------------------------------------ ------------------------ */

Page 168: Orastat line command

strcpy ( dato_1, decode_name_lock ( (char *) punt_c adena) );break;

case FUNC_DB_BLOCK_SIZE0:/* Calculo DB_BLOCK_SIZE, multiplico por la COLUMNA y devuelvo el RESULTADO *//* ------------------------------------------------ ------------------------ */itoa ((atoi ( (char *) punt_cadena ) * db_block_siz e() ) / 1024,dato_1,10);break;

case FUNC_DB_OBJECT_TYPE:/* Busco el OBJECT_TYPE dentro de la tabla ALL_OBJE CTS *//* ------------------------------------------------ ------------------------ */strcpy (dato_1,db_object_type ( atoi ( (char *) pun t_cadena ) ) );break;

case FUNC_DB_OBJECT_OWNER_NAME:/* Busco el OBJECT_OWNER_NAME dentro de la tabla AL L_OBJECTS *//* ------------------------------------------------ ------------------------ */strcpy (dato_1,db_object_owner_name ( atoi ( (char *) punt_cadena ) ) );/* printf ("[%s] \n",dato_1); */break;

case FUNC_DB_SESSION_SID:/* Busco el OBJECT_OWNER_NAME dentro de la tabla AL L_OBJECTS *//* ------------------------------------------------ ------------------------ */

/* printf ("Cons[%s]\n",((char *) punt_cadena)); */strcpy (dato_1,db_session_sid_locked ((char *) punt _cadena ));/* printf ("[%s] \n",dato_1);*/break;

case FUNC_CONVERT_HH_MM_SS:/* Busco el OBJECT_OWNER_NAME dentro de la tabla AL L_OBJECTS *//* ------------------------------------------------ ------------------------ */strcpy (dato_1,convert_ss_to_hh_mm_ss ((char *) pun t_cadena ));break;

case FUNC_DB_COMP_TBLSPC_INI_EXT:/* Busco el INIT_EXTENT de un TABLESPACE, y lo comp aro en el valor *//* ------------------------------------------------ --------------- */valor_entrada = atoi ((char *) punt_cadena);valor_salida = db_tablspace_ini_ext_size ((char *) punt_cadena);if (valor_entrada == 0)

strcpy (dato_1,"FREE\n");else

if (valor_entrada != valor_salida )strcpy (dato_1,"CHANGED\n");

Page 169: Orastat line command

else strcpy (dato_1,"INITIAL\n");

break;default:

break;}

return (dato_1);}

--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: funciones.cpp ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ----------------------

Page 170: Orastat line command

--------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: func_menu_mostrar.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"

#include "extern_functions_orastat_principal.h"#include "local_functions_preceded_calls.h"

int func_menu_mostrar (int version, int nro_opcion){int conta_opcion;

if ( ( nro_opcion < 0 ) || ( nro_opcion > MAX_NRO_O PCION ) )

Page 171: Orastat line command

{printf ("------------------------------------------ ---------\n");for ( conta_opcion=0; conta_opcion <= MAX_NRO_OPCIO N; conta_opcion++)

{printf ("[ %2d ] ",conta_opcion);printf ("[ %s ] \n",func_dyn_title_set (version,con ta_opcion) );}

printf (".......................................... .........\n");}

return 0;}--- ---

--- ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: funct_format_sql_statement.c ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***#include <stdio.h>

Page 172: Orastat line command

#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 ();extern stmtsqlncmp ();

char *formatear_sql_statement ( void *punt_cadena ){static char order_stmt [MAX_STMT_SIZE];static char auxi_stmt [MAX_STMT_SIZE];static char auxiliar [MAX_WORD_STMT];

int profu_parent =0;int profu_comita =0;int profu_comilla =0;

int contador_blanco =0;int largo_cadena=0;int posicion1=0;int posicion2=0;int posicion3=0;int caracter=0;

largo_cadena = (int )strlen ((char *) punt_cadena);vaciar_cadena (order_stmt, MAX_STMT_SIZE);vaciar_cadena (auxi_stmt, MAX_STMT_SIZE);

posicion2=0;

/* ************ Quitando espacios en blanco ******* ****** */for (posicion1=0; posicion1 <= largo_cadena; posici on1++)

{caracter = ((char *) punt_cadena )[posicion1];if ( caracter == ASCII_SPACE )

Page 173: Orastat line command

if ( contador_blanco == 0 ){contador_blanco++;auxi_stmt [posicion2]=caracter;posicion2++;}

if ( caracter != ASCII_SPACE){contador_blanco=0;auxi_stmt[posicion2]=caracter;posicion2++;}

}auxi_stmt[posicion2]=ASCII_FIN_LINEA;/* ************ ||||||||||||||||||||||||||| ******* ****** */largo_cadena=(int )strlen(auxi_stmt);posicion2=0;posicion3=0;vaciar_cadena (auxiliar,MAX_WORD_STMT);for (posicion1=0; posicion1 <= largo_cadena; posici on1++)

{caracter = auxi_stmt [posicion1];

/* printf ("C [%c=%d] ",caracter,caracter); */if ( caracter != ASCII_SPACE )

{auxiliar[posicion3] = caracter;

/* order_stmt[posicion2] = caracter;posicion2++;order_stmt[posicion2] = ASCII_FIN_LINEA;

*/posicion3++;auxiliar[posicion3] = ASCII_FIN_LINEA;}

else if (caracter == ASCII_SPACE ){if ( ( stmtsqlncmp (auxiliar,"select",6)==0 ) )

{strcat (order_stmt," \n");strcat (order_stmt,auxiliar);

Page 174: Orastat line command

strcat (order_stmt," \n");posicion3=0;vaciar_cadena (auxiliar,MAX_WORD_STMT);}

else if ( (stmtsqlncmp (auxiliar,"from",4)==0 ) ){strcat (order_stmt," \n");strcat (order_stmt,auxiliar);strcat (order_stmt," \n");posicion3=0;vaciar_cadena (auxiliar,MAX_WORD_STMT);}

else if ( (stmtsqlncmp (auxiliar,"where",5)==0 ) ){strcat (order_stmt," \n");strcat (order_stmt,auxiliar);strcat (order_stmt," \n");posicion3=0;vaciar_cadena (auxiliar,MAX_WORD_STMT);}

else if ( (stmtsqlncmp (auxiliar,"group",5)==0) ){strcat (order_stmt," \n");strcat (order_stmt,auxiliar);strcat (order_stmt," \n");posicion3=0;vaciar_cadena (auxiliar,MAX_WORD_STMT);}

else if ( (stmtsqlncmp (auxiliar,"order",5)==0) ){strcat (order_stmt," \n");strcat (order_stmt,auxiliar);strcat (order_stmt," \n");posicion3=0;vaciar_cadena (auxiliar,MAX_WORD_STMT);}

strcat (order_stmt,auxiliar);strcat (order_stmt," ");posicion3=0;vaciar_cadena (auxiliar,MAX_WORD_STMT);

Page 175: Orastat line command

}}

return (order_stmt);}

--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: func_time_sleep.c ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***#include <stdio.h>#include <stdlib.h>#include <time.h>#include <windows.h>#include "extern_functions_funciones_auxiliares.h"

void esperar_seg( int numero_seg )

Page 176: Orastat line command

{ printf( "Esperando [%d] segs \n",numero_seg ); Sleep( (clock_t) numero_seg * 1000L );}--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: func_time_sleep.cpp ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ---

Page 177: Orastat line command

--- ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: LOCAL_FUNCTIONS_PRECEDED_CALLS.h ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****---- FUNCIONES DECLARADAS INTERN AS ****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

/* ----****----****---- FUNCIONES QUERY SQL ORACLE ****----****----**** */int version_oracle();int db_block_size ();char *db_object_type ();char *db_session_sid_locked ();char *db_object_owner_name ();int db_tablspace_ini_ext_size ();

/* ----****----****---- FUNCIONES PRIMITIVAS ORACLE ****----****----**** */int oracle_connect_original();int oracle_connect_new();int alloc_descriptors();int set_bind_variables();int process_select_list();int liberar_memoria();int cargar_sentencia ();sql_error();

--- ---

Page 178: Orastat line command

--- ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: menu_orastat.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 func_dyn_title_set ();int mostrar_menu_orastat (int version, int opciones )

{

Page 179: Orastat line command

int nro_opcion=0;

printf ("------------------------------------------ ---------\n");for ( nro_opcion=0; nro_opcion <= MAX_NRO_OPCION; n ro_opcion++)

{printf (".[%d]. [%s] \n",func_dyn_title_set (versio n,nro_opcion));}

printf (".......................................... .........\n");

return 0;}--- ---

--- ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: orasta1000.pc ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***/* ----****----****----****----****----****----**** ----****----****----****----**** */#include <oraca.h>

Page 180: Orastat line command

#include <sqlca.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <setjmp.h>

/* ----****----****----****----****----****----**** ----****----****----****----**** */

#define MAX_ITEMS 512#define MAX_VNAME_LEN 512#define MAX_INAME_LEN 512#define MAX_BUFFER 512#define MAX_LINE 512#define MAX_STMT 16384#define MAX_BIND_VARIABLE 512#define MAX_VAR_SIZE 512#define MAX_VERSION_LEN 256#define MAX_LEN_ARG 512#define MAX_LEN_CONNECT 512

#define SI_PROCESAR 1#define NO_PROCESAR 0

#define SI_ERROR 1#define NO_ERROR 0

#define SEPARADOR 124#define FIN_LINEA 0

/* ----****----****----****----****----****----**** ----****----****----****----**** */

#define VERSION_ORACLE_734 734#define VERSION_ORACLE_816 816#define VERSION_ORACLE_817 817#define VERSION_ORACLE_901 901#define VERSION_ORACLE_902 902#define VERSION_ORACLE_910 910#define VERSION_ORACLE_920 920#define VERSION_ORACLE_UNK 000

Page 181: Orastat line command

/* ----****----****----****----****----****----**** ----****----****----****----**** */

#define FUNC_DB_BLOCK_SIZE 1#define FUNC_COMMAND_SQL 2#define FUNC_LOCK_MODE 3#define FUNC_LOCK_NAME_MODE 4

/* ----****----****----****----****----****----**** ----****----****----****----**** */

#ifndef NULL#define NULL 0#endif

/* ----****----****----****----****----****----**** ----****----****----****----**** */

char *dml_commands[] = {"SELECT", "select", "INSERT ", "insert","UPDATE", "update", "DELETE", "delete"} ;char dyn_size [MAX_VAR_SIZE];char dyn_title [MAX_VAR_SIZE];char dyn_column [MAX_VAR_SIZE];char dyn_proc_func [MAX_VAR_SIZE];

EXEC SQL BEGIN DECLARE SECTION;char dyn_sts[16384];EXEC SQL VAR dyn_sts IS STRING(16384);

EXEC SQL END DECLARE SECTION;

EXEC SQL INCLUDE sqlca; EXEC SQL INCLUDE sqlda;

SQLDA *bind_dp;SQLDA *select_dp;

jmp_buf jmp_continue;int parse_flag = 0;

/* ----****----****----****----****----****----**** ----****----****----****----**** */

extern SQLDA *sqlald();extern void sqlnul();int version_oracle();

Page 182: Orastat line command

int oracle_connect();int alloc_descriptors();int set_bind_variables();int process_select_list();int liberar_memoria();int filtrar_char ();int col_size ();int cargar_sentencia ();int procesar_cadena ();int procesar_encabe ();int filtrar_char ();char *pasar_amayus ();sql_error();void vaciar_estructura ();void vaciar_cadena ();int db_block_size ();int funcion_columna ();int procesar_columna_funcion ();char *decode_command_oracle ();char *decode_lock_mode ();char *decode_name_lock ();int ver_menu ();

/* ----****----****----****----****----****----**** ----****----****----****----**** */

main( int argc , char *argv[]){int i=0;int opcion_nro=0;int version=0;

char opcion_uno [MAX_LEN_ARG];char opcion_dos [MAX_LEN_ARG];char opcion_tres [MAX_LEN_ARG];char datos_conexion [MAX_LEN_CONNECT];

opcion_uno[0]=FIN_LINEA;opcion_dos[0]=FIN_LINEA;opcion_tres[0]=FIN_LINEA;datos_conexion[0]=FIN_LINEA;

Page 183: Orastat line command

if (argc <3 ){printf ("Insuficientes argumentos \n");exit (1);}

strcpy (datos_conexion,argv[1]);if (argc >= 3 ) opcion_nro=atoi(argv[2]);if (argc >= 4 ) strcpy (opcion_uno,pasar_amayus(argv [3]));if (argc >= 5 ) strcpy (opcion_dos,pasar_amayus(argv [4]));if (argc >= 6 ) strcpy (opcion_tres,argv[5]);

if (oracle_connect(datos_conexion) != 0) {printf ("No es posible conectarse ...\n");exit(1);}

version = version_oracle();printf ("Oracle Version [%d] \n",version);

if (alloc_descriptors(MAX_ITEMS,MAX_VNAME_LEN, MAX_ INAME_LEN) != 0) exit(1);i = setjmp(jmp_continue); cargar_sentencia (version, opcion_nro, opcion_uno, opcion_dos, opcion_tres);

EXEC SQL WHENEVER SQLERROR DO sql_error();parse_flag = 1;

EXEC SQL PREPARE S FROM :dyn_sts;parse_flag = 0;

EXEC SQL DECLARE C CURSOR FOR S;set_bind_variables();

EXEC SQL OPEN C USING DESCRIPTOR bind_dp;process_select_list();liberar_memoria();

return NO_ERROR;}

Page 184: Orastat line command

/* ----****----****----****----****----****----**** ----****----****----****----**** */

char *pasar_amayus (char *cadena ){int pos=0;

/* printf ("Iniciando conversion \n"); */for (pos =0; pos < (int ) strlen (cadena); pos ++)

cadena[pos]=toupper(cadena[pos]);

return cadena;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

liberar_memoria (){int i;

for (i = 0; i < MAX_ITEMS; i++){if (bind_dp->V[i] != (char *) 0)free(bind_dp->V[i]);free(bind_dp->I[i]); if (select_dp->V[i] != (char *) 0)

free(select_dp->V[i]);free(select_dp->I[i]); }

EXEC SQL WHENEVER SQLERROR CONTINUE;EXEC SQL CLOSE C;EXEC SQL COMMIT WORK RELEASE;EXEC SQL WHENEVER SQLERROR DO sql_error();

return SI_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

oracle_connect ( char *datos_conexion )

Page 185: Orastat line command

{EXEC SQL BEGIN DECLARE SECTION;

VARCHAR connectstring[256];EXEC SQL END DECLARE SECTION;

strcpy ((char *) connectstring.arr,datos_conexion);connectstring.arr[strlen((char *) connectstring.arr )] = FIN_LINEA;connectstring.len = (unsigned short )strlen((char * ) connectstring.arr);

EXEC SQL WHENEVER SQLERROR GOTO connect_error;printf ("\nConnecting .....\n");EXEC SQL CONNECT :connectstring;

printf("\nConnected to ORACLE \n");return 0;connect_error:

fprintf(stderr,"Cannot connect to ORACLE\n");return -1;

}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

alloc_descriptors(size, max_vname_len, max_iname_le n)int size;int max_vname_len;int max_iname_len;

{int i;

if ((bind_dp = sqlald(size, max_vname_len, max_inam e_len)) == (SQLDA *) 0){fprintf(stderr,"Insuficient memory...");return -1; }

if ((select_dp = sqlald (size, max_vname_len, max_i name_len)) == (SQLDA *) 0){fprintf(stderr,"Insuficient memory...");return -1;}

Page 186: Orastat line command

select_dp->N = MAX_ITEMS;for (i = 0; i < MAX_ITEMS; i++)

{bind_dp->I[i] = (short *) malloc(sizeof (short));select_dp->I[i] = (short *) malloc(sizeof(short));bind_dp->V[i] = (char *) malloc(1);select_dp->V[i] = (char *) malloc(1);}

return 0;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

set_bind_variables(){int i, n;

char bind_var [MAX_BIND_VARIABLE];

EXEC SQL WHENEVER SQLERROR DO sql_error();bind_dp->N = MAX_ITEMS; EXEC SQL DESCRIBE BIND VARIABLES FOR S INTO bind_dp ;

if (bind_dp->F < 0){printf ("\nToo many variables to bind...\n", -bind_ dp->F, MAX_ITEMS);return SI_ERROR;}

bind_dp->N = bind_dp->F;for (i = 0; i < bind_dp->F; i++)

{printf ("\nEnter value for bind variable %.*s: ",(i nt)bind_dp->C[i], bind_dp->S[i]);fgets (bind_var, (int )sizeof(bind_var), stdin);n = (int )strlen(bind_var) - 1;bind_dp->L[i] = n;bind_dp->V[i] = (char *) realloc(bind_dp->V[i], (bi nd_dp->L[i] + 1));

strncpy(bind_dp->V[i], bind_var, n);

Page 187: Orastat line command

if ((strncmp(bind_dp->V[i], "NULL", 4) == 0) || (st rncmp(bind_dp->V[i], "null", 4) == 0))*bind_dp->I[i] = -1;

else*bind_dp->I[i] = 0;

bind_dp->T[i] = 1;}

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

process_select_list(){int null_ok;int nro_columna=0;int column_size=0;int si_proceso=0;int nro_bytes=0;int nro_funcion=0;

if ((strncmp(dyn_sts, "SELECT", 6) != 0) && (strncm p(dyn_sts, "select", 6) != 0)){select_dp->F = 0;return NO_ERROR;}

select_dp->N = MAX_ITEMS;

EXEC SQL DESCRIBE SELECT LIST FOR S INTO select_dp;if (select_dp->F < 0)

{printf ("\nToo many select-list items (%d), maximum is %d\n", -(select_dp->F), MAX_ITEMS);return SI_ERROR;}

select_dp->N = select_dp->F;printf ("%s \n",dyn_title);for (nro_columna = 0; nro_columna < select_dp->F; n ro_columna++)

{sqlnul ( &(select_dp->T[nro_columna]), &(select_dp- >T[nro_columna]), &null_ok);column_size=col_size(dyn_size,nro_columna);

Page 188: Orastat line command

select_dp->L[nro_columna]= column_size;select_dp->C[nro_columna]= column_size;select_dp->T[nro_columna]=1;}

for (nro_columna = 0; nro_columna < select_dp->F; n ro_columna++){nro_bytes = sizeof (select_dp->V[nro_columna]);select_dp->V[nro_columna] = (char *) realloc(select _dp->V[nro_columna], select_dp->L[nro_columna]);printf ("["); column_size=col_size(dyn_size,nro_columna);procesar_encabe (column_size,nro_columna,dyn_column ); printf ("] "); }

printf ("\n");EXEC SQL WHENEVER NOT FOUND GOTO end_select_loop;

for ( ; ; ){/* Asegurandome que la estructura de Retorno este t otalmente vacia */vaciar_estructura ( select_dp );

/* Tomando una fila (ROW) de la base de datos */EXEC SQL FETCH C USING DESCRIPTOR select_dp;

/* Procesando las "i" columnas de datos de la fila retornada */for (nro_columna = 0; nro_columna < select_dp->F; n ro_columna++)

{printf (" ");/* ------------------------------------------------ ----------------------------- */column_size=col_size(dyn_size,nro_columna);/* ------------------------------------------------ ----------------------------- */si_proceso = procesar_columna_funcion (dyn_proc_fun c, nro_columna, &nro_funcion);if ( si_proceso == SI_PROCESAR)

funcion_columna (column_size, (char *)select_dp->V[ nro_columna], nro_funcion);/* ------------------------------------------------ ----------------------------- */procesar_cadena (column_size,(char *)select_dp->V[n ro_columna]);/* ------------------------------------------------ ----------------------------- */printf (" "); }

printf ("\n");}

Page 189: Orastat line command

end_select_loop:return NO_ERROR;

}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

ver_menu (int opcion_menu ){switch ( opcion_menu )

{case 0:

strcpy (dyn_title,"Oracle Version ...\n");break;

case 1:strcpy (dyn_title,"Active Parameters ...\n");break;

case 2:strcpy (dyn_title,"User conected...\n");break;

case 3:strcpy (dyn_title,"Wait Statistics...\n");break;

case 4:strcpy (dyn_title,"Datafile I-O ...\n");break;

case 5:strcpy (dyn_title,"Datafile Blocks R+W ...\n");break;

case 6:strcpy (dyn_title,"Wait Events ...\n");break;

case 7:strcpy (dyn_title,"Instance status ...\n");break;

case 8:strcpy (dyn_title,"Temporal Space by user ...\n");break;

case 9:strcpy (dyn_title,"Total Freelist Wait Percentage . ..\n");break;

Page 190: Orastat line command

case 10:strcpy (dyn_title,"Last Checkpoint Time ...\n");break;

case 11:strcpy (dyn_title,"List Tablespaces ...\n");break;

case 12:strcpy (dyn_title,"Active Transactions ...\n");break;

case 13:strcpy (dyn_title,"Latch Details ...\n");break;

case 14:strcpy (dyn_title,"Resource Limits ...\n");break;

case 15:strcpy (dyn_title,"List Datafiles ...\n");break;

case 16:strcpy (dyn_title,"List Datafiles New 9i ...\n");break;

case 17:strcpy (dyn_title,"List Tablespaces New 9i...\n");break;

case 18:strcpy (dyn_title,"Active Sessions ...\n");break;

case 19:strcpy (dyn_title,"Session Waits \n");break;

case 20:strcpy (dyn_title,"Default Storage Settings - By Ta blespace \n");break;

case 21:strcpy (dyn_title,"All tables Storage (Except SYS a nd SYSTEM) \n");break;

case 22:strcpy (dyn_title,"Non-Sys Tables \n");break;

case 23:

Page 191: Orastat line command

strcpy (dyn_title,"Non-Sys Indexes \n");break;

case 24:strcpy (dyn_title,"User Defined \n");break;

case 25:strcpy (dyn_title,"List Datafiles, Online Redo Logs , Control Files \n");break;

case 26:strcpy (dyn_title,"List Datafiles and their Used Bl ocks \n");break;

case 27:strcpy (dyn_title,"List sorts by user \n");break;

case 28:strcpy (dyn_title,"List lock status \n");break;

case 29:strcpy (dyn_title,"List Users by CPU Usage \n");break;

case 30:strcpy (dyn_title,"Sql statement by this user \n");break;

case 31:strcpy (dyn_title,"Redo Logs - Status ");break;

case 32:strcpy (dyn_title,"Archived Logs History - by firs t TimeStamp ");break;

case 33:strcpy (dyn_title,"Redo Log Recovery Report - CURRE NT Online Redo log info ");break;

case 34:strcpy (dyn_title,"Archive Log History ");break;

case 35:strcpy (dyn_title,"Session Latch Waits - SQL ");break;

case 36:strcpy (dyn_title,"Whoami in Oracle ");

Page 192: Orastat line command

break;case 37:

strcpy (dyn_title,"Privileges by User ");break;

case 38:strcpy (dyn_title,"Detailed locking causes ");break;

case 39:strcpy (dyn_title,"Current Activity Report ");break;

case 40:strcpy (dyn_title,"Table Description del Usuario [ %USERNAME% ]");break;

case 41:strcpy (dyn_title,"Current Activity Report ");break;

default:strcpy (dyn_title,"Oracle Version ...\n");break;

}return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

cargar_sentencia (int version, int sentencia, char *opcion_uno, char *opcion_dos, char *opcion_tres ){strcpy (dyn_proc_func,"|NO|");switch (sentencia)

{case 0:

/********** PARA TODAS LAS VERSIONES **********/strcpy (dyn_column,"|ORACLE_VERSION|");strcpy (dyn_title,"Oracle Version ...\n");strcpy (dyn_sts,"select ltrim(lpad(banner,70)) Ver sion from v$version ");strcat (dyn_sts,"where banner like '%Oracle%' ");strcpy (dyn_size,"80");break;

case 1:/********** PARA TODAS LAS VERSIONES **********/

Page 193: Orastat line command

strcpy (dyn_column,"|NOMBRE|VALOR|DESCRIPCION|");strcpy (dyn_title,"Active Parameters ...\n");strcpy (dyn_sts,"select name,value,description from v$parameter order by 1 ");strcpy (dyn_size,"355540");break;

case 2:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|DIRECCION|SES|NOMBRE|CMD|ESTAD O|PID|TERMINAL|INICIADO|");strcpy (dyn_title,"User conected...\n");strcpy (dyn_sts,"select saddr ADDRESS,sid SES,usern ame NOMBRE,command CMD, \n");strcat (dyn_sts,"status ESTADO,process PID,terminal TERMINAL, \n");strcat (dyn_sts,"to_char(logon_time,'DD/MM/YYYY - H H24:MI:SS') INICIADO from v$session ");strcpy (dyn_size,"0804150608151122");break;

case 3:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|CANTIDAD|TIEMPO|CLASE|");strcpy (dyn_title,"Wait Statistics...\n");strcpy (dyn_sts,"select count CANTIDAD,time TIEMPO, class CLASE from v$waitstat order by 1 ");strcpy (dyn_size,"101030");break;

case 4:strcpy (dyn_title,"Datafile I-O ...\n");switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_column,"|READPHY|READBLK|WRITPHY||WRITB LK|DATAFILE|IO_STAT|");strcpy (dyn_sts,"select f.phyrds, f.phyblkrd, f.phy wrts, ");strcat (dyn_sts,"f.phyblkwrt, f.lstiotim*10 , d.nam e\n");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");strcpy (dyn_size,"080808086010");break;

case VERSION_ORACLE_817:case VERSION_ORACLE_816:case VERSION_ORACLE_734:

strcpy (dyn_column,"|READPHY|READBLK|WRITPHY|WRITBL K|DATAFILE|");strcpy (dyn_sts,"select f.phyrds, f.phyblkrd, f.phy wrts, ");strcat (dyn_sts,"f.phyblkwrt, d.name ");

Page 194: Orastat line command

strcat (dyn_sts,"from v$filestat f,v$datafile d ");strcat (dyn_sts,"where f.file# = d.file# ");strcat (dyn_sts,"order by 2 \n");strcpy (dyn_size,"0606060660");break;

default:break;

}break;

case 5:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|DATAFILE|BLKREAD|BLKWRITE|BLKT OT|");strcpy (dyn_title,"Datafile Blocks R+W ...\n");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 f rom v$filestat f, v$datafile d \n");strcat (dyn_sts,"where f.file# = d.file# order by 3 desc ");strcpy (dyn_size,"60060606");break;

case 6:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|USUARIO|CANTIDAD|EVENTO|");strcpy (dyn_title,"Wait Events ...\n");strcpy (dyn_sts,"select 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: Executi on Msg%' and \n");strcat (dyn_sts,"sw.event not like 'pipe get%' grou p by se.username, sw.event ");strcpy (dyn_size,"201030");break;

case 7:strcpy (dyn_title,"Instance status ...\n");switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|INSTNRO|INSTNAME|HOSTNAME|VERS ION|INICIADO|ESTADO|PARALELO|DATAESTA|INSTROLE|ACTS TATUS|");strcpy (dyn_title,"Instance status ...\n");strcpy (dyn_sts,"select instance_number, instance_n ame, host_name, version, \n");

Page 195: Orastat line command

strcat (dyn_sts,"to_char(startup_time,'DD/MM/YYYY - HH24:MI:SS'),status, parallel, \n");strcat (dyn_sts,"database_status, instance_role \n" ); strcat (dyn_sts,"from v$instance \n");strcpy (dyn_size,"03080910220503101010");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|NOMBRE DE CLAVE|ESTADO|");strcpy (dyn_title,"Instance status ...\n");strcpy (dyn_sts,"select 'RESTRITED MODE',value ");strcat (dyn_sts,"from v$instance where key='RESTRIC TED MODE' ");strcat (dyn_sts,"union ");strcat (dyn_sts,"select 'SHUTDOWN PENDING',value ") ;strcat (dyn_sts,"from v$instance where key='SHUTDOW N PENDING' ");strcat (dyn_sts,"union ");strcat (dyn_sts,"select 'STARTUP TIME - JULIAN',val ue ");strcat (dyn_sts,"from v$instance where key='STARTUP TIME - JULIAN' ");strcat (dyn_sts,"union ");strcat (dyn_sts,"select 'STARTUP TIME - SECONDS', v alue ");strcat (dyn_sts,"from v$instance where key='STARTUP TIME - SECONDS' \n");strcpy (dyn_size,"4015");break;

default:break;

}break;

case 8:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|SES|SERIAL|USER|EXTENTS|CONTEN TS|SIZEKB");strcpy (dyn_title,"Temporal Space by user ...\n");strcpy (dyn_sts,"select se.sid, se.serial#, se.user name, 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'))/1 000) 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.user name,so.extents,so.contents \n");strcpy (dyn_size,"101010101030");break;

Page 196: Orastat line command

case VERSION_ORACLE_734:strcpy

(dyn_column,"|TBLSPACE|EXTSIZE|CURUSER|TOTEXT|TOTBL K|USEXT|USEBLK|FREEXT|FREEBLK|MUSESIZE|MUSEBLK|MSORTSIZE|MSORTBLK|");strcpy (dyn_title,"Temporal Space by user ...\n");strcpy (dyn_sts,"select tablespace_name, extent_siz e, current_users, total_extents, \n");strcat (dyn_sts,"total_blocks, used_extents, used_b locks, free_extents, free_blocks, \n");strcat (dyn_sts,"max_used_size, max_used_blocks, ma x_sort_size, max_sort_blocks \n");strcat (dyn_sts,"from v$sort_segment \n");strcpy (dyn_size,"0907070606050606080808080806");

default:break;

}break;

case 9:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|PCTFREE|");strcpy (dyn_title,"Total Freelist Wait Percentage . ..\n");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 li st' and \n");strcat (dyn_sts,"b.name in ('db block gets','consis tent gets') group by a.count ");strcpy (dyn_size,"12");break;

case 10:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|CHEKPOINT_VALUE|FECHA|");strcpy (dyn_title,"Last Checkpoint Time ...\n");strcpy (dyn_sts,"select min(sysdate - CHECKPOINT_TI ME)*24*60 MINUTO, \n");strcat (dyn_sts,"to_char(sysdate,'DD/MM/YYYY - HH24 :MI:SS') FECHA from v$datafile_header");strcpy (dyn_size,"1522");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|CHEKPOINT_VALUE|FECHA|");strcpy (dyn_title,"Last Checkpoint Time ...\n");strcpy (dyn_sts,"select count(sid) Cantidad from v$ session \n");strcpy (dyn_size,"15");break;

Page 197: Orastat line command

default:break;

}break;

case 11:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|TBLSPACE|CONTENT|AVAILA_KB|MAX _ID|USED_KB|FREE_KB|PCT_USED|STATUS|MANAGMENT|ALLOCTYPE|");strcpy (dyn_title,"List Tablespaces ...\n");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_byt es),0.00)/a.sum_bytes*100.0,2) PCT_USED, d.status, \n");strcat (dyn_sts,"d.extent_management,d.allocation_t ype from (select tablespace_name,sum(bytes) sum_byt es, \n");strcat (dyn_sts,"count(1) max_id from dba_data_file s 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_t ablespaces d \n");strcat (dyn_sts,"where a.tablespace_name = c.tables pace_name(+) and \n");strcat (dyn_sts,"a.tablespace_name = d.tablespace_n ame (+) order by 1 ");strcpy (dyn_size,"151010061010070810101010");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|TBLSPACE|CONTENT|AVAILA_KB|MAX _ID|USED_KB|FREE_KB|PCT_USED|STATUS|");strcpy (dyn_title,"List Tablespaces ...\n");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_byt es),0.00)/a.sum_bytes*100.0,2) PCT_USED, d.status \ n");strcat (dyn_sts,"from (select tablespace_name,sum(b ytes) sum_bytes, \n");strcat (dyn_sts,"count(1) max_id from dba_data_file s 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_t ablespaces d \n");strcat (dyn_sts,"where a.tablespace_name = c.tables pace_name(+) and \n");strcat (dyn_sts,"a.tablespace_name = d.tablespace_n ame (+) order by 1 ");strcpy (dyn_size,"151010061010070810101010");break;

}

Page 198: Orastat line command

break;case 12:

switch (version){case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|ADDRESS|TIMESTART|ESTADO|BLK_U SED|KB_USED|USED_UREC|SESSION|SERIAL|NOMBRE|USUARIO|");strcpy (dyn_title,"Active Transactions ...\n");strcpy (dyn_sts,"select tr.addr,to_char(tr.start_ti me,'DD/MM/YYYY - 24HH:MM:SS') TIME_START, \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");strcat (dyn_sts,"se.sid SES, se.serial# SERIAL,rn.n ame,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 6");strcpy (dyn_size,"102208080810040605101010");

break;case VERSION_ORACLE_734:

/* FORMATO |<SI PROCESO>|<NRO COLUMNA -1><NRO FUNC ION>| *//* LAS COLUMNAS EMPIEZAN A ENUMERARSE A PARTIR DE LA CERO (0) */strcpy (dyn_proc_func,"|SI|0401|");/* PROCESANDO ESTA PARTE DEL NUEVO SELECT */strcpy (dyn_column,"|ADDRESS|TIMESTART|ESTADO|BLK_U SED|KB_USED|USED_UREC|SESSION|SERIAL|NOMBRE|USUARIO|");strcpy (dyn_title,"Active Transactions ...\n");strcpy (dyn_sts,"select tr.addr, ");strcat (dyn_sts,"tr.start_time, ");

/* strcat (dyn_sts,"to_char(tr.start_time,'DD/MM/YYY Y - 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.n ame,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 6");strcpy (dyn_size,"082007080810070605101010");

break;}

break;case 13:

/********** PARA TODAS LAS VERSIONES **********/strcpy (dyn_column,"|GETS|MISS|HITRATIO|IMM_GETS|IM M_MISS|SLEEP|GETSPIN|ADDRESS|LATCH|NOMBRE|");strcpy (dyn_title,"Latch Details ...\n");

Page 199: Orastat line command

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 orde r by round(((gets-misses)/gets),2) desc");strcpy (dyn_size,"10040808080507080825");break;

case 14:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|NOMBRE|INIT_ALLOC|CURR_UTILIZA |MAX_UTILIZA|LIMITE|");strcpy (dyn_title,"Resource Limits ...\n");strcpy (dyn_sts,"select resource_name NOMBRE,initia l_allocation INIT_ALLOC, \n");strcat (dyn_sts,"current_utilization CURR_UTILIZA,m ax_utilization MAX_UTILIZA, \n");strcat (dyn_sts,"limit_value LIMITE from v$resource _limit order by 1");strcpy (dyn_size,"3010101010");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|NOMBRE|LIMITE|");strcpy (dyn_title,"Resource Limits ...\n");strcpy (dyn_sts,"select resource_name, limit \n");strcat (dyn_sts,"from user_resource_limits order by 1");strcpy (dyn_size,"5010");break;

}break;

case 15:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|DATAFILE|MBYTES|ESTADO|");strcpy (dyn_title,"List Datafiles ...\n");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");strcpy (dyn_size,"701008");

Page 200: Orastat line command

break;case VERSION_ORACLE_734:

strcpy (dyn_column,"|DATAFILE|MBYTES|ESTADO|");strcpy (dyn_title,"List Datafiles ...\n");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.4strcat (dyn_sts,"union all \n");strcat (dyn_sts,"select name DATAFILE,bytes/1048576 MBYTES, status ESTADO from v$tempfile \n");

*/strcpy (dyn_size,"701008");break;

}break;

case 16:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|ESTADO|DATAFILE|TBLSPACE|SIZE_ KB|USED_KB|USED_PCT|");strcpy (dyn_title,"List Datafiles New 9i ...\n");strcpy (dyn_sts,"select v.status ESTADO, d.file_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s,0))/d.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_data_files d, v$dataf ile v, (select file_id,sum(bytes) bytes \n");strcat (dyn_sts,"from sys.dba_free_space group by f ile_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_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s)*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");strcpy (dyn_size,"066018121208");break;

case VERSION_ORACLE_734:

Page 201: Orastat line command

strcpy (dyn_column,"|ESTADO|DATAFILE|TBLSPACE|SIZE_ KB|USED_KB|USED_PCT|");strcpy (dyn_title,"List Datafiles New 9i ...\n");strcpy (dyn_sts,"select v.status ESTADO, d.file_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s,0))/d.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_data_files d, v$dataf ile v, (select file_id,sum(bytes) bytes \n");strcat (dyn_sts,"from sys.dba_free_space group by f ile_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_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s)*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");

*/ strcpy (dyn_size,"066018121208");break;

}break;

case 17:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|ESTADO|TBLSPACE|TIPO|EXTENT_MG M|SIZE_KB|USED_KB|USED_PCT|");strcpy (dyn_title,"List Tablespaces New 9i...\n");strcpy (dyn_sts,"select d.status ESTADO, d.tablespa ce_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.byte s,0))/a.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_tablespaces d, (selec t tablespace_name, sum(bytes) bytes \n");strcat (dyn_sts,"from dba_data_files group by table space_name) a, (select tablespace_name,sum(bytes) b ytes \n");strcat (dyn_sts,"from dba_free_space group by table space_name ) f \n");strcat (dyn_sts,"where d.tablespace_name=a.tablespa ce_name(+) and \n");strcat (dyn_sts,"d.tablespace_name = f.tablespace_n ame(+) and \n");

Page 202: Orastat line command

strcat (dyn_sts,"not (d.extent_management like 'LOC AL' and d.contents LIKE 'TEMPORARY') \n");strcat (dyn_sts,"union all \n"); strcat (dyn_sts,"select d.status ESTADO, d.tablespa ce_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),'999 99999.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_nam e) 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_nam e (+) and d.extent_management like 'LOCAL' and \n") ;strcat (dyn_sts,"d.contents like 'TEMPORARY' "); strcpy (dyn_size,"06251012121212121212121010101010" );break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|ESTADO|TBLSPACE|TIPO|EXTENT_MG M|SIZE_KB|USED_KB|USED_PCT|");strcpy (dyn_title,"List Tablespaces New 9i...\n");strcpy (dyn_sts,"select d.status ESTADO, d.tablespa ce_name TBLNAME,d.contents TIPO, \n");strcat (dyn_sts,"to_char(nvl((a.bytes/1024),0),'999 99999.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.byte s,0))/a.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_tablespaces d, (selec t tablespace_name, sum(bytes) bytes \n");strcat (dyn_sts,"from dba_data_files group by table space_name) a, (select tablespace_name,sum(bytes) b ytes \n");strcat (dyn_sts,"from dba_free_space group by table space_name ) f \n");strcat (dyn_sts,"where d.tablespace_name=a.tablespa ce_name(+) and \n");strcat (dyn_sts,"d.tablespace_name = f.tablespace_n ame(+) 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.tablespa ce_name TBLNAME,d.contents TIPO, \n");strcat (dyn_sts,"to_char(nvl((a.bytes/1024),0),'999 99999.999') SIZE_KB, \n");strcat (dyn_sts,"to_char((nvl(t.bytes,0)/1024),'999 99999.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_nam e) 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_nam e (+) and \n");strcat (dyn_sts,"d.contents like 'TEMPORARY' ");

Page 203: Orastat line command

*/strcpy (dyn_size,"06251012121212121212121010101010" );break;

}break;

case 18:strcpy (dyn_column,"|SES|SERIAL|TIPO|OS_USER|LOGON| ESTADO|PROCESO|MAQUINA|NOMBRE|PID|PROGRAMA|");strcpy (dyn_title,"Active Sessions ...\n");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 - H H24:MI:SS') LOGON,s.status ESTADO, \n");strcat (dyn_sts,"s.process PROCESO, s.machine MAQUI NA, 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.add r=s.paddr \n");strcpy (dyn_size,"0404101022100915100930");break;

case 19:strcpy (dyn_column,"|SES|SEQ|W_T|S_W_T|USUARIO|ESTA DO|EVENT|STATE|P1TEXT|P1|P1RAW|P2TEXT|P2|P2RAW|P3TE XT|P3|P3RAW|");strcpy (dyn_title,"Session Waits \n");strcpy (dyn_sts,"select sw.sid SES, sw.seq# SEQ, nv l(sw.wait_time,0) W_T, \n");strcat (dyn_sts,"nvl(sw.seconds_in_wait,0) S_W_T,nv l(se.username,'.') USUA, \n");strcat (dyn_sts,"nvl(se.status,'.') ESTA,sw.event E VENT, sw.state, sw.p1text, sw.p1, \n");strcat (dyn_sts,"sw.p1raw, sw.p2text, sw.p2, sw.p2r aw, 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 2 \ n");strcpy (dyn_size,"040405050606202010101010101010101 0101010101010");break;

case 20:strcpy (dyn_column,"|TBLSPACE|INI_EXT|NEX_EXT|MIN_E XT|MAX_EXT|PCT_INC|");strcpy (dyn_title,"Default Storage Settings - By Ta blespace \n");strcpy (dyn_sts,"select tablespace_name TBLNAME, in itial_extent INI_EXT, next_extent NEX_EXT, \n");strcat (dyn_sts,"min_extents MIN_EXT, max_extents M AX_EXT, pct_increase PCT_INC \n");strcat (dyn_sts,"from dba_tablespaces \n");strcat (dyn_sts,"order by tablespace_name \n");strcpy (dyn_size,"201212121207");break;

case 21:strcpy (dyn_column,"|OWNER_TABLE|SEG_NAME|TBLSPACE| BLOCKS|SIZE_KB|MAX_EXT|");strcpy (dyn_title,"All tables Storage (Except SYS a nd SYSTEM) \n");strcpy (dyn_sts,"select owner OWNER_TABLE,segment_n ame SEG_NAME,tablespace_name TBL_NAME, blocks BLKS, \n");

Page 204: Orastat line command

strcat (dyn_sts,"(select value from v$parameter whe re name in 'db_block_size')*blocks/1024 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 b y 1,2 \n");strcpy (dyn_size,"12402005060510");break;

case 22:strcpy (dyn_column,"|OWNER|TABLNAME|TBLSPACE|BLOCK| NROWS|BUFF_POOL|LAST_ANALIZE|SIZE_KB");strcpy (dyn_title,"Non-Sys Tables \n");strcpy (dyn_sts,"select owner OWNER, table_name TNA ME, 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/Y YYY - HH24:MI'),-1) LAST_ANALIZE, \n");strcat (dyn_sts,"sum((blocks) * (select value from v$parameter where name in ('db_block_size')))/1000 \n");strcat (dyn_sts,"from dba_tables \n");strcat (dyn_sts,"group by owner,table_name,tablespa ce_name,nvl(blocks,-1),nvl(num_rows,-1), \n");strcat (dyn_sts,"buffer_pool,nvl(to_char(last_analy zed,'DD/MM/YYYY - HH24:MI'),-1) \n");strcat (dyn_sts,"order by 1,2 \n");strcpy (dyn_size,"1225200808101808");break;

case 23:strcpy (dyn_column,"|OWNER|INDEXNAME|TBLSPACE|LEAFB LK|NROROWS|BUFFPOOL|LASTANALIZ|SIZE_KB|");strcpy (dyn_title,"Non-Sys Indexes \n");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_anal yzed,'DD/MM/YYYY - HH24:MI'),-1), \n");strcat (dyn_sts,"sum((leaf_blocks) * (select value from v$parameter \n");strcat (dyn_sts,"where name in ('db_block_size')))/ 1000 \n");strcat (dyn_sts,"from dba_indexes \n");strcat (dyn_sts,"group by owner, index_name, tables pace_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");strcpy (dyn_size,"1225200808101808");break;

case 24:strcpy (dyn_column,"|USUA|ACCSTAT|EXPIRYDATE|DFLTBL NAME|TMPTBLNAME|PROFILE|CREATED|");strcpy (dyn_title,"User Defined \n");strcpy (dyn_sts,"select * from (select distinct use rname, account_status, expiry_date, \n");strcat (dyn_sts,"default_tablespace, temporary_tabl espace, 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(nu ll), '', '', '', to_char(to_date(null), \n");

Page 205: Orastat line command

strcat (dyn_sts,"'DD/MM/YYYY - HH24:MI') from dual) \n");strcat (dyn_sts,"order by initcap(username) \n");strcpy (dyn_size,"25090820203018101010");break;

case 25:strcpy (dyn_column,"|FILENAME|TBLSPACE|ESTADO|");strcpy (dyn_title,"List Datafiles, Online Redo Logs , Control Files \n");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', statu s from v$controlfile \n");strcat (dyn_sts,"order by 1,2 \n");strcpy (dyn_size,"702010");break;

case 26:strcpy (dyn_column,"|TBLSPACE|FILENAME|BYTES|HIGHWA TER|");strcpy (dyn_title,"List Datafiles and their Used Bl ocks \n");strcpy (dyn_sts,"select a.tablespace_name, a.file_n ame, a.bytes, \n");strcat (dyn_sts,"(b.maximum + c.blocks -1) * d.db_b lock_size highwater \n");strcat (dyn_sts,"from dba_data_files a, \n");strcat (dyn_sts,"(select file_id, max(block_id) max imum \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");strcat (dyn_sts,"and c.file_id = b.file_id \n");strcat (dyn_sts,"and c.block_id = b.maximum \n");strcat (dyn_sts,"order by a.tablespace_name, a.file _name \n");strcpy (dyn_size,"256012121212");break;

case 27:strcpy (dyn_column,"|VALOR|TYPESORT|OS_USER|DB_USER |");strcpy (dyn_title,"List sorts by user \n");strcpy (dyn_sts,"select vss.value VALOR, substr(vsn .name,1,20) TYPE_SORT, \n");strcat (dyn_sts,"substr(vs.osuser,1,20) OS_USER, su bstr(vs.username,1,20) DB_USER \n");strcat (dyn_sts,"from v$session vs, v$sesstat vss, v$statname vsn \n");strcat (dyn_sts,"where (vss.statistic# = vsn.statis tic#) and \n");strcat (dyn_sts,"(vs.sid = vss.sid ) and \n");

Page 206: Orastat line command

strcat (dyn_sts,"(vsn.name like '%sort%') and \n");strcat (dyn_sts,"vss.value <> 0 \n");strcat (dyn_sts,"order by 1,2,3 \n");strcpy (dyn_size,"141820251010");break;

case 28:strcpy (dyn_column,"|ADDRESS|KADDRESS|SES|TIPO|OBJ_ ID|ID2|LOCKTY|REQT|");strcpy (dyn_title,"List lock status \n");strcpy (dyn_sts,"select lo.addr, lo.kaddr, lo.sid S ES, lo.type TIP, lo.id1 OBJID, lo.id2, \n");strcat (dyn_sts,"decode(lo.lmode,0,'None',1,'Null', 2,'Row-S (ss)',3,'Row-X (sx)',4,'Share',5,'S/Row-X (ssx)',6,'Exclu ')

LOCTYP, \n");strcat (dyn_sts,"lo.request REQT, \n");strcat (dyn_sts,"(select ltrim(object_type) \n");strcat (dyn_sts,"from all_objects where object_id=l o.id1) OBJ_TYP, \n");strcat (dyn_sts,"(select ltrim(owner)||'.'||ltrim(o bject_name) \n");strcat (dyn_sts,"from all_objects where object_id=l o.id1) OWN_OBJ, \n");strcat (dyn_sts,"(select sid SES \n");strcat (dyn_sts,"from v$session where lockwait=lo.k addr) LOC_SID \n");strcat (dyn_sts,"from v$lock lo \n");strcat (dyn_sts,"order by lo.id1, lo.lmode desc \n" );strcpy (dyn_size,"0909050405041105083509");break;

case 29:strcpy (dyn_column,"|SES|SERIAL|TYPE|OSUSER|LOGON|P ROCESS|MACHINE|USER|VALUE|PROGRAM|");strcpy (dyn_title,"List Users by CPU Usage \n");strcpy (dyn_sts,"select vs.sid, vs.serial#, vs.type , vs.osuser, \n");strcat (dyn_sts,"sysdate - logon_time, \n");strcat (dyn_sts,"vs.process, vs.machine, vs.usernam e, vss.value, \n");strcat (dyn_sts,"vs.program \n");strcat (dyn_sts,"from v$session vs, v$sesstat vss, v$statname vsn \n");strcat (dyn_sts,"where vss.statistic# = vsn.statist ic# and \n");strcat (dyn_sts,"vs.sid = vss.sid and \n");strcat (dyn_sts,"vsn.name = 'CPU used by this sessi on' \n");strcat (dyn_sts,"and vss.value <> 0 \n");strcat (dyn_sts,"order by 10 \n");strcpy (dyn_size,"101010101010101010101010101010101 01010101010");break;

case 30:strcpy (dyn_column,"|TEXT_SQL|");strcpy (dyn_title,"Sql statement by this user \n");

Page 207: Orastat line command

strcpy (dyn_sts,"select sql_text \n");strcat (dyn_sts,"from v$sqltext \n");strcat (dyn_sts,"where address = ( select sql_addre ss \n");strcat (dyn_sts,"from v$session \n");strcat (dyn_sts,"where sid=");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,") order by piece \n");strcpy (dyn_size,"70");break;

case 31:strcpy (dyn_column,"|GRUPO|THREAD|SEQUENCE|BYTES|ME MBER|ARCHIVED|ESTADO|FSTCHANGE|FSTTIME|");strcpy (dyn_title,"Redo Logs - Status ");strcpy (dyn_sts,"select group#, thread#, sequence#, bytes, members, \n");strcat (dyn_sts,"archived, status, first_change#, \ n");strcat (dyn_sts,"to_char(first_time,'DD/MM/YYYY - H H24:MI') \n");strcat (dyn_sts,"from v$log \n");strcpy (dyn_size,"070710101010101220");break;

case 32:strcpy (dyn_column,"|THREAD|SEQUENCE|NAME|FSTCHANGE |FSTTIME|BLOCKS|BLKSIZE|COMPTIME|");strcpy (dyn_title,"Archived Logs History - by firs t TimeStamp ");strcpy (dyn_sts,"select thread#, sequence#, name, f irst_change#, \n");strcat (dyn_sts,"to_char (first_time,'DD/MM/YYYY - HH24:MI:SS'), \n");strcat (dyn_sts,"blocks, block_size, \n");strcat (dyn_sts,"to_char (completion_time,'DD/MM/YY YY - HH24:MI:SS') \n");strcat (dyn_sts,"from v$archived_log order by 6 \n" );strcpy (dyn_size,"1010101020101020101020");break;

case 33:strcpy (dyn_column,"|GROUP|FSTCHANGE|MEMBER|SEQUENC E|");strcpy (dyn_title,"Redo Log Recovery Report - CURRE NT Online Redo log info ");strcpy (dyn_sts,"select a.group#, a.first_change#, b.member, a.sequence# \n");strcat (dyn_sts,"from v$log a, v$logfile b \n");strcat (dyn_sts,"where a.group# = b.group# \n");strcat (dyn_sts,"and a.status = 'CURRENT' \n");strcpy (dyn_size,"06125208");break;

case 34:strcpy (dyn_column,"|THREAD|SEQUENCE|FSTCHANGE|SWIC HANGE|FSTTIME|");strcpy (dyn_title,"Archive Log History ");

Page 208: Orastat line command

strcpy (dyn_sts,"select thread#, sequence#, first_c hange#, \n");strcat (dyn_sts,"switch_change#, \n");strcat (dyn_sts,"to_char(first_time,'DD/MM/YYYY - H H24:MI:SS') \n");strcat (dyn_sts,"from v$loghist \n");strcat (dyn_sts,"order by 5 \n");strcpy (dyn_size,"0810171722");break;

case 35:strcpy (dyn_column,"|SES|USER|STATUS|SQLTEXT|");strcpy (dyn_title,"Session Latch Waits - SQL ");strcpy (dyn_sts,"select sw.sid , nvl(se.username,'. ') , \n");strcat (dyn_sts,"nvl(se.status,'.') , sq.sql_text \ n");strcat (dyn_sts,"from v$session_wait sw, v$session se, v$sqltext sq \n");strcat (dyn_sts,"where sw.sid = se.sid and \n");strcat (dyn_sts,"se.sql_address = sq.address and \n ");strcat (dyn_sts,"se.sql_hash_value = sq.hash_value and \n");strcat (dyn_sts,"sw.event = 'latch_free' \n");strcat (dyn_sts,"order by 1 \n");strcpy (dyn_size,"0530303030");break;

case 36:strcpy (dyn_column,"|SES|USER|STATUS|SQLTEXT|");strcpy (dyn_title,"Whoami in Oracle ");strcpy (dyn_sts,"select substr(v2.sid,1,5), substr( v2.username,1,8), \n");strcat (dyn_sts,"program, sql_text \n");strcat (dyn_sts,"from sys.v_$sqlarea v1, \n");strcat (dyn_sts,"sys.v_$session v2 \n");strcat (dyn_sts,"where v1.address = v2.sql_address and \n");strcat (dyn_sts,"v1.hash_value = v2.sql_hash_value \n");strcpy (dyn_size,"10202030");break;

case 37:strcpy (dyn_column,"|fadsdf|asdfasd|");strcpy (dyn_title,"Privileges by User ");strcpy (dyn_sts,"select decode (sa1.grantee#1, 1, ' PUBLIC', u1.name), \n");strcat (dyn_sts,"substr (u2.name,1,20), substr(spm. name,1,27) \n");strcat (dyn_sts,"from sys.sysauth$ sa1, sys.sysauth # sa2, sys.user$ u1, \n");strcat (dyn_sts,"sys.user$ u2, sys.system_privilege _map spm \n");strcat (dyn_sts,"where sa1.grantee# = u1.user# and \n");strcat (dyn_sts,"sa1.privilege# = u2.user# and \n") ;

Page 209: Orastat line command

strcat (dyn_sts,"u2.user# = sa2.grantee# and \n");strcat (dyn_sts,"sa2.privilege# = spm.privilege \n" );strcat (dyn_sts,"union \n");strcat (dyn_sts,"select u.name, NULL, substr(spm.na me,1,27) \n");strcat (dyn_sts,"from sys.system_privilege_map spm, sys.sysauth$ sa, \n");strcat (dyn_sts,"sys.user$ u \n");strcat (dyn_sts,"where sa.grantee#=u.user# and \n") ;strcat (dyn_sts,"sa.privilege# = spm.privilege \n") ;strcpy (dyn_size,"1010101010101010");break;

case 38:/* FORMATO |<SI PROCESO>|<NRO COLUMNA -1><NRO FUNC ION>| *//* LAS COLUMNAS EMPIEZAN A ENUMERARSE A PARTIR DE LA CERO (0) */

strcpy (dyn_proc_func,"|SI|0402|0503|0603|0804|");/* PROCESANDO ESTA PARTE DEL NUEVO SELECT */

strcpy (dyn_column,"|USERNAME|SID|TERMINAL|TAB|COMM AND|LMODE|REQUEST|LADDR|LOCKT|LOCKTYPE|");strcpy (dyn_title,"Detailed locking causes ");strcpy (dyn_sts,"select nvl(S.USERNAME,'Internal'), L.SID, nvl(S.TERMINAL,'None'),\n");strcat (dyn_sts,"decode(command, 0,'None',decode(l. id2,0,U1.NAME||'.'||substr(T1.NAME,1,20),'None')),\ n");strcat (dyn_sts,"command,\n");strcat (dyn_sts,"L.LMODE,L.REQUEST,\n");strcat (dyn_sts,"l.id1||'-'||l.id2, \n");strcat (dyn_sts,"l.type ||' - '||, \n");strcat (dyn_sts,"l.type \n");strcat (dyn_sts,"from v$lock l, v$session s, sys.us er$ u1, sys.obj$ t1 \n");strcat (dyn_sts,"where l.sid = s.sid and t1.obj# = decode (l.id2,0,l.id1,1) and \n");strcat (dyn_sts,"u1.user# = t1.owner# and s.type != 'BACKGROUND' \n");strcat (dyn_sts,"order by 1,2,5");strcpy (dyn_size,"101010101010101020");break;

case 39:strcpy (dyn_column,"|VALOR|NOMBRE|");strcpy (dyn_title,"Current Activity Report ");strcpy (dyn_sts,"select name,value from v$sysstat \ n");strcat (dyn_sts,"where name like '%user%'; \n");strcpy (dyn_size,"2512");break;

case 40:strcpy (dyn_column,"|TBLSPACE|TABLENAME|NROWS|LAST

ANALIZED|INIEXT|NEXEXT|MINEXT|MAXEXT|PCTINC|BUFPOL| BLOCKS|FREELST|PCTFREE|INITRANS|MAXTRANS|FREEGRP");

Page 210: Orastat line command

strcpy (dyn_title,"Table Description del Usuario [ ");strcat (dyn_title,opcion_uno);strcat (dyn_title," ] ");strcpy (dyn_sts,"select tablespace_name, table_name , \n");strcat (dyn_sts,"nvl(to_char (num_rows),\'(Null)\') , \n");strcat (dyn_sts,"nvl(to_char (last_analyzed,'YYYY/M M/DD-HH24:MI:SS'),\'(Null)\'), \n");strcat (dyn_sts,"initial_extent,next_extent,\n");strcat (dyn_sts,"min_extents,max_extents,pct_increa se,buffer_pool,\n");strcat (dyn_sts,"nvl(to_char (blocks),\'(Null)\'),\ n");strcat (dyn_sts,"freelists,pct_free,ini_trans,max_t rans,\n");strcat (dyn_sts,"freelist_groups \n");strcat (dyn_sts,"from dba_tables \n");strcat (dyn_sts,"where owner = '");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");if ( strlen (opcion_dos) > 0 )

{strcat (dyn_sts,"and table_name = '");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

else strcat (dyn_sts,"\n");strcpy (dyn_size,"15300719050505050508060606060606" );break;

case 41:strcpy (dyn_column,"|DIRECCION|BUF_GETS|NRO_EXEC|AV G_EXEC|SQL_TEXT|");strcpy (dyn_title,"Current Activity Report by Selec t Statements");strcat (dyn_sts,"SELECT address, buffer_gets, execu tions, ");strcat (dyn_sts,"round(buffer_gets/executions), SUB STR(sql_text,1,150) ");strcat (dyn_sts,"FROM v$sqlarea WHERE executions > 0 AND ");strcat (dyn_sts,"buffer_gets > 10000 ORDER BY 4 des c, 3 desc \n");strcpy (dyn_size,"0909080999");break;

default:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|ORACLE_VERSION|");strcpy (dyn_title,"Oracle Version ...\n");strcpy (dyn_sts,"select ltrim(lpad(banner,70)) Ver sion from v$version ");strcpy (dyn_size,"80");break;

Page 211: Orastat line command

}/************************************************** ******/

/* printf ("Statement [%s] \n",dyn_sts); *//************************************************** ******/

/* printf ("Funcion [%s] \n",dyn_proc_func); *//************************************************** ******/

if (strlen (dyn_sts) >= MAX_STMT)printf ("Max Statement large [%d] | Actual Statemen t large [%d] \n",MAX_STMT,strlen(dyn_sts));

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

sql_error(){/* int i; */

printf ("\n\n%.70s\n",sqlca.sqlerrm.sqlerrmc);if (parse_flag)

printf("\n Error de Oracle... \n",sqlca.sqlerrd[4]) ;EXEC SQL WHENEVER SQLERROR CONTINUE;EXEC SQL ROLLBACK WORK;liberar_memoria();exit(1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

col_size (char *puntero, int posicion){char ascii_nro[3];int numero, i;

for ( i = posicion*2; i < posicion*2+2; i++)ascii_nro[i-posicion*2]=puntero[i];

ascii_nro[2]=FIN_LINEA;numero=atoi(ascii_nro);return numero;}

Page 212: Orastat line command

/* ----****----****----****----****----****----**** ----****----****----****----**** */

int filtrar_char (int caracter){if ( (caracter >= 32 && caracter <= 127 ) ) return caracter;else

{switch (caracter)

{case 164: break;case 165: break;case 168: break;case 173: break;default: caracter=32;break;}

}return caracter;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_cadena (int nrocolum, char *puntero_char){int pos, caracter;

for ( pos=0; pos < nrocolum; pos++ ){caracter=filtrar_char(puntero_char[pos]);printf ("%c",caracter);}

fflush(stdout);return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_encabe (int tamano, int posicion, char *pu ntero_char){int pos_col=0;

Page 213: Orastat line command

int pos_cad=0;int columna=-1;int caracter=0;int salto=0;

for ( pos_col = 0; pos_col < (int )strlen(puntero_c har); pos_col ++){if ( puntero_char[pos_col] == SEPARADOR ) columna++ ;if ( columna == posicion ) break;}

for ( pos_cad = pos_col+1; pos_cad < tamano+pos_col +1; pos_cad++ ){if ( puntero_char[pos_cad]==SEPARADOR) salto++;if (salto==0)

{caracter = filtrar_char ( puntero_char[pos_cad] );printf ("%c",caracter);}

else printf (" ");}

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

void vaciar_estructura ( void *punt_sqlda ){int pos_k, pos_j;int limite_k = ((SQLDA *) punt_sqlda ) ->F;int limite_j;

for ( pos_k = 0; pos_k < limite_k ; pos_k++ ){limite_j = ((SQLDA *) punt_sqlda ) ->L[ pos_k ];

for ( pos_j = 0; pos_j < limite_j ; pos_j++)(char ) (((SQLDA *) punt_sqlda )->V[pos_k])[pos_j] = FIN_LINEA;

}}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

Page 214: Orastat line command

void vaciar_cadena (void *punt_cadena, int largo){int pos;

for (pos = 0; pos < largo; pos ++)((char *) punt_cadena ) [pos] = FIN_LINEA;

}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

int version_oracle (){char Version[10];int conta=0;int pos=0;int caracter=0;int nro_puntos=0;

EXEC SQL BEGIN DECLARE SECTION;VARCHAR version [256];

EXEC SQL END DECLARE SECTION;

vaciar_cadena (version.arr,MAX_VERSION_LEN);for ( ; ; )

{EXEC SQL WHENEVER NOT FOUND DO break;EXEC SQL SELECT ltrim(lpad(banner,70))

INTO :versionFROM V$VERSIONWHERE banner like '%Oracle%';

break; /* SOLO ME INTERESA UN REGISTRO */}

for ( pos =0; pos < version.len; pos ++){caracter = version.arr[pos];Version[conta]=FIN_LINEA;if ( nro_puntos < 3 )

Page 215: Orastat line command

{switch (caracter)

{case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:

Version[conta]=caracter;conta++;Version[conta]=FIN_LINEA;break;

case 46:/* Version[conta]=caracter;conta++; */nro_puntos++;Version[conta]=FIN_LINEA;break;

default:conta=0;

}}

}return (atoi (Version));

}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

int db_block_size (){int block_size=0;EXEC SQL BEGIN DECLARE SECTION;

VARCHAR data_block_size [20];

Page 216: Orastat line command

EXEC SQL END DECLARE SECTION;

vaciar_cadena (data_block_size.arr,20);for ( ; ; )

{EXEC SQL WHENEVER NOT FOUND DO break;EXEC SQL SELECT value

INTO :data_block_sizeFROM V$PARAMETERWHERE NAME IN ('db_block_size');

break; /* SOLO ME INTERESA UN REGISTRO */}

block_size = atoi (data_block_size.arr);return (block_size);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *decode_command_oracle (int nro_decodificar){static char dato_1[64];

vaciar_cadena (dato_1,64);switch (nro_decodificar)

{case 0: strcpy (dato_1,"BACKGROUND"); break;case 1: strcpy (dato_1,"CREATE TABLE"); break;case 2: strcpy (dato_1,"INSERT"); break;case 3: strcpy (dato_1,"SELECT"); break;case 4: strcpy (dato_1,"CREATE CLUSTER"); break;case 5: strcpy (dato_1,"ALTER CLUSTER"); break;case 6: strcpy (dato_1,"UPDATE"); break;case 7: strcpy (dato_1,"DELETE"); break;case 8: strcpy (dato_1,"DROP"); break;case 9: strcpy (dato_1,"CREATE INDEX"); break;case 10: strcpy (dato_1,"DROP INDEX"); break;case 11: strcpy (dato_1,"ALTER INDEX"); break;case 12: strcpy (dato_1,"DROP TABLE"); break;

Page 217: Orastat line command

case 13: strcpy (dato_1,"CREATE SEQUENCE"); break;case 14: strcpy (dato_1,"ALTER SEQUENCE"); break;case 15: strcpy (dato_1,"ALTER TABLE"); break;case 16: strcpy (dato_1,"DROP SEQUENCE"); break;case 17: strcpy (dato_1,"GRANT"); break;case 18: strcpy (dato_1,"REVOKE"); break;case 19: strcpy (dato_1,"CREATE SYNONYM"); break;case 20: strcpy (dato_1,"DROP SYNONYM"); break;case 21: strcpy (dato_1,"CREATE VIEW"); break;case 22: strcpy (dato_1,"DROP VIEW"); break;case 23: strcpy (dato_1,"VALIDATE INDEX"); break;case 24: strcpy (dato_1,"CREATE PROCEDURE"); break;case 25: strcpy (dato_1,"ALTER PROCEDURE"); break;case 26: strcpy (dato_1,"LOCK TABLE"); break;case 27: strcpy (dato_1,"NO OPERATION"); break;case 28: strcpy (dato_1,"RENAME"); break;case 29: strcpy (dato_1,"COMMENT"); break;case 30: strcpy (dato_1,"AUDIT"); break;case 31: strcpy (dato_1,"NOAUDIT"); break;case 32: strcpy (dato_1,"CREATE EXTERNAL DATABASE") ; break;case 33: strcpy (dato_1,"DROP EXTERNAL DATABASE"); break;case 34: strcpy (dato_1,"CREATE DATABASE"); break;case 35: strcpy (dato_1,"ALTER DATABASE"); break;case 36: strcpy (dato_1,"CREATE ROLLBACK SEGMENT"); break;case 37: strcpy (dato_1,"ALTER ROLLBACK SEGMENT"); break;case 38: strcpy (dato_1,"DROP ROLLBACK SEGMENT"); b reak;case 39: strcpy (dato_1,"CREATE TABLESPACE"); break ;case 40: strcpy (dato_1,"ALTER TABLESPACE"); break;case 41: strcpy (dato_1,"DROP TABLESPACE"); break;case 42: strcpy (dato_1,"ALTER SESSION"); break;case 43: strcpy (dato_1,"ALTER USER"); break;case 44: strcpy (dato_1,"COMMIT"); break;case 45: strcpy (dato_1,"ROLLBACK"); break;case 46: strcpy (dato_1,"SAVEPOINT"); break;case 47: strcpy (dato_1,"PL/SQL EXECUTE"); break;case 48: strcpy (dato_1,"SET TRANSACTION"); break;case 49: strcpy (dato_1,"ALTER SYSTEM SWITCH LOG"); break;case 50: strcpy (dato_1,"EXPLAIN"); break;case 51: strcpy (dato_1,"CREATE USER"); break;case 52: strcpy (dato_1,"CREATE ROLE"); break;

Page 218: Orastat line command

case 53: strcpy (dato_1,"DROP USER"); break;case 54: strcpy (dato_1,"DROP ROLE"); break;case 55: strcpy (dato_1,"SET ROLE"); break;case 56: strcpy (dato_1,"CREATE SCHEMA"); break;case 57: strcpy (dato_1,"CREATE CONTROL FILE"); bre ak;case 58: strcpy (dato_1,"ALTER TRACING"); break;case 59: strcpy (dato_1,"CREATE TRIGGER"); break;case 60: strcpy (dato_1,"ALTER TRIGGER"); break;case 61: strcpy (dato_1,"DROP TRIGGER"); break;case 62: strcpy (dato_1,"ANALYZE TABLE"); break;case 63: strcpy (dato_1,"ANALYZE INDEX"); break;case 64: strcpy (dato_1,"ANALYZE CLUSTER"); break;case 65: strcpy (dato_1,"CREATE PROFILE"); break;case 66: strcpy (dato_1,"DROP PROFILE"); break;case 67: strcpy (dato_1,"ALTER PROFILE"); break;case 68: strcpy (dato_1,"DROP PROCEDURE"); break;case 69: strcpy (dato_1,"DROP PROCEDURE"); break;case 70: strcpy (dato_1,"ALTER RESOURCE COST"); bre ak;case 71: strcpy (dato_1,"CREATE SNAPSHOT LOG"); bre ak;case 72: strcpy (dato_1,"ALTER SNAPSHOT LOG"); brea k;case 73: strcpy (dato_1,"DROP SNAPSHOT LOG"); break ;case 74: strcpy (dato_1,"CREATE SNAPSHOT"); break;case 75: strcpy (dato_1,"ALTER SNAPSHOT"); break;case 76: strcpy (dato_1,"DROP SNAPSHOT"); break;case 79: strcpy (dato_1,"ALTER ROLE"); break;case 85: strcpy (dato_1,"TRUNCATE TABLE"); break;case 86: strcpy (dato_1,"TRUNCATE CLUSTER"); break;

/* case 87: strcpy (dato_1,"-"); break; */case 88: strcpy (dato_1,"ALTER VIEW"); break;

/* case 89: strcpy (dato_1,"-"); break; *//* case 90: strcpy (dato_1,"-"); break; */

case 91: strcpy (dato_1,"CREATE FUNCTION"); break;case 92: strcpy (dato_1,"ALTER FUNCTION"); break;case 93: strcpy (dato_1,"DROP FUNCTION"); break;case 94: strcpy (dato_1,"CREATE PACKAGE"); break;case 95: strcpy (dato_1,"ALTER PACKAGE"); break;case 96: strcpy (dato_1,"DROP PACKAGE"); break;case 97: strcpy (dato_1,"CREATE PACKAGE BODY"); bre ak;case 98: strcpy (dato_1,"ALTER PACKAGE BODY"); brea k;case 99: strcpy (dato_1,"DROP PACKAGE BODY"); break ;

Page 219: Orastat line command

default: strcpy (dato_1,"-"); break; }

return dato_1;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *decode_lock_mode (int nro_decodificar){static char dato_1[64];

vaciar_cadena (dato_1,64);switch (nro_decodificar)

{case 1: strcpy (dato_1,"No Lock"); break; case 2: strcpy (dato_1,"Row Share"); break; case 3: strcpy (dato_1,"Row Exclusive"); break; case 4: strcpy (dato_1,"Share"); break; case 5: strcpy (dato_1,"Share Row Exclusive"); bre ak;case 6: strcpy (dato_1,"Exclusive"); break;default: strcpy (dato_1,"NONE"); break;}

return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *decode_name_lock (char *cad_decodificar){static char dato_1[256];

vaciar_cadena (dato_1,256);

if ( strncmp (cad_decodificar,"BL",2) == 0) strcpy (dato_1,"Buffer hash table instance lock"); elseif ( strncmp (cad_decodificar,"CF",2) == 0) strcpy (dato_1," Control file schema global enqueue lock") ; elseif ( strncmp (cad_decodificar,"CI",2) == 0) strcpy (dato_1,"Cross-instance function invocation instanc e lock"); else

Page 220: Orastat line command

if ( strncmp (cad_decodificar,"CS",2) == 0) strcpy (dato_1,"Control file schema global enqueue lock"); elseif ( strncmp (cad_decodificar,"CU",2) == 0) strcpy (dato_1,"Cursor bind lock"); elseif ( strncmp (cad_decodificar,"DF",2) == 0) strcpy (dato_1,"Data file instance lock"); elseif ( strncmp (cad_decodificar,"DL",2) == 0) strcpy (dato_1,"Direct loader parallel index create"); els eif ( strncmp (cad_decodificar,"DM",2) == 0) strcpy (dato_1,"Mount/startup db primary/secondary instanc e lock"); elseif ( strncmp (cad_decodificar,"DR",2) == 0) strcpy (dato_1,"Distributed recovery process lock"); elseif ( strncmp (cad_decodificar,"DX",2) == 0) strcpy (dato_1,"Distributed transaction entry lock"); elseif ( strncmp (cad_decodificar,"FI",2) == 0) strcpy (dato_1,"SGA open-file information lock"); elseif ( strncmp (cad_decodificar,"FS",2) == 0) strcpy (dato_1,"File set lock"); elseif ( strncmp (cad_decodificar,"HW",2) == 0) strcpy (dato_1,"Space management operations on a specific segment lock"); elseif ( strncmp (cad_decodificar,"IN",2) == 0) strcpy (dato_1,"Instance number lock"); elseif ( strncmp (cad_decodificar,"IR",2) == 0) strcpy (dato_1,"Instance recovery serialization global enq ueue lock"); elseif ( strncmp (cad_decodificar,"IS",2) == 0) strcpy (dato_1,"Instance state lock"); elseif ( strncmp (cad_decodificar,"IV",2) == 0) strcpy (dato_1,"Library cache invalidation instance lock") ; elseif ( strncmp (cad_decodificar,"JQ",2) == 0) strcpy (dato_1,"Job queue lock"); elseif ( strncmp (cad_decodificar,"KK",2) == 0) strcpy (dato_1,"Thread kick lock"); elseif ( strncmp (cad_decodificar,"MB",2) == 0) strcpy (dato_1,"Master buffer hash table instance lock"); elseif ( strncmp (cad_decodificar,"MM",2) == 0) strcpy (dato_1,"Mount definition gloabal enqueue lock"); e lseif ( strncmp (cad_decodificar,"MR",2) == 0) strcpy (dato_1,"Media recovery lock"); elseif ( strncmp (cad_decodificar,"PF",2) == 0) strcpy (dato_1,"Password file lock"); elseif ( strncmp (cad_decodificar,"PI",2) == 0) strcpy (dato_1,"Parallel operation lock"); elseif ( strncmp (cad_decodificar,"PR",2) == 0) strcpy (dato_1,"Process startup lock"); elseif ( strncmp (cad_decodificar,"PS",2) == 0) strcpy (dato_1,"Parallel operation lock"); elseif ( strncmp (cad_decodificar,"RE",2) == 0) strcpy (dato_1,"USE_ROW_ENQUEUE enforcement lock"); elseif ( strncmp (cad_decodificar,"RT",2) == 0) strcpy (dato_1,"Redo thread global enqueue lock"); elseif ( strncmp (cad_decodificar,"RW",2) == 0) strcpy (dato_1,"Row wait enqueue lock"); elseif ( strncmp (cad_decodificar,"SC",2) == 0) strcpy (dato_1,"System commit number instance lock"); elseif ( strncmp (cad_decodificar,"SH",2) == 0) strcpy (dato_1,"System commit number high water mark enque ue lock"); elseif ( strncmp (cad_decodificar,"SM",2) == 0) strcpy (dato_1,"SMON lock"); elseif ( strncmp (cad_decodificar,"SN",2) == 0) strcpy (dato_1,"Sequence number instance lock"); elseif ( strncmp (cad_decodificar,"SQ",2) == 0) strcpy (dato_1,"Sequence number enqueue lock"); elseif ( strncmp (cad_decodificar,"SS",2) == 0) strcpy (dato_1,"Sort segment lock"); elseif ( strncmp (cad_decodificar,"ST",2) == 0) strcpy (dato_1,"Space transaction enqueue lock"); elseif ( strncmp (cad_decodificar,"SV",2) == 0) strcpy (dato_1,"Sequence number value lock"); elseif ( strncmp (cad_decodificar,"TA",2) == 0) strcpy (dato_1,"Generic enqueue lock"); elseif ( strncmp (cad_decodificar,"TD",2) == 0) strcpy (dato_1,"DDL enqueue lock"); elseif ( strncmp (cad_decodificar,"TE",2) == 0) strcpy (dato_1,"Extend-segment enqueue lock"); elseif ( strncmp (cad_decodificar,"TM",2) == 0) strcpy (dato_1,"DML enqueue lock"); elseif ( strncmp (cad_decodificar,"TT",2) == 0) strcpy (dato_1,"Temporary table enqueue lock"); elseif ( strncmp (cad_decodificar,"TX",2) == 0) strcpy (dato_1,"Transaction enqueue lock"); else

Page 221: Orastat line command

if ( strncmp (cad_decodificar,"UL",2) == 0) strcpy (dato_1,"User supplied lock"); elseif ( strncmp (cad_decodificar,"UN",2) == 0) strcpy (dato_1,"User name lock"); elseif ( strncmp (cad_decodificar,"US",2) == 0) strcpy (dato_1,"Undo segment DDL lock"); elseif ( strncmp (cad_decodificar,"WL",2) == 0) strcpy (dato_1,"Being-written redo log instance lock"); el seif ( strncmp (cad_decodificar,"WS",2) == 0) strcpy (dato_1,"Write-atomic-log-switch global enqueue loc k"); elseif ( strncmp (cad_decodificar,"TS",2) == 0) strcpy (dato_1,"Temporary segment enqueue lock (ID2=0) New block allocation enqueue lock

(ID2=1)"); elseif ( strncmp (cad_decodificar,"LA",2) == 0) strcpy (dato_1,"Library cache lock instance lock (A=namesp ace)"); elseif ( strncmp (cad_decodificar,"LB",2) == 0) strcpy (dato_1,"Library cache lock instance lock (B=namesp ace)"); elseif ( strncmp (cad_decodificar,"LC",2) == 0) strcpy (dato_1,"Library cache lock instance lock (C=namesp ace)"); elseif ( strncmp (cad_decodificar,"LD",2) == 0) strcpy (dato_1,"Library cache lock instance lock (D=namesp ace)"); elseif ( strncmp (cad_decodificar,"LE",2) == 0) strcpy (dato_1,"Library cache lock instance lock (E=namesp ace)"); elseif ( strncmp (cad_decodificar,"LF",2) == 0) strcpy (dato_1,"Library cache lock instance lock (F=namesp ace)"); elseif ( strncmp (cad_decodificar,"LG",2) == 0) strcpy (dato_1,"Library cache lock instance lock (G=namesp ace)"); elseif ( strncmp (cad_decodificar,"LH",2) == 0) strcpy (dato_1,"Library cache lock instance lock (H=namesp ace)"); elseif ( strncmp (cad_decodificar,"LI",2) == 0) strcpy (dato_1,"Library cache lock instance lock (I=namesp ace)"); elseif ( strncmp (cad_decodificar,"LJ",2) == 0) strcpy (dato_1,"Library cache lock instance lock (J=namesp ace)"); elseif ( strncmp (cad_decodificar,"LK",2) == 0) strcpy (dato_1,"Library cache lock instance lock (K=namesp ace)"); elseif ( strncmp (cad_decodificar,"LL",2) == 0) strcpy (dato_1,"Library cache lock instance lock (L=namesp ace)"); elseif ( strncmp (cad_decodificar,"LM",2) == 0) strcpy (dato_1,"Library cache lock instance lock (M=namesp ace)"); elseif ( strncmp (cad_decodificar,"LN",2) == 0) strcpy (dato_1,"Library cache lock instance lock (N=namesp ace)"); elseif ( strncmp (cad_decodificar,"LO",2) == 0) strcpy (dato_1,"Library cache lock instance lock (O=namesp ace)"); elseif ( strncmp (cad_decodificar,"LP",2) == 0) strcpy (dato_1,"Library cache lock instance lock (P=namesp ace)"); elseif ( strncmp (cad_decodificar,"LS",2) == 0) strcpy (dato_1,"Log start/log switch enqueue lock"); elseif ( strncmp (cad_decodificar,"PA",2) == 0) strcpy (dato_1,"Library cache pin instance lock (A=namespa ce)"); elseif ( strncmp (cad_decodificar,"PB",2) == 0) strcpy (dato_1,"Library cache pin instance lock (B=namespa ce)"); elseif ( strncmp (cad_decodificar,"PC",2) == 0) strcpy (dato_1,"Library cache pin instance lock (C=namespa ce)"); elseif ( strncmp (cad_decodificar,"PD",2) == 0) strcpy (dato_1,"Library cache pin instance lock (D=namespa ce)"); elseif ( strncmp (cad_decodificar,"PE",2) == 0) strcpy (dato_1,"Library cache pin instance lock (E=namespa ce)"); elseif ( strncmp (cad_decodificar,"PF",2) == 0) strcpy (dato_1,"Library cache pin instance lock (F=namespa ce)"); elseif ( strncmp (cad_decodificar,"PG",2) == 0) strcpy (dato_1,"Library cache pin instance lock (G=namespa ce)"); elseif ( strncmp (cad_decodificar,"PH",2) == 0) strcpy (dato_1,"Library cache pin instance lock (H=namespa ce)"); elseif ( strncmp (cad_decodificar,"PI",2) == 0) strcpy (dato_1,"Library cache pin instance lock (I=namespa ce)"); elseif ( strncmp (cad_decodificar,"PJ",2) == 0) strcpy (dato_1,"Library cache pin instance lock (J=namespa ce)"); elseif ( strncmp (cad_decodificar,"PL",2) == 0) strcpy (dato_1,"Library cache pin instance lock (K=namespa ce)"); elseif ( strncmp (cad_decodificar,"PK",2) == 0) strcpy (dato_1,"Library cache pin instance lock (L=namespa ce)"); elseif ( strncmp (cad_decodificar,"PM",2) == 0) strcpy (dato_1,"Library cache pin instance lock (M=namespa ce)"); elseif ( strncmp (cad_decodificar,"PN",2) == 0) strcpy (dato_1,"Library cache pin instance lock (N=namespa ce)"); elseif ( strncmp (cad_decodificar,"PO",2) == 0) strcpy (dato_1,"Library cache pin instance lock (O=namespa ce)"); elseif ( strncmp (cad_decodificar,"PP",2) == 0) strcpy (dato_1,"Library cache pin instance lock (P=namespa ce)"); else

Page 222: Orastat line command

if ( strncmp (cad_decodificar,"PQ",2) == 0) strcpy (dato_1,"Library cache pin instance lock (Q=namespa ce)"); elseif ( strncmp (cad_decodificar,"PR",2) == 0) strcpy (dato_1,"Library cache pin instance lock (R=namespa ce)"); elseif ( strncmp (cad_decodificar,"PS",2) == 0) strcpy (dato_1,"Library cache pin instance lock (S=namespa ce)"); elseif ( strncmp (cad_decodificar,"PT",2) == 0) strcpy (dato_1,"Library cache pin instance lock (T=namespa ce)"); elseif ( strncmp (cad_decodificar,"PU",2) == 0) strcpy (dato_1,"Library cache pin instance lock (U=namespa ce)"); elseif ( strncmp (cad_decodificar,"PV",2) == 0) strcpy (dato_1,"Library cache pin instance lock (V=namespa ce)"); elseif ( strncmp (cad_decodificar,"PW",2) == 0) strcpy (dato_1,"Library cache pin instance lock (W=namespa ce)"); elseif ( strncmp (cad_decodificar,"PX",2) == 0) strcpy (dato_1,"Library cache pin instance lock (X=namespa ce)"); elseif ( strncmp (cad_decodificar,"PY",2) == 0) strcpy (dato_1,"Library cache pin instance lock (Y=namespa ce)"); elseif ( strncmp (cad_decodificar,"PZ",2) == 0) strcpy (dato_1,"Library cache pin instance lock (Z=namespa ce)"); elseif ( strncmp (cad_decodificar,"QA",2) == 0) strcpy (dato_1,"Row cache instance lock (A=cache)"); elseif ( strncmp (cad_decodificar,"QB",2) == 0) strcpy (dato_1,"Row cache instance lock (B=cache)"); elseif ( strncmp (cad_decodificar,"QC",2) == 0) strcpy (dato_1,"Row cache instance lock (C=cache)"); elseif ( strncmp (cad_decodificar,"QD",2) == 0) strcpy (dato_1,"Row cache instance lock (D=cache)"); elseif ( strncmp (cad_decodificar,"QE",2) == 0) strcpy (dato_1,"Row cache instance lock (E=cache)"); elseif ( strncmp (cad_decodificar,"QF",2) == 0) strcpy (dato_1,"Row cache instance lock (F=cache)"); elseif ( strncmp (cad_decodificar,"QG",2) == 0) strcpy (dato_1,"Row cache instance lock (G=cache)"); elseif ( strncmp (cad_decodificar,"QH",2) == 0) strcpy (dato_1,"Row cache instance lock (H=cache)"); elseif ( strncmp (cad_decodificar,"QI",2) == 0) strcpy (dato_1,"Row cache instance lock (I=cache)"); elseif ( strncmp (cad_decodificar,"QJ",2) == 0) strcpy (dato_1,"Row cache instance lock (J=cache)"); elseif ( strncmp (cad_decodificar,"QL",2) == 0) strcpy (dato_1,"Row cache instance lock (K=cache)"); elseif ( strncmp (cad_decodificar,"QK",2) == 0) strcpy (dato_1,"Row cache instance lock (L=cache)"); elseif ( strncmp (cad_decodificar,"QM",2) == 0) strcpy (dato_1,"Row cache instance lock (M=cache)"); elseif ( strncmp (cad_decodificar,"QN",2) == 0) strcpy (dato_1,"Row cache instance lock (N=cache)"); elseif ( strncmp (cad_decodificar,"QO",2) == 0) strcpy (dato_1,"Row cache instance lock (O=cache)"); elseif ( strncmp (cad_decodificar,"QP",2) == 0) strcpy (dato_1,"Row cache instance lock (P=cache)"); elseif ( strncmp (cad_decodificar,"QQ",2) == 0) strcpy (dato_1,"Row cache instance lock (Q=cache)"); elseif ( strncmp (cad_decodificar,"QR",2) == 0) strcpy (dato_1,"Row cache instance lock (R=cache)"); elseif ( strncmp (cad_decodificar,"QS",2) == 0) strcpy (dato_1,"Row cache instance lock (S=cache)"); elseif ( strncmp (cad_decodificar,"QT",2) == 0) strcpy (dato_1,"Row cache instance lock (T=cache)"); elseif ( strncmp (cad_decodificar,"QU",2) == 0) strcpy (dato_1,"Row cache instance lock (U=cache)"); elseif ( strncmp (cad_decodificar,"QV",2) == 0) strcpy (dato_1,"Row cache instance lock (V=cache)"); elseif ( strncmp (cad_decodificar,"QW",2) == 0) strcpy (dato_1,"Row cache instance lock (W=cache)"); elseif ( strncmp (cad_decodificar,"QX",2) == 0) strcpy (dato_1,"Row cache instance lock (X=cache)"); elseif ( strncmp (cad_decodificar,"QY",2) == 0) strcpy (dato_1,"Row cache instance lock (Y=cache)"); elseif ( strncmp (cad_decodificar,"QZ",2) == 0) strcpy (dato_1,"Row cache instance lock (Z=cache)");

return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

Page 223: Orastat line command

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

funcion_columna (int column_size, void *punt_cadena , int nro_funcion){char dato_1 [1024];

switch (nro_funcion){case FUNC_DB_BLOCK_SIZE:

/* Calculo DB_BLOCK_SIZE, multiplico por la COLUMNA y devuelvo el RESULTADO *//* ------------------------------------------------ ------------------------ */itoa ((atoi ( (char *) punt_cadena ) * db_block_siz e() ) / 1000,dato_1,10);break;

case FUNC_COMMAND_SQL:/* Decodifico el nro de la Columna y lo relaciono c on el nombre del COMANDO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_command_oracle ( atoi ( (ch ar *) punt_cadena) ) );

case FUNC_LOCK_MODE:/* Decodifico el nro de la Columna y lo relaciono c on el tipo de LOCKEO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_lock_mode ( atoi ( (char *) punt_cadena) ) );

case FUNC_LOCK_NAME_MODE:/* Decodifico el nro de la Columna y lo relaciono c on el nombre de LOCKEO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_name_lock ( (char *) punt_c adena) );

default: break;

}/* ------------------------------------------------ ------------------------ */strncpy ( (char *) punt_cadena, dato_1, column_size );/* ------------------------------------------------ ------------------------ */return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_columna_funcion ( void *punt_cadena, int n ro_columna, int *nro_funcion )

Page 224: Orastat line command

{char procesar[10];char col_char[10];char func_char[10];

int pos_col = 0;int flag_procesar = 0;int caracter = 0;int delimitador = 0;int contador = 0;int nro_col = 0;int nro_func = 0;

for ( pos_col = 1; pos_col < 3; pos_col ++){procesar [pos_col-1] = ( (char *) punt_cadena)[pos_ col];procesar [pos_col] = FIN_LINEA;}

if (strncmp (procesar,"SI",2) == 0 )flag_procesar = SI_PROCESAR;

if (strncmp (procesar,"NO",2) == 0 )flag_procesar = NO_PROCESAR;

for ( pos_col = 3; pos_col < (int ) (strlen ( (char *) punt_cadena )); pos_col ++ ){caracter = ( (char *) punt_cadena )[pos_col];if ( caracter == SEPARADOR )

if ( delimitador == 0 ) delimitador++;

elsedelimitador--;

if ( ( delimitador == 1 ) && ( caracter != SEPARADO R ) ){if ( contador < 2 )

{col_char[contador] = caracter;col_char[contador+1] = FIN_LINEA;}

else{

Page 225: Orastat line command

func_char[contador - 2] = caracter;func_char[contador -2+1]= FIN_LINEA;}

contador++;if ( contador == 4 )

{nro_col = atoi (col_char);nro_func = atoi (func_char);contador=0;

/* printf ("Colu [%d] Func [%d] \n",nro_col, nro_fu nc); */if ( nro_col == nro_columna )

{*nro_funcion = nro_func;return (SI_PROCESAR);}

}}

}return (NO_PROCESAR);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* **********************

Page 226: Orastat line command

*** ****** ****** ARCHIVO: orasta2000.pc ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

#include <oraca.h>#include <sqlca.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <setjmp.h>#include "constant_definition.h"

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

#ifndef NULL#define NULL 0#endif

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *dml_commands[] = {"SELECT", "select", "INSERT ", "insert","UPDATE", "update", "DELETE", "delete"} ;char dyn_size [MAX_VAR_SIZE];char dyn_title [MAX_VAR_SIZE];char dyn_column [MAX_VAR_SIZE];

Page 227: Orastat line command

char dyn_proc_func [MAX_VAR_SIZE];

EXEC SQL BEGIN DECLARE SECTION;char dyn_sts[16384];EXEC SQL VAR dyn_sts IS STRING(16384);

EXEC SQL END DECLARE SECTION;

EXEC SQL INCLUDE sqlca; EXEC SQL INCLUDE sqlda;

SQLDA *bind_dp;SQLDA *select_dp;

jmp_buf jmp_continue;int parse_flag = 0;

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****---- FUNCIONES DECLARADAS INTERN AS ****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

/* ----****----****---- FUNCIONES QUERY SQL ORACLE ****----****----**** */int version_oracle();int db_block_size ();

char *db_object_type ();char *db_session_sid ();char *db_object_owner_name ();

/* ----****----****---- FUNCIONES PRIMITIVAS ORACLE ****----****----**** */int oracle_connect_original();int oracle_connect_new();int alloc_descriptors();int set_bind_variables();int process_select_list();int liberar_memoria();int cargar_sentencia ();int procesar_cadena ();int procesar_encabe ();sql_error();

Page 228: Orastat line command

/* ----****----****---- FUNCIONES PROCESAMIENTO CHA R ****----****----**** */

int filtrar_char ();int col_size ();int filtrar_char ();char *pasar_amayus ();void vaciar_estructura ();void vaciar_cadena ();char *funcion_columna ();int procesar_columna_funcion ();char *convert_ss_to_hh_mm_ss ();char *separar_dato ();

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****---- FUNCIONES DECLARADAS EXTERN AS ****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

extern SQLDA *sqlald();extern void sqlnul();

extern char *decode_name_lock ();extern char *decode_command_oracle ();extern char *decode_lock_mode ();extern char *ver_menu_opcion();extern char *func_dyn_column_set ();extern char *func_dyn_title_set();extern char *func_dyn_size_set();extern char *func_dyn_statement_set();extern char *func_dyn_proc_func_set();

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

main( int argc , char *argv[]){int i=0;int opcion_nro=0;

Page 229: Orastat line command

int version=0;

char opcion_uno [MAX_LEN_ARG];char opcion_dos [MAX_LEN_ARG];char opcion_tres [MAX_LEN_ARG];char datos_conexion [MAX_LEN_CONNECT];char username [MAX_LEN_CONNECT];char password [MAX_LEN_CONNECT];char conexion [MAX_LEN_CONNECT];

char nomcon_001 [MAX_LEN_CONNECT];char nomcon_002 [MAX_LEN_CONNECT];

opcion_uno[0]=FIN_LINEA;opcion_dos[0]=FIN_LINEA;opcion_tres[0]=FIN_LINEA;datos_conexion[0]=FIN_LINEA;

if (argc <3 ){printf ("Insuficientes argumentos \n");exit (1);}

strcpy (datos_conexion,argv[1]);

strcpy (nomcon_001,"CONEX001");

vaciar_cadena (username,MAX_LEN_CONNECT);vaciar_cadena (password,MAX_LEN_CONNECT);vaciar_cadena (conexion,MAX_LEN_CONNECT);

strcpy (username,separar_dato (datos_conexion,USERN AME));strcpy (password,separar_dato (datos_conexion,PASSW ORD));strcpy (conexion,separar_dato (datos_conexion,CONEX ION));

printf ("User [%s] - Pass [%s] - Cone [%s] - DbAl [ %s] \n",username,password,conexion,nomcon_001);

if (argc >= 3 ) opcion_nro=atoi(argv[2]);if (argc >= 4 ) strcpy (opcion_uno,pasar_amayus(argv [3]));if (argc >= 5 ) strcpy (opcion_dos,pasar_amayus(argv [4]));

Page 230: Orastat line command

if (argc >= 6 ) strcpy (opcion_tres,argv[5]);

/* *********************************************** ********** *//*

if (oracle_connect_new (datos_conexion,username,pas sword,conexion,nomcon_001) != 0) {printf ("No es posible conectarse ...\n");exit(1);}

*//* *********************************************** ********** */

if (oracle_connect_original(datos_conexion) != 0) {printf ("No es posible conectarse ...\n");exit(1);}

version = version_oracle();printf ("Oracle Version [%d] \n",version);

if (alloc_descriptors(MAX_ITEMS,MAX_VNAME_LEN, MAX_ INAME_LEN) != 0) exit(1);i = setjmp(jmp_continue); cargar_sentencia (version, opcion_nro, opcion_uno, opcion_dos, opcion_tres);

EXEC SQL WHENEVER SQLERROR DO sql_error();parse_flag = 1;

EXEC SQL PREPARE S FROM :dyn_sts;parse_flag = 0;

EXEC SQL DECLARE C CURSOR FOR S;set_bind_variables();

EXEC SQL OPEN C USING DESCRIPTOR bind_dp;process_select_list();liberar_memoria();

return NO_ERROR;}

Page 231: Orastat line command

/* ----****----****----****----****----****----**** ----****----****----****----**** */

char *pasar_amayus (char *cadena ){int pos=0;

/* printf ("Iniciando conversion \n"); */for (pos =0; pos < (int ) strlen (cadena); pos ++)

cadena[pos]=toupper(cadena[pos]);

return cadena;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

liberar_memoria (){int i;

for (i = 0; i < MAX_ITEMS; i++){if (bind_dp->V[i] != (char *) 0)free(bind_dp->V[i]);free(bind_dp->I[i]); if (select_dp->V[i] != (char *) 0)

free(select_dp->V[i]);free(select_dp->I[i]); }

EXEC SQL WHENEVER SQLERROR CONTINUE;EXEC SQL CLOSE C;EXEC SQL COMMIT WORK RELEASE;EXEC SQL WHENEVER SQLERROR DO sql_error();

return SI_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

oracle_connect_original ( char *datos_conexion )

Page 232: Orastat line command

{

EXEC SQL BEGIN DECLARE SECTION;VARCHAR connectstring[256];

EXEC SQL END DECLARE SECTION;

strcpy ((char *) connectstring.arr,datos_conexion);connectstring.arr[strlen((char *) connectstring.arr )] = FIN_LINEA;connectstring.len = (unsigned short )strlen((char * ) connectstring.arr);

EXEC SQL WHENEVER SQLERROR GOTO connect_error;printf ("\nConnecting .....\n");EXEC SQL CONNECT :connectstring;

printf("\nConnected to ORACLE \n");return 0;connect_error:

fprintf(stderr,"Cannot connect to ORACLE\n");return -1;

}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

oracle_connect_new ( char *datos_conexion, char *us er_name, char *pass_word, char *net_conexion, char *aliasdb){

EXEC SQL BEGIN DECLARE SECTION;VARCHAR username[256];VARCHAR password[256];VARCHAR connectstring[256];VARCHAR db_net_connect[256];VARCHAR db_alias_name[256];

EXEC SQL END DECLARE SECTION;

strcpy ((char *) connectstring.arr,datos_conexion);connectstring.arr[strlen((char *) connectstring.arr )] = FIN_LINEA;connectstring.len = (unsigned short )strlen((char * ) connectstring.arr);

Page 233: Orastat line command

strcpy ((char *) username.arr,user_name);username.arr[strlen((char *) username.arr)] = FIN_L INEA;username.len = (unsigned short )strlen((char *) use rname.arr);

strcpy ((char *) password.arr,pass_word);password.arr[strlen((char *) password.arr)] = FIN_L INEA;password.len = (unsigned short )strlen((char *) pas sword.arr);

strcpy ((char *) db_net_connect.arr,net_conexion);db_net_connect.arr[strlen((char *) db_net_connect.a rr)] = FIN_LINEA;db_net_connect.len = (unsigned short )strlen((char *) db_net_connect.arr);

strcpy ((char *) db_alias_name.arr,aliasdb);db_alias_name.arr[strlen((char *) db_alias_name.arr )] = FIN_LINEA;db_alias_name.len = (unsigned short )strlen((char * ) db_alias_name.arr);

EXEC SQL WHENEVER SQLERROR GOTO connect_error;printf ("\nConnecting .....\n");

/*printf ("User [%s] - Pass [%s] - Cone [%s] \n",user name.arr,password.arr,db_net_connect.arr);*/

EXEC SQL CONNECT :username IDENTIFIED BY :password AT :db_alias_name USING :db_net_connect;

printf("\nConnected to ORACLE \n");return 0;connect_error:

fprintf(stderr,"Cannot connect to ORACLE\n");return -1;

}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

alloc_descriptors(size, max_vname_len, max_iname_le n)int size;

Page 234: Orastat line command

int max_vname_len;int max_iname_len;

{int i;

if ((bind_dp = sqlald(size, max_vname_len, max_inam e_len)) == (SQLDA *) 0){fprintf(stderr,"Insuficient memory...");return -1; }

if ((select_dp = sqlald (size, max_vname_len, max_i name_len)) == (SQLDA *) 0){fprintf(stderr,"Insuficient memory...");return -1;}

select_dp->N = MAX_ITEMS;for (i = 0; i < MAX_ITEMS; i++)

{bind_dp->I[i] = (short *) malloc(sizeof (short));select_dp->I[i] = (short *) malloc(sizeof(short));bind_dp->V[i] = (char *) malloc(1);select_dp->V[i] = (char *) malloc(1);}

return 0;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

set_bind_variables(){int i, n;

char bind_var [MAX_BIND_VARIABLE];

EXEC SQL WHENEVER SQLERROR DO sql_error();bind_dp->N = MAX_ITEMS; EXEC SQL DESCRIBE BIND VARIABLES FOR S INTO bind_dp ;

Page 235: Orastat line command

if (bind_dp->F < 0){printf ("\nToo many variables to bind...\n", -bind_ dp->F, MAX_ITEMS);return SI_ERROR;}

bind_dp->N = bind_dp->F;for (i = 0; i < bind_dp->F; i++)

{printf ("\nEnter value for bind variable %.*s: ",(i nt)bind_dp->C[i], bind_dp->S[i]);fgets (bind_var, (int )sizeof(bind_var), stdin);n = (int )strlen(bind_var) - 1;bind_dp->L[i] = n;bind_dp->V[i] = (char *) realloc(bind_dp->V[i], (bi nd_dp->L[i] + 1));

strncpy(bind_dp->V[i], bind_var, n);

if ((strncmp(bind_dp->V[i], "NULL", 4) == 0) || (st rncmp(bind_dp->V[i], "null", 4) == 0))*bind_dp->I[i] = -1;

else*bind_dp->I[i] = 0;

bind_dp->T[i] = 1;}

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

process_select_list(){int null_ok;int nro_columna=0;int column_size=0;int si_proceso=0;int nro_bytes=0;int nro_funcion=0;char datos_auxi[MAX_LEN_DATOS_AUXI];

vaciar_cadena (datos_auxi,MAX_LEN_DATOS_AUXI);if ((strncmp(dyn_sts, "SELECT", 6) != 0) && (strncm p(dyn_sts, "select", 6) != 0))

Page 236: Orastat line command

{select_dp->F = 0;return NO_ERROR;}

select_dp->N = MAX_ITEMS;

EXEC SQL DESCRIBE SELECT LIST FOR S INTO select_dp;if (select_dp->F < 0)

{printf ("\nToo many select-list items (%d), maximum is %d\n", -(select_dp->F), MAX_ITEMS);return SI_ERROR;}

select_dp->N = select_dp->F;printf ("%s \n",dyn_title);for (nro_columna = 0; nro_columna < select_dp->F; n ro_columna++)

{sqlnul ( &(select_dp->T[nro_columna]), &(select_dp- >T[nro_columna]), &null_ok);column_size=col_size(dyn_size,nro_columna);select_dp->L[nro_columna]= column_size;select_dp->C[nro_columna]= column_size;select_dp->T[nro_columna]=1;}

for (nro_columna = 0; nro_columna < select_dp->F; n ro_columna++){select_dp->V[nro_columna] = (char *) realloc(select _dp->V[nro_columna], select_dp->L[nro_columna]);printf ("["); column_size=col_size(dyn_size,nro_columna);procesar_encabe (column_size,nro_columna,dyn_column ); printf ("] "); }

printf ("\n");EXEC SQL WHENEVER NOT FOUND GOTO end_select_loop;

for ( ; ; ){/* Asegurandome que la estructura de Retorno este t otalmente vacia */vaciar_estructura ( select_dp );

/* Tomando una fila (ROW) de la base de datos */EXEC SQL FETCH C USING DESCRIPTOR select_dp;

Page 237: Orastat line command

/* Procesando las "i" columnas de datos de la fila retornada */for (nro_columna = 0; nro_columna < select_dp->F; n ro_columna++)

{printf (" ");/* ------------------------------------------------ ----------------------------- */column_size=col_size(dyn_size,nro_columna);/* ------------------------------------------------ ----------------------------- */si_proceso = procesar_columna_funcion (dyn_proc_fun c, nro_columna, &nro_funcion);if ( si_proceso == SI_PROCESAR)

{vaciar_cadena (datos_auxi,strlen(datos_auxi));strcpy (datos_auxi,funcion_columna (nro_bytes, (cha r *)select_dp->V[nro_columna], nro_funcion));procesar_cadena (column_size,datos_auxi);}

else{/* ------------------------------------------------ ----------------------------- */procesar_cadena (column_size,(char *)select_dp->V[n ro_columna]);/* ------------------------------------------------ ----------------------------- */}

printf (" "); }

printf ("\n");}

end_select_loop:return NO_ERROR;

}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

cargar_sentencia (int version, int sentencia, char *opcion_uno, char *opcion_dos, char *opcion_tres ){

strcpy (dyn_column,func_dyn_column_set (version,sen tencia));strcpy (dyn_title,func_dyn_title_set (version,sente ncia));strcpy (dyn_sts,func_dyn_statement_set (version,sen tencia,opcion_uno,opcion_dos,opcion_tres));strcpy (dyn_size,func_dyn_size_set (version,sentenc ia));strcpy (dyn_proc_func, func_dyn_proc_func_set (vers ion,sentencia));

/* ------------------------------------------------ ----------------------------- */

Page 238: Orastat line command

/* COMPROBACION DE LAS VARIABLES RETORNADAS EN LOS CASE *//* SEGUN LA OPCION ELEGIDA Y LA VERSION DE ORACLE *//* ------------------------------------------------ ----------------------------- */

/*printf ("Proc Func [%s] \n",dyn_proc_func);printf ("Column Set [%s] \n",dyn_column);printf ("Column Size[%s] \n",dyn_size);printf ("Statement [%s] \n",dyn_sts);

*/if (strlen (dyn_sts) >= MAX_STMT)

printf ("Max Statement large [%d] | Actual Statemen t large [%d] \n",MAX_STMT,strlen(dyn_sts));return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

sql_error(){/* int i; */

printf ("\n\n%.70s\n",sqlca.sqlerrm.sqlerrmc);if (parse_flag)

printf("\n Error de Oracle... \n",sqlca.sqlerrd[4]) ;EXEC SQL WHENEVER SQLERROR CONTINUE;EXEC SQL ROLLBACK WORK;liberar_memoria();exit(1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

col_size (char *puntero, int posicion){char ascii_nro[3];int numero, i;

for ( i = posicion*2; i < posicion*2+2; i++)ascii_nro[i-posicion*2]=puntero[i];

ascii_nro[2]=FIN_LINEA;numero=atoi(ascii_nro);

Page 239: Orastat line command

return numero;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

int filtrar_char (int caracter){if ( (caracter >= 32 && caracter <= 127 ) ) return caracter;else

{switch (caracter)

{case 164: break;case 165: break;case 168: break;case 173: break;default: caracter=32;break;}

}return caracter;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_cadena (int nrocolum, char *puntero_char){int pos, caracter;

for ( pos=0; pos < nrocolum; pos++ ){caracter=filtrar_char(puntero_char[pos]);printf ("%c",caracter);}

fflush(stdout);return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_encabe (int tamano, int posicion, char *pu ntero_char)

Page 240: Orastat line command

{int pos_col=0;int pos_cad=0;int columna=-1;int caracter=0;int salto=0;

for ( pos_col = 0; pos_col < (int )strlen(puntero_c har); pos_col ++){if ( puntero_char[pos_col] == SEPARADOR ) columna++ ;if ( columna == posicion ) break;}

for ( pos_cad = pos_col+1; pos_cad < tamano+pos_col +1; pos_cad++ ){if ( puntero_char[pos_cad]==SEPARADOR) salto++;if (salto==0)

{caracter = filtrar_char ( puntero_char[pos_cad] );printf ("%c",caracter);}

else printf (" ");}

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

void vaciar_estructura ( void *punt_sqlda ){int pos_k, pos_j;int limite_k = ((SQLDA *) punt_sqlda ) ->F;int limite_j;

for ( pos_k = 0; pos_k < limite_k ; pos_k++ ){limite_j = ((SQLDA *) punt_sqlda ) ->L[ pos_k ];

for ( pos_j = 0; pos_j < limite_j ; pos_j++)(char ) (((SQLDA *) punt_sqlda )->V[pos_k])[pos_j] = FIN_LINEA;

}}

Page 241: Orastat line command

/* ----****----****----****----****----****----**** ----****----****----****----**** */

void vaciar_cadena (void *punt_cadena, int largo){int pos;

for (pos = 0; pos < largo; pos ++)((char *) punt_cadena ) [pos] = FIN_LINEA;

}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

int version_oracle (){char Version[10];int conta=0;int pos=0;int caracter=0;int nro_puntos=0;

EXEC SQL BEGIN DECLARE SECTION;VARCHAR version [256];

EXEC SQL END DECLARE SECTION;

vaciar_cadena (version.arr,MAX_VERSION_LEN);for ( ; ; )

{EXEC SQL WHENEVER NOT FOUND DO break;EXEC SQL SELECT ltrim(lpad(banner,70))

INTO :versionFROM V$VERSIONWHERE banner like '%Oracle%';

break; /* SOLO ME INTERESA UN REGISTRO */}

for ( pos =0; pos < version.len; pos ++){caracter = version.arr[pos];

Page 242: Orastat line command

Version[conta]=FIN_LINEA;if ( nro_puntos < 3 )

{switch (caracter)

{case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:

Version[conta]=caracter;conta++;Version[conta]=FIN_LINEA;break;

case 46:/* Version[conta]=caracter;conta++; */nro_puntos++;Version[conta]=FIN_LINEA;break;

default:conta=0;

}}

}return (atoi (Version));

}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

int db_block_size (){int block_size=0;

Page 243: Orastat line command

EXEC SQL BEGIN DECLARE SECTION;VARCHAR data_block_size [20];

EXEC SQL END DECLARE SECTION;

vaciar_cadena (data_block_size.arr,20);for ( ; ; )

{EXEC SQL WHENEVER NOT FOUND DO break;EXEC SQL SELECT value

INTO :data_block_sizeFROM V$PARAMETERWHERE NAME IN ('db_block_size');

break; /* SOLO ME INTERESA UN REGISTRO */}

block_size = atoi (data_block_size.arr);return (block_size);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *db_session_sid (void *punt_kaddr){static char dato_1[MAX_LEN_VARCHAR];

EXEC SQL BEGIN DECLARE SECTION;VARCHAR sid_ses[128];char kaddr[8];

EXEC SQL END DECLARE SECTION;

vaciar_cadena (dato_1,MAX_LEN_VARCHAR);strcpy (kaddr, (char *) punt_kaddr);for ( ; ; )

{EXEC SQL WHENEVER NOT FOUND DO break;EXEC SQL SELECT ltrim(owner)||'.'||ltrim(object_nam e)

INTO :sid_sesFROM V$SESSIONWHERE LOCKWAIT = :kaddr;

Page 244: Orastat line command

break; /* SOLO ME INTERESA UN REGISTRO */}

/* printf ("Sid Ses [%s] \n",sid_ses.arr); */strcpy (dato_1,sid_ses.arr);return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *db_object_owner_name (long objeto_id){int block_size=0;static char dato_1[MAX_LEN_VARCHAR];

EXEC SQL BEGIN DECLARE SECTION;VARCHAR objeto_owner_name [128];long numero;

EXEC SQL END DECLARE SECTION;

numero = objeto_id;vaciar_cadena (dato_1,MAX_LEN_VARCHAR);for ( ; ; )

{EXEC SQL WHENEVER NOT FOUND DO break;EXEC SQL SELECT ltrim(owner)||'.'||ltrim(object_nam e)

INTO :objeto_owner_nameFROM V$ALL_OBJECTSWHERE OBJECT_ID= :numero;

break; /* SOLO ME INTERESA UN REGISTRO */}

/* printf ("Objeto_owner_name [%s] \n",objeto_owner_ name.arr); */strcpy (dato_1,objeto_owner_name.arr);return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

Page 245: Orastat line command

char *db_object_type (long objeto_id){int block_size=0;static char dato_1[MAX_LEN_VARCHAR];

EXEC SQL BEGIN DECLARE SECTION;VARCHAR tipo_objeto [128];long numero;

EXEC SQL END DECLARE SECTION;

numero = objeto_id;vaciar_cadena (tipo_objeto.arr,128);vaciar_cadena (dato_1,MAX_LEN_VARCHAR);for ( ; ; )

{EXEC SQL WHENEVER NOT FOUND DO break;EXEC SQL SELECT ltrim(object_type)

INTO :tipo_objetoFROM V$ALL_OBJECTSWHERE OBJECT_ID= :numero;

break; /* SOLO ME INTERESA UN REGISTRO */}

strcpy (dato_1,tipo_objeto.arr);return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *convert_ss_to_hh_mm_ss (char *punt_cadena ){static char dato_1[MAX_LEN_VARCHAR];

int hora,minuto,segundo;float numero= (float )atoi (punt_cadena);

vaciar_cadena (dato_1,MAX_LEN_VARCHAR);

Page 246: Orastat line command

hora = (int )(numero/60/60);minuto = (int ) ((numero/60/60 - (int )(numero/60/60 ))*60);segundo = (int ) ((numero/60 - (int )(numero/60))*6 0);

sprintf (dato_1,"%2d:%2d:%2d\n\0",hora,minuto,segun do);return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *funcion_columna (int nro_bytes, void *punt_ca dena, int nro_funcion){static char dato_1 [1024];

vaciar_cadena (dato_1,1024);switch (nro_funcion)

{case FUNC_DB_BLOCK_SIZE:

/* Calculo DB_BLOCK_SIZE, multiplico por la COLUMNA y devuelvo el RESULTADO *//* ------------------------------------------------ ------------------------ */itoa ((atoi ( (char *) punt_cadena ) * db_block_siz e() ) / 1000,dato_1,10);break;

case FUNC_COMMAND_SQL:/* Decodifico el nro de la Columna y lo relaciono c on el nombre del COMANDO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_command_oracle ( atoi ( (ch ar *) punt_cadena) ) );break;

case FUNC_LOCK_MODE:/* Decodifico el nro de la Columna y lo relaciono c on el tipo de LOCKEO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_lock_mode ( atoi ( (char *) punt_cadena) ) );break;

case FUNC_LOCK_NAME_MODE:/* Decodifico el nro de la Columna y lo relaciono c on el nombre de LOCKEO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_name_lock ( (char *) punt_c adena) );break;

case FUNC_DB_BLOCK_SIZE0:

Page 247: Orastat line command

/* Calculo DB_BLOCK_SIZE, multiplico por la COLUMNA y devuelvo el RESULTADO *//* ------------------------------------------------ ------------------------ */itoa ((atoi ( (char *) punt_cadena ) * db_block_siz e() ) / 1024,dato_1,10);break;

case FUNC_DB_OBJECT_TYPE:/* Busco el OBJECT_TYPE dentro de la tabla ALL_OBJE CTS *//* ------------------------------------------------ ------------------------ */strcpy (dato_1,db_object_type ( atoi ( (char *) pun t_cadena ) ) );break;

case FUNC_DB_OBJECT_OWNER_NAME:/* Busco el OBJECT_OWNER_NAME dentro de la tabla AL L_OBJECTS *//* ------------------------------------------------ ------------------------ */

/* printf ("parametro [%s] \n",(char *) punt_cadena) ; */strcpy (dato_1,db_object_owner_name ( atoi ( (char *) punt_cadena ) ) );

/* printf ("[%s] \n",dato_1); */break;

case FUNC_DB_SESSION_SID:/* Busco el OBJECT_OWNER_NAME dentro de la tabla AL L_OBJECTS *//* ------------------------------------------------ ------------------------ */strcpy (dato_1,db_session_sid ((char *) punt_cadena ));

/* printf ("[%s] \n",dato_1); */break;

case FUNC_CONVERT_HH_MM_SS:/* Busco el OBJECT_OWNER_NAME dentro de la tabla AL L_OBJECTS *//* ------------------------------------------------ ------------------------ */strcpy (dato_1,convert_ss_to_hh_mm_ss ((char *) pun t_cadena ));

/* printf ("[%s] \n",dato_1); */break;

default: break;

}/* printf ("[%s] \n",dato_1); */

return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_columna_funcion ( void *punt_cadena, int n ro_columna, int *nro_funcion )

Page 248: Orastat line command

{char procesar[10];char col_char[10];char func_char[10];

int pos_col = 0;int flag_procesar = 0;int caracter = 0;int delimitador = 0;int contador = 0;int nro_col = 0;int nro_func = 0;

for ( pos_col = 1; pos_col < 3; pos_col ++){procesar [pos_col-1] = ( (char *) punt_cadena)[pos_ col];procesar [pos_col] = FIN_LINEA;}

if (strncmp (procesar,"SI",2) == 0 )flag_procesar = SI_PROCESAR;

if (strncmp (procesar,"NO",2) == 0 ){flag_procesar = NO_PROCESAR;return (NO_PROCESAR);}

vaciar_cadena (col_char,10);vaciar_cadena (func_char,10);for ( pos_col = 3; pos_col < (int ) (strlen ( (char *) punt_cadena )); pos_col ++ )

{caracter = ( (char *) punt_cadena )[pos_col];

/* printf (" ______> CHAR={%c} POS_COL=[%d] CON TADOR=[%d] LIMITADOR=[%d]\n",caracter,pos_col,conta dor,delimitador); */if ( caracter == SEPARADOR )

if ( delimitador == 0 ) delimitador++;

elsedelimitador--;

if ( ( delimitador == 1 ) && ( caracter != SEPARADO R ) ){if ( contador < 2 )

Page 249: Orastat line command

{col_char[contador] = caracter;col_char[contador+1] = FIN_LINEA;}

else if (contador >=2 ){func_char [contador-2] = caracter;func_char [contador-2+1]= FIN_LINEA;}

/* printf (" ______________>>>>>> COL_CHAR [%s] F UNC_CHAR [%s] NRO_COLUMNA [%d] \n",col_char,func_ch ar,nro_columna); */contador++;if ( contador == 4 )

{nro_col = atoi (col_char);nro_func = atoi (func_char);contador=0;vaciar_cadena (col_char,10);vaciar_cadena (func_char,10);if ( nro_col == nro_columna )

{*nro_funcion = nro_func;return (SI_PROCESAR);}

}}

}return (NO_PROCESAR);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *separar_dato (void *punt_cad, int opcion ){static char cadena[MAX_LEN_CONNECT];int posicion=0;int pos_arroba=0;int pos_slash=0;int largocad=0;

Page 250: Orastat line command

int caracter=0;int contador=0;

largocad=(int )strlen ((char *) punt_cad);vaciar_cadena (cadena,MAX_LEN_CONNECT);

for ( posicion=0; posicion < largocad; posicion++){caracter = ((char *) punt_cad )[posicion];if ( caracter == SLASH )

pos_slash = posicion;else if (caracter == ARROBA)

pos_arroba = posicion;}

switch (opcion ){case USERNAME:

for (posicion=0; posicion < pos_slash; posicion++){caracter = ((char *) punt_cad )[posicion];cadena[contador]=caracter;contador++;}

break;case PASSWORD:

for (posicion=pos_slash+1; posicion < pos_arroba; p osicion++){caracter = ((char *) punt_cad )[posicion];cadena[contador]=caracter;contador++;}

break;case CONEXION:

for (posicion=pos_arroba+1; posicion < largocad; po sicion++){caracter = ((char *) punt_cad )[posicion];cadena[contador]=caracter;contador++;}

break;

Page 251: Orastat line command

}cadena[contador]=FIN_LINEA;return (cadena);}

--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: orasta370.c ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***

/* Result Sets Interface */#ifndef SQL_CRSR# define SQL_CRSR struct sql_cursor { unsigned int curocn; void *ptr1;

Page 252: Orastat line command

void *ptr2; unsigned long magic; }; typedef struct sql_cursor sql_cursor; typedef struct sql_cursor SQL_CURSOR;#endif /* SQL_CRSR */

/* Thread Safety */typedef void * sql_context;typedef void * SQL_CONTEXT;

/* Object support */struct sqltvn{ unsigned char *tvnvsn; unsigned short tvnvsnl; unsigned char *tvnnm; unsigned short tvnnml; unsigned char *tvnsnm; unsigned short tvnsnml;};typedef struct sqltvn sqltvn;

struct sqladts{ unsigned int adtvsn; unsigned short adtmode; unsigned short adtnum; sqltvn adttvn[1]; };typedef struct sqladts sqladts;

static struct sqladts sqladt = { 1,0,0,};

/* Binding to PL/SQL Records */struct sqltdss{ unsigned int tdsvsn;

Page 253: Orastat line command

unsigned short tdsnum; unsigned char *tdsval[1]; };typedef struct sqltdss sqltdss;static struct sqltdss sqltds ={ 1, 0,};

/* File name & Package Name */struct sqlcxp{ unsigned short fillen; char filnam[13];};static const struct sqlcxp sqlfpn ={ 12, "orasta370.pc"};

static unsigned long sqlctx = 318507;

static struct sqlexd { unsigned int sqlvsn; unsigned int arrsiz; unsigned int iters; unsigned int offset; unsigned short selerr; unsigned short sqlety; unsigned int occurs; const short *cud; unsigned char *sqlest; const char *stmt; sqladts *sqladtp; sqltdss *sqltdsp; void **sqphsv;

Page 254: Orastat line command

unsigned int *sqphsl; int *sqphss; void **sqpind; int *sqpins; unsigned int *sqparm; unsigned int **sqparc; unsigned short *sqpadto; unsigned short *sqptdso; void *sqhstv[4]; unsigned int sqhstl[4]; int sqhsts[4]; void *sqindv[4]; int sqinds[4]; unsigned int sqharm[4]; unsigned int *sqharc[4]; unsigned short sqadto[4]; unsigned short sqtdso[4];} sqlstm = {10,4};

/* SQLLIB Prototypes */extern void sqlcxt (void **, unsigned long *, struct sqlexd *, const struct s qlcxp *);extern void sqlcx2t(void **, unsigned long *, struct sqlexd *, const struct s qlcxp *);extern void sqlbuft(void **, char *);extern void sqlgs2t(void **, char *);extern void sqlorat(void **, unsigned long *, void *);

/* Forms Interface */static const int IAPSUCC = 0;static const int IAPFAIL = 1403;static const int IAPFTL = 535;extern void sqliem(char *, int *);

typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;typedef struct { unsigned short len; unsigned char arr[1]; } varchar;

/* cud (compilation unit data) array */static const short sqlcud0[] ={10,4242,0,0,0,

Page 255: Orastat line command

5,0,0,1,0,0,273,111,0,0,1,1,0,1,0,1,5,0,0,24,0,0,1,0,0,267,121,0,0,1,1,0,1,0,1,32,0,0,43,0,0,1,0,0,271,161,0,0,0,0,0,1,0,58,0,0,2,0,0,286,162,0,0,0,0,0,1,0,73,0,0,3,0,0,283,183,0,0,4,4,0,1,0,1,9,0,0,1,10,0,0 ,1,10,0,0,1,10,0,0,104,0,0,1,0,0,275,230,0,0,1,1,0,1,0,3,32,0,0,123,0,0,1,0,0,276,271,0,0,1,1,0,1,0,3,32,0,0,142,0,0,1,0,0,270,312,0,0,1,0,0,1,0,2,32,0,0,161,0,0,4,0,0,287,334,0,0,0,0,0,1,0,};

#line 1 "orasta370.pc"/* ************************************************ ************** */

#include <oraca.h>#include <sqlca.h>

#include <stdio.h>#include <stdlib.h>

#include <string.h>#include <setjmp.h>

#define MAX_ITEMS 512#define MAX_VNAME_LEN 512#define MAX_INAME_LEN 512#define MAX_BUFFER 512#define MAX_LINE 512#define MAX_STMT 16384#define MAX_BIND_VARIABLE 512#define MAX_VAR_SIZE 512

#define MAX_LEN_ARG 512#define MAX_LEN_CONNECT 512

#define SEPARADOR 124#define FIN_LINEA 0

#define VERSION_ORACLE_734 734

Page 256: Orastat line command

#define VERSION_ORACLE_816 816#define VERSION_ORACLE_817 817#define VERSION_ORACLE_901 901#define VERSION_ORACLE_902 902#define VERSION_ORACLE_910 910#define VERSION_ORACLE_920 920#define VERSION_ORACLE_UNK 000

#ifndef NULL#define NULL 0#endif

char *dml_commands[] = {"SELECT", "select", "INSERT ", "insert","UPDATE", "update", "DELETE", "delete"} ;char dyn_size [MAX_VAR_SIZE];char dyn_title [MAX_VAR_SIZE];char dyn_column [MAX_VAR_SIZE];

/* EXEC SQL BEGIN DECLARE SECTION; */ #line 45 "orasta370.pc"

char dyn_sts[16384];/* EXEC SQL VAR dyn_sts IS STRING(16384); */

#line 47 "orasta370.pc"

/* EXEC SQL END DECLARE SECTION; */ #line 48 "orasta370.pc"

/* EXEC SQL INCLUDE sqlca; */ #line 1 "e:\\Oracle\\Ora81\\precomp\\public\\sqlca. h"/* * $Header: sqlca.h,v 1.3 1994/12/12 19:27:27 jbasu Exp $ sqlca.h */

/* Copyright (c) 1985,1986, 1998 by Oracle Corporat ion. */ /*NAME SQLCA : SQL Communications Area.

Page 257: Orastat line command

FUNCTION Contains no code. Oracle fills in the SQLCA with status info during the execution of a SQL stmt.NOTES ************************************************* ************* *** *** *** This file is SOSD. Porters must change the d ata types *** *** appropriately on their platform. See notes/p cport.doc *** *** for more information. *** *** *** ************************************************* *************

If the symbol SQLCA_STORAGE_CLASS is defined, the n the SQLCA will be defined to have this storage class. For e xample: #define SQLCA_STORAGE_CLASS extern will define the SQLCA as an extern. If the symbol SQLCA_INIT is defined, then the SQL CA will be statically initialized. Although this is not nece ssary in order to use the SQLCA, it is a good pgming practice no t to have unitialized variables. However, some C compilers/ OS's don't allow automatic variables to be init'd in this ma nner. Therefore, if you are INCLUDE'ing the SQLCA in a place where it would be an automatic AND your C compiler/OS doesn't allow this style of initialization, then SQLCA_INIT should be left undefined -- all others can define SQLCA_INIT if they wish.

If the symbol SQLCA_NONE is defined, then the SQL CA variable will not be defined at all. The symbol SQLCA_NONE sho uld not be defined in source modules that have embedded SQL. Howeve r, source modules that have no embedded SQL, but need to manipulate a sqlca struct passed in as a parameter, can set the SQLCA_NONE symbol to avoid creation of an extraneous sqlca variable. MODIFIED lvbcheng 07/31/98 - long to int jbasu 12/12/94 - Bug 217878: note this is an SOSD file losborne 08/11/92 - No sqlca var if SQLCA_NO NE macro set

Page 258: Orastat line command

Clare 12/06/84 - Ch SQLCA to not be an exter n. Clare 10/21/85 - Add initialization. Bradbury 01/05/86 - Only initialize when SQLCA_ INIT set Clare 06/12/86 - Add SQLCA_STORAGE_CLASS opt ion.*/ #ifndef SQLCA#define SQLCA 1 struct sqlca { /* ub1 */ char sqlcaid[8]; /* b4 */ int sqlabc; /* b4 */ int sqlcode; struct { /* ub2 */ unsigned short sqlerrml; /* ub1 */ char sqlerrmc[70]; } sqlerrm; /* ub1 */ char sqlerrp[8]; /* b4 */ int sqlerrd[6]; /* ub1 */ char sqlwarn[8]; /* ub1 */ char sqlext[8]; };

#ifndef SQLCA_NONE #ifdef SQLCA_STORAGE_CLASSSQLCA_STORAGE_CLASS struct sqlca sqlca#else struct sqlca sqlca#endif #ifdef SQLCA_INIT = { {'S', 'Q', 'L', 'C', 'A', ' ', ' ', ' '}, sizeof(struct sqlca), 0, { 0, {0}}, {'N', 'O', 'T', ' ', 'S', 'E', 'T', ' '}, {0, 0, 0, 0, 0, 0},

Page 259: Orastat line command

{0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0} }#endif ;#endif #endif /* end SQLCA *//* EXEC SQL INCLUDE sqlda; */ #line 1 "e:\\Oracle\\Ora81\\precomp\\public\\sqlda. h"/* * $Header: sqlda.h 31-jul-99.19:34:41 apopat Exp $ sqlda.h */

/************************************************** ************** The SQLDA descriptor definition **-------------------------------------------------- ------------** VAX/3B Version ** ** Copyright (c) 1987, 1997, 1998, 1999 by Oracle C orporation **************************************************** ************/

/* NOTES ************************************************* ************* *** *** *** This file is SOSD. Porters must change the d ata types *** *** appropriately on their platform. See notes/p cport.doc *** *** for more information. *** *** *** ************************************************* **************/

/* MODIFIED apopat 07/31/99 - [707588] TAB to blanks f or OCCS lvbcheng 10/27/98 - change long to int for s qlda lvbcheng 08/15/97 - Move sqlda protos to sql cpr.h

Page 260: Orastat line command

lvbcheng 06/25/97 - Move sqlda protos to thi s file jbasu 01/29/95 - correct typo jbasu 01/27/95 - correct comment - ub2->s b2 jbasu 12/12/94 - Bug 217878: note this is an SOSD file Morse 12/01/87 - undef L and S for v6 incl ude files Richey 07/13/87 - change int defs to long Clare 09/13/84 - Port: Ch types to match S QLLIB structs Clare 10/02/86 - Add ifndef SQLDA*/

#ifndef SQLDA_#define SQLDA_ 1 #ifdef T# undef T#endif#ifdef F# undef F#endif

#ifdef S# undef S#endif#ifdef L# undef L#endif struct SQLDA { /* ub4 */ int N; /* Descriptor size in number of entries */ /* text** */ char **V; /* Ptr to Arr of addre sses of main variables */ /* ub4* */ int *L; /* Ptr to Arr of lengt hs of buffers */ /* sb2* */ short *T; /* Ptr to Arr of types of buffers */ /* sb2** */ short **I; /* Ptr to Arr of addre sses of indicator vars */ /* sb4 */ int F; /* Number of variables found by DESCRIBE */ /* text** */ char **S; /* Ptr to Arr of varia ble name pointers */ /* ub2* */ short *M; /* Ptr to Arr of max l engths of var. names */ /* ub2* */ short *C; /* Ptr to Arr of curre nt lengths of var. names */ /* text** */ char **X; /* Ptr to Arr of ind. var. name pointers */ /* ub2* */ short *Y; /* Ptr to Arr of max l engths of ind. var. names */ /* ub2* */ short *Z; /* Ptr to Arr of cur l engths of ind. var. names */

Page 261: Orastat line command

}; typedef struct SQLDA SQLDA; #endif

/* ----------------- *//* defines for sqlda *//* ----------------- */

#define SQLSQLDAAlloc(arg1, arg2, arg3, arg4) sqlal dt(arg1, arg2, arg3, arg4)

#define SQLSQLDAFree(arg1, arg2) sqlclut(arg1, arg2 )

#line 52 "orasta370.pc"

SQLDA *bind_dp;SQLDA *select_dp;

extern SQLDA *sqlald();extern void sqlnul();jmp_buf jmp_continue;int parse_flag = 0;

int oracle_connect();int alloc_descriptors();int set_bind_variables();int process_select_list();int liberar_memoria();int filtrar_char ();int col_size ();int cargar_sentencia ();int procesar_cadena ();int procesar_encabe ();int filtrar_char ();char *pasar_amayus ();sql_error();

Page 262: Orastat line command

void vaciar_estructura ();

main( int argc , char *argv[]){int i=0;

int version = VERSION_ORACLE_734;

int opcion_nro=0;

char opcion_uno [MAX_LEN_ARG];char opcion_dos [MAX_LEN_ARG];char opcion_tres [MAX_LEN_ARG];

char datos_conexion [MAX_LEN_CONNECT];

opcion_uno[0]=FIN_LINEA;opcion_dos[0]=FIN_LINEA;opcion_tres[0]=FIN_LINEA;datos_conexion[0]=FIN_LINEA;

strcpy (datos_conexion,argv[1]);/* printf ("Nro de argumentos [%d] \n",argc); */

if (argc >= 3 ) opcion_nro=atoi(argv[2]);if (argc >= 4 ) strcpy (opcion_uno,pasar_amayus(argv [3]));if (argc >= 5 ) strcpy (opcion_dos,pasar_amayus(argv [4]));if (argc >= 6 ) strcpy (opcion_tres,argv[5]);if (oracle_connect(datos_conexion,version) != 0) ex it(1);if (alloc_descriptors(MAX_ITEMS,MAX_VNAME_LEN, MAX_ INAME_LEN) != 0) exit(1);i = setjmp(jmp_continue); cargar_sentencia (version, opcion_nro, opcion_uno, opcion_dos, opcion_tres);

/* printf ("Inicializando la funcion de error ...\n" ); *//* EXEC SQL WHENEVER SQLERROR DO sql_error(); */

#line 107 "orasta370.pc"

parse_flag = 1;

/* printf ("Preparando la sentencia ...\n"); *//* EXEC SQL PREPARE S FROM :dyn_sts; */

Page 263: Orastat line command

#line 111 "orasta370.pc"

{#line 111 "orasta370.pc" struct sqlexd sqlstm;#line 111 "orasta370.pc" sqlorat((void **)0, &sqlctx, &oraca);#line 111 "orasta370.pc" sqlstm.sqlvsn = 10;#line 111 "orasta370.pc" sqlstm.arrsiz = 1;#line 111 "orasta370.pc" sqlstm.sqladtp = &sqladt;#line 111 "orasta370.pc" sqlstm.sqltdsp = &sqltds;#line 111 "orasta370.pc" sqlstm.stmt = "";#line 111 "orasta370.pc" sqlstm.iters = (unsigned int )1;#line 111 "orasta370.pc" sqlstm.offset = (unsigned int )5;#line 111 "orasta370.pc" sqlstm.cud = sqlcud0;#line 111 "orasta370.pc" sqlstm.sqlest = (unsigned char *)&sqlca;#line 111 "orasta370.pc" sqlstm.sqlety = (unsigned short)256;#line 111 "orasta370.pc" sqlstm.occurs = (unsigned int )0;#line 111 "orasta370.pc" sqlstm.sqhstv[0] = ( void *)dyn_sts;#line 111 "orasta370.pc" sqlstm.sqhstl[0] = (unsigned int )16384;#line 111 "orasta370.pc" sqlstm.sqhsts[0] = ( int )0;#line 111 "orasta370.pc" sqlstm.sqindv[0] = ( void *)0;#line 111 "orasta370.pc" sqlstm.sqinds[0] = ( int )0;#line 111 "orasta370.pc"

Page 264: Orastat line command

sqlstm.sqharm[0] = (unsigned int )0;#line 111 "orasta370.pc" sqlstm.sqadto[0] = (unsigned short )0;#line 111 "orasta370.pc" sqlstm.sqtdso[0] = (unsigned short )0;#line 111 "orasta370.pc" sqlstm.sqphsv = sqlstm.sqhstv;#line 111 "orasta370.pc" sqlstm.sqphsl = sqlstm.sqhstl;#line 111 "orasta370.pc" sqlstm.sqphss = sqlstm.sqhsts;#line 111 "orasta370.pc" sqlstm.sqpind = sqlstm.sqindv;#line 111 "orasta370.pc" sqlstm.sqpins = sqlstm.sqinds;#line 111 "orasta370.pc" sqlstm.sqparm = sqlstm.sqharm;#line 111 "orasta370.pc" sqlstm.sqparc = sqlstm.sqharc;#line 111 "orasta370.pc" sqlstm.sqpadto = sqlstm.sqadto;#line 111 "orasta370.pc" sqlstm.sqptdso = sqlstm.sqtdso;#line 111 "orasta370.pc" sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);#line 111 "orasta370.pc" if (sqlca.sqlcode < 0) sql_error();#line 111 "orasta370.pc"}

#line 111 "orasta370.pc"

parse_flag = 0;

/* printf ("Declarando el cursor ...\n"); *//* EXEC SQL DECLARE C CURSOR FOR S; */

#line 115 "orasta370.pc"

/* printf ("Binding Variables ...\n"); */

Page 265: Orastat line command

set_bind_variables();

/* printf ("Open a cursor descriptor ...\n"); *//* EXEC SQL OPEN C USING DESCRIPTOR bind_dp; */

#line 121 "orasta370.pc"

{#line 121 "orasta370.pc" struct sqlexd sqlstm;#line 121 "orasta370.pc" sqlorat((void **)0, &sqlctx, &oraca);#line 121 "orasta370.pc" sqlstm.sqlvsn = 10;#line 121 "orasta370.pc" sqlstm.arrsiz = 1;#line 121 "orasta370.pc" sqlstm.sqladtp = &sqladt;#line 121 "orasta370.pc" sqlstm.sqltdsp = &sqltds;#line 121 "orasta370.pc" sqlstm.stmt = "";#line 121 "orasta370.pc" sqlstm.iters = (unsigned int )1;#line 121 "orasta370.pc" sqlstm.offset = (unsigned int )24;#line 121 "orasta370.pc" sqlstm.selerr = (unsigned short)1;#line 121 "orasta370.pc" sqlstm.cud = sqlcud0;#line 121 "orasta370.pc" sqlstm.sqlest = (unsigned char *)&sqlca;#line 121 "orasta370.pc" sqlstm.sqlety = (unsigned short)256;#line 121 "orasta370.pc" sqlstm.occurs = (unsigned int )0;#line 121 "orasta370.pc" sqlstm.sqhstv[0] = ( void *)bind_dp;#line 121 "orasta370.pc" sqlstm.sqhstl[0] = (unsigned int )0;#line 121 "orasta370.pc"

Page 266: Orastat line command

sqlstm.sqhsts[0] = ( int )0;#line 121 "orasta370.pc" sqlstm.sqindv[0] = ( void *)0;#line 121 "orasta370.pc" sqlstm.sqinds[0] = ( int )0;#line 121 "orasta370.pc" sqlstm.sqharm[0] = (unsigned int )0;#line 121 "orasta370.pc" sqlstm.sqadto[0] = (unsigned short )0;#line 121 "orasta370.pc" sqlstm.sqtdso[0] = (unsigned short )0;#line 121 "orasta370.pc" sqlstm.sqphsv = sqlstm.sqhstv;#line 121 "orasta370.pc" sqlstm.sqphsl = sqlstm.sqhstl;#line 121 "orasta370.pc" sqlstm.sqphss = sqlstm.sqhsts;#line 121 "orasta370.pc" sqlstm.sqpind = sqlstm.sqindv;#line 121 "orasta370.pc" sqlstm.sqpins = sqlstm.sqinds;#line 121 "orasta370.pc" sqlstm.sqparm = sqlstm.sqharm;#line 121 "orasta370.pc" sqlstm.sqparc = sqlstm.sqharc;#line 121 "orasta370.pc" sqlstm.sqpadto = sqlstm.sqadto;#line 121 "orasta370.pc" sqlstm.sqptdso = sqlstm.sqtdso;#line 121 "orasta370.pc" sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);#line 121 "orasta370.pc" if (sqlca.sqlcode < 0) sql_error();#line 121 "orasta370.pc"}

#line 121 "orasta370.pc"

/* printf ("Procesando el select list ...\n"); */

Page 267: Orastat line command

process_select_list();

/* printf ("Liberando memoria ...\n"); */liberar_memoria();return 0;

}

char *pasar_amayus (char *cadena ){int pos=0;

printf ("Iniciando conversion \n");for (pos =0; pos < (int ) strlen (cadena); pos ++)

cadena[pos]=toupper(cadena[pos]);

return cadena;}

liberar_memoria (){int i;

for (i = 0; i < MAX_ITEMS; i++){if (bind_dp->V[i] != (char *) 0)free(bind_dp->V[i]);free(bind_dp->I[i]); if (select_dp->V[i] != (char *) 0)

free(select_dp->V[i]);free(select_dp->I[i]); }

/* OJO CON ESTO *//* sqlclu(bind_dp); *//* sqlclu(select_dp); */

/* EXEC SQL WHENEVER SQLERROR CONTINUE; */ #line 160 "orasta370.pc"

/* EXEC SQL CLOSE C; */

Page 268: Orastat line command

#line 161 "orasta370.pc"

{#line 161 "orasta370.pc" struct sqlexd sqlstm;#line 161 "orasta370.pc" sqlorat((void **)0, &sqlctx, &oraca);#line 161 "orasta370.pc" sqlstm.sqlvsn = 10;#line 161 "orasta370.pc" sqlstm.arrsiz = 1;#line 161 "orasta370.pc" sqlstm.sqladtp = &sqladt;#line 161 "orasta370.pc" sqlstm.sqltdsp = &sqltds;#line 161 "orasta370.pc" sqlstm.iters = (unsigned int )1;#line 161 "orasta370.pc" sqlstm.offset = (unsigned int )43;#line 161 "orasta370.pc" sqlstm.cud = sqlcud0;#line 161 "orasta370.pc" sqlstm.sqlest = (unsigned char *)&sqlca;#line 161 "orasta370.pc" sqlstm.sqlety = (unsigned short)256;#line 161 "orasta370.pc" sqlstm.occurs = (unsigned int )0;#line 161 "orasta370.pc" sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);#line 161 "orasta370.pc"}

#line 161 "orasta370.pc"

/* EXEC SQL COMMIT WORK RELEASE; */ #line 162 "orasta370.pc"

{#line 162 "orasta370.pc" struct sqlexd sqlstm;

Page 269: Orastat line command

#line 162 "orasta370.pc" sqlorat((void **)0, &sqlctx, &oraca);#line 162 "orasta370.pc" sqlstm.sqlvsn = 10;#line 162 "orasta370.pc" sqlstm.arrsiz = 1;#line 162 "orasta370.pc" sqlstm.sqladtp = &sqladt;#line 162 "orasta370.pc" sqlstm.sqltdsp = &sqltds;#line 162 "orasta370.pc" sqlstm.iters = (unsigned int )1;#line 162 "orasta370.pc" sqlstm.offset = (unsigned int )58;#line 162 "orasta370.pc" sqlstm.cud = sqlcud0;#line 162 "orasta370.pc" sqlstm.sqlest = (unsigned char *)&sqlca;#line 162 "orasta370.pc" sqlstm.sqlety = (unsigned short)256;#line 162 "orasta370.pc" sqlstm.occurs = (unsigned int )0;#line 162 "orasta370.pc" sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);#line 162 "orasta370.pc"}

#line 162 "orasta370.pc"

/* EXEC SQL WHENEVER SQLERROR DO sql_error(); */ #line 163 "orasta370.pc"

exit(1);}

oracle_connect (char *datos_conexion, int version){/* EXEC SQL BEGIN DECLARE SECTION; */

#line 170 "orasta370.pc"

Page 270: Orastat line command

/* VARCHAR connectstring[256]; */ struct { unsigned short len; unsigned char arr[256] ; } connectstring;#line 171 "orasta370.pc"

/* EXEC SQL END DECLARE SECTION; */ #line 172 "orasta370.pc"

/* printf ("Datos de conexion %s \n",datos_conexion) ; */strcpy ((char *) connectstring.arr,datos_conexion);connectstring.arr[strlen((char *) connectstring.arr )] = FIN_LINEA;connectstring.len = (unsigned short )strlen((char * ) connectstring.arr);

/* EXEC SQL WHENEVER SQLERROR GOTO connect_error; * / #line 179 "orasta370.pc"

printf ("\nConnecting .....\n");

/* EXEC SQL CONNECT :connectstring; */ #line 183 "orasta370.pc"

{#line 183 "orasta370.pc" struct sqlexd sqlstm;#line 183 "orasta370.pc" sqlorat((void **)0, &sqlctx, &oraca);#line 183 "orasta370.pc" sqlstm.sqlvsn = 10;#line 183 "orasta370.pc" sqlstm.arrsiz = 4;#line 183 "orasta370.pc" sqlstm.sqladtp = &sqladt;#line 183 "orasta370.pc" sqlstm.sqltdsp = &sqltds;#line 183 "orasta370.pc" sqlstm.iters = (unsigned int )10;#line 183 "orasta370.pc" sqlstm.offset = (unsigned int )73;

Page 271: Orastat line command

#line 183 "orasta370.pc" sqlstm.cud = sqlcud0;#line 183 "orasta370.pc" sqlstm.sqlest = (unsigned char *)&sqlca;#line 183 "orasta370.pc" sqlstm.sqlety = (unsigned short)256;#line 183 "orasta370.pc" sqlstm.occurs = (unsigned int )0;#line 183 "orasta370.pc" sqlstm.sqhstv[0] = ( void *)&connectstrin g;#line 183 "orasta370.pc" sqlstm.sqhstl[0] = (unsigned int )258;#line 183 "orasta370.pc" sqlstm.sqhsts[0] = ( int )258;#line 183 "orasta370.pc" sqlstm.sqindv[0] = ( void *)0;#line 183 "orasta370.pc" sqlstm.sqinds[0] = ( int )0;#line 183 "orasta370.pc" sqlstm.sqharm[0] = (unsigned int )0;#line 183 "orasta370.pc" sqlstm.sqadto[0] = (unsigned short )0;#line 183 "orasta370.pc" sqlstm.sqtdso[0] = (unsigned short )0;#line 183 "orasta370.pc" sqlstm.sqphsv = sqlstm.sqhstv;#line 183 "orasta370.pc" sqlstm.sqphsl = sqlstm.sqhstl;#line 183 "orasta370.pc" sqlstm.sqphss = sqlstm.sqhsts;#line 183 "orasta370.pc" sqlstm.sqpind = sqlstm.sqindv;#line 183 "orasta370.pc" sqlstm.sqpins = sqlstm.sqinds;#line 183 "orasta370.pc" sqlstm.sqparm = sqlstm.sqharm;#line 183 "orasta370.pc" sqlstm.sqparc = sqlstm.sqharc;#line 183 "orasta370.pc" sqlstm.sqpadto = sqlstm.sqadto;

Page 272: Orastat line command

#line 183 "orasta370.pc" sqlstm.sqptdso = sqlstm.sqtdso;#line 183 "orasta370.pc" sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);#line 183 "orasta370.pc" if (sqlca.sqlcode < 0) goto connect_error;#line 183 "orasta370.pc"}

#line 183 "orasta370.pc"

printf("\nConnected to ORACLE [%d] \n",version);return 0;connect_error:

fprintf(stderr,"Cannot connect to ORACLE\n");return -1;

}

alloc_descriptors(size, max_vname_len, max_iname_le n)int size;int max_vname_len;int max_iname_len;

{int i;

if ((bind_dp = sqlald(size, max_vname_len, max_inam e_len)) == (SQLDA *) 0){fprintf(stderr,"Insuficient memory...");return -1; }

if ((select_dp = sqlald (size, max_vname_len, max_i name_len)) == (SQLDA *) 0){fprintf(stderr,"Insuficient memory...");return -1;}

select_dp->N = MAX_ITEMS;for (i = 0; i < MAX_ITEMS; i++)

Page 273: Orastat line command

{bind_dp->I[i] = (short *) malloc(sizeof (short));select_dp->I[i] = (short *) malloc(sizeof(short));bind_dp->V[i] = (char *) malloc(1);select_dp->V[i] = (char *) malloc(1);}

return 0;}

set_bind_variables(){int i, n;

char bind_var [MAX_BIND_VARIABLE];

/* EXEC SQL WHENEVER SQLERROR DO sql_error(); */ #line 228 "orasta370.pc"

bind_dp->N = MAX_ITEMS; /* EXEC SQL DESCRIBE BIND VARIABLES FOR S INTO bind _dp; */

#line 230 "orasta370.pc"

{#line 230 "orasta370.pc" struct sqlexd sqlstm;#line 230 "orasta370.pc" sqlorat((void **)0, &sqlctx, &oraca);#line 230 "orasta370.pc" sqlstm.sqlvsn = 10;#line 230 "orasta370.pc" sqlstm.arrsiz = 4;#line 230 "orasta370.pc" sqlstm.sqladtp = &sqladt;#line 230 "orasta370.pc" sqlstm.sqltdsp = &sqltds;#line 230 "orasta370.pc" sqlstm.iters = (unsigned int )1;#line 230 "orasta370.pc" sqlstm.offset = (unsigned int )104;#line 230 "orasta370.pc"

Page 274: Orastat line command

sqlstm.cud = sqlcud0;#line 230 "orasta370.pc" sqlstm.sqlest = (unsigned char *)&sqlca;#line 230 "orasta370.pc" sqlstm.sqlety = (unsigned short)256;#line 230 "orasta370.pc" sqlstm.occurs = (unsigned int )0;#line 230 "orasta370.pc" sqlstm.sqhstv[0] = ( void *)bind_dp;#line 230 "orasta370.pc" sqlstm.sqhstl[0] = (unsigned int )0;#line 230 "orasta370.pc" sqlstm.sqhsts[0] = ( int )0;#line 230 "orasta370.pc" sqlstm.sqindv[0] = ( void *)0;#line 230 "orasta370.pc" sqlstm.sqinds[0] = ( int )0;#line 230 "orasta370.pc" sqlstm.sqharm[0] = (unsigned int )0;#line 230 "orasta370.pc" sqlstm.sqadto[0] = (unsigned short )0;#line 230 "orasta370.pc" sqlstm.sqtdso[0] = (unsigned short )0;#line 230 "orasta370.pc" sqlstm.sqphsv = sqlstm.sqhstv;#line 230 "orasta370.pc" sqlstm.sqphsl = sqlstm.sqhstl;#line 230 "orasta370.pc" sqlstm.sqphss = sqlstm.sqhsts;#line 230 "orasta370.pc" sqlstm.sqpind = sqlstm.sqindv;#line 230 "orasta370.pc" sqlstm.sqpins = sqlstm.sqinds;#line 230 "orasta370.pc" sqlstm.sqparm = sqlstm.sqharm;#line 230 "orasta370.pc" sqlstm.sqparc = sqlstm.sqharc;#line 230 "orasta370.pc" sqlstm.sqpadto = sqlstm.sqadto;#line 230 "orasta370.pc"

Page 275: Orastat line command

sqlstm.sqptdso = sqlstm.sqtdso;#line 230 "orasta370.pc" sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);#line 230 "orasta370.pc" if (sqlca.sqlcode < 0) sql_error();#line 230 "orasta370.pc"}

#line 230 "orasta370.pc"

if (bind_dp->F < 0){printf ("\nToo many variables to bind...\n", -bind_ dp->F, MAX_ITEMS);return;}

bind_dp->N = bind_dp->F;for (i = 0; i < bind_dp->F; i++)

{printf ("\nEnter value for bind variable %.*s: ",(i nt)bind_dp->C[i], bind_dp->S[i]);fgets (bind_var, (int )sizeof(bind_var), stdin);n = (int )strlen(bind_var) - 1;bind_dp->L[i] = n;bind_dp->V[i] = (char *) realloc(bind_dp->V[i], (bi nd_dp->L[i] + 1));

strncpy(bind_dp->V[i], bind_var, n);

if ((strncmp(bind_dp->V[i], "NULL", 4) == 0) || (st rncmp(bind_dp->V[i], "null", 4) == 0))*bind_dp->I[i] = -1;

else*bind_dp->I[i] = 0;

bind_dp->T[i] = 1;}

return 0;}

process_select_list(){int i, j, k, null_ok, numero;

Page 276: Orastat line command

int nro_bytes=0;

if ((strncmp(dyn_sts, "SELECT", 6) != 0) && (strncm p(dyn_sts, "select", 6) != 0)){select_dp->F = 0;return;}

select_dp->N = MAX_ITEMS;

/* EXEC SQL DESCRIBE SELECT LIST FOR S INTO select_ dp; */ #line 271 "orasta370.pc"

{#line 271 "orasta370.pc" struct sqlexd sqlstm;#line 271 "orasta370.pc" sqlorat((void **)0, &sqlctx, &oraca);#line 271 "orasta370.pc" sqlstm.sqlvsn = 10;#line 271 "orasta370.pc" sqlstm.arrsiz = 4;#line 271 "orasta370.pc" sqlstm.sqladtp = &sqladt;#line 271 "orasta370.pc" sqlstm.sqltdsp = &sqltds;#line 271 "orasta370.pc" sqlstm.iters = (unsigned int )1;#line 271 "orasta370.pc" sqlstm.offset = (unsigned int )123;#line 271 "orasta370.pc" sqlstm.cud = sqlcud0;#line 271 "orasta370.pc" sqlstm.sqlest = (unsigned char *)&sqlca;#line 271 "orasta370.pc" sqlstm.sqlety = (unsigned short)256;#line 271 "orasta370.pc" sqlstm.occurs = (unsigned int )0;#line 271 "orasta370.pc" sqlstm.sqhstv[0] = ( void *)select_dp;

Page 277: Orastat line command

#line 271 "orasta370.pc" sqlstm.sqhstl[0] = (unsigned int )0;#line 271 "orasta370.pc" sqlstm.sqhsts[0] = ( int )0;#line 271 "orasta370.pc" sqlstm.sqindv[0] = ( void *)0;#line 271 "orasta370.pc" sqlstm.sqinds[0] = ( int )0;#line 271 "orasta370.pc" sqlstm.sqharm[0] = (unsigned int )0;#line 271 "orasta370.pc" sqlstm.sqadto[0] = (unsigned short )0;#line 271 "orasta370.pc" sqlstm.sqtdso[0] = (unsigned short )0;#line 271 "orasta370.pc" sqlstm.sqphsv = sqlstm.sqhstv;#line 271 "orasta370.pc" sqlstm.sqphsl = sqlstm.sqhstl;#line 271 "orasta370.pc" sqlstm.sqphss = sqlstm.sqhsts;#line 271 "orasta370.pc" sqlstm.sqpind = sqlstm.sqindv;#line 271 "orasta370.pc" sqlstm.sqpins = sqlstm.sqinds;#line 271 "orasta370.pc" sqlstm.sqparm = sqlstm.sqharm;#line 271 "orasta370.pc" sqlstm.sqparc = sqlstm.sqharc;#line 271 "orasta370.pc" sqlstm.sqpadto = sqlstm.sqadto;#line 271 "orasta370.pc" sqlstm.sqptdso = sqlstm.sqtdso;#line 271 "orasta370.pc" sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);#line 271 "orasta370.pc" if (sqlca.sqlcode < 0) sql_error();#line 271 "orasta370.pc"}

#line 271 "orasta370.pc"

Page 278: Orastat line command

if (select_dp->F < 0){printf ("\nToo many select-list items (%d), maximum is %d\n", -(select_dp->F), MAX_ITEMS);return;}

select_dp->N = select_dp->F;printf ("%s \n",dyn_title);for (i = 0; i < select_dp->F; i++)

{sqlnul ( &(select_dp->T[i]), &(select_dp->T[i]), &n ull_ok);numero=col_size(dyn_size,i);select_dp->L[i]= numero;select_dp->C[i]= numero;select_dp->T[i]=1;}

for (i = 0; i < select_dp->F; i++){nro_bytes = sizeof (select_dp->V[i]);select_dp->V[i] = (char *) realloc(select_dp->V[i], select_dp->L[i]);printf ("["); numero=col_size(dyn_size,i);procesar_encabe (numero,i,dyn_column); printf ("] "); }

printf ("\n");/* EXEC SQL WHENEVER NOT FOUND GOTO end_select_loop ; */

#line 299 "orasta370.pc"

for ( ; ; ){/* LIMPIANDO LA VARIABLE PARA VOLVER A UTILIZARSE * /

/*for (k=0; k < select_dp->F; k++)

for (j=0; j < select_dp->L[k]; j++)(char )(select_dp->V[k])[j]=FIN_LINEA;

*//* LIMPIANDO LA VARIABLE PARA VOLVER A UTILIZARSE * /

Page 279: Orastat line command

/* vaciar_estructura ( select_dp ); */

/* EXEC SQL FETCH C USING DESCRIPTOR select_dp; */ #line 312 "orasta370.pc"

{#line 312 "orasta370.pc" struct sqlexd sqlstm;#line 312 "orasta370.pc" sqlorat((void **)0, &sqlctx, &oraca);#line 312 "orasta370.pc" sqlstm.sqlvsn = 10;#line 312 "orasta370.pc" sqlstm.arrsiz = 4;#line 312 "orasta370.pc" sqlstm.sqladtp = &sqladt;#line 312 "orasta370.pc" sqlstm.sqltdsp = &sqltds;#line 312 "orasta370.pc" sqlstm.iters = (unsigned int )1;#line 312 "orasta370.pc" sqlstm.offset = (unsigned int )142;#line 312 "orasta370.pc" sqlstm.cud = sqlcud0;#line 312 "orasta370.pc" sqlstm.sqlest = (unsigned char *)&sqlca;#line 312 "orasta370.pc" sqlstm.sqlety = (unsigned short)256;#line 312 "orasta370.pc" sqlstm.occurs = (unsigned int )0;#line 312 "orasta370.pc" sqlstm.sqhstv[0] = ( void *)select_dp;#line 312 "orasta370.pc" sqlstm.sqhstl[0] = (unsigned int )0;#line 312 "orasta370.pc" sqlstm.sqhsts[0] = ( int )0;#line 312 "orasta370.pc" sqlstm.sqindv[0] = ( void *)0;#line 312 "orasta370.pc"

Page 280: Orastat line command

sqlstm.sqinds[0] = ( int )0;#line 312 "orasta370.pc" sqlstm.sqharm[0] = (unsigned int )0;#line 312 "orasta370.pc" sqlstm.sqadto[0] = (unsigned short )0;#line 312 "orasta370.pc" sqlstm.sqtdso[0] = (unsigned short )0;#line 312 "orasta370.pc" sqlstm.sqphsv = sqlstm.sqhstv;#line 312 "orasta370.pc" sqlstm.sqphsl = sqlstm.sqhstl;#line 312 "orasta370.pc" sqlstm.sqphss = sqlstm.sqhsts;#line 312 "orasta370.pc" sqlstm.sqpind = sqlstm.sqindv;#line 312 "orasta370.pc" sqlstm.sqpins = sqlstm.sqinds;#line 312 "orasta370.pc" sqlstm.sqparm = sqlstm.sqharm;#line 312 "orasta370.pc" sqlstm.sqparc = sqlstm.sqharc;#line 312 "orasta370.pc" sqlstm.sqpadto = sqlstm.sqadto;#line 312 "orasta370.pc" sqlstm.sqptdso = sqlstm.sqtdso;#line 312 "orasta370.pc" sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);#line 312 "orasta370.pc" if (sqlca.sqlcode == 1403) goto end_select_loop;#line 312 "orasta370.pc" if (sqlca.sqlcode < 0) sql_error();#line 312 "orasta370.pc"}

#line 312 "orasta370.pc"

for (i = 0; i < select_dp->F; i++){printf (" "); numero=col_size(dyn_size,i);

Page 281: Orastat line command

procesar_cadena (numero,(char *)select_dp->V[i]);printf (" "); }

printf ("\n");}

end_select_loop:return;}

sql_error(){/* int i; */

printf ("\n\n%.70s\n",sqlca.sqlerrm.sqlerrmc);if (parse_flag)

printf("\n Error de Oracle... \n",sqlca.sqlerrd[4]) ;/* EXEC SQL WHENEVER SQLERROR CONTINUE; */

#line 333 "orasta370.pc"

/* EXEC SQL ROLLBACK WORK; */ #line 334 "orasta370.pc"

{#line 334 "orasta370.pc" struct sqlexd sqlstm;#line 334 "orasta370.pc" sqlorat((void **)0, &sqlctx, &oraca);#line 334 "orasta370.pc" sqlstm.sqlvsn = 10;#line 334 "orasta370.pc" sqlstm.arrsiz = 4;#line 334 "orasta370.pc" sqlstm.sqladtp = &sqladt;#line 334 "orasta370.pc" sqlstm.sqltdsp = &sqltds;#line 334 "orasta370.pc" sqlstm.iters = (unsigned int )1;#line 334 "orasta370.pc" sqlstm.offset = (unsigned int )161;#line 334 "orasta370.pc"

Page 282: Orastat line command

sqlstm.cud = sqlcud0;#line 334 "orasta370.pc" sqlstm.sqlest = (unsigned char *)&sqlca;#line 334 "orasta370.pc" sqlstm.sqlety = (unsigned short)256;#line 334 "orasta370.pc" sqlstm.occurs = (unsigned int )0;#line 334 "orasta370.pc" sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);#line 334 "orasta370.pc"}

#line 334 "orasta370.pc"

liberar_memoria();}

cargar_sentencia (int version, int sentencia, char *opcion_uno, char *opcion_dos, char *opcion_tres ){switch (sentencia)

{case 0:

/********** PARA TODAS LAS VERSIONES **********/strcpy (dyn_column,"|ORACLE_VERSION|");strcpy (dyn_title,"Oracle Version ...\n");strcpy (dyn_sts,"select ltrim(lpad(banner,70)) Ver sion from v$version ");strcat (dyn_sts,"where banner like '%Oracle%' ");strcpy (dyn_size,"80");break;

case 1:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|NOMBRE|VALOR|DESCRIPCION|");strcpy (dyn_title,"Active Parameters ...\n");strcpy (dyn_sts,"select name,value,description from v$parameter order by 1 ");strcpy (dyn_size,"355540");break;

case 2:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|DIRECCION|SES|NOMBRE|CMD|ESTAD O|PID|TERMINAL|INICIADO|");strcpy (dyn_title,"User conected...\n");

Page 283: Orastat line command

strcpy (dyn_sts,"select saddr ADDRESS,sid SES,usern ame NOMBRE,command CMD, \n");strcat (dyn_sts,"status ESTADO,process PID,terminal TERMINAL, \n");strcat (dyn_sts,"to_char(logon_time,'DD/MM/YYYY - H H24:MI:SS') INICIADO from v$session ");strcpy (dyn_size,"0804150608091122");break;

case 3:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|CANTIDAD|TIEMPO|CLASE|");strcpy (dyn_title,"User conected...\n");strcpy (dyn_title,"Wait Statistics...\n");strcpy (dyn_sts,"select count CANTIDAD,time TIEMPO, class CLASE from v$waitstat order by 1 ");strcpy (dyn_size,"101030");break;

case 4:strcpy (dyn_title,"Datafile I-O ...\n");switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_column,"|READPHY|READBLK|WRITPHY||WRITB LK|DATAFILE|IO_STAT|");strcpy (dyn_sts,"select f.phyrds, f.phyblkrd, f.phy wrts, ");strcat (dyn_sts,"f.phyblkwrt, f.lstiotim*10 , d.nam e\n");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");strcpy (dyn_size,"080808086010");break;

case VERSION_ORACLE_817:case VERSION_ORACLE_816:case VERSION_ORACLE_734:

strcpy (dyn_column,"|READPHY|READBLK|WRITPHY|WRITBL K|DATAFILE|");strcpy (dyn_sts,"select f.phyrds, f.phyblkrd, f.phy wrts, ");strcat (dyn_sts,"f.phyblkwrt, d.name ");strcat (dyn_sts,"from v$filestat f,v$datafile d ");strcat (dyn_sts,"where f.file# = d.file# ");strcat (dyn_sts,"order by 2 \n");strcpy (dyn_size,"0606060660");break;

default:break;

}

Page 284: Orastat line command

break;case 5:

/********** PARA TODAS LAS VERSIONES **********/strcpy (dyn_column,"|DATAFILE|BLKREAD|BLKWRITE|BLKT OT|");strcpy (dyn_title,"Datafile Blocks R+W ...\n");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 f rom v$filestat f, v$datafile d \n");strcat (dyn_sts,"where f.file# = d.file# order by 3 desc ");strcpy (dyn_size,"60060606");break;

case 6:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|USUARIO|CANTIDAD|EVENTO|");strcpy (dyn_title,"Wait Events ...\n");strcpy (dyn_sts,"select 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: Executi on Msg%' and \n");strcat (dyn_sts,"sw.event not like 'pipe get%' grou p by se.username, sw.event ");strcpy (dyn_size,"201030");break;

case 7:strcpy (dyn_title,"Instance status ...\n");switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|INSTNRO|INSTNAME|HOSTNAME|VERS ION|INICIADO|ESTADO|PARALELO|DATAESTA|INSTROLE|ACTS TATUS|");strcpy (dyn_title,"Instance status ...\n");strcpy (dyn_sts,"select instance_number, instance_n ame, host_name, version, \n");strcat (dyn_sts,"to_char(startup_time,'DD/MM/YYYY - HH24:MI:SS'),status, parallel, \n");strcat (dyn_sts,"database_status, instance_role \n" ); strcat (dyn_sts,"from v$instance \n");strcpy (dyn_size,"03080910220503101010");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|NOMBRE DE CLAVE|ESTADO|");strcpy (dyn_title,"Instance status ...\n");

Page 285: Orastat line command

strcpy (dyn_sts,"select 'RESTRITED MODE',value ");strcat (dyn_sts,"from v$instance where key='RESTRIC TED MODE' ");strcat (dyn_sts,"union ");strcat (dyn_sts,"select 'SHUTDOWN PENDING',value ") ;strcat (dyn_sts,"from v$instance where key='SHUTDOW N PENDING' ");strcat (dyn_sts,"union ");strcat (dyn_sts,"select 'STARTUP TIME - JULIAN',val ue ");strcat (dyn_sts,"from v$instance where key='STARTUP TIME - JULIAN' ");strcat (dyn_sts,"union ");strcat (dyn_sts,"select 'STARTUP TIME - SECONDS', v alue ");strcat (dyn_sts,"from v$instance where key='STARTUP TIME - SECONDS' \n");strcpy (dyn_size,"4015");break;

default:break;

}break;

case 8:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|SES|SERIAL|USER|EXTENTS|CONTEN TS|SIZEKB");strcpy (dyn_title,"Temporal Space by user ...\n");strcpy (dyn_sts,"select se.sid, se.serial#, se.user name, 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'))/1 000) 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.user name,so.extents,so.contents \n");strcpy (dyn_size,"101010101030");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|SES|SERIAL|USER|EXTENTS|CONTEN TS|SIZEKB");strcpy (dyn_title,"Temporal Space by user ...\n");strcpy (dyn_sts,"select se.sid, se.serial#, se.user name, 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'))/1 000) 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.user name,so.extents,so.contents \n");

Page 286: Orastat line command

strcpy (dyn_size,"101010101030");default:

break;}

break;case 9:

strcpy (dyn_column,"|PCTFREE|");strcpy (dyn_title,"Total Freelist Wait Percentage . ..\n");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 li st' and \n");strcat (dyn_sts,"b.name in ('db block gets','consis tent gets') group by a.count ");strcpy (dyn_size,"12");break;

case 10:strcpy (dyn_column,"|CHEKPOINT_VALUE|FECHA|");strcpy (dyn_title,"Last Checkpoint Time ...\n");strcpy (dyn_sts,"select min(sysdate - CHECKPOINT_TI ME)*24*60 MINUTO, \n");strcat (dyn_sts,"to_char(sysdate,'DD/MM/YYYY - HH24 :MI:SS') FECHA from v$datafile_header");strcpy (dyn_size,"1522");break;

case 11:strcpy (dyn_column,"|TBLSPACE|CONTENT|AVAILA_KB|MAX _ID|USED_KB|FREE_KB|PCT_USED|");strcpy (dyn_title,"List Tablespaces ...\n");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_byt es),0.00)/a.sum_bytes*100.0,2) PCT_USED, d.status, \n");strcat (dyn_sts,"d.extent_management,d.allocation_t ype from (select tablespace_name,sum(bytes) sum_byt es, \n");strcat (dyn_sts,"count(1) max_id from dba_data_file s 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_t ablespaces d \n");strcat (dyn_sts,"where a.tablespace_name = c.tables pace_name(+) and \n");strcat (dyn_sts,"a.tablespace_name = d.tablespace_n ame (+) order by 1 ");strcpy (dyn_size,"151010061010070810101010");break;

case 12:strcpy (dyn_column,"|ADDRESS|TIMESTART|ESTADO|BLK_U SED|KB_USED|SES|SERIAL|NOMBRE|USUARIO|");strcpy (dyn_title,"Active Transactions ...\n");strcpy (dyn_sts,"select tr.addr,to_char(tr.start_ti me,'DD/MM/YYYY - 24HH:MM:SS') TIME_START, \n");strcat (dyn_sts,"tr.status ESTADO,tr.used_ublk BLK_ USED,tr.used_ublk*(select value \n");

Page 287: Orastat line command

strcat (dyn_sts,"from v$parameter where name in 'db _block_size')/1000 KB_USED,tr.used_urec, \n");strcat (dyn_sts,"se.sid SES, se.serial# SERIAL,rn.n ame,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 6");strcpy (dyn_size,"102208080810040605101010");break;

case 13:strcpy (dyn_column,"|GETS|MISS|HITRATIO|IMM_GETS|IM M_MISS|SLEEP|GETSPIN|ADDRESS|LATCH|NOMBRE|");strcpy (dyn_title,"Latch Details ...\n");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 orde r by round(((gets-misses)/gets),2) desc");strcpy (dyn_size,"10040808080507080825");break;

case 14:strcpy (dyn_column,"|NOMBRE|INIT_ALLOC|CURR_UTILIZA |MAX_UTILIZA|LIMITE|");strcpy (dyn_title,"Resource Limits ...\n");strcpy (dyn_sts,"select resource_name NOMBRE,initia l_allocation INIT_ALLOC, \n");strcat (dyn_sts,"current_utilization CURR_UTILIZA,m ax_utilization MAX_UTILIZA, \n");strcat (dyn_sts,"limit_value LIMITE from v$resource _limit order by 1");strcpy (dyn_size,"3010101010");break;

case 15:strcpy (dyn_column,"|DATAFILE|MBYTES|ESTADO|");strcpy (dyn_title,"List Datafiles ...\n");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");strcpy (dyn_size,"701008");break;

case 16:strcpy (dyn_column,"|ESTADO|DATAFILE|TBLSPACE|SIZE_ KB|USED_KB|USED_PCT|");strcpy (dyn_title,"List Datafiles New 9i ...\n");strcpy (dyn_sts,"select v.status ESTADO, d.file_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s,0))/d.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_data_files d, v$dataf ile v, (select file_id,sum(bytes) bytes \n");

Page 288: Orastat line command

strcat (dyn_sts,"from sys.dba_free_space group by f ile_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_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s)*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");strcpy (dyn_size,"036018121208");break;

case 17:strcpy (dyn_column,"|ESTADO|TBLSPACE|TIPO|EXTENT_MG M|SIZE_KB|USED_KB|USED_PCT|");strcpy (dyn_title,"List Tablespaces New 9i...\n");strcpy (dyn_sts,"select d.status ESTADO, d.tablespa ce_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.byte s,0))/a.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_tablespaces d, (selec t tablespace_name, sum(bytes) bytes \n");strcat (dyn_sts,"from dba_data_files group by table space_name) a, (select tablespace_name,sum(bytes) b ytes \n");strcat (dyn_sts,"from dba_free_space group by table space_name ) f \n");strcat (dyn_sts,"where d.tablespace_name=a.tablespa ce_name(+) and \n");strcat (dyn_sts,"d.tablespace_name = f.tablespace_n ame(+) and \n");strcat (dyn_sts,"not (d.extent_management like 'LOC AL' and d.contents LIKE 'TEMPORARY') \n");strcat (dyn_sts,"union all \n"); strcat (dyn_sts,"select d.status ESTADO, d.tablespa ce_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),'999 99999.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_nam e) 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_nam e (+) and d.extent_management like 'LOCAL' and \n") ;strcat (dyn_sts,"d.contents like 'TEMPORARY' "); strcpy (dyn_size,"06251012121212121212121010101010" );break;

case 18:

Page 289: Orastat line command

strcpy (dyn_column,"|SES|SERIAL|TIPO|OS_USER|LOGON| ESTADO|PROCESO|MAQUINA|NOMBRE|PID|PROGRAMA|");strcpy (dyn_title,"Active Sessions ...\n");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 - H H24:MI:SS') LOGON,s.status ESTADO, \n");strcat (dyn_sts,"s.process PROCESO, s.machine MAQUI NA, 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.add r=s.paddr \n");strcpy (dyn_size,"0404101022100910100930");break;

case 19:strcpy (dyn_column,"|SES|SEQ|W_T|S_W_T|USUARIO|ESTA DO|EVENT|STATE|P1TEXT|P1|P1RAW|P2TEXT|P2|P2RAW|P3TE XT|P3|P3RAW|");strcpy (dyn_title,"Session Waits \n");strcpy (dyn_sts,"select sw.sid SES, sw.seq# SEQ, nv l(sw.wait_time,0) W_T, \n");strcat (dyn_sts,"nvl(sw.seconds_in_wait,0) S_W_T,nv l(se.username,'.') USUA, \n");strcat (dyn_sts,"nvl(se.status,'.') ESTA,sw.event E VENT, sw.state, sw.p1text, sw.p1, \n");strcat (dyn_sts,"sw.p1raw, sw.p2text, sw.p2, sw.p2r aw, 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 2 \ n");strcpy (dyn_size,"040405050606202010101010101010101 0101010101010");break;

case 20:strcpy (dyn_column,"|TBLSPACE|INI_EXT|NEX_EXT|MIN_E XT|MAX_EXT|PCT_INC|");strcpy (dyn_title,"Default Storage Settings - By Ta blespace \n");strcpy (dyn_sts,"select tablespace_name TBLNAME, in itial_extent INI_EXT, next_extent NEX_EXT, \n");strcat (dyn_sts,"min_extents MIN_EXT, max_extents M AX_EXT, pct_increase PCT_INC \n");strcat (dyn_sts,"from dba_tablespaces \n");strcat (dyn_sts,"order by tablespace_name \n");strcpy (dyn_size,"201212121207");break;

case 21:strcpy (dyn_column,"|OWNER_TABLE|SEG_NAME|TBLSPACE| BLOCKS|SIZE_KB|MAX_EXT|");strcpy (dyn_title,"All tables Storage (Except SYS a nd SYSTEM) \n");strcpy (dyn_sts,"select owner OWNER_TABLE,segment_n ame SEG_NAME,tablespace_name TBL_NAME, blocks BLKS, \n");strcat (dyn_sts,"(select value from v$parameter whe re name in 'db_block_size')*blocks/1024 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 b y 1,2 \n");strcpy (dyn_size,"12402005060510");break;

Page 290: Orastat line command

case 22:strcpy (dyn_column,"|OWNER|TABLNAME|TBLSPACE|BLOCK| NROWS|BUFF_POOL|LAST_ANALIZE|SIZE_KB");strcpy (dyn_title,"Non-Sys Tables \n");strcpy (dyn_sts,"select owner OWNER, table_name TNA ME, 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/Y YYY - HH24:MI'),-1) LAST_ANALIZE, \n");strcat (dyn_sts,"sum((blocks) * (select value from v$parameter where name in ('db_block_size')))/1000 \n");strcat (dyn_sts,"from dba_tables \n");strcat (dyn_sts,"group by owner,table_name,tablespa ce_name,nvl(blocks,-1),nvl(num_rows,-1), \n");strcat (dyn_sts,"buffer_pool,nvl(to_char(last_analy zed,'DD/MM/YYYY - HH24:MI'),-1) \n");strcat (dyn_sts,"order by 1,2 \n");strcpy (dyn_size,"1225200808101808");break;

case 23:strcpy (dyn_column,"|OWNER|INDEXNAME|TBLSPACE|LEAFB LK|NROROWS|BUFFPOOL|LASTANALIZ|SIZE_KB|");strcpy (dyn_title,"Non-Sys Indexes \n");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_anal yzed,'DD/MM/YYYY - HH24:MI'),-1), \n");strcat (dyn_sts,"sum((leaf_blocks) * (select value from v$parameter \n");strcat (dyn_sts,"where name in ('db_block_size')))/ 1000 \n");strcat (dyn_sts,"from dba_indexes \n");strcat (dyn_sts,"group by owner, index_name, tables pace_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");strcpy (dyn_size,"1225200808101808");break;

case 24:strcpy (dyn_column,"|USUA|ACCSTAT|EXPIRYDATE|DFLTBL NAME|TMPTBLNAME|PROFILE|CREATED|");strcpy (dyn_title,"User Defined \n");strcpy (dyn_sts,"select * from (select distinct use rname, account_status, expiry_date, \n");strcat (dyn_sts,"default_tablespace, temporary_tabl espace, 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(nu ll), '', '', '', 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");strcpy (dyn_size,"25090820203018101010");break;

case 25:strcpy (dyn_column,"|FILENAME|TBLSPACE|ESTADO|");

Page 291: Orastat line command

strcpy (dyn_title,"List Datafiles, Online Redo Logs , Control Files \n");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', statu s from v$controlfile \n");strcat (dyn_sts,"order by 1,2 \n");strcpy (dyn_size,"702010");break;

case 26:strcpy (dyn_column,"|TBLSPACE|FILENAME|BYTES|HIGHWA TER|");strcpy (dyn_title,"List Datafiles and their Used Bl ocks \n");strcpy (dyn_sts,"select a.tablespace_name, a.file_n ame, a.bytes, \n");strcat (dyn_sts,"(b.maximum + c.blocks -1) * d.db_b lock_size highwater \n");strcat (dyn_sts,"from dba_data_files a, \n");strcat (dyn_sts,"(select file_id, max(block_id) max imum \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");strcat (dyn_sts,"and c.file_id = b.file_id \n");strcat (dyn_sts,"and c.block_id = b.maximum \n");strcat (dyn_sts,"order by a.tablespace_name, a.file _name \n");strcpy (dyn_size,"256012121212");break;

case 27:strcpy (dyn_column,"|VALOR|TYPESORT|OS_USER|DB_USER |");strcpy (dyn_title,"List sorts by user \n");strcpy (dyn_sts,"select vss.value VALOR, substr(vsn .name,1,20) TYPE_SORT, \n");strcat (dyn_sts,"substr(vs.osuser,1,20) OS_USER, su bstr(vs.username,1,20) DB_USER \n");strcat (dyn_sts,"from v$session vs, v$sesstat vss, v$statname vsn \n");strcat (dyn_sts,"where (vss.statistic# = vsn.statis tic#) and \n");strcat (dyn_sts,"(vs.sid = vss.sid ) and \n");strcat (dyn_sts,"(vsn.name like '%sort%') and \n");strcat (dyn_sts,"vss.value <> 0 \n");strcat (dyn_sts,"order by 1,2,3 \n");strcpy (dyn_size,"141820251010");break;

case 28:

Page 292: Orastat line command

strcpy (dyn_column,"|ADDRESS|KADDRESS|SES|TIPO|OBJ_ ID|ID2|LOCKTY|REQT|");strcpy (dyn_title,"List lock status \n");strcpy (dyn_sts,"select lo.addr, lo.kaddr, lo.sid S ES, lo.type TIP, lo.id1 OBJID, lo.id2, \n");strcat (dyn_sts,"decode(lo.lmode,0,'None',1,'Null', 2,'Row-S (ss)',3,'Row-X (sx)',4,'Share',5,'S/Row-X (ssx)',6,'Exclu ')

LOCTYP, \n");strcat (dyn_sts,"lo.request REQT, \n");strcat (dyn_sts,"(select ltrim(object_type) \n");strcat (dyn_sts,"from all_objects where object_id=l o.id1) OBJ_TYP, \n");strcat (dyn_sts,"(select ltrim(owner)||'.'||ltrim(o bject_name) \n");strcat (dyn_sts,"from all_objects where object_id=l o.id1) OWN_OBJ, \n");strcat (dyn_sts,"(select sid SES \n");strcat (dyn_sts,"from v$session where lockwait=lo.k addr) LOC_SID \n");strcat (dyn_sts,"from v$lock lo \n");strcat (dyn_sts,"order by lo.id1, lo.lmode desc \n" );strcpy (dyn_size,"0909050405041105083509");break;

case 29:strcpy (dyn_column,"|SES|SERIAL|TYPE|OSUSER|LOGON|P ROCESS|MACHINE|USER|VALUE|PROGRAM|");strcpy (dyn_title,"List Users by CPU Usage \n");strcpy (dyn_sts,"select vs.sid, vs.serial#, vs.type , vs.osuser, \n");strcat (dyn_sts,"sysdate - logon_time, \n");strcat (dyn_sts,"vs.process, vs.machine, vs.usernam e, vss.value, \n");strcat (dyn_sts,"vs.program \n");strcat (dyn_sts,"from v$session vs, v$sesstat vss, v$statname vsn \n");strcat (dyn_sts,"where vss.statistic# = vsn.statist ic# and \n");strcat (dyn_sts,"vs.sid = vss.sid and \n");strcat (dyn_sts,"vsn.name = 'CPU used by this sessi on' \n");strcat (dyn_sts,"and vss.value <> 0 \n");strcat (dyn_sts,"order by 10 \n");strcpy (dyn_size,"101010101010101010101010101010101 01010101010");break;

case 30:strcpy (dyn_column,"|TEXT_SQL|");strcpy (dyn_title,"Sql statement by this user \n");strcpy (dyn_sts,"select sql_text \n");strcat (dyn_sts,"from v$sqltext \n");strcat (dyn_sts,"where address = ( select sql_addre ss \n");strcat (dyn_sts,"from v$session \n");strcat (dyn_sts,"where sid=");strcat (dyn_sts,opcion_uno);

Page 293: Orastat line command

strcat (dyn_sts,") order by piece \n");strcpy (dyn_size,"70");break;

case 31:strcpy (dyn_column,"|GRUPO|THREAD|SEQUENCE|BYTES|ME MBER|ARCHIVED|ESTADO|FSTCHANGE|FSTTIME|");strcpy (dyn_title,"Redo Logs - Status ");strcpy (dyn_sts,"select group#, thread#, sequence#, bytes, members, \n");strcat (dyn_sts,"archived, status, first_change#, \ n");strcat (dyn_sts,"to_char(first_time,'DD/MM/YYYY - H H24:MI') \n");strcat (dyn_sts,"from v$log \n");strcpy (dyn_size,"070710101010101220");break;

case 32:strcpy (dyn_column,"|THREAD|SEQUENCE|NAME|FSTCHANGE |FSTTIME|BLOCKS|BLKSIZE|COMPTIME|");strcpy (dyn_title,"Archived Logs History - by firs t TimeStamp ");strcpy (dyn_sts,"select thread#, sequence#, name, f irst_change#, \n");strcat (dyn_sts,"to_char (first_time,'DD/MM/YYYY - HH24:MI:SS'), \n");strcat (dyn_sts,"blocks, block_size, \n");strcat (dyn_sts,"to_char (completion_time,'DD/MM/YY YY - HH24:MI:SS') \n");strcat (dyn_sts,"from v$archived_log order by 6 \n" );strcpy (dyn_size,"1010101020101020101020");break;

case 33:strcpy (dyn_column,"|GROUP|FSTCHANGE|MEMBER|SEQUENC E|");strcpy (dyn_title,"Redo Log Recovery Report - CURRE NT Online Redo log info ");strcpy (dyn_sts,"select a.group#, a.first_change#, b.member, a.sequence# \n");strcat (dyn_sts,"from v$log a, v$logfile b \n");strcat (dyn_sts,"where a.group# = b.group# \n");strcat (dyn_sts,"and a.status = 'CURRENT' \n");strcpy (dyn_size,"06125208");break;

case 34:strcpy (dyn_column,"|THREAD|SEQUENCE|FSTCHANGE|SWIC HANGE|FSTTIME|");strcpy (dyn_title,"Archive Log History ");strcpy (dyn_sts,"select thread#, sequence#, first_c hange#, \n");strcat (dyn_sts,"switch_change#, \n");strcat (dyn_sts,"to_char(first_time,'DD/MM/YYYY - H H24:MI:SS') \n");strcat (dyn_sts,"from v$loghist \n");strcat (dyn_sts,"order by 5 \n");strcpy (dyn_size,"0810171722");

Page 294: Orastat line command

break;case 35:

strcpy (dyn_column,"|SES|USER|STATUS|SQLTEXT|");strcpy (dyn_title,"Session Latch Waits - SQL ");strcpy (dyn_sts,"select sw.sid , nvl(se.username,'. ') , \n");strcat (dyn_sts,"nvl(se.status,'.') , sq.sql_text \ n");strcat (dyn_sts,"from v$session_wait sw, v$session se, v$sqltext sq \n");strcat (dyn_sts,"where sw.sid = se.sid and \n");strcat (dyn_sts,"se.sql_address = sq.address and \n ");strcat (dyn_sts,"se.sql_hash_value = sq.hash_value and \n");strcat (dyn_sts,"sw.event = 'latch_free' \n");strcat (dyn_sts,"order by 1 \n");strcpy (dyn_size,"0530303030");break;

case 36:strcpy (dyn_column,"|SES|USER|STATUS|SQLTEXT|");strcpy (dyn_title,"Whoami in Oracle ");strcpy (dyn_sts,"select substr(v2.sid,1,5), substr( v2.username,1,8), \n");strcat (dyn_sts,"program, sql_text \n");strcat (dyn_sts,"from sys.v_$sqlarea v1, \n");strcat (dyn_sts,"sys.v_$session v2 \n");strcat (dyn_sts,"where v1.address = v2.sql_address and \n");strcat (dyn_sts,"v1.hash_value = v2.sql_hash_value \n");strcpy (dyn_size,"10202030");break;

case 37:strcpy (dyn_column,"|fadsdf|asdfasd|");strcpy (dyn_title,"Privileges by User ");strcpy (dyn_sts,"select decode (sa1.grantee#1, 1, ' PUBLIC', u1.name), \n");strcat (dyn_sts,"substr (u2.name,1,20), substr(spm. name,1,27) \n");strcat (dyn_sts,"from sys.sysauth$ sa1, sys.sysauth # sa2, sys.user$ u1, \n");strcat (dyn_sts,"sys.user$ u2, sys.system_privilege _map spm \n");strcat (dyn_sts,"where sa1.grantee# = u1.user# and \n");strcat (dyn_sts,"sa1.privilege# = u2.user# and \n") ;strcat (dyn_sts,"u2.user# = sa2.grantee# and \n");strcat (dyn_sts,"sa2.privilege# = spm.privilege \n" );strcat (dyn_sts,"union \n");strcat (dyn_sts,"select u.name, NULL, substr(spm.na me,1,27) \n");strcat (dyn_sts,"from sys.system_privilege_map spm, sys.sysauth$ sa, \n");strcat (dyn_sts,"sys.user$ u \n");

Page 295: Orastat line command

strcat (dyn_sts,"where sa.grantee#=u.user# and \n") ;strcat (dyn_sts,"sa.privilege# = spm.privilege \n") ;strcpy (dyn_size,"1010101010101010");break;

case 38:strcpy (dyn_column,"|USERNAME|SID|TERMINAL|TAB|COMM AND|LMODE|REQUEST|LADDR|LOCKT|");strcpy (dyn_title,"Detailed locking causes ");strcpy (dyn_sts,"select nvl(S.USERNAME,'Internal'), L.SID, nvl(S.TERMINAL,'None'),\n");strcat (dyn_sts,"decode(command, 0,'None',decode(l. id2,0,U1.NAME||'.'||substr(T1.NAME,1,20),'None')),\ n");strcat (dyn_sts,"decode(command,0,'BACKGROUND', 1,' Create Table', 2,'INSERT', 3,'SELECT', 4,'CREATE CL USTER',");strcat (dyn_sts,"5,'ALTER CLUSTER', 6,'UPDATE', 7,' DELETE', 8,'DROP', 9,'CREATE INDEX', 10,'DROP INDEX ',");strcat (dyn_sts,"11,'ALTER INDEX', 12,'DROP TABLE', 13,'CREATE SEQUENCE', 14,'ALTER SEQUENCE', 15,'ALT ER TABLE',");strcat (dyn_sts,"16,'DROP SEQUENCE', 17,'GRANT', 18 ,'REVOKE', 19,'CREATE SYNONYM', 20,'DROP SYNONYM', 21,'CREATE VIEW',");strcat (dyn_sts,"22,'DROP VIEW', 23,'VALIDATE INDEX ', 24,'CREATE PROCEDURE', 25,'ALTER PROCEDURE', 26, 'LOCK TABLE',");strcat (dyn_sts,"27,'NO OPERATION', 28,'RENAME', 29 ,'COMMENT', 30,'AUDIT', 31,'NOAUDIT', 32,'CREATE EX TERNAL DATABASE',");strcat (dyn_sts,"33,'DROP EXTERNAL DATABASE', 34,'C REATE DATABASE', 35,'ALTER DATABASE', 36,'CREATE RO LLBACK SEGMENT',");strcat (dyn_sts,"37,'ALTER ROLLBACK SEGMENT', 38,'D ROP ROLLBACK SEGMENT', 39,'CREATE TABLESPACE', 40,' ALTER TABLESPACE',");strcat (dyn_sts,"41,'DROP TABLESPACE', 42,'ALTER SE SSION', 43,'ALTER USER', 44,'COMMIT', 45,'ROLLBACK' ,");strcat (dyn_sts,"46,'SAVEPOINT', 47,'PL/SQL EXECUTE ', 48,'SET TRANSACTION', 49,'ALTER SYSTEM SWITCH LO G',");strcat (dyn_sts,"50,'EXPLAIN', 51,'CREATE USER', 52 ,'CREATE ROLE', 53,'DROP USER', 54,'DROP ROLE',");strcat (dyn_sts,"55,'SET ROLE', 56,'CREATE SCHEMA', 57,'CREATE CONTROL FILE', 58,'ALTER TRACING', 59,' CREATE TRIGGER',");strcat (dyn_sts,"60,'ALTER TRIGGER', 61,'DROP TRIGG ER', 62,'ANALYZE TABLE', 63,'ANALYZE INDEX', 64,'AN ALYZE CLUSTER',");strcat (dyn_sts,"65,'CREATE PROFILE', 66,'DROP PROF ILE', 67,'ALTER PROFILE', 68,'DROP PROCEDURE', 69,' DROP PROCEDURE',");strcat (dyn_sts,"70,'ALTER RESOURCE COST', 71,'CREA TE SNAPSHOT LOG', 72,'ALTER SNAPSHOT LOG', 73,'DROP SNAPSHOT LOG',");strcat (dyn_sts,"74,'CREATE SNAPSHOT', 75,'ALTER SN APSHOT', 76,'DROP SNAPSHOT', 79,'ALTER ROLE',85,'TR UNCATE TABLE',");strcat (dyn_sts,"86,'TRUNCATE CLUSTER', 87,'-', 88, 'ALTER VIEW', 89,'-', 90,'-', 91,'CREATE FUNCTION', ");strcat (dyn_sts,"92,'ALTER FUNCTION', 93,'DROP FUNC TION', 94,'CREATE PACKAGE', 95,'ALTER PACKAGE', 96, 'DROP PACKAGE',");strcat (dyn_sts,"97,'CREATE PACKAGE BODY', 98,'ALTE R PACKAGE BODY', 99,'DROP PACKAGE BODY', command||' - \?\?\?'),\n");strcat (dyn_sts,"decode(L.LMODE,1,'No Lock', 2,'Row Share', 3,'Row Exclusive', 4,'Share', 5,'Share Row Exclusive',");strcat (dyn_sts,"6,'Exclusive','NONE'), decode(L.RE QUEST,1,'No Lock', 2,'Row Share', 3,'Row Exclusive' ,");strcat (dyn_sts,"4,'Share', 5,'Share Row Exclusive' , 6,'Exclusive','NONE'),\n");strcat (dyn_sts,"l.id1||'-'||l.id2, l.type||' - '|| decode(l.type, 'BL','Buffer hash table instance lo ck',");strcat (dyn_sts,"'CF',' Control file schema global enqueue lock', 'CI','Cross-instance function invoca tion instance lock',");strcat (dyn_sts,"'CS','Control file schema global e nqueue lock', 'CU','Cursor bind lock',");strcat (dyn_sts,"'DF','Data file instance lock', 'D L','Direct loader parallel index create',");strcat (dyn_sts,"'DM','Mount/startup db primary/sec ondary instance lock', 'DR','Distributed recovery p rocess lock',");strcat (dyn_sts,"'DX','Distributed transaction entr y lock', 'FI','SGA open-file information lock',");strcat (dyn_sts,"'FS','File set lock', 'HW','Space management operations on a specific segment lock'," );strcat (dyn_sts,"'IN','Instance number lock','IR',' Instance recovery serialization global enqueue lock ',");strcat (dyn_sts,"'IS','Instance state lock','IV','L ibrary cache invalidation instance lock',");

Page 296: Orastat line command

strcat (dyn_sts,"'JQ','Job queue lock','KK','Thread kick lock','MB','Master buffer hash table instance lock',");strcat (dyn_sts,"'MM','Mount definition gloabal enq ueue lock', 'MR','Media recovery lock',");strcat (dyn_sts,"'PF','Password file lock','PI','Pa rallel operation lock','PR','Process startup lock', ");strcat (dyn_sts,"'PS','Parallel operation lock','RE ','USE_ROW_ENQUEUE enforcement lock', 'RT','Redo th read global enqueue

lock',");strcat (dyn_sts,"'RW','Row wait enqueue lock', 'SC' ,'System commit number instance lock',");strcat (dyn_sts,"'SH','System commit number high wa ter mark enqueue lock', 'SM','SMON lock','SN','Sequ ence number instance

lock',");strcat (dyn_sts,"'SQ','Sequence number enqueue lock ', 'SS','Sort segment lock','ST','Space transaction enqueue lock',");strcat (dyn_sts,"'SV','Sequence number value lock', 'TA','Generic enqueue lock', 'TD','DDL enqueue loc k',");strcat (dyn_sts,"'TE','Extend-segment enqueue lock' , 'TM','DML enqueue lock', 'TT','Temporary table en queue lock',");strcat (dyn_sts,"'TX','Transaction enqueue lock', ' UL','User supplied lock', 'UN','User name lock',");strcat (dyn_sts,"'US','Undo segment DDL lock','WL', 'Being-written redo log instance lock',");strcat (dyn_sts,"'WS','Write-atomic-log-switch glob al enqueue lock', 'TS',decode(l.id2,0,'Temporary se gment enqueue lock (ID2=

0)',");strcat (dyn_sts,"'New block allocation enqueue lock (ID2=1)'), 'LA','Library cache lock instance lock (A=namespace)',");strcat (dyn_sts,"'LB','Library cache lock instance lock (B=namespace)', 'LC','Library cache lock insta nce lock

(C=namespace)',");strcat (dyn_sts,"'LD','Library cache lock instance lock (D=namespace)', 'LE','Library cache lock insta nce lock

(E=namespace)',");strcat (dyn_sts,"'LF','Library cache lock instance lock (F=namespace)', 'LG','Library cache lock insta nce lock

(G=namespace)',");strcat (dyn_sts,"'LH','Library cache lock instance lock (H=namespace)', 'LI','Library cache lock insta nce lock

(I=namespace)',");strcat (dyn_sts,"'LJ','Library cache lock instance lock (J=namespace)', 'LK','Library cache lock insta nce lock

(K=namespace)',");strcat (dyn_sts,"'LL','Library cache lock instance lock (L=namespace)', 'LM','Library cache lock insta nce lock

(M=namespace)',");strcat (dyn_sts,"'LN','Library cache lock instance lock (N=namespace)', 'LO','Library cache lock insta nce lock

(O=namespace)',");strcat (dyn_sts,"'LP','Library cache lock instance lock (P=namespace)', 'LS','Log start/log switch enq ueue lock',");strcat (dyn_sts,"'PA','Library cache pin instance l ock (A=namespace)', 'PB','Library cache pin instanc e lock

(B=namespace)',");strcat (dyn_sts,"'PC','Library cache pin instance l ock (C=namespace)', 'PD','Library cache pin instanc e lock

(D=namespace)',");strcat (dyn_sts,"'PE','Library cache pin instance l ock (E=namespace)', 'PF','Library cache pin instanc e lock

(F=namespace)',");strcat (dyn_sts,"'PG','Library cache pin instance l ock (G=namespace)', 'PH','Library cache pin instanc e lock

(H=namespace)',");strcat (dyn_sts,"'PI','Library cache pin instance l ock (I=namespace)', 'PJ','Library cache pin instanc e lock

Page 297: Orastat line command

(J=namespace)',");strcat (dyn_sts,"'PL','Library cache pin instance l ock (K=namespace)', 'PK','Library cache pin instanc e lock

(L=namespace)',");strcat (dyn_sts,"'PM','Library cache pin instance l ock (M=namespace)', 'PN','Library cache pin instanc e lock

(N=namespace)',");strcat (dyn_sts,"'PO','Library cache pin instance l ock (O=namespace)', 'PP','Library cache pin instanc e lock

(P=namespace)',");strcat (dyn_sts,"'PQ','Library cache pin instance l ock (Q=namespace)', 'PR','Library cache pin instanc e lock

(R=namespace)',");strcat (dyn_sts,"'PS','Library cache pin instance l ock (S=namespace)', 'PT','Library cache pin instanc e lock

(T=namespace)',");strcat (dyn_sts,"'PU','Library cache pin instance l ock (U=namespace)', 'PV','Library cache pin instanc e lock

(V=namespace)',");strcat (dyn_sts,"'PW','Library cache pin instance l ock (W=namespace)', 'PX','Library cache pin instanc e lock

(X=namespace)',");strcat (dyn_sts,"'PY','Library cache pin instance l ock (Y=namespace)', 'PZ','Library cache pin instanc e lock

(Z=namespace)',");strcat (dyn_sts,"'QA','Row cache instance lock (A=c ache)', 'QB','Row cache instance lock (B=cache)',") ;strcat (dyn_sts,"'QC','Row cache instance lock (C=c ache)', 'QD','Row cache instance lock (D=cache)',") ;strcat (dyn_sts,"'QE','Row cache instance lock (E=c ache)', 'QF','Row cache instance lock (F=cache)',") ;strcat (dyn_sts,"'QG','Row cache instance lock (G=c ache)', 'QH','Row cache instance lock (H=cache)',") ;strcat (dyn_sts,"'QI','Row cache instance lock (I=c ache)', 'QJ','Row cache instance lock (J=cache)',") ;strcat (dyn_sts,"'QL','Row cache instance lock (K=c ache)', 'QK','Row cache instance lock (L=cache)',") ;strcat (dyn_sts,"'QM','Row cache instance lock (M=c ache)', 'QN','Row cache instance lock (N=cache)',") ;strcat (dyn_sts,"'QO','Row cache instance lock (O=c ache)', 'QP','Row cache instance lock (P=cache)',") ;strcat (dyn_sts,"'QQ','Row cache instance lock (Q=c ache)', 'QR','Row cache instance lock (R=cache)',") ;strcat (dyn_sts,"'QS','Row cache instance lock (S=c ache)', 'QT','Row cache instance lock (T=cache)',") ;strcat (dyn_sts,"'QU','Row cache instance lock (U=c ache)', 'QV','Row cache instance lock (V=cache)',") ;strcat (dyn_sts,"'QW','Row cache instance lock (W=c ache)', 'QX','Row cache instance lock (X=cache)',") ;strcat (dyn_sts,"'QY','Row cache instance lock (Y=c ache)', 'QZ','Row cache instance lock (Z=cache)','\ ?\?\?\?') \n");strcat (dyn_sts,"from v$lock l, v$session s, sys.us er$ u1, sys.obj$ t1 \n");strcat (dyn_sts,"where l.sid = s.sid and t1.obj# = decode (l.id2,0,l.id1,1) and \n");strcat (dyn_sts,"u1.user# = t1.owner# and s.type != 'BACKGROUND' \n");strcat (dyn_sts,"order by 1,2,5");strcpy (dyn_size,"1010101010101010");break;

case 39:strcpy (dyn_column,"|VALOR|NOMBRE|");strcpy (dyn_title,"Current Activity Report ");strcpy (dyn_sts,"select name,value from v$sysstat \ n");

Page 298: Orastat line command

strcat (dyn_sts,"where name like '%user%'; \n");strcpy (dyn_size,"2512");break;

case 40:strcpy (dyn_column,"|TBLSPACE|TABLENAME|NROWS|LAST

ANALIZED|INIEXT|NEXEXT|MINEXT|MAXEXT|PCTINC|BUFPOL| BLOCKS|FREELST|PCTFREE|INITRANS|MAXTRANS|FREEGRP");strcpy (dyn_title,"Table Description del Usuario [ ");strcat (dyn_title,opcion_uno);strcat (dyn_title," ] ");strcpy (dyn_sts,"select tablespace_name, table_name , \n");strcat (dyn_sts,"nvl(to_char (num_rows),\'(Null)\') , \n");strcat (dyn_sts,"nvl(to_char (last_analyzed,'YYYY/M M/DD-HH24:MI:SS'),\'(Null)\'), \n");strcat (dyn_sts,"initial_extent,next_extent,\n");strcat (dyn_sts,"min_extents,max_extents,pct_increa se,buffer_pool,\n");strcat (dyn_sts,"nvl(to_char (blocks),\'(Null)\'),\ n");strcat (dyn_sts,"freelists,pct_free,ini_trans,max_t rans,\n");strcat (dyn_sts,"freelist_groups \n");strcat (dyn_sts,"from dba_tables \n");strcat (dyn_sts,"where owner = '");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");if ( strlen (opcion_dos) > 0 )

{strcat (dyn_sts,"and table_name = '");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

else strcat (dyn_sts,"\n");strcpy (dyn_size,"15300719050505050508060606060606" );break;

default:strcpy (dyn_column,"|ORACLE_VERSION|");strcpy (dyn_title,"Oracle Version ...\n");strcpy (dyn_sts,"select ltrim(lpad(banner,70)) Ver sion from v$version ");strcpy (dyn_size,"80");break;

}/************************************************** ******//* printf ("Statement [%s] \n",dyn_sts); *//************************************************** ******/

Page 299: Orastat line command

if (strlen (dyn_sts) >= MAX_STMT)printf ("Max Statement large [%d] | Actual Statemen t large [%d] \n",MAX_STMT,strlen(dyn_sts));

return 0;}

col_size (char *puntero, int posicion){char ascii_nro[3];int numero, i;

for ( i = posicion*2; i < posicion*2+2; i++)ascii_nro[i-posicion*2]=puntero[i];

ascii_nro[2]=FIN_LINEA;numero=atoi(ascii_nro);return numero;}

int filtrar_char (int caracter){if ( (caracter >= 32 && caracter <= 127 ) ) return caracter;else

{switch (caracter)

{case 164: break;case 165: break;case 168: break;case 173: break;default: caracter=32;break;}

}return caracter;}

procesar_cadena (int nrocolum, char *puntero_char){int pos, caracter;

for ( pos=0; pos < nrocolum; pos++ )

Page 300: Orastat line command

{caracter=filtrar_char(puntero_char[pos]);printf ("%c",caracter);}

fflush(stdout);return 0;}

procesar_encabe (int tamano, int posicion, char *pu ntero_char){int pos_col=0;int pos_cad=0;int columna=-1;int caracter=0;int salto=0;

for ( pos_col = 0; pos_col < (int )strlen(puntero_c har); pos_col ++){if ( puntero_char[pos_col] == SEPARADOR ) columna++ ;if ( columna == posicion ) break;}

for ( pos_cad = pos_col+1; pos_cad < tamano+pos_col +1; pos_cad++ ){if ( puntero_char[pos_cad]==SEPARADOR) salto++;if (salto==0)

{caracter = filtrar_char ( puntero_char[pos_cad] );printf ("%c",caracter);}

else printf (" ");}

return 0;}

void vaciar_estructura ( void *punt_sqlda ){int pos_k, pos_j;int limite_k = ((SQLDA *) punt_sqlda ) ->F;int limite_j;

Page 301: Orastat line command

/* for ( pos_k=0; pos_k < limite_k ; pos_k++ ){limite_j = ((SQLCA *) punt_sqlda ) ->L[k];

for ( pos_j=0; pos_j < limite_k ; pos_j++)(char )(((SQLCA *) punt_sqlda )->V[pos_k])[pos_j] = FIN_LINEA;

}*/

}--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: orasta500.c ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***

/* Result Sets Interface */#ifndef SQL_CRSR

Page 302: Orastat line command

# define SQL_CRSR struct sql_cursor { unsigned int curocn; void *ptr1; void *ptr2; unsigned int magic; }; typedef struct sql_cursor sql_cursor; typedef struct sql_cursor SQL_CURSOR;#endif /* SQL_CRSR */

/* Thread Safety */typedef void * sql_context;typedef void * SQL_CONTEXT;

/* Object support */struct sqltvn{ unsigned char *tvnvsn; unsigned short tvnvsnl; unsigned char *tvnnm; unsigned short tvnnml; unsigned char *tvnsnm; unsigned short tvnsnml;};typedef struct sqltvn sqltvn;

struct sqladts{ unsigned int adtvsn; unsigned short adtmode; unsigned short adtnum; sqltvn adttvn[1]; };typedef struct sqladts sqladts;

static struct sqladts sqladt = { 1,0,0,};

Page 303: Orastat line command

/* Binding to PL/SQL Records */struct sqltdss{ unsigned int tdsvsn; unsigned short tdsnum; unsigned char *tdsval[1]; };typedef struct sqltdss sqltdss;static struct sqltdss sqltds ={ 1, 0,};

/* File name & Package Name */struct sqlcxp{ unsigned short fillen; char filnam[13];};static const struct sqlcxp sqlfpn ={ 12, "orasta500.pc"};

static unsigned int sqlctx = 318459;

static struct sqlexd { unsigned int sqlvsn; unsigned int arrsiz; unsigned int iters; unsigned int offset; unsigned short selerr; unsigned short sqlety; unsigned int occurs; const short *cud;

Page 304: Orastat line command

unsigned char *sqlest; const char *stmt; sqladts *sqladtp; sqltdss *sqltdsp; void **sqphsv; unsigned int *sqphsl; int *sqphss; void **sqpind; int *sqpins; unsigned int *sqparm; unsigned int **sqparc; unsigned short *sqpadto; unsigned short *sqptdso; unsigned int sqlcmax; unsigned int sqlcmin; unsigned int sqlcincr; unsigned int sqlctimeout; unsigned int sqlcnowait; int sqfoff; unsigned int sqcmod; unsigned int sqfmod; void *sqhstv[5]; unsigned int sqhstl[5]; int sqhsts[5]; void *sqindv[5]; int sqinds[5]; unsigned int sqharm[5]; unsigned int *sqharc[5]; unsigned short sqadto[5]; unsigned short sqtdso[5];} sqlstm = {12,5};

/* SQLLIB Prototypes */extern void sqlcxt (void **, unsigned int *, struct sqlexd *, const struct s qlcxp *);extern void sqlcx2t(void **, unsigned int *, struct sqlexd *, const struct s qlcxp *);extern void sqlbuft(void **, char *);extern void sqlgs2t(void **, char *);extern void sqlorat(void **, unsigned int *, void * );

Page 305: Orastat line command

/* Forms Interface */static const int IAPSUCC = 0;static const int IAPFAIL = 1403;static const int IAPFTL = 535;extern void sqliem(char *, int *);

typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;typedef struct { unsigned short len; unsigned char arr[1]; } varchar;

/* cud (compilation unit data) array */static const short sqlcud0[] ={12,4242,178,1,0,5,0,0,1,0,0,273,146,0,0,1,1,0,1,0,1,5,0,0,24,0,0,1,0,0,267,157,0,0,1,1,0,1,0,1,32,0,0,43,0,0,1,0,0,271,188,0,0,0,0,0,1,0,58,0,0,2,0,0,286,189,0,0,0,0,0,1,0,73,0,0,3,0,0,283,210,0,0,4,4,0,1,0,1,9,0,0,1,10,0,0 ,1,10,0,0,1,10,0,0,104,0,0,4,0,0,1307,259,0,0,4,4,0,0,128,1,9,0,0,1,9, 0,0,1,9,0,0,1,10,0,0,1,9,0,0,139,0,0,1,0,0,275,314,0,0,1,1,0,1,0,3,32,0,0,158,0,0,1,0,0,276,362,0,0,1,1,0,1,0,3,32,0,0,177,0,0,1,0,0,270,394,0,0,1,0,0,1,0,2,32,0,0,196,0,0,5,0,0,287,466,0,0,0,0,0,1,0,211,0,0,6,83,0,1284,491,0,0,1,0,0,0,128,2,9,0,0,1,9 ,0,0,234,0,0,7,71,0,1284,548,0,0,1,0,0,0,128,2,9,0,0,1,9 ,0,0,257,0,0,8,78,0,1284,580,0,0,2,1,0,0,128,2,9,0,0,1,9 ,0,0,1,9,0,0,284,0,0,9,57,0,1284,614,0,0,2,1,0,0,128,2,9,0,0,1,9 7,0,0,1,9,0,0,311,0,0,10,98,0,1284,662,0,0,2,1,0,0,128,2,9,0,0,1, 3,0,0,1,9,0,0,338,0,0,11,75,0,1284,708,0,0,2,1,0,0,128,2,9,0,0,1, 3,0,0,1,9,0,0,};

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

#include <oraca.h>#include <sqlca.h>#include <stdio.h>

Page 306: Orastat line command

#include <stdlib.h>#include <string.h>#include <setjmp.h>

#include "constant_definition.h"#include "case_constant_func_def.h"#include "case_constant_sql_stmt_def.h"#include "constant_oracle_versions.h"

#include "extern_functions_orastat_principal.h"#include "local_functions_preceded_calls.h"#include "extern_functions_funciones_auxiliares.h"

#ifndef NULL#define NULL 0#endif

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *dml_commands[] = {"SELECT", "select", "INSERT ", "insert","UPDATE", "update", "DELETE", "delete"} ;char dyn_size [MAX_VAR_SIZE];char dyn_title [MAX_VAR_SIZE];char dyn_column [MAX_VAR_SIZE];char dyn_proc_func [MAX_VAR_SIZE];

/* EXEC SQL BEGIN DECLARE SECTION; */

/* VARCHAR nomb_001 [256]; */ struct { unsigned short len; unsigned char arr[256] ; } nomb_001;

/* VARCHAR nomb_002 [256]; */ struct { unsigned short len; unsigned char arr[256] ; } nomb_002;

char dyn_sts[16384];/* EXEC SQL VAR dyn_sts IS STRING(16384); */

/* EXEC SQL END DECLARE SECTION; */

Page 307: Orastat line command

/* EXEC SQL INCLUDE sqlca; */ /* * $Header: sqlca.h,v 1.3 1994/12/12 19:27:27 jbasu Exp $ sqlca.h */

/* Copyright (c) 1985,1986, 1998 by Oracle Corporat ion. */ /*NAME SQLCA : SQL Communications Area.FUNCTION Contains no code. Oracle fills in the SQLCA with status info during the execution of a SQL stmt.NOTES ************************************************* ************* *** *** *** This file is SOSD. Porters must change the d ata types *** *** appropriately on their platform. See notes/p cport.doc *** *** for more information. *** *** *** ************************************************* *************

If the symbol SQLCA_STORAGE_CLASS is defined, the n the SQLCA will be defined to have this storage class. For e xample: #define SQLCA_STORAGE_CLASS extern will define the SQLCA as an extern. If the symbol SQLCA_INIT is defined, then the SQL CA will be statically initialized. Although this is not nece ssary in order to use the SQLCA, it is a good pgming practice no t to have unitialized variables. However, some C compilers/ OS's don't allow automatic variables to be init'd in this ma nner. Therefore, if you are INCLUDE'ing the SQLCA in a place where it would be an automatic AND your C compiler/OS doesn't allow this style of initialization, then SQLCA_INIT should be left undefined -- all others can define SQLCA_INIT if they wish.

Page 308: Orastat line command

If the symbol SQLCA_NONE is defined, then the SQL CA variable will not be defined at all. The symbol SQLCA_NONE sho uld not be defined in source modules that have embedded SQL. Howeve r, source modules that have no embedded SQL, but need to manipulate a sqlca struct passed in as a parameter, can set the SQLCA_NONE symbol to avoid creation of an extraneous sqlca variable. MODIFIED lvbcheng 07/31/98 - long to int jbasu 12/12/94 - Bug 217878: note this is an SOSD file losborne 08/11/92 - No sqlca var if SQLCA_NO NE macro set Clare 12/06/84 - Ch SQLCA to not be an exter n. Clare 10/21/85 - Add initialization. Bradbury 01/05/86 - Only initialize when SQLCA_ INIT set Clare 06/12/86 - Add SQLCA_STORAGE_CLASS opt ion.*/ #ifndef SQLCA#define SQLCA 1 struct sqlca { /* ub1 */ char sqlcaid[8]; /* b4 */ int sqlabc; /* b4 */ int sqlcode; struct { /* ub2 */ unsigned short sqlerrml; /* ub1 */ char sqlerrmc[70]; } sqlerrm; /* ub1 */ char sqlerrp[8]; /* b4 */ int sqlerrd[6]; /* ub1 */ char sqlwarn[8]; /* ub1 */ char sqlext[8]; };

#ifndef SQLCA_NONE #ifdef SQLCA_STORAGE_CLASSSQLCA_STORAGE_CLASS struct sqlca sqlca

Page 309: Orastat line command

#else struct sqlca sqlca#endif #ifdef SQLCA_INIT = { {'S', 'Q', 'L', 'C', 'A', ' ', ' ', ' '}, sizeof(struct sqlca), 0, { 0, {0}}, {'N', 'O', 'T', ' ', 'S', 'E', 'T', ' '}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0} }#endif ;#endif #endif /* end SQLCA *//* EXEC SQL INCLUDE sqlda; */ /* * $Header: sqlda.h 31-jul-99.19:34:41 apopat Exp $ sqlda.h */

/************************************************** ************** The SQLDA descriptor definition **-------------------------------------------------- ------------** VAX/3B Version ** ** Copyright (c) 1987, 1997, 1998, 1999 by Oracle C orporation **************************************************** ************/

/* NOTES ************************************************* ************* *** ***

Page 310: Orastat line command

*** This file is SOSD. Porters must change the d ata types *** *** appropriately on their platform. See notes/p cport.doc *** *** for more information. *** *** *** ************************************************* **************/

/* MODIFIED apopat 07/31/99 - [707588] TAB to blanks f or OCCS lvbcheng 10/27/98 - change long to int for s qlda lvbcheng 08/15/97 - Move sqlda protos to sql cpr.h lvbcheng 06/25/97 - Move sqlda protos to thi s file jbasu 01/29/95 - correct typo jbasu 01/27/95 - correct comment - ub2->s b2 jbasu 12/12/94 - Bug 217878: note this is an SOSD file Morse 12/01/87 - undef L and S for v6 incl ude files Richey 07/13/87 - change int defs to long Clare 09/13/84 - Port: Ch types to match S QLLIB structs Clare 10/02/86 - Add ifndef SQLDA*/

#ifndef SQLDA_#define SQLDA_ 1 #ifdef T# undef T#endif#ifdef F# undef F#endif

#ifdef S# undef S#endif#ifdef L# undef L#endif struct SQLDA { /* ub4 */ int N; /* Descriptor size in number of entries */

Page 311: Orastat line command

/* text** */ char **V; /* Ptr to Arr of addre sses of main variables */ /* ub4* */ int *L; /* Ptr to Arr of lengt hs of buffers */ /* sb2* */ short *T; /* Ptr to Arr of types of buffers */ /* sb2** */ short **I; /* Ptr to Arr of addre sses of indicator vars */ /* sb4 */ int F; /* Number of variables found by DESCRIBE */ /* text** */ char **S; /* Ptr to Arr of varia ble name pointers */ /* ub2* */ short *M; /* Ptr to Arr of max l engths of var. names */ /* ub2* */ short *C; /* Ptr to Arr of curre nt lengths of var. names */ /* text** */ char **X; /* Ptr to Arr of ind. var. name pointers */ /* ub2* */ short *Y; /* Ptr to Arr of max l engths of ind. var. names */ /* ub2* */ short *Z; /* Ptr to Arr of cur l engths of ind. var. names */ }; typedef struct SQLDA SQLDA; #endif

/* ----------------- *//* defines for sqlda *//* ----------------- */

#define SQLSQLDAAlloc(arg1, arg2, arg3, arg4) sqlal dt(arg1, arg2, arg3, arg4)

#define SQLSQLDAFree(arg1, arg2) sqlclut(arg1, arg2 )

SQLDA *bind_dp;SQLDA *select_dp;

jmp_buf jmp_continue;int parse_flag = 0;

extern SQLDA *sqlald();extern void sqlnul();

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

Page 312: Orastat line command

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

main( int argc , char *argv[]){int i=0;int nro_loop=0;int opcion_nro=0;int version=0;

char opcion_uno [MAX_LEN_ARG];char opcion_dos [MAX_LEN_ARG];char opcion_tres [MAX_LEN_ARG];char opcion_cuatro [MAX_LEN_ARG];char datos_conexion [MAX_LEN_CONNECT];char username [MAX_LEN_CONNECT];char password [MAX_LEN_CONNECT];char conexion [MAX_LEN_CONNECT];

opcion_uno[0]=ASCII_FIN_LINEA;opcion_dos[0]=ASCII_FIN_LINEA;opcion_tres[0]=ASCII_FIN_LINEA;opcion_cuatro[0]=ASCII_FIN_LINEA;

datos_conexion[0]=ASCII_FIN_LINEA;

if (argc <3 ){printf ("Insuficientes argumentos \n");exit (1);}

strcpy (datos_conexion,argv[1]);

strcpy (nomb_001.arr,"CONEX002");nomb_001.arr[strlen((char *) nomb_001.arr)] = ASCII _FIN_LINEA;nomb_001.len = (unsigned short )strlen((char *) nom b_001.arr);

vaciar_cadena (username,MAX_LEN_CONNECT);vaciar_cadena (password,MAX_LEN_CONNECT);

Page 313: Orastat line command

vaciar_cadena (conexion,MAX_LEN_CONNECT);

strcpy (username,separar_dato (datos_conexion,USERN AME));strcpy (password,separar_dato (datos_conexion,PASSW ORD));strcpy (conexion,separar_dato (datos_conexion,CONEX ION));

/*printf ("User [%s] - Pass [%s] - Cone [%s] - DbAl [ %s] \n",username,password,conexion,nomb_001.arr);

*/

if (argc >= 3 ) opcion_nro=atoi(argv[2]);if (argc >= 4 ) strcpy (opcion_uno,pasar_amayus(argv [3]));if (argc >= 5 ) strcpy (opcion_dos,pasar_amayus(argv [4]));if (argc >= 6 ) strcpy (opcion_tres,pasar_amayus(ar gv[5]));if (argc >= 7 ) strcpy (opcion_cuatro,pasar_amayus( argv[6]));

/* *********************************************** ********** *//* *********************************************** ********** */

if (oracle_connect_original(datos_conexion) != 0) {/* printf ("No es posible conectarse ...\n"); */exit(1);}

else printf ("[ Connected Default Link ...");/* *********************************************** ********** *//* *********************************************** ********** */

if (oracle_connect_new (datos_conexion,username,pas sword,conexion,nomb_001.arr) != 0) {/* printf ("No es posible conectarse ...\n"); */exit(1);}

else printf (" Connected Non-Default link ].\n");/* *********************************************** ********** */

version = version_oracle();printf ("[ Oracle Version < %d > ]\n\n",version);

if (alloc_descriptors(MAX_ITEMS,MAX_VNAME_LEN, MAX_ INAME_LEN) != 0) exit(1);i = setjmp(jmp_continue);

/* printf ("Opcion elegida [%d] \n",opcion_nro); */

Page 314: Orastat line command

if ( opcion_nro >= 0 && opcion_nro <= MAX_NRO_OPCIO N ){

/* ------------------------------------------------ --------------------- */cargar_sentencia (version, opcion_nro, opcion_uno,

opcion_dos, opcion_tres,opcion_cuatro);

/* EXEC SQL WHENEVER SQLERROR DO sql_error(); */

parse_flag = 1;

/* EXEC SQL PREPARE S FROM :dyn_sts; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 1; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = ""; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )5; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = ( void *)dyn_sts; sqlstm.sqhstl[0] = (unsigned int )16384; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( void *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned int )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds;

Page 315: Orastat line command

sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); if (sqlca.sqlcode < 0) sql_error();}

parse_flag = 0;

/* EXEC SQL DECLARE C CURSOR FOR S; */

set_bind_variables();

/* ********** INICIAR LOOP PARA CORRER LA MISMA OPC ION ********** */

for ( nro_loop =0; nro_loop < 10000; nro_loop++){printf ("Procesando Consulta Nro [%d] \n",nro_loop) ;/* EXEC SQL OPEN C USING DESCRIPTOR bind_dp; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 1; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = ""; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )24; sqlstm.selerr = (unsigned short)1; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqcmod = (unsigned int )0; sqlstm.sqhstv[0] = ( void *)bind_dp; sqlstm.sqhstl[0] = (unsigned int )0;

Page 316: Orastat line command

sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( void *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned int )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); if (sqlca.sqlcode < 0) sql_error();}

process_select_list();esperar_seg (10);}

/* ************************************************ ************** *//* ------------------------------------------------ --------------------- */

}liberar_memoria();

func_menu_mostrar (version,opcion_nro);

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

liberar_memoria (){int i;

Page 317: Orastat line command

for (i = 0; i < MAX_ITEMS; i++){if (bind_dp->V[i] != (char *) 0)free(bind_dp->V[i]);free(bind_dp->I[i]); if (select_dp->V[i] != (char *) 0)

free(select_dp->V[i]);free(select_dp->I[i]); }

/* EXEC SQL WHENEVER SQLERROR CONTINUE; */

/* EXEC SQL CLOSE C; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 1; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )43; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);}

/* EXEC SQL COMMIT WORK RELEASE; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 1; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.iters = (unsigned int )1;

Page 318: Orastat line command

sqlstm.offset = (unsigned int )58; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);}

/* EXEC SQL WHENEVER SQLERROR DO sql_error(); */

return SI_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

oracle_connect_original ( char *datos_conexion ){

/* EXEC SQL BEGIN DECLARE SECTION; */

/* VARCHAR connectstring[256]; */ struct { unsigned short len; unsigned char arr[256] ; } connectstring;

/* EXEC SQL END DECLARE SECTION; */

strcpy ((char *) connectstring.arr,datos_conexion);connectstring.arr[strlen((char *) connectstring.arr )] = ASCII_FIN_LINEA;connectstring.len = (unsigned short )strlen((char * ) connectstring.arr);

/* EXEC SQL WHENEVER SQLERROR GOTO connect_error; * /

/* printf ("\nConnecting .....\n"); *//* EXEC SQL CONNECT :connectstring; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca);

Page 319: Orastat line command

sqlstm.sqlvsn = 12; sqlstm.arrsiz = 4; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.iters = (unsigned int )10; sqlstm.offset = (unsigned int )73; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = ( void *)&connectstrin g; sqlstm.sqhstl[0] = (unsigned int )258; sqlstm.sqhsts[0] = ( int )258; sqlstm.sqindv[0] = ( void *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned int )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlstm.sqlcmax = (unsigned int )100; sqlstm.sqlcmin = (unsigned int )2; sqlstm.sqlcincr = (unsigned int )1; sqlstm.sqlctimeout = (unsigned int )0; sqlstm.sqlcnowait = (unsigned int )0; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); if (sqlca.sqlcode < 0) goto connect_error;}

/* printf("\nConnected to ORACLE \n"); */return 0;

Page 320: Orastat line command

connect_error:fprintf(stderr,"Cannot Connect Default Link.\n");return -1;

}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

oracle_connect_new ( char *datos_conexion, char *us er_name, char *pass_word, char *net_conexion, char *aliasdb){/* EXEC SQL BEGIN DECLARE SECTION; */

/* VARCHAR username[256]; */ struct { unsigned short len; unsigned char arr[256] ; } username;

/* VARCHAR password[256]; */ struct { unsigned short len; unsigned char arr[256] ; } password;

/* VARCHAR connectstring[256]; */ struct { unsigned short len; unsigned char arr[256] ; } connectstring;

/* VARCHAR db_net_connect[256]; */ struct { unsigned short len; unsigned char arr[256] ; } db_net_connect;

/* VARCHAR db_alias_name[256]; */ struct { unsigned short len; unsigned char arr[256] ; } db_alias_name;

/* EXEC SQL END DECLARE SECTION; */

strcpy ((char *) connectstring.arr,datos_conexion);connectstring.arr[strlen((char *) connectstring.arr )] = ASCII_FIN_LINEA;connectstring.len = (unsigned short )strlen((char * ) connectstring.arr);

strcpy ((char *) username.arr,user_name);username.arr[strlen((char *) username.arr)] = ASCII _FIN_LINEA;username.len = (unsigned short )strlen((char *) use rname.arr);

Page 321: Orastat line command

strcpy ((char *) password.arr,pass_word);password.arr[strlen((char *) password.arr)] = ASCII _FIN_LINEA;password.len = (unsigned short )strlen((char *) pas sword.arr);

strcpy ((char *) db_net_connect.arr,net_conexion);db_net_connect.arr[strlen((char *) db_net_connect.a rr)] = ASCII_FIN_LINEA;db_net_connect.len = (unsigned short )strlen((char *) db_net_connect.arr);

strcpy ((char *) db_alias_name.arr,aliasdb);db_alias_name.arr[strlen((char *) db_alias_name.arr )] = ASCII_FIN_LINEA;db_alias_name.len = (unsigned short )strlen((char * ) db_alias_name.arr);

/* EXEC SQL WHENEVER SQLERROR GOTO connect_error; * /

/* printf ("\nConnecting .....\n"); *//*

printf ("User [%s] - Pass [%s] - Cone [%s] - Nomb [ %s] \n",username.arr,password.arr,db_net_connect.ar r,db_alias_name.arr);*/

/* EXEC SQL CONNECT :username IDENTIFIED BY :passwo rd AT :db_alias_name USING :db_net_connect; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 5; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.iters = (unsigned int )10; sqlstm.offset = (unsigned int )104; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = ( void *)&username; sqlstm.sqhstl[0] = (unsigned int )258; sqlstm.sqhsts[0] = ( int )258; sqlstm.sqindv[0] = ( void *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned int )0; sqlstm.sqadto[0] = (unsigned short )0;

Page 322: Orastat line command

sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqhstv[1] = ( void *)&password; sqlstm.sqhstl[1] = (unsigned int )258; sqlstm.sqhsts[1] = ( int )258; sqlstm.sqindv[1] = ( void *)0; sqlstm.sqinds[1] = ( int )0; sqlstm.sqharm[1] = (unsigned int )0; sqlstm.sqadto[1] = (unsigned short )0; sqlstm.sqtdso[1] = (unsigned short )0; sqlstm.sqhstv[2] = ( void *)&db_net_conne ct; sqlstm.sqhstl[2] = (unsigned int )258; sqlstm.sqhsts[2] = ( int )258; sqlstm.sqindv[2] = ( void *)0; sqlstm.sqinds[2] = ( int )0; sqlstm.sqharm[2] = (unsigned int )0; sqlstm.sqadto[2] = (unsigned short )0; sqlstm.sqtdso[2] = (unsigned short )0; sqlstm.sqhstv[4] = ( void *)&db_alias_nam e; sqlstm.sqhstl[4] = (unsigned int )258; sqlstm.sqhsts[4] = ( int )258; sqlstm.sqindv[4] = ( void *)0; sqlstm.sqinds[4] = ( int )0; sqlstm.sqharm[4] = (unsigned int )0; sqlstm.sqadto[4] = (unsigned short )0; sqlstm.sqtdso[4] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlstm.sqlcmax = (unsigned int )100; sqlstm.sqlcmin = (unsigned int )2; sqlstm.sqlcincr = (unsigned int )1; sqlstm.sqlctimeout = (unsigned int )0; sqlstm.sqlcnowait = (unsigned int )0; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);

Page 323: Orastat line command

if (sqlca.sqlcode < 0) goto connect_error;}

/* printf("\nConnected to ORACLE \n"); */

return 0;connect_error:

fprintf(stderr,"Cannot Connect Non-Default Link \n" );return -1;

}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

alloc_descriptors(size, max_vname_len, max_iname_le n)int size;int max_vname_len;int max_iname_len;

{int i;

if ((bind_dp = sqlald(size, max_vname_len, max_inam e_len)) == (SQLDA *) 0){fprintf(stderr,"Insuficient memory...");return -1; }

if ((select_dp = sqlald (size, max_vname_len, max_i name_len)) == (SQLDA *) 0){fprintf(stderr,"Insuficient memory...");return -1;}

select_dp->N = MAX_ITEMS;for (i = 0; i < MAX_ITEMS; i++)

{

Page 324: Orastat line command

bind_dp->I[i] = (short *) malloc(sizeof (short));select_dp->I[i] = (short *) malloc(sizeof(short));bind_dp->V[i] = (char *) malloc(1);select_dp->V[i] = (char *) malloc(1);}

return 0;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

set_bind_variables(){int i, n;

char bind_var [MAX_BIND_VARIABLE];

/* EXEC SQL WHENEVER SQLERROR DO sql_error(); */

bind_dp->N = MAX_ITEMS; /* EXEC SQL DESCRIBE BIND VARIABLES FOR S INTO bind _dp; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 5; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )139; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = ( void *)bind_dp; sqlstm.sqhstl[0] = (unsigned int )0; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( void *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned int )0;

Page 325: Orastat line command

sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); if (sqlca.sqlcode < 0) sql_error();}

if (bind_dp->F < 0){printf ("\nToo many variables to bind...\n", -bind_ dp->F, MAX_ITEMS);return SI_ERROR;}

bind_dp->N = bind_dp->F;for (i = 0; i < bind_dp->F; i++)

{printf ("\nEnter value for bind variable %.*s: ",(i nt)bind_dp->C[i], bind_dp->S[i]);fgets (bind_var, (int )sizeof(bind_var), stdin);n = (int )strlen(bind_var) - 1;bind_dp->L[i] = n;bind_dp->V[i] = (char *) realloc(bind_dp->V[i], (bi nd_dp->L[i] + 1));

strncpy(bind_dp->V[i], bind_var, n);

if ((strncmp(bind_dp->V[i], "NULL", 4) == 0) || (st rncmp(bind_dp->V[i], "null", 4) == 0))*bind_dp->I[i] = -1;

else*bind_dp->I[i] = 0;

bind_dp->T[i] = 1;}

Page 326: Orastat line command

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

process_select_list(){int null_ok;int nro_columna=0;int column_size=0;int si_proceso=0;int nro_bytes=0;int nro_funcion=0;char datos_auxi[MAX_LEN_DATOS_AUXI];

vaciar_cadena (datos_auxi,MAX_LEN_DATOS_AUXI);if ((strncmp(dyn_sts, "SELECT", 6) != 0) && (strncm p(dyn_sts, "select", 6) != 0))

{select_dp->F = 0;return NO_ERROR;}

select_dp->N = MAX_ITEMS;

/* EXEC SQL DESCRIBE SELECT LIST FOR S INTO select_ dp; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 5; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )158; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = ( void *)select_dp; sqlstm.sqhstl[0] = (unsigned int )0;

Page 327: Orastat line command

sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( void *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned int )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); if (sqlca.sqlcode < 0) sql_error();}

if (select_dp->F < 0){printf ("\nToo many select-list items (%d), maximum is %d\n", -(select_dp->F), MAX_ITEMS);return SI_ERROR;}

select_dp->N = select_dp->F;printf ("[ < %s > ] \n",dyn_title);for (nro_columna = 0; nro_columna < select_dp->F; n ro_columna++)

{sqlnul ( &(select_dp->T[nro_columna]), &(select_dp- >T[nro_columna]), &null_ok);column_size=col_size(dyn_size,nro_columna);select_dp->L[nro_columna]= column_size;select_dp->C[nro_columna]= column_size;select_dp->T[nro_columna]=1;}

for (nro_columna = 0; nro_columna < select_dp->F; n ro_columna++){select_dp->V[nro_columna] = (char *) realloc(select _dp->V[nro_columna], select_dp->L[nro_columna]);printf ("["); column_size=col_size(dyn_size,nro_columna);

Page 328: Orastat line command

procesar_encabe (column_size,nro_columna,dyn_column ); printf ("] "); }

printf ("\n");/* EXEC SQL WHENEVER NOT FOUND GOTO end_select_loop ; */

for ( ; ; ){/* Asegurandome que la estructura de Retorno este t otalmente vacia */vaciar_estructura ( select_dp );

/* Tomando una fila (ROW) de la base de datos *//* EXEC SQL FETCH C USING DESCRIPTOR select_dp; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 5; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )177; sqlstm.selerr = (unsigned short)1; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqfoff = ( int )0; sqlstm.sqfmod = (unsigned int )2; sqlstm.sqhstv[0] = ( void *)select_dp; sqlstm.sqhstl[0] = (unsigned int )0; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( void *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned int )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl;

Page 329: Orastat line command

sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); if (sqlca.sqlcode == 1403) goto end_select_loop; if (sqlca.sqlcode < 0) sql_error();}

/* Procesando las "i" columnas de datos de la fila retornada */for (nro_columna = 0; nro_columna < select_dp->F; n ro_columna++)

{printf (" ");/* ------------------------------------------------ ----------------------------- */column_size=col_size(dyn_size,nro_columna);/* ------------------------------------------------ ----------------------------- */si_proceso = procesar_columna_funcion (dyn_proc_fun c, nro_columna, &nro_funcion);if ( si_proceso == SI_PROCESAR)

{vaciar_cadena (datos_auxi,strlen(datos_auxi));strcpy (datos_auxi,funcion_columna (nro_bytes, (cha r *)select_dp->V[nro_columna], nro_funcion));procesar_cadena (column_size,datos_auxi);}

else{/* ------------------------------------------------ ----------------------------- */procesar_cadena (column_size,(char *)select_dp->V[n ro_columna]);/* ------------------------------------------------ ----------------------------- */}

printf (" "); }

printf ("\n");}

end_select_loop:return NO_ERROR;

Page 330: Orastat line command

}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

cargar_sentencia (int version, int sentencia, char *opcion_uno, char *opcion_dos, char *opcion_tres , char *opcion_ cuatro)

{

strcpy (dyn_column,func_dyn_column_set (version,sen tencia));strcpy (dyn_title,func_dyn_title_set (version,sente ncia));strcpy (dyn_sts,func_dyn_statement_set (version,sen tencia,opcion_uno,opcion_dos,opcion_tres,opcion_cua tro));strcpy (dyn_size,func_dyn_size_set (version,sentenc ia));strcpy (dyn_proc_func, func_dyn_proc_func_set (vers ion,sentencia));

/* ------------------------------------------------ ----------------------------- *//* COMPROBACION DE LAS VARIABLES RETORNADAS EN LOS CASE *//* SEGUN LA OPCION ELEGIDA Y LA VERSION DE ORACLE *//* ------------------------------------------------ ----------------------------- */

/*printf ("Proc Func [%s] \n",dyn_proc_func);printf ("Column Set [%s] \n",dyn_column);printf ("Column Size[%s] \n",dyn_size);

*/

/*printf ("Statement \n [\n%s] \n",dyn_sts);

*/

if (strlen (dyn_sts) >= MAX_STMT)printf ("Max Statement large [%d] | Actual Statemen t large [%d] \n",MAX_STMT,strlen(dyn_sts));

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

sql_error(){/* int i; */

Page 331: Orastat line command

printf ("\n\n%.70s\n",sqlca.sqlerrm.sqlerrmc);if (parse_flag)

printf("\n Error de Oracle... \n",sqlca.sqlerrd[4]) ;/* EXEC SQL WHENEVER SQLERROR CONTINUE; */

/* EXEC SQL ROLLBACK WORK; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 5; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )196; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);}

liberar_memoria();exit(1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

int version_oracle (){char Version[10];int conta=0;int pos=0;int caracter=0;int nro_puntos=0;

Page 332: Orastat line command

/* EXEC SQL BEGIN DECLARE SECTION; */

/* VARCHAR version [256]; */ struct { unsigned short len; unsigned char arr[256] ; } version;

/* EXEC SQL END DECLARE SECTION; */

vaciar_cadena (version.arr,MAX_VERSION_LEN);for ( ; ; )

{/* EXEC SQL WHENEVER NOT FOUND DO break; */

/* EXEC SQL AT :nomb_001 SELECT ltrim(lpad(banner,7 0))INTO :versionFROM V$VERSIONWHERE banner like '%Oracle%'; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 5; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = "select ltrim(lpad(banner,70)) into :b1 from V$VERSION wher\e banner like '%Oracle%'"; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )211; sqlstm.selerr = (unsigned short)1; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = ( void *)&version; sqlstm.sqhstl[0] = (unsigned int )258; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( void *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned int )0;

Page 333: Orastat line command

sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqhstv[1] = ( void *)&nomb_001; sqlstm.sqhstl[1] = (unsigned int )258; sqlstm.sqhsts[1] = ( int )0; sqlstm.sqindv[1] = ( void *)0; sqlstm.sqinds[1] = ( int )0; sqlstm.sqharm[1] = (unsigned int )0; sqlstm.sqadto[1] = (unsigned short )0; sqlstm.sqtdso[1] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); if (sqlca.sqlcode == 1403) break;}

break; /* SOLO ME INTERESA UN REGISTRO */}

for ( pos =0; pos < version.len; pos ++){caracter = version.arr[pos];Version[conta]=ASCII_FIN_LINEA;if ( nro_puntos < 3 )

{switch (caracter)

{case 48:case 49:case 50:case 51:case 52:case 53:

Page 334: Orastat line command

case 54:case 55:case 56:case 57:

Version[conta]=caracter;conta++;Version[conta]=ASCII_FIN_LINEA;break;

case 46:/* Version[conta]=caracter;conta++; */nro_puntos++;Version[conta]=ASCII_FIN_LINEA;break;

default:conta=0;

}}

}return (atoi (Version));

}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

int db_block_size (){int block_size=0;/* EXEC SQL BEGIN DECLARE SECTION; */

/* VARCHAR data_block_size [20]; */ struct { unsigned short len; unsigned char arr[20]; } data_block_size;

/* EXEC SQL END DECLARE SECTION; */

vaciar_cadena (data_block_size.arr,20);for ( ; ; )

{

Page 335: Orastat line command

/* EXEC SQL WHENEVER NOT FOUND DO break; */

/* EXEC SQL AT :nomb_001 SELECT valueINTO :data_block_sizeFROM V$PARAMETERWHERE NAME IN ('db_block_size'); */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 5; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = "select value into :b1 from V$PARA METER where NAME in ('db_\block_size')"; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )234; sqlstm.selerr = (unsigned short)1; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = ( void *)&data_block_ size; sqlstm.sqhstl[0] = (unsigned int )22; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( void *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned int )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqhstv[1] = ( void *)&nomb_001; sqlstm.sqhstl[1] = (unsigned int )258; sqlstm.sqhsts[1] = ( int )0; sqlstm.sqindv[1] = ( void *)0; sqlstm.sqinds[1] = ( int )0; sqlstm.sqharm[1] = (unsigned int )0; sqlstm.sqadto[1] = (unsigned short )0; sqlstm.sqtdso[1] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv;

Page 336: Orastat line command

sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); if (sqlca.sqlcode == 1403) break;}

break; /* SOLO ME INTERESA UN REGISTRO */}

block_size = atoi (data_block_size.arr);return (block_size);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

int db_tablspace_ini_ext_size (void *punt_tbl_name){int ini_ext_size=0;

/* EXEC SQL BEGIN DECLARE SECTION; */

/* VARCHAR data_ini_ext_size [20]; */ struct { unsigned short len; unsigned char arr[20]; } data_ini_ext_size;

/* VARCHAR tablespace_name[100]; */ struct { unsigned short len; unsigned char arr[100] ; } tablespace_name;

/* EXEC SQL END DECLARE SECTION; */

vaciar_cadena (data_ini_ext_size.arr,20);vaciar_cadena (tablespace_name.arr,100);

Page 337: Orastat line command

strcpy (tablespace_name.arr, (char *) punt_tbl_name );tablespace_name.len=(int )strlen ((char *) punt_tbl _name);

for ( ; ; ){/* EXEC SQL WHENEVER NOT FOUND DO break; */

/* EXEC SQL AT :nomb_001 SELECT INITIAL_EXTENTINTO :data_ini_ext_sizeFROM dba_tablespacesWHERE tablespace_name=:tablespace_name; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 5; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = "select INITIAL_EXTENT into :b1 fr om dba_tablespaces where \tablespace_name=:b2"; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )257; sqlstm.selerr = (unsigned short)1; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = ( void *)&data_ini_ex t_size; sqlstm.sqhstl[0] = (unsigned int )22; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( void *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned int )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqhstv[1] = ( void *)&tablespace_ name; sqlstm.sqhstl[1] = (unsigned int )102; sqlstm.sqhsts[1] = ( int )0;

Page 338: Orastat line command

sqlstm.sqindv[1] = ( void *)0; sqlstm.sqinds[1] = ( int )0; sqlstm.sqharm[1] = (unsigned int )0; sqlstm.sqadto[1] = (unsigned short )0; sqlstm.sqtdso[1] = (unsigned short )0; sqlstm.sqhstv[2] = ( void *)&nomb_001; sqlstm.sqhstl[2] = (unsigned int )258; sqlstm.sqhsts[2] = ( int )0; sqlstm.sqindv[2] = ( void *)0; sqlstm.sqinds[2] = ( int )0; sqlstm.sqharm[2] = (unsigned int )0; sqlstm.sqadto[2] = (unsigned short )0; sqlstm.sqtdso[2] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); if (sqlca.sqlcode == 1403) break;}

break; /* SOLO ME INTERESA UN REGISTRO */}

ini_ext_size = atoi (data_ini_ext_size.arr);return (ini_ext_size);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *db_session_sid_locked (void *punt_kaddr){static char dato_1[MAX_LEN_VARCHAR];

Page 339: Orastat line command

int pos;

/* EXEC SQL BEGIN DECLARE SECTION; */

/* VARCHAR sid_ses[128]; */ struct { unsigned short len; unsigned char arr[128] ; } sid_ses;

char kaddr[10];short var_indic;

/* EXEC SQL END DECLARE SECTION; */

vaciar_cadena (kaddr,10);vaciar_cadena (sid_ses.arr,128);vaciar_cadena (dato_1, MAX_LEN_VARCHAR);

strcpy (kaddr,pasar_amayus( (char *) punt_kaddr) );kaddr[(int)strlen((char *)punt_kaddr)]=ASCII_FIN_LI NEA;for ( ; ; )

{/* EXEC SQL WHENEVER NOT FOUND DO break; */

/* EXEC SQL AT :nomb_001 SELECT sidINTO :sid_ses INDICATOR :var_indicFROM V$SESSIONWHERE LOCKWAIT = :kaddr; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 5; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = "select sid into :b1:b2 from V$SES SION where LOCKWAIT=:b3"; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )284; sqlstm.selerr = (unsigned short)1; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca;

Page 340: Orastat line command

sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = ( void *)&sid_ses; sqlstm.sqhstl[0] = (unsigned int )130; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( void *)&var_indic; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned int )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqhstv[1] = ( void *)kaddr; sqlstm.sqhstl[1] = (unsigned int )10; sqlstm.sqhsts[1] = ( int )0; sqlstm.sqindv[1] = ( void *)0; sqlstm.sqinds[1] = ( int )0; sqlstm.sqharm[1] = (unsigned int )0; sqlstm.sqadto[1] = (unsigned short )0; sqlstm.sqtdso[1] = (unsigned short )0; sqlstm.sqhstv[2] = ( void *)&nomb_001; sqlstm.sqhstl[2] = (unsigned int )258; sqlstm.sqhsts[2] = ( int )0; sqlstm.sqindv[2] = ( void *)0; sqlstm.sqinds[2] = ( int )0; sqlstm.sqharm[2] = (unsigned int )0; sqlstm.sqadto[2] = (unsigned short )0; sqlstm.sqtdso[2] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); if (sqlca.sqlcode == 1403) break;}

Page 341: Orastat line command

break; /* SOLO ME INTERESA UN REGISTRO */}

/*printf ("Dato [%s] \n",sid_ses.arr);

*/if ( ( var_indic != 0 ) )

{for (pos=0; pos < 3 ; pos++)

sid_ses.arr[pos]=ASCII_PUNTO;sid_ses.arr[pos]=ASCII_FIN_LINEA;}

elseif ( strlen (sid_ses.arr) == 0 )

{for (pos=0; pos < 3 ; pos++)

sid_ses.arr[pos]=ASCII_PUNTO;sid_ses.arr[pos]=ASCII_FIN_LINEA;}

strcpy (dato_1,sid_ses.arr);return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *db_object_owner_name (long objeto_id){int block_size=0;int pos=0;static char dato_1[MAX_LEN_VARCHAR];

/* EXEC SQL BEGIN DECLARE SECTION; */

/* VARCHAR objeto_owner_name [128]; */ struct { unsigned short len; unsigned char arr[128] ; } objeto_owner_name;

long numero;short var_indic;

/* EXEC SQL END DECLARE SECTION; */

Page 342: Orastat line command

numero = objeto_id;vaciar_cadena (objeto_owner_name.arr,128);vaciar_cadena (dato_1,MAX_LEN_VARCHAR);for ( ; ; )

{/* EXEC SQL WHENEVER NOT FOUND DO break; */

/* EXEC SQL AT :nomb_001 SELECT ltrim(owner)||'.'|| ltrim(object_name)INTO :objeto_owner_name INDICATOR :var_indicFROM ALL_OBJECTSWHERE OBJECT_ID= :numero; */

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 5; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = "select ((ltrim(owner)||'.')||ltrim (object_name)) into :b1:b\2 from ALL_OBJECTS where OBJECT_ID=:b3"; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )311; sqlstm.selerr = (unsigned short)1; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = ( void *)&objeto_owne r_name; sqlstm.sqhstl[0] = (unsigned int )130; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( void *)&var_indic; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned int )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqhstv[1] = ( void *)&numero; sqlstm.sqhstl[1] = (unsigned int )sizeof(long);

Page 343: Orastat line command

sqlstm.sqhsts[1] = ( int )0; sqlstm.sqindv[1] = ( void *)0; sqlstm.sqinds[1] = ( int )0; sqlstm.sqharm[1] = (unsigned int )0; sqlstm.sqadto[1] = (unsigned short )0; sqlstm.sqtdso[1] = (unsigned short )0; sqlstm.sqhstv[2] = ( void *)&nomb_001; sqlstm.sqhstl[2] = (unsigned int )258; sqlstm.sqhsts[2] = ( int )0; sqlstm.sqindv[2] = ( void *)0; sqlstm.sqinds[2] = ( int )0; sqlstm.sqharm[2] = (unsigned int )0; sqlstm.sqadto[2] = (unsigned short )0; sqlstm.sqtdso[2] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); if (sqlca.sqlcode == 1403) break;}

break; /* SOLO ME INTERESA UN REGISTRO */}

if ( ( var_indic != 0 ) ){for (pos=0; pos < 10 ; pos++)

objeto_owner_name.arr[pos]=ASCII_PUNTO;objeto_owner_name.arr[pos]=ASCII_FIN_LINEA;}

elseif ( ( strlen (objeto_owner_name.arr) == 0 ) )

{for (pos=0; pos < 10 ; pos++)

Page 344: Orastat line command

objeto_owner_name.arr[pos]=ASCII_PUNTO;objeto_owner_name.arr[pos]=ASCII_FIN_LINEA;}

strcpy (dato_1, objeto_owner_name.arr);return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *db_object_type (long objeto_id){int block_size=0;static char dato_1[MAX_LEN_VARCHAR];int pos=0;

/* EXEC SQL BEGIN DECLARE SECTION; */

/* VARCHAR tipo_objeto [128]; */ struct { unsigned short len; unsigned char arr[128] ; } tipo_objeto;

long numero;short var_indic;

/* EXEC SQL END DECLARE SECTION; */

numero = objeto_id;

vaciar_cadena (tipo_objeto.arr,128);vaciar_cadena (dato_1,MAX_LEN_VARCHAR);

for ( ; ; ){/* EXEC SQL WHENEVER NOT FOUND DO break; */

/* EXEC SQL AT :nomb_001 SELECT ltrim(object_type)INTO :tipo_objeto INDICATOR :var_indicFROM ALL_OBJECTSWHERE OBJECT_ID=:numero; */

Page 345: Orastat line command

{ struct sqlexd sqlstm; sqlorat((void **)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 5; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = "select ltrim(object_type) into :b1 :b2 from ALL_OBJECTS whe\re OBJECT_ID=:b3"; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )338; sqlstm.selerr = (unsigned short)1; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = ( void *)&tipo_objeto ; sqlstm.sqhstl[0] = (unsigned int )130; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( void *)&var_indic; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned int )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqhstv[1] = ( void *)&numero; sqlstm.sqhstl[1] = (unsigned int )sizeof(long); sqlstm.sqhsts[1] = ( int )0; sqlstm.sqindv[1] = ( void *)0; sqlstm.sqinds[1] = ( int )0; sqlstm.sqharm[1] = (unsigned int )0; sqlstm.sqadto[1] = (unsigned short )0; sqlstm.sqtdso[1] = (unsigned short )0; sqlstm.sqhstv[2] = ( void *)&nomb_001; sqlstm.sqhstl[2] = (unsigned int )258; sqlstm.sqhsts[2] = ( int )0; sqlstm.sqindv[2] = ( void *)0; sqlstm.sqinds[2] = ( int )0; sqlstm.sqharm[2] = (unsigned int )0; sqlstm.sqadto[2] = (unsigned short )0; sqlstm.sqtdso[2] = (unsigned short )0;

Page 346: Orastat line command

sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); if (sqlca.sqlcode == 1403) break;}

break; /* SOLO ME INTERESA UN REGISTRO */}

if ( var_indic != 0 ){for (pos=0; pos < 10 ; pos++)

tipo_objeto.arr[pos]=ASCII_PUNTO;}

elseif ( ( strlen (tipo_objeto.arr) == 0 ) )

{for (pos=0; pos < 10 ; pos++)

tipo_objeto.arr[pos]=ASCII_PUNTO;}

strcpy (dato_1,tipo_objeto.arr);return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ----------------------

Page 347: Orastat line command

--------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: orastat01.aps ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***���� ���ÿÿ ��ÿÿ ������������������%���$���H�W�B���ÿÿ �������� ���������àB��h:\orastat\orastat0\orastat01.rc ����

Page 348: Orastat line command

���4���T�E�X�T�I �N�C�L�U�D�E���ÿÿ ������0� ���������resource1.h �����4���T�E�X�T�I �N�C�L�U�D�E���ÿÿ ������0� ���������#include "afxres.h"�������4���T�E�X�T�I �N�C�L�U�D�E���ÿÿ ������0� ���������

��X?��$���H�W�B���ÿÿÈ�����0� ���������! �����! �resource1.h ����_APS_NEXT_RESOURCE_VALUE�101� ��_APS_NEXT_COMMAND_VALUE�40001 ���_APS_NEXT_CONTROL_VALUE�1001���_APS_NEXT_SYMED_VALUE�101�

Page 349: Orastat line command

��!�����! �afxres.h ����! �winres.h ����VS_VERSION_INFO�1����IDC_STATIC�(-1) �) ��!�����CBRS_ALIGN_LEFT�0x1000L �/ ��CBRS_ALIGN_TOP�0x2000L �0��CBRS_ALIGN_RIGHT�0x4000L �1��CBRS_ALIGN_BOTTOM�0x8000L �2��CBRS_ALIGN_ANY�0xF000L �3��CBRS_BORDER_LEFT�0x0100L �5��CBRS_BORDER_TOP�0x0200L �6��CBRS_BORDER_RIGHT�0x0400L �7��CBRS_BORDER_BOTTOM�0x0800L �8��CBRS_BORDER_ANY�0x0F00L �9��CBRS_TOOLTIPS�0x0010L �; ��CBRS_FLYBY�0x0020L �<��CBRS_FLOAT_MULTI�0x0040L �=��CBRS_BORDER_3D�0x0080L �>��CBRS_HIDE_INPLACE�0x0008L �?��CBRS_SIZE_DYNAMIC�0x0004L �@��CBRS_SIZE_FIXED�0x0002L �A��CBRS_FLOATING�0x0001L �B��CBRS_GRIPPER�0x00400000L �D��CBRS_ORIENT_HORZ�(CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM)�F��CBRS_ORIENT_VERT�(CBRS_ALIGN_LEFT|CBRS_ALIGN_RIGHT)�G��CBRS_ORIENT_ANY�(CBRS_ORIENT_HORZ|CBRS_ORIENT_VERT)�H��CBRS_ALL�0x0040FFFFL �J��CBRS_NOALIGN�0x00000000L �O��CBRS_LEFT�(CBRS_ALIGN_LEFT|CBRS_BORDER_RIGHT)�P��CBRS_TOP�(CBRS_ALIGN_TOP|CBRS_BORDER_BOTTOM)�Q��CBRS_RIGHT�(CBRS_ALIGN_RIGHT|CBRS_BORDER_LEFT)�R��CBRS_BOTTOM�(CBRS_ALIGN_BOTTOM|CBRS_BORDER_TOP)�S��ID_INDICATOR_EXT�0xE700 �Y��ID_INDICATOR_CAPS�0xE701 �Z��ID_INDICATOR_NUM�0xE702 �[ ��ID_INDICATOR_SCRL�0xE703 �\ ��ID_INDICATOR_OVR�0xE704 �] ��ID_INDICATOR_REC�0xE705 �^��ID_INDICATOR_KANA�0xE706 �_��ID_SEPARATOR�0�a��AFX_IDS_APP_TITLE �0xE000 �“ ��AFX_IDS_IDLEMESSAGE�0xE001 �• ��AFX_IDS_HELPMODEMESSAGE�0xE002 �—��AFX_IDS_APP_TITLE_EMBEDDING�0xE003 �™��AFX_IDS_COMPANY_NAME�0xE004 �› ��AFX_IDS_OBJ_TITLE_INPLACE�0xE005 ����ID_FILE_NEW�0xE100 �£��ID_FILE_OPEN�0xE101 �¤��ID_FILE_CLOSE �0xE102 �¥��ID_FILE_SAVE �0xE103 �¦ ��ID_FILE_SAVE_AS �0xE104 �§��ID_FILE_PAGE_SETUP�0xE105 �¨ ��ID_FILE_PRINT_SETUP �0xE106 �©��ID_FILE_PRINT �0xE107 �ª ��ID_FILE_PRINT_DIRECT �0xE108 �«��ID_FILE_PRINT_PREVIEW �0xE109�¬��ID_FILE_UPDATE�0xE10A���ID_FILE_SAVE_COPY_AS�0xE10B�®��ID_FILE_SEND_MAIL �0xE10C�¯��ID_FILE_NEW_FRAME�0xE10D�° ��ID_FILE_MRU_FIRST �0xE110 �² ��ID_FILE_MRU_FILE1�0xE110 �³ ��ID_FILE_MRU_FILE2 �0xE111 �´ ��ID_FILE_MRU_FILE3 �0xE112 �µ��ID_FILE_MRU_FILE4 �0xE113 �¶��ID_FILE_MRU_FILE5 �0xE114 �· ��ID_FILE_MRU_FILE6�0xE115 �¸ ��ID_FILE_MRU_FILE7 �0xE116 �¹ ��ID_FILE_MRU_FILE8 �0xE117 �º ��ID_FILE_MRU_FILE9 �0xE118 �»��ID_FILE_MRU_FILE10 �0xE119 �¼��ID_FILE_MRU_FILE11�0xE11A�½��ID_FILE_MRU_FILE12 �0xE11B�¾��ID_FILE_MRU_FILE13 �0xE11C�¿��ID_FILE_MRU_FILE14 �0xE11D�À��ID_FILE_MRU_FILE15 �0xE11E�Á��ID_FILE_MRU_FILE16�0xE11F�Â��ID_FILE_MRU_LAST�0xE11F�Ã��ID_EDIT_CLEAR�0xE120 �Æ��ID_EDIT_CLEAR_ALL�0xE121 �Ç��ID_EDIT_COPY�0xE122 �È��ID_EDIT_CUT�0xE123 �É��ID_EDIT_FIND �0xE124 �Ê��ID_EDIT_PASTE�0xE125 �Ë��ID_EDIT_PASTE_LINK �0xE126 �Ì ��ID_EDIT_PASTE_SPECIAL�0xE127 �Í ��ID_EDIT_REPEAT�0xE128 �Î ��ID_EDIT_REPLACE�0xE129 �Ï ��ID_EDIT_SELECT_ALL �0xE12A�Ð��ID_EDIT_UNDO�0xE12B�Ñ��ID_EDIT_REDO�0xE12C�Ò��ID_WINDOW_NEW�0xE130 �Õ��ID_WINDOW_ARRANGE�0xE131 �Ö��ID_WINDOW_CASCADE�0xE132 �×��ID_WINDOW_TILE_HORZ�0xE133 �Ø��ID_WINDOW_TILE_VERT�0xE134 �Ù��ID_WINDOW_SPLIT�0xE135 �Ú��ID_APP_ABOUT�0xE140 �â��ID_APP_EXIT �0xE141 �ã��ID_HELP_INDEX�0xE142 �ä��ID_HELP_FINDER�0xE143 �å��ID_HELP_USING�0xE144 �æ��ID_CONTEXT_HELP�0xE145 �ç��ID_HELP�0xE146 �é��ID_DEFAULT_HELP�0xE147 �ê��ID_NEXT_PANE�0xE150 �í ��ID_PREV_PANE�0xE151 �î ��ID_FORMAT_FONT�0xE160 �ñ��ID_OLE_INSERT_NEW�0xE200 �ô��ID_OLE_EDIT_LINKS �0xE201 �õ��ID_OLE_EDIT_CONVERT�0xE202 �ö��ID_OLE_EDIT_CHANGE_ICON�0xE203 �÷��ID_OLE_EDIT_PROPERTIES�0xE204 �ø��ID_OLE_VERB_FIRST�0xE210 �ù��AFX_ID_PREVIEW_CLOSE�0xE300�ÿ��AFX_ID_PREVIEW_NUMPAGE�0xE301 ����AFX_ID_PREVIEW_NEXT�0xE302 ����AFX_ID_PREVIEW_PREV�0xE303 ����AFX_ID_PREVIEW_PRINT�0xE304 ����AFX_ID_PREVIEW_ZOOMIN�0xE305 ����AFX_ID_PREVIEW_ZOOMOUT�0xE306 ����ID_VIEW_TOOLBAR�0xE800 ����ID_VIEW_STATUS_BAR�0xE801 � ��ID_VIEW_REBAR�0xE804 ���ID_VIEW_AUTOARRANGE�0xE805 ���ID_VIEW_SMALLICON�0xE810 ���ID_VIEW_LARGEICON�0xE811 ����ID_VIEW_LIST �0xE812 ����ID_VIEW_DETAILS�0xE813 ����ID_VIEW_LINEUP�0xE814 ����ID_VIEW_BYNAME�0xE815 ����AFX_ID_VIEW_MINIMUM�ID_VIEW_SMALLICON����AFX_ID_VIEW_MAXIMUM�ID_VIEW_BYNAME����ID_RECORD_FIRST�0xE900 ����ID_RECORD_LAST�0xE901 ����ID_RECORD_NEXT�0xE902 ����ID_RECORD_PREV�0xE903 ����IDC_STATIC�

(-1)�#��AFX_IDS_SCSIZE�0xEF00�, ��AFX_IDS_SCMOVE�0xEF01�-��AFX_IDS_SCMINIMIZE �0xEF02�. ��AFX_IDS_SCMAXIMIZE�0xEF03�/ ��AFX_IDS_SCNEXTWINDOW�0xEF04�0��AFX_IDS_SCPREVWINDOW�0xEF05�1��AFX_IDS_SCCLOSE�0xEF06�2��AFX_IDS_SCRESTORE�0xEF12�3��AFX_IDS_SCTASKLIST�0xEF13�4��AFX_IDS_MDICHILD�0xEF1F�6��AFX_IDS_DESKACCESSORY�0xEFDA�8��AFX_IDS_OPENFILE�0xF000 �

; ��AFX_IDS_SAVEFILE�0xF001 �<��AFX_IDS_ALLFILTER �0xF002 �=��AFX_IDS_UNTITLED�0xF003 �>��AFX_IDS_SAVEFILECOPY�0xF004 �?��AFX_IDS_PREVIEW_CLOSE�0xF005�@��AFX_IDS_UNNAMED_FILE�0xF006 �A��AFX_IDS_HIDE�0xF011 �B��AFX_IDP_NO_ERROR_AVAILABLE�0xF020 �E��AFX_IDS_NOT_SUPPORTED_EXCEPTION�0xF021 �F��AFX_IDS

Page 350: Orastat line command

_RESOURCE_EXCEPTION�0xF022 �G��AFX_IDS_MEMORY_EXCEPTION�0xF023 �H��AFX_IDS_USER_EXCEPTION�0xF024 �I ��AFX_IDS_PRINTONPORT�0xF040 �L��AFX_IDS_ONEPAGE�0xF041 �M��AFX_IDS_TWOPAGE�0xF042 �N��AFX_IDS_PRINTPAGENUM�0xF043 �O��AFX_IDS_PREVIEWPAGEDESC�0xF044 �P��AFX_IDS_PRINTDEFAULTEXT�0xF045 �Q��AFX_IDS_PRINTDEFAULT�0xF046 �R��AFX_IDS_PRINTFILTER �0xF047 �S��AFX_IDS_PRINTCAPTION�0xF048 �T��AFX_IDS_PRINTTOFILE�0xF049 �U��AFX_IDS_OBJECT_MENUITEM�0xF080 �

Y��AFX_IDS_EDIT_VERB�0xF081 �Z��AFX_IDS_ACTIVATE_VERB�0xF082 �

[ ��AFX_IDS_CHANGE_LINK�0xF083 �\ ��AFX_IDS_AUTO�0xF084 �] ��AFX_IDS_MANUAL�0xF085 �^��AFX_IDS_FROZEN�0xF086 �_��AFX_IDS_ALL_FILES �0xF087 �` ��AFX_IDS_SAVE_MENU�0xF088 �b��AFX_IDS_UPDATE_MENU�0xF089 �c��AFX_IDS_SAVE_AS_MENU�0xF08A�d��AFX_IDS_SAVE_COPY_AS_MENU�0xF08B�e��AFX_IDS_EXIT_MENU�0xF08C�f ��AFX_IDS_UPDATING_ITEMS�0xF08D�g��AFX_IDS_METAFILE_FORMAT�0xF08E�i ��AFX_IDS_DIB_FORMAT�0xF08F �j ��AFX_IDS_BITMAP_FORMAT�0xF090 �k��AFX_IDS_LINKSOURCE_FORMAT�0xF091 �l ��AFX_IDS_EMBED_FORMAT�0xF092 �m��AFX_IDS_PASTELINKEDTYPE�0xF094 �o��AFX_IDS_UNKNOWNTYPE�0xF095 �p��AFX_IDS_RTF_FORMAT�0xF096 �q��AFX_IDS_TEXT_FORMAT�0xF097 �r ��AFX_IDS_INVALID_CURRENCY�0xF098 �t ��AFX_IDS_INVALID_DATETIME�0xF099 �u��AFX_IDS_INVALID_DATETIMESPAN�0xF09A�v��AFX_IDP_INVALID_FILENAME�0xF100 �y��AFX_IDP_FAILED_TO_OPEN_DOC�0xF101 �z��AFX_IDP_FAILED_TO_SAVE_DOC�0xF102 �{ ��AFX_IDP_ASK_TO_SAVE�0xF103 �| ��AFX_IDP_FAILED_TO_CREATE_DOC�0xF104 �} ��AFX_IDP_FILE_TOO_LARGE�0xF105 �~��AFX_IDP_FAILED_TO_START_PRINT�0xF106 ����AFX_IDP_FAILED_TO_LAUNCH_HELP�0xF107 �€��AFX_IDP_INTERNAL_FAILURE�0xF108 ����AFX_IDP_COMMAND_FAILURE�0xF109 �‚ ��AFX_IDP_FAILED_MEMORY_ALLOC�0xF10A�ƒ��AFX_IDP_UNREG_DONE�0xF10B�„ ��AFX_IDP_UNREG_FAILURE�0xF10C�…��AFX_IDP_DLL_LOAD_FAILED�0xF10D�†��AFX_IDP_DLL_BAD_VERSION�0xF10E�‡��AFX_IDP_PARSE_INT�0xF110 �Š��AFX_IDP_PARSE_REAL�0xF111 �‹��AFX_IDP_PARSE_INT_RANGE�0xF112 �Œ��AFX_IDP_PARSE_REAL_RANGE�0xF113 ����AFX_IDP_PARSE_STRING_SIZE�0xF114 �Ž��AFX_IDP_PARSE_RADIO_BUTTON�0xF115 ����

AFX_IDP_PARSE_BYTE�0xF116 ����AFX_IDP_PARSE_UINT�0xF117 �‘ ��AFX_IDP_PARSE_DATETIME�0xF118 �’ ��AFX_IDP_PARSE_CURRENCY�0xF119 �“ ��AFX_IDP_PARSE_GUID�0xF11A�” ��AFX_IDP_PARSE_TIME�0xF11B�• ��AFX_IDP_PARSE_DATE�0xF11C�–��AFX_IDP_FAILED_INVALID_FORMAT�0xF120 �™��AFX_IDP_FAILED_INVALID_PATH �0xF121 �š��AFX_IDP_FAILED_DISK_FULL �0xF122 �› ��AFX_IDP_FAILED_ACCESS_READ�0xF123 �œ��AFX_IDP_FAILED_ACCESS_WRITE�0xF124 ����AFX_IDP_FAILED_IO_ERROR_READ�0xF125�ž��AFX_IDP_FAILED_IO_ERROR_WRITE�0xF126 �Ÿ��AFX_IDP_SCRIPT_ERROR�0xF130 �¢��AFX_IDP_SCRIPT_DISPATCH_EXCEPTION�0xF131 �£��AFX_IDP_STATIC_OBJECT�0xF180 �¦ ��AFX_IDP_FAILED_TO_CONNECT�0xF181 �§��AFX_IDP_SERVER_BUSY�0xF182 �¨ ��AFX_IDP_BAD_VERB�0xF183 �©��AFX_IDS_NOT_DOCOBJECT�0xF184 �ª ��AFX_IDP_FAILED_TO_NOTIFY�0xF185 �«��AFX_IDP_FAILED_TO_LAUNCH�0xF186 �¬��AFX_IDP_ASK_TO_UPDATE�0xF187 ���AFX_IDP_FAILED_TO_UPDATE�0xF188 �®��AFX_IDP_FAILED_TO_REGISTER�0xF189 �¯��AFX_IDP_FAILED_TO_AUTO_REGISTER�0xF18A�°��AFX_IDP_FAILED_TO_CONVERT�0xF18B�±��AFX_IDP_GET_NOT_SUPPORTED�0xF18C�² ��AFX_IDP_SET_NOT_SUPPORTED�0xF18D�³ ��AFX_IDP_ASK_TO_DISCARD�0xF18E�´ ��AFX_IDP_FAILED_TO_CREATE�0xF18F �µ��AFX_IDP_FAILED_MAPI_LOAD�0xF190 �¸ ��AFX_IDP_INVALID_MAPI_DLL �0xF191 �¹ ��AFX_IDP_FAILED_MAPI_SEND�0xF192 �º ��AFX_IDP_FILE_NONE�0xF1A0�¼��AFX_IDP_FILE_GENERIC�0xF1A1�½��AFX_IDP_FILE_NOT_FOUND�0xF1A2�¾��AFX_IDP_FILE_BAD_PATH�0xF1A3�¿��AFX_IDP_FILE_TOO_MANY_OPEN�0xF1A4�À��AFX_IDP_FILE_ACCESS_DENIED�0xF1A5�Á��AFX_IDP_FILE_INVALID_FILE �0xF1A6�Â��AFX_IDP_FILE_REMOVE_CURRENT�0xF1A7�Ã��AFX_IDP_FILE_DIR_FULL�0xF1A8�Ä��AFX_IDP_FILE_BAD_SEEK�0xF1A9�Å��AFX_IDP_FILE_HARD_IO�0xF1AA�Æ��AFX_IDP_FILE_SHARING�0xF1AB�Ç��AFX_IDP_FILE_LOCKING�0xF1AC�È��AFX_IDP_FILE_DISKFULL �0xF1AD�É��AFX_IDP_FILE_EOF�0xF1AE�Ê��AFX_IDP_ARCH_NONE�0xF1B0�Ì ��AFX_IDP_ARCH_GENERIC�0xF1B1�Í ��AFX_IDP_ARCH_READONLY�0xF1B2�Î ��AFX_IDP_ARCH_ENDOFFILE�0xF1B3�Ï ��AFX_IDP_ARCH_WRITEONLY�0xF1B4�Ð��AFX_IDP_ARCH_BADINDEX�0xF1B5�Ñ��AFX_IDP_ARCH_BADCLASS�0xF1B6�Ò��AFX_IDP_ARCH_BADSCHEMA�0xF1B7�Ó��AFX_IDS_OCC_SCALEUNITS_PIXELS�0xF1C0�Õ��AFX_IDS_STATUS_FONT�0xF230 �Ú��AFX_IDS_TOOLTIP_FONT�0xF231 �Û��AFX_IDS_UNICODE_FONT�0xF232�Ü��AFX_IDS_MINI_FONT�0xF233 �Ý��AFX_IDP_SQL_CONNECT_FAIL�0xF281 �ã��AFX_IDP_SQL_RECORDSET_FORWARD_ONLY�0xF282 �ä��AFX_IDP_SQL_EMPTY_COLUMN_LIST�0xF283 �å��AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH�0xF284 �æ��AFX_IDP_SQL_ILLEGAL_MODE�0xF285 �ç��AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED�0xF286 �è��AFX_IDP_SQL_NO_CURRENT_RECORD�0xF287 �é��AFX_IDP_SQL_NO_ROWS_AFFECTED�0xF288 �ê��AFX_IDP_SQL_RECORDSET_READONLY�0xF289 �ë��AFX_IDP_SQL_SQL_NO_TOTAL�0xF28A�ì ��AFX_IDP_SQL_ODBC_LOAD_FAILED�0xF28B�í ��AFX_IDP_SQL_DYNASET_NOT_SUPPORTED�0xF28C�î ��AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED�0xF28D�ï ��AFX_IDP_SQL_API_CONFORMANCE�0xF28E�ð��AFX_IDP_SQL_SQL_CONFORMANCE�0xF28F �ñ��AFX_IDP_SQL_NO_DATA_FOUND�0xF290 �ò��AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED�0xF291 �ó��AFX_IDP_SQL_ODBC_V2_REQUIRED�0xF292 �ô��AFX_IDP_SQL_NO_POSITIONED_UPDATES�0xF293 �õ��AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED�0xF294 �ö��AFX_IDP_SQL_DATA_TRUNCATED�0xF295 �

÷��AFX_IDP_SQL_ROW_FETCH�0xF296 �ø��AFX_IDP_SQL_INCORRECT_ODBC�0xF297 �ù��AFX_IDP_SQL_UPDATE_DELETE_FAILED�0xF298 �ú��AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED�0xF299 �û��AFX_IDP_SQL_FIELD_NOT_FOUND�0xF29A�ü��AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED�0xF29B�ý��AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED�0xF29C�þ��AFX_IDS_DELETED�0xF29D����AFX_IDP_DAO_ENGINE_INITIALIZATION �0xF2B0� ��AFX_IDP_DAO_DFX_BIND�0xF2B1����AFX_IDP_DAO_OBJECT_NOT_OPEN�0xF2B2� ��AFX_IDP_DAO_ROWTOOSHORT�0xF2B3����AFX_IDP_DAO_BADBINDINFO�0xF2B4����AFX_IDP_DAO_COLUMNUNAVAILABLE�0x

Page 351: Orastat line command

F2B5����AFX_IDS_HTTP_TITLE �0xF2D1����AFX_IDS_HTTP_NO_TEXT�0xF2D2����AFX_IDS_HTTP_BAD_REQUEST�0xF2D3����AFX_IDS_HTTP_AUTH_REQUIRED�0xF2D4����AFX_IDS_HTTP_FORBIDDEN�0xF2D5����AFX_IDS_HTTP_NOT_FOUND�0xF2D6����AFX_IDS_HTTP_SERVER_ERROR�0xF2D7����AFX_IDS_HTTP_NOT_IMPLEMENTED�0xF2D8����AFX_IDS_CHECKLISTBOX_UNCHECK�0xF2E1� ��AFX_IDS_CHECKLISTBOX_CHECK�0xF2E2�! ��AFX_IDS_CHECKLISTBOX_MIXED�0xF2E3�" ��AFX_IDC_LISTBOX�100�( ��AFX_IDC_CHANGE�101�) ��AFX_IDC_BROWSER�102�* ��AFX_IDC_PRINT_DOCNAME�201�- ��AFX_IDC_PRINT_PRINTERNAME�202�. ��AFX_IDC_PRINT_PORTNAME�203�/ ��AFX_IDC_PRINT_PAGENUM�204�0��ID_APPLY_NOW�0x3021 �3��ID_WIZBACK�0x3023 �4��ID_WIZNEXT�0x3024 �5��ID_WIZFINISH �0x3025 �6��AFX_IDC_TAB_CONTROL�0x3020 �7��AFX_IDD_NEWTYPEDLG�30721 �J��AFX_IDD_PRINTDLG�30722 �K��AFX_IDD_PREVIEW_TOOLBAR�30723 �L��AFX_IDD_INSERTOBJECT�30724 �O��AFX_IDD_CHANGEICON�30725 �P��AFX_IDD_CONVERT�30726�Q��AFX_IDD_PASTESPECIAL�30727 �R��AFX_IDD_EDITLINKS �30728 �S��AFX_IDD_FILEBROWSE�30729 �T��AFX_IDD_BUSY�30730 �U��AFX_IDD_OBJECTPROPERTIES�30732�W��AFX_IDD_CHANGESOURCE�30733 �X��AFX_IDC_CONTEXTHELP�30977 �\ ��AFX_IDC_MAGNIFY�30978 �] ��AFX_IDC_SMALLARROWS�30979 �^��AFX_IDC_HSPLITBAR�30980 �_��AFX_IDC_VSPLITBAR�30981 �` ��AFX_IDC_NODROPCRSR�30982 �a��AFX_IDC_TRACKNWSE�30983 �b��AFX_IDC_TRACKNESW�30984 �c��AFX_IDC_TRACKNS�30985 �d��AFX_IDC_TRACKWE�30986 �e��AFX_IDC_TRACK4WAY�30987 �f ��AFX_IDC_MOVE4WAY�30988�g��AFX_IDC_MOUSE_PAN_NW�30998 �k��AFX_IDC_MOUSE_PAN_N�30999 �l ��AFX_IDC_MOUSE_PAN_NE�31000 �m��AFX_IDC_MOUSE_PAN_W�31001 �n��AFX_IDC_MOUSE_PAN_HV�31002 �o��AFX_IDC_MOUSE_PAN_E�31003 �p��AFX_IDC_MOUSE_PAN_SW�31004 �q��AFX_IDC_MOUSE_PAN_S�31005 �r ��AFX_IDC_MOUSE_PAN_SE�31006 �s��AFX_IDC_MOUSE_PAN_HORZ�31007 �t ��AFX_IDC_MOUSE_PAN_VERT�31008 �u��AFX_IDC_MOUSE_ORG_HORZ�31009 �x��AFX_IDC_MOUSE_ORG_VERT�31010 �y��AFX_IDC_MOUSE_ORG_HV�31011 �z��AFX_IDC_MOUSE_MASK�31012 �{ ��AFX_IDB_MINIFRAME_MENU�30994 �~��AFX_IDB_CHECKLISTBOX_95�30996 ����AFX_IDR_PREVIEW_ACCEL�30997 �„ ��AFX_IDI_STD_MDIFRAME�31233 �‡��AFX_IDI_STD_FRAME�31234 �ˆ ��AFX_IDC_FONTPROP�1000�Ž��AFX_IDC_FONTNAMES�1001����AFX_IDC_FONTSTYLES�1002����AFX_IDC_FONTSIZES�1003�‘ ��AFX_IDC_STRIKEOUT�1004�’ ��AFX_IDC_UNDERLINE�1005�“ ��AFX_IDC_SAMPLEBOX�1006�”��AFX_IDC_COLOR_BLACK�1100�—��AFX_IDC_COLOR_WHITE�1101�˜ ��AFX_IDC_COLOR_RED�1102�™��AFX_IDC_COLOR_GREEN�1103�š��AFX_IDC_COLOR_BLUE�1104�› ��AFX_IDC_COLOR_YELLOW�1105�œ��AFX_IDC_COLOR_MAGENTA�1106����AFX_IDC_COLOR_CYAN�1107�ž��AFX_IDC_COLOR_GRAY�1108�Ÿ��AFX_IDC_COLOR_LIGHTGRAY�1109� ��AFX_IDC_COLOR_DARKRED�1110�¡��AFX_IDC_COLOR_DARKGREEN�1111�¢��AFX_IDC_COLOR_DARKBLUE�1112�£��AFX_IDC_COLOR_LIGHTBROWN�1113�¤��AFX_IDC_COLOR_DARKMAGENTA�1114�¥��AFX_IDC_COLOR_DARKCYAN�1115�¦ ��AFX_IDC_COLORPROP�1116�§��AFX_IDC_SYSTEMCOLORS�1117�¨ ��AFX_IDC_PROPNAME�1201�«��AFX_IDC_PICTURE�1202�¬��AFX_IDC_BROWSE�1203���AFX_IDC_CLEAR�1204�®��AFX_IDD_PROPPAGE_COLOR�32257 �´ ��AFX_IDD_PROPPAGE_FONT�32258 �µ��AFX_IDD_PROPPAGE_PICTURE�32259 �¶��AFX_IDB_TRUETYPE�32384 �¸ ��AFX_IDS_PROPPAGE_UNKNOWN�0xFE01�¾��AFX_IDS_COLOR_DESKTOP�0xFE04�¿��AFX_IDS_COLOR_APPWORKSPACE�0xFE05�À��AFX_IDS_COLOR_WNDBACKGND�0xFE06�Á��AFX_IDS_COLOR_WNDTEXT�0xFE07�Â��AFX_IDS_COLOR_MENUBAR�0xFE08�Ã��AFX_IDS_COLOR_MENUTEXT�0xFE09�Ä��AFX_IDS_COLOR_ACTIVEBAR�0xFE0A�Å��AFX_IDS_COLOR_INACTIVEBAR�0xFE0B�Æ��AFX_IDS_COLOR_ACTIVETEXT�0xFE0C�Ç��AFX_IDS_COLOR_INACTIVETEXT�0xFE0D�È��AFX_IDS_COLOR_ACTIVEBORDER�0xFE0E�É��AFX_IDS_COLOR_INACTIVEBORDER�0xFE0F�Ê��AFX_IDS_COLOR_WNDFRAME�0xFE10�Ë��AFX_IDS_COLOR_SCROLLBARS�0xFE11�Ì ��AFX_IDS_COLOR_BTNFACE�0xFE12�Í ��AFX_IDS_COLOR_BTNSHADOW�0xFE13�Î ��AFX_IDS_COLOR_BTNTEXT�0xFE14�Ï ��AFX_IDS_COLOR_BTNHIGHLIGHT�0xFE15�Ð��AFX_IDS_COLOR_DISABLEDTEXT�0xFE16�Ñ��AFX_IDS_COLOR_HIGHLIGHT�0xFE17�Ò��AFX_IDS_COLOR_HIGHLIGHTTEXT�0xFE18�Ó��AFX_IDS_REGULAR�0xFE19�Ô��AFX_IDS_BOLD�0xFE1A�Õ��AFX_IDS_ITALIC �0xFE1B�Ö��AFX_IDS_BOLDITALIC �0xFE1C�×��AFX_IDS_SAMPLETEXT�0xFE1D�Ø��AFX_IDS_DISPLAYSTRING_FONT�0xFE1E�Ù��AFX_IDS_DISPLAYSTRING_COLOR�0xFE1F�Ú��AFX_IDS_DISPLAYSTRING_PICTURE�0xFE20�Û��AFX_IDS_PICTUREFILTER�0xFE21�Ü��AFX_IDS_PICTYPE_UNKNOWN�0xFE22�Ý��AFX_IDS_PICTYPE_NONE�0xFE23�Þ��AFX_IDS_PICTYPE_BITMAP�0xFE24�ß��AFX_IDS_PICTYPE_METAFILE�0xFE25�à��AFX_IDS_PICTYPE_ICON�0xFE26�á��AFX_IDS_COLOR_PPG�0xFE28�â��AFX_IDS_COLOR_PPG_CAPTION�0xFE29�ã��AFX_IDS_FONT_PPG�0xFE2A�ä��AFX_IDS_FONT_PPG_CAPTION�0xFE2B�å��AFX_IDS_PICTURE_PPG�0xFE2C�æ��AFX_IDS_PICTURE_PPG_CAPTION�0xFE2D�ç��AFX_IDS_PICTUREBROWSETITLE�0xFE30�è��AFX_IDS_BORDERSTYLE_0�0xFE31�é��AFX_IDS_BORDERSTYLE_1�0xFE32�ê��AFX_IDS_VERB_EDIT�0xFE40�í ��AFX_IDS_VERB_PROPERTIES�0xFE41�î ��AFX_IDP_PICTURECANTOPEN�0xFE83�ñ��AFX_IDP_PICTURECANTLOAD�0xFE84�ò��AFX_IDP_PICTURETOOLARGE�0xFE85�ó��AFX_IDP_PICTUREREADFAILED�0xFE86�ô��AFX_IDP_E_ILLEGALFUNCTIONCALL�0xFEA0�÷��AFX_IDP_E_OVERFLOW�0xFEA1�ø��AFX_IDP_E_OUTOFMEMORY�0xFEA2�ù��AFX_IDP_E_DIVISIONBYZERO�0xFEA3�ú��AFX_IDP_E_OUTOFSTRINGSPACE�0xFEA4�û��AFX_IDP_E_OUTOFSTACKSPACE�0xFEA5�ü��AFX_IDP_E_BADFILENAMEORNUMBER�0xFEA6�ý��AFX_IDP_E_FILENOTFOUND�0xFEA7�þ��AFX_IDP_E_BADFILEMODE�0xFEA8�ÿ��AFX_IDP_E_FILEALREADYOPEN�0xFEA9����AFX_IDP_E_DEVICEIOERROR�0xFEAA����AFX_IDP_E_FILEALREADYEXISTS�0xFEAB����AFX_IDP_E_BADRECORDLENGTH�0xFEAC����AFX_IDP_E_DISKFULL�0xFEAD����AFX_IDP_E_BADRECORDNUMBER�0xFEAE����AFX_IDP_E_BADFILENAME�0xFEAF����AFX_IDP_E_TOOMANYFILES�0xFEB0� ��AFX_IDP_E_DEVICEUNAVAILABLE�0xFEB1����AFX_IDP_E_PERMISSIONDENIED�0xFEB2� ��AFX_IDP_E_DISKNOTREADY�0xFEB3�

Page 352: Orastat line command

��AFX_IDP_E_PATHFILEACCESSERROR�0xFEB4���AFX_IDP_E_PATHNOTFOUND�0xFEB5�

Page 353: Orastat line command

��AFX_IDP_E_INVALIDPATTERNSTRING�0xFEB6���AFX_IDP_E_INVALIDUSEOFNULL�0xFEB7����AFX_IDP_E_INVALIDFILEFORMAT�0xFEB8����AFX_IDP_E_INVALIDPROPERTYVALUE�0xFEB9����AFX_IDP_E_INVALIDPROPERTYARRAYINDEX�0xFEBA����AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME�0xFEBB����AFX_IDP_E_SETNOTSUPPORTED�0xFEBC����AFX_IDP_E_NEEDPROPERTYARRAYINDEX�0xFEBD����AFX_IDP_E_SETNOTPERMITTED�0xFEBE����AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME�0xFEBF����AFX_IDP_E_GETNOTSUPPORTED�0xFEC0����AFX_IDP_E_PROPERTYNOTFOUND�0xFEC1����AFX_IDP_E_INVALIDCLIPBOARDFORMAT�0xFEC2����AFX_IDP_E_INVALIDPICTURE�0xFEC3����AFX_IDP_E_PRINTERERROR�0xFEC4����AFX_IDP_E_CANTSAVEFILETOTEMP�0xFEC5����AFX_IDP_E_SEARCHTEXTNOTFOUND�0xFEC6����AFX_IDP_E_REPLACEMENTSTOOLONG�0xFEC7����! �����! ��ãÿ������¢���$���H�W�B���ÿÿÉ�����0� ���������ÿÿÿÿÿÿÿÿ �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �r �e�s�o�u�r �c�e�1�. �h���ÿÿÿÿÿÿÿÿ �C�: �\ �A�r �c�h�i �v�o�s� �d�e��p�r �o�g�r �a�m�a�\ �M�i �c�r �o�s�o�f �t � �V�i �s�u�a�l � �S�t �u�d�i �o� �. �N�E�T�\ �V�c�7�\ �a�t �l �m�f �c�\ �i �n�c�l �u�d�e�/ �a�f �x�r �e�s�. �h���ÿÿÿÿÿÿÿÿ �C�: �\ �A�r �c�h�i �v�o�s� �d�e� �p�r �o�g�r �a�m�a�\ �M�i �c�r �o�s�o�f �t � �V�i �s�u�a�l � �S�t �u�d�i �o� �. �N�E�T�\ �V�c�7�\ �a�t �l �m�f �c�\ �i �n�c�l �u�d�e�/ �w�i �n�r �e�s�. �h�����F���$���H�W�B���ÿÿÊ�����0� ���������TEXTINCLUDE�1�����$�ÿÿTEXTINCLUDE�2�����$�ÿÿTEXTINCLUDE�3�����$�ÿÿ$ �ÿÿ ��, ���$���H�W�B���ÿÿ ������0� ���������%���D���H�W�B���ÿÿ �������� ���������

Page 354: Orastat line command

��� ���T�E�X�T�I �N�C�L�U�D�E���ÿÿ ������0� �������������à���T�E�X�T�I �N�C�L�U�D�E���ÿÿ ������0��������������, ���T�E�X�T�I �N�C�L�U�D�E���ÿÿ ������0� ���������X?��T���H�W�B���ÿÿÈ�����0����������¢���Ð@��H�W�B���ÿÿÉ�����0� ���������F���˜B ��H�W�B���ÿÿÊ�����0� ���������---

------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: orastat01.rc ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***// Microsoft Visual C++ generated resource script.//#include "resource1.h"

#define APSTUDIO_READONLY_SYMBOLS/////////////////////////////////////////////////// ////////////////////////////// Generated from the TEXTINCLUDE 2 resource.//

Page 355: Orastat line command

#include "afxres.h"

/////////////////////////////////////////////////// //////////////////////////#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////// //////////////////////////// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ ENU)LANGUAGE 9, 1#pragma code_page(1252)

#ifdef APSTUDIO_INVOKED/////////////////////////////////////////////////// ////////////////////////////// TEXTINCLUDE//

1 TEXTINCLUDE BEGIN "resource1.h\0"END

2 TEXTINCLUDE BEGIN "#include ""afxres.h""\r\n" "\0"END

3 TEXTINCLUDE BEGIN "\r\n" "\0"END

#endif // APSTUDIO_INVOKED

#endif // English (U.S.) resources/////////////////////////////////////////////////// //////////////////////////

Page 356: Orastat line command

#ifndef APSTUDIO_INVOKED/////////////////////////////////////////////////// ////////////////////////////// Generated from the TEXTINCLUDE 3 resource.//

/////////////////////////////////////////////////// //////////////////////////#endif // not APSTUDIO_INVOKED

--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: orastat0.sln ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***

Page 357: Orastat line command

Microsoft Visual Studio Solution File, Format Versi on 7.00Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "orastat0", "orastat0.vcproj", "{2654A745-25F6-409 A-A109-29A10F64CD2C}"EndProjectGlobal

GlobalSection(SolutionConfiguration) = preSolutionConfigName.0 = DebugConfigName.1 = Release

EndGlobalSectionGlobalSection(ProjectDependencies) = postSolutionEndGlobalSectionGlobalSection(ProjectConfiguration) = postSolution

{2654A745-25F6-409A-A109-29A10F64CD2C}.Debug.Active Cfg = Debug|Win32{2654A745-25F6-409A-A109-29A10F64CD2C}.Debug.Build. 0 = Debug|Win32{2654A745-25F6-409A-A109-29A10F64CD2C}.Release.Acti veCfg = Release|Win32{2654A745-25F6-409A-A109-29A10F64CD2C}.Release.Buil d.0 = Release|Win32

EndGlobalSectionGlobalSection(ExtensibilityGlobals) = postSolutionEndGlobalSectionGlobalSection(ExtensibilityAddIns) = postSolutionEndGlobalSection

EndGlobal--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: orastat0.suo ***

Page 358: Orastat line command

*** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***ÐÏ �ࡱ�á����������������>���þÿ �������������������������������������þÿÿÿ ��������ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿýÿÿÿ ����þÿÿÿ �������� ������� ���

���

���

Page 359: Orastat line command

���

�������þÿÿÿþÿÿÿ ������������þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ������������������������������������ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿR �o�o�t � �E�n�t �r �y�������������������������������������������������ÿÿÿÿÿÿÿÿ ��������������������������������`½Y�è©Å�������������T�a�s�k�L�i �s�t �U�s�e�r �T�a�s�k�s�������������������������������$�����������ÿÿÿÿ �����������������������������������������

�������I �T�o�o�l �b�o�x�S�e�r �v�i �c�e����������������������������������� �����������ÿÿÿÿ ����������������������������������������™�������I �V�s�S�e�r �v�e�r �E�x�p�l �o�r �e�r �������������������������������$���ÿÿÿÿ ����ÿÿÿÿ ������������������������������������þÿÿÿ ��������þÿÿÿ ��������þÿÿÿþÿÿÿþÿÿÿþÿÿÿ ���� ���

���

���

Page 360: Orastat line command

���

���þÿÿÿ ����þÿÿÿþÿÿÿ0 ���������������������������������������þÿÿÿ ��������þÿÿÿ ���!���- ���#���$���%���&���' ���( ���) ���* ���+���þÿÿÿþÿÿÿ. ���þÿÿÿþÿÿÿ1 ���2���3���4���5���6���7���þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðC

�������������������������������������������������������������

����Crystal Reports �����Data ����

XML Schema����Dialog Editor ���� Web Forms ����Components ����

Windows Forms �����HTML�����Clipboard Ring ���� General ���������������������������������������������������������������������������������������������������������������* ���H�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ ���������c�t �o�\ �����������������������������������������������������������������������������| ���F�: �\ �A�r �c�h�i �v�o�s� �d�e� �p�r �o�g�r �a�m�a�\ �D�e�b�u�g�g�e�r �W�a�t �c�h�e�s����������������������������������� ������ÿÿÿÿÿÿÿÿ ������������������������������������������������D�e�b�u�g�g�e�r �B�r �e�a�k�p�o�i �n�t �s���������������������������( �������ÿÿÿÿÿÿÿÿ ����������������������������������������6�������D�e�b�u�g�g�e�r �E�x�c�e�p�t �i �o�n�s�����������������������������&���ÿÿÿÿ ���ÿÿÿÿ �����������������������������������������

�������D�e�b�u�g�g�e�r �F�i �n�d�S�o�u�r �c�e�����������������������������&���ÿÿÿÿÿÿÿÿÿÿÿÿ ������������������������������������ ���À�������M�i �c�r �o�s�o�f �t � �V�i �s�u�a�l � �S�t �u�d�i �o� �. �N�E�T�\ �V�c�7�\ �c�r �t �\ ���’ ���F�: �\ �A�r �c�h�i �v�o�s� �d�e� �p�r �o�g�r �a�m�a�\ �M�i �c�r �o�s�o�f �t � �V�i �s�u�a�l � �S�t �u�d�i �o� �. �N�E�T�\ �V�c�7�\ �a�t �l �m�f �c�\ �s�r �c�\ �m�f �c�\ ���’ ���F�: �\ �A�r �c�h�i �v�o�s� �d�e� �p�r �o�g�r �a�m�a�\ �M�i �c�r �o�s�o�f �t � �V�i �s�u�a�l � �S�t �u�d�i �o� �. �N�E�T�\ �V�c�7�\ �a�t �l �m�f �c�\ �s�r �c�\ �a�t �l �\ �������������������������������������������������������������������������������������������������������������������������������������������D�e�b�u�g�g�e�r �M�e�m�o�r �y�W�i �n�d�o�w�s�����������������������, �������

Page 361: Orastat line command

���ÿÿÿÿ ����������������������������������������T�������E�x�t �e�r �n�a�l �F�i �l �e�s�P�r �o�j �e�c�t �C�o�n�t �e�n�t �s���������: ������ÿÿÿÿÿÿÿÿ ������������������������������������������������D�o�c�u�m�e�n�t �W�i �n�d�o�w�P�o�s�i �t �i �o�n�s�������������������0���ÿÿÿÿÿÿÿÿÿÿÿÿ �����

�����������������������������������› �������D�o�c�u�m�e�n�t �W�i �n�d�o�w�U�s�e�r �D�a�t �a���������������������. �������

���ÿÿÿÿ ����������������������������������������4�����������\ �p�r �o�y�e�c�t �o�\ �o�r �a�s�t �a�t �0�\ �o�r �a�s�t �a�2�0�0�0�. �������������������������Í«4�ï¾Þ��������������������Í«4 �ï¾Þ��������M�u�l �t �i �S�t �a�r �t �u�p�P�r �o�j ���=�������; �4���{ �2�6�5�4�A�7�4�5�-�2�5�F�6�- �4�0�9�A�- �A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �. �d�w�S�t �a�r �t �u�p�O�p�t ���=�������; �����S�t �a�r �t �u�p�P�r �o�j �e�c�t ���=���&���{ �2�6�5�4�A�7�4�5�- �2�5�F�6�- �4�0�9�A�- �A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �; �?���{ �2�6�5�4�A�7�4�5�- �2�5�F�6�- �4�0�9�A�- �A�1�0�9�-�2�9�A�1�0�F�6�4�C�D�2�C�} �. �R�e�l �e�a�s�e�| �S�o�l �u�t �i �o�n�C�o�n�f �i �g�u�r �a�t �i �o�n�����������������������, ���ÿÿÿÿÿÿÿÿÿÿÿÿ �������������������

���������������������b�������O�b�j �M�g�r �C�o�n�t �e�n�t �s�����������������������������������������ÿÿÿÿÿÿÿÿÿÿÿÿ �����������������������������������

�����² �������C�l �a�s�s�V�i �e�w�C�o�n�t �e�n�t �s�������������������������������$�����������ÿÿÿÿ ������������������������������������þÿÿÿ ��������P�r�o�j �E�x�p�l �o�r �e�r �S�t �a�t �e�������������������������������$���ÿÿÿÿÿÿÿÿÿÿÿÿ ����������������������������������������" �������W�i �n�3�2�. �f �B�a�t�c�h�B�l �d���=�������; �=���{ �2�6�5�4�A�7�4�5�- �2�5�F�6�- �4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �. �D�e�b�u�g�| �W�i �n�3�2�. �f �B�a�t �c�h�B�l �d���=�������; ����A�c�t �i �v�e�C�f �g���=��� ���R�e�l �e�a�s�e�; �l �d���=�������; ����A�c�t �i �v������NSܾï

Page 362: Orastat line command

MŠ%˜¿�Ÿ�ø�����ç�%Ò¯##G¶åá}'bm4������É�lü #O �ÿ‡øϤE���������o�r �a�s�t �a�t �0��������o�r �a�s�t �a�t �P�S���y����o�r �a�s�t �a�t ���yкñXˆ"¹E¬:Õc˜÷x ������rÉJA)˜jK¨× �Rþ¸ª �����y����o�r �a�s�tQ ��H�H�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �������H�H�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j ���������S�o�u�r �c�e� �F�i �l �e�s���������������D�e�b�u�g�| �W�i �n�3�2�������D�e�b�u�g�S�e�t �t �i �n�g�s���������������ô. ��������õ. ��������ö. �������ø. ������÷. ��������ù. ��������ú. ��������û. ��������ü. ��������ý. �������ÿ. ������, ���G�e�n�e�r �a�l �C�o�n�f �i �g�S�e�t �t �i �n�g�s���������V�C�B�s�c�M�a�k�e�T�o�o�l �����( ���E�n�d�C�o�n�f �i �g�P�r �o�p�e�r �t �i �e�s�������R�e�l �e�a�s�e�| �W�i �n�3�2�������D�e�b�u�g�S�e�t �t �i �n�g�s�������������U�n�l �o�a�d�e�d�P�r �o�j �e�c�t �s���������������������������������" ���ÿÿÿÿÿÿÿÿÿÿÿÿ ������������������������������������þÿÿÿ ��������o�r �a�s�t �a�t �0�����������������������������������������������������ÿÿÿÿÿÿÿÿÿÿÿÿ �������������

�����������������������" ���t �������T�a�s�k�L�i �s�t �S�h�o�r �t �c�u�t �s�������������������������������$���ÿÿÿÿÿÿÿÿÿÿÿÿ �����������������������������

�������, �����������I �V�S�M�D�P�r �o�p�e�r �t �y�B�r �o�w�s�e�r �������������������������* ���ÿÿÿÿÿÿÿÿÿÿÿÿ ������������������������������������þÿÿÿ ���������

�ô. ��������õ. ��������ö. �������ø. ������÷. ��������ù. ��������ú. ��������û. ��������ü. ��������ý. �������ÿ. ������, ���G�e�n�e�r �a�l �C�o�n�f �i �g�S�e�t �t �i �n�g�s����ß�����������V�C�B�s�c�M�a�k�e�T�o�o�l �����( ���E�n�d�C�o�n�f �i �g�P�r �o�p�e�r �t �i �e�s���T�o�o�l �����XÏ�����d�C�o�n�f �i �g�P�r �o�p�e�r �t �i �e�s�������������������������H�e�a�d�e�r � �F�i �l �e�s���������R�e�s�o�u�r �c�e� �F�i �l �e�s���������L�i �b�r �e�r �i�a�s���������������������Í«4 �ï¾Þ������������è" ������ÿþ�������E�n�d�O�f �S�t �r �e�a�m�������������������������I �V�S�M�D�D�e�s�i �g�n�e�r �S�e�r �v�i �c�e�������������������������* ������� ���ÿÿÿÿ �����������

�������������������������þÿÿÿ ��������S�o�u�r �c�e�C�o�d�e�C�o�n�t �r �o�l �������������������������������$�����������ÿÿÿÿ ���������������������������

���������/ ���, �������R�e�s�E�d�i �t �. �o�p�t �������������������������������������������������������ÿÿÿÿ ������������������������������������þÿÿÿ ���

�������������������������������������������������������������������������ÿÿÿÿÿÿÿÿÿÿÿÿ ������������������������������������������������c���w���1�������Í«4 �ï¾Þ������������6�������Í«4 �ï¾Þ�������������������Í«4 �ï¾Þ��������������������Í«4 �ï¾Þ��������������������Í«4 �ï¾Þ��������������������Í«4 �ï¾Þ��������������������Í«4 �ï¾-Þ��������������������Í«4 �ï¾Þ��������������������Í«4 �ï¾Þ����h���~��� �������Í«4 �ï¾Þ��������������������Í«4 �ï¾Þ��������������������Í«4 �ï¾-Þ��������������������Í«4 �ï¾Þ����O���] ���- �������Í«4 �ï¾Þ����Ð���Ù�

Page 363: Orastat line command

��- �������Í«4 �ï¾Þ����5���C���- �������Í«4 �ï¾Þ����t ���…���- �������Í«4 �ï¾Þ����j ���p���2�������Í«4 �ï¾Þ�����{ �2�6�5234����Ð�½���ÿÿ# ����������Èl ������ �������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �f �u�n�c�_�m�e�n�u�_�m�o�s�t �r �a�r �. �c�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} �������Ð�½���ÿÿ$ ����������Èl ������ �������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �f �u�n�c�_�d�y�n�_�t �i �t �l �e�_�s�e�t �. �c�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���123456 ����Ð�½���ÿÿ%����������Èl ������ �������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �f �u�n�c�_�d�y�n�_�s�t �a�t �e�m�e�n�t �_�s�e�t �. �c�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�}���123456 ����Ð�½���ÿÿ&����������Èl ������ �������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �f �u�n�c�_�d�y�n�_�s�i �z�e�_�s�e�t �. �c�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} �������Ð�½���ÿÿ' ����������Èl ������ �������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �f �u�n�c�_�d�y�n�_�p�r �o�c�_�f �u�n�c�_�s�e�t �. �c�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�}���123456 ����Ð�½���ÿÿ( ����������Èl ������ �������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �f �u�n�c�_�d�y�n�_�c�o�l �u�m�n�_�s�e�t �. �c�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�-�8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���12342 �0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} �������º �½���ÿÿ �����������Èl ������ �����������0�{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �E�X�T�E�R�N�_�F�U�N�C�T�I �O�N�S�_�O�R�A�S�T�A�T�_�P�R�I �N�C�I �P�A�L�. �h�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���123456 ����º �½���ÿÿ �����������Èl ������ �����������( �{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �L�O�C�A�L�_�F�U�N�C�T�I �O�N�S�_�P�R�E�C�E�D�E�D�_�C�A�L�L�S�. �h�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���123456 ����Ð�½���ÿÿ �����������Èl ������ �����������ü�{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-

Page 364: Orastat line command

�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �r �e�s�o�u�r �c�e�. �h�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���12����º �½���ÿÿ �����������Èl ������ �����������þ�{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �r �e�s�o�u�r �c�e�1�. �h�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} �������Ð�½���ÿÿ �����������Èl ������ ����������� �{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �f �u�n�c�t �_�f �o�r �m�a�t �_�s�q�l �_�s�t �a�t �e�m�e�n�t �. �c�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�-�8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���123456 ����Ð�½���ÿÿ ����������Èl ������ �������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �f �u�n�c�i �o�n�e�s�_�a�u�x�i �l �i �a�r �e�s�. �p�c�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} �������Ð�½���ÿÿ! ����������Èl ������ ���������������������������������������������������������������������������������������������������d�������Ð�½���ÿÿ �����������Èl ������ �������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �o�r �a�s�t �a�5�0�0�. �p�c�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���123456 ����Ð�½���ÿÿ �����������Èl ������ �������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �C�A�S�E�_�C�O�N�S�T�A�N�T�_�F�U�N�C�_�D�E�F�. �h�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�}���123456 ����Ð�½���ÿÿ �����������Èl ������ ����������� �{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �C�A�S�E�_�C�O�N�S�T�A�N�T�_�S�Q�L�_�S�T�M�T�_�D�E�F�. �h�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�-�8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���123456 ����Ð�½���ÿÿ �����������Èl ������ �������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �C�O�N�S�T�A�N�T�_�D�E�F�I �N�I �T�I �O�N�. �h�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���1234����º �½���ÿÿ �����������Èl ������ �������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �C�O�N�S�T�A�N�T�_�O�R�A�C�L�E�_�V�E�R�S�I �O�N�S�. �h�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�-�1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���12����º �½���ÿÿ �����������Èl ������ �����������6�{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-

Page 365: Orastat line command

�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �E�X�T�E�R�N�_�F�U�N�C�T�I �O�N�S�_�F�U�N�C�I �O�N�E�S�_�A�U�X�I �L�I �A�R�E�S�. �h�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} �������º �½���ÿÿ �����������Èl ������ �����������0�{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �E�X�T�E�R�N�_�F�U�N�C�T�I �O�N�S�_�O�R�A�S�T�A�T�_�P�R�I �N�C�I �P�A�L�. �h�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���123456 ����º �½���ÿÿ �����������Èl ������ �����������( �{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �L�O�C�A�L�_�F�U�N�C�T�I �O�N�S�_�P�R�E�C�E�D�E�D�_�C�A�L�L�S�. �h�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���123456 ����Ð�½���ÿÿ �����������Èl ������ �����������ü�{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �r �e�s�o�u�r �c�e�. �h�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���12����º �½���ÿÿ �����������Èl ������ �����������þ�{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �r �e�s�o�u�r �c�e�1�. �h�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} �������Ð�½���ÿÿ �����������Èl ������ ����������� �{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �f �u�n�c�t �_�f �o�r �m�a�t �_�s�q�l �_�s�t �a�t �e�m�e�n�t �. �c�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�-�8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���123456 ����Ð�½���ÿÿ ����������Èl ������ �������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �f �u�n�c�i �o�n�e�s�_�a�u�x�i �l �i �a�r �e�s�. �p�c�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} �������Ð�½���ÿÿ! ����������Èl ������ �������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�-�4�0�9�A�-�A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �f �u�n�c�i �o�n�e�s�_�a�u�x�i �l �i �a�r �e�s�. �c�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���12����Ð�½���ÿÿ" ����������Èl ������ ������������{ �2�6�5�4�A�7�4�5�- �2�5�F�6�- �4�0�9�A�- �A�1�0�9�- �2�9�A�1�0�F�6�4�C�D�2�C�} �| �o�r �a�s�t �a�t �0�. �v�c�p�r �o�j �| �h�: �\ �o�r �a�s�t �a�t �\ �o�r �a�s�t �a�t �0�\ �f �u�n�c�_�t �i �m�e�_�s�l �e�e�p�. �c�| �| �{ �8�B�3�8�2�8�2�8�- �6�2�0�2�- �1�1�D�1�- �8�8�7�0�- �0�0�0�0�F�8�7�5�7�9�D�2�} ���1--- ------ ---

Page 366: Orastat line command

--------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: orastat0.vcproj ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***<?xml version="1.0" encoding = "Windows-1252"?><VisualStudioProject

ProjectType="Visual C++"Version="7.00"Name="orastat0"ProjectGUID="{2654A745-25F6-409A-A109-29A10F64CD2C} "Keyword="Win32Proj"><Platforms>

<PlatformName="Win32"/>

</Platforms><Configurations>

<ConfigurationName="Debug|Win32"

Page 367: Orastat line command

OutputDirectory="Debug"IntermediateDirectory="Debug"ConfigurationType="1"UseOfMFC="1"UseOfATL="1"ATLMinimizesCRunTimeLibraryUsage="TRUE"CharacterSet="2"WholeProgramOptimization="TRUE"><Tool

Name="VCCLCompilerTool"Optimization="2"GlobalOptimizations="TRUE"InlineFunctionExpansion="2"EnableIntrinsicFunctions="TRUE"FavorSizeOrSpeed="1"OmitFramePointers="TRUE"EnableFiberSafeOptimizations="TRUE"OptimizeForProcessor="2"OptimizeForWindowsApplication="TRUE"PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"MinimalRebuild="FALSE"BasicRuntimeChecks="0"RuntimeLibrary="0"StructMemberAlignment="5"BufferSecurityCheck="TRUE"UsePrecompiledHeader="0"BrowseInformation="0"WarningLevel="3"Detect64BitPortabilityProblems="TRUE"DebugInformationFormat="0"ShowIncludes="TRUE"/>

<ToolName="VCCustomBuildTool"/>

<ToolName="VCLinkerTool"IgnoreImportLibrary="TRUE"AdditionalOptions="/MACHINE:I386 /verbose:lib"AdditionalDependencies="ORASQL9.LIB ORASQX9.LIB"ShowProgress="1"OutputFile="$(OutDir)/orastat0.exe"

Page 368: Orastat line command

Version="6"LinkIncremental="2"GenerateDebugInformation="FALSE"ProgramDatabaseFile="$(OutDir)/orastat0.pdb"GenerateMapFile="FALSE"MapExports="FALSE"MapLines="FALSE"SubSystem="1"LargeAddressAware="1"TerminalServerAware="2"OptimizeReferences="0"TurnOffAssemblyGeneration="FALSE"SupportUnloadOfDelayLoadedDLL="FALSE"ImportLibrary="oraSQL9.LIB oraSQX9.LIB"TargetMachine="1"/>

<ToolName="VCMIDLTool"/>

<ToolName="VCPostBuildEventTool"/>

<ToolName="VCPreBuildEventTool"/>

<ToolName="VCPreLinkEventTool"/>

<ToolName="VCResourceCompilerTool"ShowProgress="TRUE"/>

<ToolName="VCWebServiceProxyGeneratorTool"/>

<ToolName="VCWebDeploymentTool"/>

</Configuration><Configuration

Name="Release|Win32"OutputDirectory="Release"IntermediateDirectory="Release"ConfigurationType="1"UseOfMFC="1"UseOfATL="1"ATLMinimizesCRunTimeLibraryUsage="TRUE"CharacterSet="2"

Page 369: Orastat line command

WholeProgramOptimization="TRUE"><Tool

Name="VCCLCompilerTool"Optimization="2"GlobalOptimizations="TRUE"InlineFunctionExpansion="2"EnableIntrinsicFunctions="TRUE"FavorSizeOrSpeed="1"OmitFramePointers="TRUE"EnableFiberSafeOptimizations="TRUE"OptimizeForProcessor="2"OptimizeForWindowsApplication="TRUE"PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"StringPooling="FALSE"MinimalRebuild="FALSE"ExceptionHandling="FALSE"RuntimeLibrary="0"StructMemberAlignment="5"EnableFunctionLevelLinking="TRUE"UsePrecompiledHeader="0"WarningLevel="3"Detect64BitPortabilityProblems="TRUE"DebugInformationFormat="0"ShowIncludes="TRUE"/>

<ToolName="VCCustomBuildTool"/>

<ToolName="VCLinkerTool"IgnoreImportLibrary="FALSE"AdditionalDependencies="orasql9.lib orasqx9.lib ker nel32.lib"ShowProgress="1"OutputFile="$(OutDir)/orastat0.exe"Version="6"LinkIncremental="2"IgnoreAllDefaultLibraries="FALSE"GenerateDebugInformation="FALSE"SubSystem="1"LargeAddressAware="1"TerminalServerAware="2"OptimizeReferences="2"

Page 370: Orastat line command

EnableCOMDATFolding="2"OptimizeForWindows98="1"TargetMachine="1"/>

<ToolName="VCMIDLTool"/>

<ToolName="VCPostBuildEventTool"/>

<ToolName="VCPreBuildEventTool"/>

<ToolName="VCPreLinkEventTool"/>

<ToolName="VCResourceCompilerTool"/>

<ToolName="VCWebServiceProxyGeneratorTool"/>

<ToolName="VCWebDeploymentTool"/>

</Configuration></Configurations><Files>

<FilterName="Source Files"Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"><File

RelativePath="decode_command_oracle.c"></File><File

RelativePath="decode_lock_mode.c"></File><File

RelativePath="decode_name_lock.c"></File><File

RelativePath="func_dyn_column_set.c"></File><File

RelativePath="func_dyn_proc_func_set.c"></File><File

RelativePath="func_dyn_size_set.c">

Page 371: Orastat line command

</File><File

RelativePath="func_dyn_statement_set.c"></File><File

RelativePath="func_dyn_title_set.c"></File><File

RelativePath="func_menu_mostrar.c"></File><File

RelativePath="func_time_sleep.c"></File><File

RelativePath="funciones_auxiliares.c"></File><File

RelativePath="funciones_auxiliares.pc"><FileConfiguration

Name="Debug|Win32"><Tool

Name="VCCustomBuildTool"CommandLine="proc iname=$(InputFileName) hold_curso r=yes oraca=yes varchar=yes unsafe_null=yes dbms=v7

close_on_commit=yes"

Outputs="$(InputName).c"/></FileConfiguration>

</File><File

RelativePath="funct_format_sql_statement.c"></File><File

RelativePath="orasta500.c"></File><File

RelativePath="orasta500.pc"><FileConfiguration

Name="Debug|Win32"><Tool

Name="VCCustomBuildTool"

Page 372: Orastat line command

CommandLine="proc iname=$(InputFileName) hold_curso r=yes oraca=yes varchar=yes unsafe_null=yes dbms=v7 close_on_commit=yes"

Outputs="$(InputName).c"/></FileConfiguration>

</File></Filter><Filter

Name="Header Files"Filter="h;hpp;hxx;hm;inl;inc"><File

RelativePath="CASE_CONSTANT_FUNC_DEF.h"></File><File

RelativePath="CASE_CONSTANT_SQL_STMT_DEF.h"></File><File

RelativePath="CONSTANT_DEFINITION.h"></File><File

RelativePath="CONSTANT_ORACLE_VERSIONS.h"></File><File

RelativePath="EXTERN_FUNCTIONS_FUNCIONES_AUXILIARES .h"></File><File

RelativePath="EXTERN_FUNCTIONS_ORASTAT_PRINCIPAL.h" ></File><File

RelativePath="LOCAL_FUNCTIONS_PRECEDED_CALLS.h"></File><File

RelativePath="resource.h"></File><File

RelativePath="resource1.h"></File>

</Filter><Filter

Name="Resource Files"

Page 373: Orastat line command

Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg; jpeg;jpe"><File

RelativePath="orastat01.rc"></File>

</Filter><Filter

Name="Librerias"Filter=""><File

RelativePath="oraSQL9.LIB"></File><File

RelativePath="oraSQX9.LIB"></File>

</Filter></Files><Globals></Globals>

</VisualStudioProject>--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: orastat_original.pc ****** ****** ***

Page 374: Orastat line command

*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***/* ----****----****----****----****----****----**** ----****----****----****----**** */#include <oraca.h>#include <sqlca.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <setjmp.h>

/* ----****----****----****----****----****----**** ----****----****----****----**** */

#define MAX_ITEMS 512#define MAX_VNAME_LEN 512#define MAX_INAME_LEN 512#define MAX_BUFFER 512#define MAX_LINE 512#define MAX_STMT 16384#define MAX_BIND_VARIABLE 512#define MAX_VAR_SIZE 512#define MAX_VERSION_LEN 256#define MAX_LEN_ARG 512#define MAX_LEN_CONNECT 512

#define SI_PROCESAR 1#define NO_PROCESAR 0

#define SI_ERROR 1#define NO_ERROR 0

#define SEPARADOR 124#define FIN_LINEA 0

/* ----****----****----****----****----****----**** ----****----****----****----**** */

Page 375: Orastat line command

#define VERSION_ORACLE_734 734#define VERSION_ORACLE_816 816#define VERSION_ORACLE_817 817#define VERSION_ORACLE_901 901#define VERSION_ORACLE_902 902#define VERSION_ORACLE_910 910#define VERSION_ORACLE_920 920#define VERSION_ORACLE_UNK 000

/* ----****----****----****----****----****----**** ----****----****----****----**** */

#define FUNC_DB_BLOCK_SIZE 1#define FUNC_COMMAND_SQL 2#define FUNC_LOCK_MODE 3#define FUNC_LOCK_NAME_MODE 4

/* ----****----****----****----****----****----**** ----****----****----****----**** */

#ifndef NULL#define NULL 0#endif

/* ----****----****----****----****----****----**** ----****----****----****----**** */

char *dml_commands[] = {"SELECT", "select", "INSERT ", "insert","UPDATE", "update", "DELETE", "delete"} ;char dyn_size [MAX_VAR_SIZE];char dyn_title [MAX_VAR_SIZE];char dyn_column [MAX_VAR_SIZE];char dyn_proc_func [MAX_VAR_SIZE];

EXEC SQL BEGIN DECLARE SECTION;char dyn_sts[16384];EXEC SQL VAR dyn_sts IS STRING(16384);

EXEC SQL END DECLARE SECTION;

EXEC SQL INCLUDE sqlca; EXEC SQL INCLUDE sqlda;

SQLDA *bind_dp;SQLDA *select_dp;

Page 376: Orastat line command

jmp_buf jmp_continue;int parse_flag = 0;

/* ----****----****----****----****----****----**** ----****----****----****----**** */

extern SQLDA *sqlald();extern void sqlnul();int version_oracle();int oracle_connect();int alloc_descriptors();int set_bind_variables();int process_select_list();int liberar_memoria();int filtrar_char ();int col_size ();int cargar_sentencia ();int procesar_cadena ();int procesar_encabe ();int filtrar_char ();char *pasar_amayus ();sql_error();void vaciar_estructura ();void vaciar_cadena ();int db_block_size ();int funcion_columna ();int procesar_columna_funcion ();char *decode_command_oracle ();char *decode_lock_mode ();char *decode_name_lock ();int ver_menu ();

/* ----****----****----****----****----****----**** ----****----****----****----**** */

main( int argc , char *argv[]){int i=0;int opcion_nro=0;int version=0;

Page 377: Orastat line command

char opcion_uno [MAX_LEN_ARG];char opcion_dos [MAX_LEN_ARG];char opcion_tres [MAX_LEN_ARG];char datos_conexion [MAX_LEN_CONNECT];

opcion_uno[0]=FIN_LINEA;opcion_dos[0]=FIN_LINEA;opcion_tres[0]=FIN_LINEA;datos_conexion[0]=FIN_LINEA;

if (argc <3 ){printf ("Insuficientes argumentos \n");exit (1);}

strcpy (datos_conexion,argv[1]);if (argc >= 3 ) opcion_nro=atoi(argv[2]);if (argc >= 4 ) strcpy (opcion_uno,pasar_amayus(argv [3]));if (argc >= 5 ) strcpy (opcion_dos,pasar_amayus(argv [4]));if (argc >= 6 ) strcpy (opcion_tres,argv[5]);

if (oracle_connect(datos_conexion) != 0) {printf ("No es posible conectarse ...\n");exit(1);}

version = version_oracle();printf ("Oracle Version [%d] \n",version);

if (alloc_descriptors(MAX_ITEMS,MAX_VNAME_LEN, MAX_ INAME_LEN) != 0) exit(1);i = setjmp(jmp_continue); cargar_sentencia (version, opcion_nro, opcion_uno, opcion_dos, opcion_tres);

EXEC SQL WHENEVER SQLERROR DO sql_error();parse_flag = 1;

EXEC SQL PREPARE S FROM :dyn_sts;parse_flag = 0;

Page 378: Orastat line command

EXEC SQL DECLARE C CURSOR FOR S;set_bind_variables();

EXEC SQL OPEN C USING DESCRIPTOR bind_dp;process_select_list();liberar_memoria();

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

char *pasar_amayus (char *cadena ){int pos=0;

/* printf ("Iniciando conversion \n"); */for (pos =0; pos < (int ) strlen (cadena); pos ++)

cadena[pos]=toupper(cadena[pos]);

return cadena;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

liberar_memoria (){int i;

for (i = 0; i < MAX_ITEMS; i++){if (bind_dp->V[i] != (char *) 0)free(bind_dp->V[i]);free(bind_dp->I[i]); if (select_dp->V[i] != (char *) 0)

free(select_dp->V[i]);free(select_dp->I[i]); }

EXEC SQL WHENEVER SQLERROR CONTINUE;EXEC SQL CLOSE C;

Page 379: Orastat line command

EXEC SQL COMMIT WORK RELEASE;EXEC SQL WHENEVER SQLERROR DO sql_error();

return SI_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

oracle_connect ( char *datos_conexion ){EXEC SQL BEGIN DECLARE SECTION;

VARCHAR connectstring[256];EXEC SQL END DECLARE SECTION;

strcpy ((char *) connectstring.arr,datos_conexion);connectstring.arr[strlen((char *) connectstring.arr )] = FIN_LINEA;connectstring.len = (unsigned short )strlen((char * ) connectstring.arr);

EXEC SQL WHENEVER SQLERROR GOTO connect_error;printf ("\nConnecting .....\n");EXEC SQL CONNECT :connectstring;

printf("\nConnected to ORACLE \n");return 0;connect_error:

fprintf(stderr,"Cannot connect to ORACLE\n");return -1;

}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

alloc_descriptors(size, max_vname_len, max_iname_le n)int size;int max_vname_len;int max_iname_len;

{int i;

if ((bind_dp = sqlald(size, max_vname_len, max_inam e_len)) == (SQLDA *) 0)

Page 380: Orastat line command

{fprintf(stderr,"Insuficient memory...");return -1; }

if ((select_dp = sqlald (size, max_vname_len, max_i name_len)) == (SQLDA *) 0){fprintf(stderr,"Insuficient memory...");return -1;}

select_dp->N = MAX_ITEMS;for (i = 0; i < MAX_ITEMS; i++)

{bind_dp->I[i] = (short *) malloc(sizeof (short));select_dp->I[i] = (short *) malloc(sizeof(short));bind_dp->V[i] = (char *) malloc(1);select_dp->V[i] = (char *) malloc(1);}

return 0;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

set_bind_variables(){int i, n;

char bind_var [MAX_BIND_VARIABLE];

EXEC SQL WHENEVER SQLERROR DO sql_error();bind_dp->N = MAX_ITEMS; EXEC SQL DESCRIBE BIND VARIABLES FOR S INTO bind_dp ;

if (bind_dp->F < 0){printf ("\nToo many variables to bind...\n", -bind_ dp->F, MAX_ITEMS);return SI_ERROR;}

bind_dp->N = bind_dp->F;

Page 381: Orastat line command

for (i = 0; i < bind_dp->F; i++){printf ("\nEnter value for bind variable %.*s: ",(i nt)bind_dp->C[i], bind_dp->S[i]);fgets (bind_var, (int )sizeof(bind_var), stdin);n = (int )strlen(bind_var) - 1;bind_dp->L[i] = n;bind_dp->V[i] = (char *) realloc(bind_dp->V[i], (bi nd_dp->L[i] + 1));

strncpy(bind_dp->V[i], bind_var, n);

if ((strncmp(bind_dp->V[i], "NULL", 4) == 0) || (st rncmp(bind_dp->V[i], "null", 4) == 0))*bind_dp->I[i] = -1;

else*bind_dp->I[i] = 0;

bind_dp->T[i] = 1;}

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

process_select_list(){int null_ok;int nro_columna=0;int column_size=0;int si_proceso=0;int nro_bytes=0;int nro_funcion=0;

if ((strncmp(dyn_sts, "SELECT", 6) != 0) && (strncm p(dyn_sts, "select", 6) != 0)){select_dp->F = 0;return NO_ERROR;}

select_dp->N = MAX_ITEMS;

EXEC SQL DESCRIBE SELECT LIST FOR S INTO select_dp;if (select_dp->F < 0)

{

Page 382: Orastat line command

printf ("\nToo many select-list items (%d), maximum is %d\n", -(select_dp->F), MAX_ITEMS);return SI_ERROR;}

select_dp->N = select_dp->F;printf ("%s \n",dyn_title);for (nro_columna = 0; nro_columna < select_dp->F; n ro_columna++)

{sqlnul ( &(select_dp->T[nro_columna]), &(select_dp- >T[nro_columna]), &null_ok);column_size=col_size(dyn_size,nro_columna);select_dp->L[nro_columna]= column_size;select_dp->C[nro_columna]= column_size;select_dp->T[nro_columna]=1;}

for (nro_columna = 0; nro_columna < select_dp->F; n ro_columna++){nro_bytes = sizeof (select_dp->V[nro_columna]);select_dp->V[nro_columna] = (char *) realloc(select _dp->V[nro_columna], select_dp->L[nro_columna]);printf ("["); column_size=col_size(dyn_size,nro_columna);procesar_encabe (column_size,nro_columna,dyn_column ); printf ("] "); }

printf ("\n");EXEC SQL WHENEVER NOT FOUND GOTO end_select_loop;

for ( ; ; ){/* Asegurandome que la estructura de Retorno este t otalmente vacia */vaciar_estructura ( select_dp );

/* Tomando una fila (ROW) de la base de datos */EXEC SQL FETCH C USING DESCRIPTOR select_dp;

/* Procesando las "i" columnas de datos de la fila retornada */for (nro_columna = 0; nro_columna < select_dp->F; n ro_columna++)

{printf (" ");/* ------------------------------------------------ ----------------------------- */column_size=col_size(dyn_size,nro_columna);/* ------------------------------------------------ ----------------------------- */si_proceso = procesar_columna_funcion (dyn_proc_fun c, nro_columna, &nro_funcion);

Page 383: Orastat line command

if ( si_proceso == SI_PROCESAR)funcion_columna (column_size, (char *)select_dp->V[ nro_columna], nro_funcion);

/* ------------------------------------------------ ----------------------------- */procesar_cadena (column_size,(char *)select_dp->V[n ro_columna]);/* ------------------------------------------------ ----------------------------- */printf (" "); }

printf ("\n");}

end_select_loop:return NO_ERROR;

}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

ver_menu (int opcion_menu ){switch ( opcion_menu )

{case 0:

strcpy (dyn_title,"Oracle Version ...\n");break;

case 1:strcpy (dyn_title,"Active Parameters ...\n");break;

case 2:strcpy (dyn_title,"User conected...\n");break;

case 3:strcpy (dyn_title,"Wait Statistics...\n");break;

case 4:strcpy (dyn_title,"Datafile I-O ...\n");break;

case 5:strcpy (dyn_title,"Datafile Blocks R+W ...\n");break;

case 6:strcpy (dyn_title,"Wait Events ...\n");break;

Page 384: Orastat line command

case 7:strcpy (dyn_title,"Instance status ...\n");break;

case 8:strcpy (dyn_title,"Temporal Space by user ...\n");break;

case 9:strcpy (dyn_title,"Total Freelist Wait Percentage . ..\n");break;

case 10:strcpy (dyn_title,"Last Checkpoint Time ...\n");break;

case 11:strcpy (dyn_title,"List Tablespaces ...\n");break;

case 12:strcpy (dyn_title,"Active Transactions ...\n");break;

case 13:strcpy (dyn_title,"Latch Details ...\n");break;

case 14:strcpy (dyn_title,"Resource Limits ...\n");break;

case 15:strcpy (dyn_title,"List Datafiles ...\n");break;

case 16:strcpy (dyn_title,"List Datafiles New 9i ...\n");break;

case 17:strcpy (dyn_title,"List Tablespaces New 9i...\n");break;

case 18:strcpy (dyn_title,"Active Sessions ...\n");break;

case 19:strcpy (dyn_title,"Session Waits \n");break;

case 20:

Page 385: Orastat line command

strcpy (dyn_title,"Default Storage Settings - By Ta blespace \n");break;

case 21:strcpy (dyn_title,"All tables Storage (Except SYS a nd SYSTEM) \n");break;

case 22:strcpy (dyn_title,"Non-Sys Tables \n");break;

case 23:strcpy (dyn_title,"Non-Sys Indexes \n");break;

case 24:strcpy (dyn_title,"User Defined \n");break;

case 25:strcpy (dyn_title,"List Datafiles, Online Redo Logs , Control Files \n");break;

case 26:strcpy (dyn_title,"List Datafiles and their Used Bl ocks \n");break;

case 27:strcpy (dyn_title,"List sorts by user \n");break;

case 28:strcpy (dyn_title,"List lock status \n");break;

case 29:strcpy (dyn_title,"List Users by CPU Usage \n");break;

case 30:strcpy (dyn_title,"Sql statement by this user \n");break;

case 31:strcpy (dyn_title,"Redo Logs - Status ");break;

case 32:strcpy (dyn_title,"Archived Logs History - by firs t TimeStamp ");break;

case 33:strcpy (dyn_title,"Redo Log Recovery Report - CURRE NT Online Redo log info ");

Page 386: Orastat line command

break;case 34:

strcpy (dyn_title,"Archive Log History ");break;

case 35:strcpy (dyn_title,"Session Latch Waits - SQL ");break;

case 36:strcpy (dyn_title,"Whoami in Oracle ");break;

case 37:strcpy (dyn_title,"Privileges by User ");break;

case 38:strcpy (dyn_title,"Detailed locking causes ");break;

case 39:strcpy (dyn_title,"Current Activity Report ");break;

case 40:strcpy (dyn_title,"Table Description del Usuario [ %USERNAME% ]");break;

case 41:strcpy (dyn_title,"Current Activity Report ");break;

default:strcpy (dyn_title,"Oracle Version ...\n");break;

}return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

cargar_sentencia (int version, int sentencia, char *opcion_uno, char *opcion_dos, char *opcion_tres ){strcpy (dyn_proc_func,"|NO|");switch (sentencia)

{case 0:

Page 387: Orastat line command

/********** PARA TODAS LAS VERSIONES **********/strcpy (dyn_column,"|ORACLE_VERSION|");strcpy (dyn_title,"Oracle Version ...\n");strcpy (dyn_sts,"select ltrim(lpad(banner,70)) Ver sion from v$version ");strcat (dyn_sts,"where banner like '%Oracle%' ");strcpy (dyn_size,"80");break;

case 1:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|NOMBRE|VALOR|DESCRIPCION|");strcpy (dyn_title,"Active Parameters ...\n");strcpy (dyn_sts,"select name,value,description from v$parameter order by 1 ");strcpy (dyn_size,"355540");break;

case 2:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|DIRECCION|SES|NOMBRE|CMD|ESTAD O|PID|TERMINAL|INICIADO|");strcpy (dyn_title,"User conected...\n");strcpy (dyn_sts,"select saddr ADDRESS,sid SES,usern ame NOMBRE,command CMD, \n");strcat (dyn_sts,"status ESTADO,process PID,terminal TERMINAL, \n");strcat (dyn_sts,"to_char(logon_time,'DD/MM/YYYY - H H24:MI:SS') INICIADO from v$session ");strcpy (dyn_size,"0804150608151122");break;

case 3:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|CANTIDAD|TIEMPO|CLASE|");strcpy (dyn_title,"Wait Statistics...\n");strcpy (dyn_sts,"select count CANTIDAD,time TIEMPO, class CLASE from v$waitstat order by 1 ");strcpy (dyn_size,"101030");break;

case 4:strcpy (dyn_title,"Datafile I-O ...\n");switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_column,"|READPHY|READBLK|WRITPHY||WRITB LK|DATAFILE|IO_STAT|");strcpy (dyn_sts,"select f.phyrds, f.phyblkrd, f.phy wrts, ");strcat (dyn_sts,"f.phyblkwrt, f.lstiotim*10 , d.nam e\n");strcat (dyn_sts,"from v$filestat f, v$datafile d ") ;strcat (dyn_sts,"where f.file# = d.file# and ");

Page 388: Orastat line command

strcat (dyn_sts,"f.lstiotim > 0 order by 2 \n");strcpy (dyn_size,"080808086010");break;

case VERSION_ORACLE_817:case VERSION_ORACLE_816:case VERSION_ORACLE_734:

strcpy (dyn_column,"|READPHY|READBLK|WRITPHY|WRITBL K|DATAFILE|");strcpy (dyn_sts,"select f.phyrds, f.phyblkrd, f.phy wrts, ");strcat (dyn_sts,"f.phyblkwrt, d.name ");strcat (dyn_sts,"from v$filestat f,v$datafile d ");strcat (dyn_sts,"where f.file# = d.file# ");strcat (dyn_sts,"order by 2 \n");strcpy (dyn_size,"0606060660");break;

default:break;

}break;

case 5:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|DATAFILE|BLKREAD|BLKWRITE|BLKT OT|");strcpy (dyn_title,"Datafile Blocks R+W ...\n");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 f rom v$filestat f, v$datafile d \n");strcat (dyn_sts,"where f.file# = d.file# order by 3 desc ");strcpy (dyn_size,"60060606");break;

case 6:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|USUARIO|CANTIDAD|EVENTO|");strcpy (dyn_title,"Wait Events ...\n");strcpy (dyn_sts,"select 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: Executi on Msg%' and \n");strcat (dyn_sts,"sw.event not like 'pipe get%' grou p by se.username, sw.event ");strcpy (dyn_size,"201030");break;

case 7:

Page 389: Orastat line command

strcpy (dyn_title,"Instance status ...\n");switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|INSTNRO|INSTNAME|HOSTNAME|VERS ION|INICIADO|ESTADO|PARALELO|DATAESTA|INSTROLE|ACTS TATUS|");strcpy (dyn_title,"Instance status ...\n");strcpy (dyn_sts,"select instance_number, instance_n ame, host_name, version, \n");strcat (dyn_sts,"to_char(startup_time,'DD/MM/YYYY - HH24:MI:SS'),status, parallel, \n");strcat (dyn_sts,"database_status, instance_role \n" ); strcat (dyn_sts,"from v$instance \n");strcpy (dyn_size,"03080910220503101010");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|NOMBRE DE CLAVE|ESTADO|");strcpy (dyn_title,"Instance status ...\n");strcpy (dyn_sts,"select 'RESTRITED MODE',value ");strcat (dyn_sts,"from v$instance where key='RESTRIC TED MODE' ");strcat (dyn_sts,"union ");strcat (dyn_sts,"select 'SHUTDOWN PENDING',value ") ;strcat (dyn_sts,"from v$instance where key='SHUTDOW N PENDING' ");strcat (dyn_sts,"union ");strcat (dyn_sts,"select 'STARTUP TIME - JULIAN',val ue ");strcat (dyn_sts,"from v$instance where key='STARTUP TIME - JULIAN' ");strcat (dyn_sts,"union ");strcat (dyn_sts,"select 'STARTUP TIME - SECONDS', v alue ");strcat (dyn_sts,"from v$instance where key='STARTUP TIME - SECONDS' \n");strcpy (dyn_size,"4015");break;

default:break;

}break;

case 8:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

Page 390: Orastat line command

strcpy (dyn_column,"|SES|SERIAL|USER|EXTENTS|CONTEN TS|SIZEKB");strcpy (dyn_title,"Temporal Space by user ...\n");strcpy (dyn_sts,"select se.sid, se.serial#, se.user name, 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'))/1 000) 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.user name,so.extents,so.contents \n");strcpy (dyn_size,"101010101030");break;

case VERSION_ORACLE_734:strcpy

(dyn_column,"|TBLSPACE|EXTSIZE|CURUSER|TOTEXT|TOTBL K|USEXT|USEBLK|FREEXT|FREEBLK|MUSESIZE|MUSEBLK|MSORTSIZE|MSORTBLK|");strcpy (dyn_title,"Temporal Space by user ...\n");strcpy (dyn_sts,"select tablespace_name, extent_siz e, current_users, total_extents, \n");strcat (dyn_sts,"total_blocks, used_extents, used_b locks, free_extents, free_blocks, \n");strcat (dyn_sts,"max_used_size, max_used_blocks, ma x_sort_size, max_sort_blocks \n");strcat (dyn_sts,"from v$sort_segment \n");strcpy (dyn_size,"0907070606050606080808080806");

default:break;

}break;

case 9:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|PCTFREE|");strcpy (dyn_title,"Total Freelist Wait Percentage . ..\n");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 li st' and \n");strcat (dyn_sts,"b.name in ('db block gets','consis tent gets') group by a.count ");strcpy (dyn_size,"12");break;

case 10:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|CHEKPOINT_VALUE|FECHA|");strcpy (dyn_title,"Last Checkpoint Time ...\n");strcpy (dyn_sts,"select min(sysdate - CHECKPOINT_TI ME)*24*60 MINUTO, \n");

Page 391: Orastat line command

strcat (dyn_sts,"to_char(sysdate,'DD/MM/YYYY - HH24 :MI:SS') FECHA from v$datafile_header");strcpy (dyn_size,"1522");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|CHEKPOINT_VALUE|FECHA|");strcpy (dyn_title,"Last Checkpoint Time ...\n");strcpy (dyn_sts,"select count(sid) Cantidad from v$ session \n");strcpy (dyn_size,"15");break;

default:break;

}break;

case 11:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|TBLSPACE|CONTENT|AVAILA_KB|MAX _ID|USED_KB|FREE_KB|PCT_USED|STATUS|MANAGMENT|ALLOCTYPE|");strcpy (dyn_title,"List Tablespaces ...\n");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_byt es),0.00)/a.sum_bytes*100.0,2) PCT_USED, d.status, \n");strcat (dyn_sts,"d.extent_management,d.allocation_t ype from (select tablespace_name,sum(bytes) sum_byt es, \n");strcat (dyn_sts,"count(1) max_id from dba_data_file s 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_t ablespaces d \n");strcat (dyn_sts,"where a.tablespace_name = c.tables pace_name(+) and \n");strcat (dyn_sts,"a.tablespace_name = d.tablespace_n ame (+) order by 1 ");strcpy (dyn_size,"151010061010070810101010");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|TBLSPACE|CONTENT|AVAILA_KB|MAX _ID|USED_KB|FREE_KB|PCT_USED|STATUS|");strcpy (dyn_title,"List Tablespaces ...\n");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_byt es),0.00)/a.sum_bytes*100.0,2) PCT_USED, d.status \ n");

Page 392: Orastat line command

strcat (dyn_sts,"from (select tablespace_name,sum(b ytes) sum_bytes, \n");strcat (dyn_sts,"count(1) max_id from dba_data_file s 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_t ablespaces d \n");strcat (dyn_sts,"where a.tablespace_name = c.tables pace_name(+) and \n");strcat (dyn_sts,"a.tablespace_name = d.tablespace_n ame (+) order by 1 ");strcpy (dyn_size,"151010061010070810101010");break;

}break;

case 12:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|ADDRESS|TIMESTART|ESTADO|BLK_U SED|KB_USED|USED_UREC|SESSION|SERIAL|NOMBRE|USUARIO|");strcpy (dyn_title,"Active Transactions ...\n");strcpy (dyn_sts,"select tr.addr,to_char(tr.start_ti me,'DD/MM/YYYY - 24HH:MM:SS') TIME_START, \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");strcat (dyn_sts,"se.sid SES, se.serial# SERIAL,rn.n ame,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 6");strcpy (dyn_size,"102208080810040605101010");

break;case VERSION_ORACLE_734:

/* FORMATO |<SI PROCESO>|<NRO COLUMNA -1><NRO FUNC ION>| *//* LAS COLUMNAS EMPIEZAN A ENUMERARSE A PARTIR DE LA CERO (0) */strcpy (dyn_proc_func,"|SI|0401|");/* PROCESANDO ESTA PARTE DEL NUEVO SELECT */strcpy (dyn_column,"|ADDRESS|TIMESTART|ESTADO|BLK_U SED|KB_USED|USED_UREC|SESSION|SERIAL|NOMBRE|USUARIO|");strcpy (dyn_title,"Active Transactions ...\n");strcpy (dyn_sts,"select tr.addr, ");strcat (dyn_sts,"tr.start_time, ");

/* strcat (dyn_sts,"to_char(tr.start_time,'DD/MM/YYY Y - 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.n ame,se.username from v$transaction tr, \n");strcat (dyn_sts,"v$session se, v$rollname rn where tr.xidusn=rn.usn and \n");

Page 393: Orastat line command

strcat (dyn_sts,"tr.ses_addr=se.saddr order by 6");strcpy (dyn_size,"082007080810070605101010");

break;}

break;case 13:

/********** PARA TODAS LAS VERSIONES **********/strcpy (dyn_column,"|GETS|MISS|HITRATIO|IMM_GETS|IM M_MISS|SLEEP|GETSPIN|ADDRESS|LATCH|NOMBRE|");strcpy (dyn_title,"Latch Details ...\n");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 orde r by round(((gets-misses)/gets),2) desc");strcpy (dyn_size,"10040808080507080825");break;

case 14:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|NOMBRE|INIT_ALLOC|CURR_UTILIZA |MAX_UTILIZA|LIMITE|");strcpy (dyn_title,"Resource Limits ...\n");strcpy (dyn_sts,"select resource_name NOMBRE,initia l_allocation INIT_ALLOC, \n");strcat (dyn_sts,"current_utilization CURR_UTILIZA,m ax_utilization MAX_UTILIZA, \n");strcat (dyn_sts,"limit_value LIMITE from v$resource _limit order by 1");strcpy (dyn_size,"3010101010");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|NOMBRE|LIMITE|");strcpy (dyn_title,"Resource Limits ...\n");strcpy (dyn_sts,"select resource_name, limit \n");strcat (dyn_sts,"from user_resource_limits order by 1");strcpy (dyn_size,"5010");break;

}break;

case 15:switch (version)

{

Page 394: Orastat line command

case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|DATAFILE|MBYTES|ESTADO|");strcpy (dyn_title,"List Datafiles ...\n");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");strcpy (dyn_size,"701008");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|DATAFILE|MBYTES|ESTADO|");strcpy (dyn_title,"List Datafiles ...\n");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.4strcat (dyn_sts,"union all \n");strcat (dyn_sts,"select name DATAFILE,bytes/1048576 MBYTES, status ESTADO from v$tempfile \n");

*/strcpy (dyn_size,"701008");break;

}break;

case 16:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|ESTADO|DATAFILE|TBLSPACE|SIZE_ KB|USED_KB|USED_PCT|");strcpy (dyn_title,"List Datafiles New 9i ...\n");strcpy (dyn_sts,"select v.status ESTADO, d.file_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s,0))/d.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_data_files d, v$dataf ile v, (select file_id,sum(bytes) bytes \n");strcat (dyn_sts,"from sys.dba_free_space group by f ile_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_nam e DATAFILE, d.tablespace_name TBLNAME, \n");

Page 395: Orastat line command

strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s)*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");strcpy (dyn_size,"066018121208");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|ESTADO|DATAFILE|TBLSPACE|SIZE_ KB|USED_KB|USED_PCT|");strcpy (dyn_title,"List Datafiles New 9i ...\n");strcpy (dyn_sts,"select v.status ESTADO, d.file_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s,0))/d.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_data_files d, v$dataf ile v, (select file_id,sum(bytes) bytes \n");strcat (dyn_sts,"from sys.dba_free_space group by f ile_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_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s)*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");

*/ strcpy (dyn_size,"066018121208");break;

}break;

case 17:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|ESTADO|TBLSPACE|TIPO|EXTENT_MG M|SIZE_KB|USED_KB|USED_PCT|");strcpy (dyn_title,"List Tablespaces New 9i...\n");strcpy (dyn_sts,"select d.status ESTADO, d.tablespa ce_name TBLNAME,d.contents TIPO, \n");

Page 396: Orastat line command

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.byte s,0))/a.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_tablespaces d, (selec t tablespace_name, sum(bytes) bytes \n");strcat (dyn_sts,"from dba_data_files group by table space_name) a, (select tablespace_name,sum(bytes) b ytes \n");strcat (dyn_sts,"from dba_free_space group by table space_name ) f \n");strcat (dyn_sts,"where d.tablespace_name=a.tablespa ce_name(+) and \n");strcat (dyn_sts,"d.tablespace_name = f.tablespace_n ame(+) and \n");strcat (dyn_sts,"not (d.extent_management like 'LOC AL' and d.contents LIKE 'TEMPORARY') \n");strcat (dyn_sts,"union all \n"); strcat (dyn_sts,"select d.status ESTADO, d.tablespa ce_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),'999 99999.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_nam e) 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_nam e (+) and d.extent_management like 'LOCAL' and \n") ;strcat (dyn_sts,"d.contents like 'TEMPORARY' "); strcpy (dyn_size,"06251012121212121212121010101010" );break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|ESTADO|TBLSPACE|TIPO|EXTENT_MG M|SIZE_KB|USED_KB|USED_PCT|");strcpy (dyn_title,"List Tablespaces New 9i...\n");strcpy (dyn_sts,"select d.status ESTADO, d.tablespa ce_name TBLNAME,d.contents TIPO, \n");strcat (dyn_sts,"to_char(nvl((a.bytes/1024),0),'999 99999.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.byte s,0))/a.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_tablespaces d, (selec t tablespace_name, sum(bytes) bytes \n");strcat (dyn_sts,"from dba_data_files group by table space_name) a, (select tablespace_name,sum(bytes) b ytes \n");strcat (dyn_sts,"from dba_free_space group by table space_name ) f \n");strcat (dyn_sts,"where d.tablespace_name=a.tablespa ce_name(+) and \n");strcat (dyn_sts,"d.tablespace_name = f.tablespace_n ame(+) 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.tablespa ce_name TBLNAME,d.contents TIPO, \n");

Page 397: Orastat line command

strcat (dyn_sts,"to_char(nvl((a.bytes/1024),0),'999 99999.999') SIZE_KB, \n");strcat (dyn_sts,"to_char((nvl(t.bytes,0)/1024),'999 99999.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_nam e) 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_nam e (+) and \n");strcat (dyn_sts,"d.contents like 'TEMPORARY' ");

*/strcpy (dyn_size,"06251012121212121212121010101010" );break;

}break;

case 18:strcpy (dyn_column,"|SES|SERIAL|TIPO|OS_USER|LOGON| ESTADO|PROCESO|MAQUINA|NOMBRE|PID|PROGRAMA|");strcpy (dyn_title,"Active Sessions ...\n");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 - H H24:MI:SS') LOGON,s.status ESTADO, \n");strcat (dyn_sts,"s.process PROCESO, s.machine MAQUI NA, 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.add r=s.paddr \n");strcpy (dyn_size,"0404101022100915100930");break;

case 19:strcpy (dyn_column,"|SES|SEQ|W_T|S_W_T|USUARIO|ESTA DO|EVENT|STATE|P1TEXT|P1|P1RAW|P2TEXT|P2|P2RAW|P3TE XT|P3|P3RAW|");strcpy (dyn_title,"Session Waits \n");strcpy (dyn_sts,"select sw.sid SES, sw.seq# SEQ, nv l(sw.wait_time,0) W_T, \n");strcat (dyn_sts,"nvl(sw.seconds_in_wait,0) S_W_T,nv l(se.username,'.') USUA, \n");strcat (dyn_sts,"nvl(se.status,'.') ESTA,sw.event E VENT, sw.state, sw.p1text, sw.p1, \n");strcat (dyn_sts,"sw.p1raw, sw.p2text, sw.p2, sw.p2r aw, 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 2 \ n");strcpy (dyn_size,"040405050606202010101010101010101 0101010101010");break;

case 20:strcpy (dyn_column,"|TBLSPACE|INI_EXT|NEX_EXT|MIN_E XT|MAX_EXT|PCT_INC|");strcpy (dyn_title,"Default Storage Settings - By Ta blespace \n");strcpy (dyn_sts,"select tablespace_name TBLNAME, in itial_extent INI_EXT, next_extent NEX_EXT, \n");

Page 398: Orastat line command

strcat (dyn_sts,"min_extents MIN_EXT, max_extents M AX_EXT, pct_increase PCT_INC \n");strcat (dyn_sts,"from dba_tablespaces \n");strcat (dyn_sts,"order by tablespace_name \n");strcpy (dyn_size,"201212121207");break;

case 21:strcpy (dyn_column,"|OWNER_TABLE|SEG_NAME|TBLSPACE| BLOCKS|SIZE_KB|MAX_EXT|");strcpy (dyn_title,"All tables Storage (Except SYS a nd SYSTEM) \n");strcpy (dyn_sts,"select owner OWNER_TABLE,segment_n ame SEG_NAME,tablespace_name TBL_NAME, blocks BLKS, \n");strcat (dyn_sts,"(select value from v$parameter whe re name in 'db_block_size')*blocks/1024 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 b y 1,2 \n");strcpy (dyn_size,"12402005060510");break;

case 22:strcpy (dyn_column,"|OWNER|TABLNAME|TBLSPACE|BLOCK| NROWS|BUFF_POOL|LAST_ANALIZE|SIZE_KB");strcpy (dyn_title,"Non-Sys Tables \n");strcpy (dyn_sts,"select owner OWNER, table_name TNA ME, 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/Y YYY - HH24:MI'),-1) LAST_ANALIZE, \n");strcat (dyn_sts,"sum((blocks) * (select value from v$parameter where name in ('db_block_size')))/1000 \n");strcat (dyn_sts,"from dba_tables \n");strcat (dyn_sts,"group by owner,table_name,tablespa ce_name,nvl(blocks,-1),nvl(num_rows,-1), \n");strcat (dyn_sts,"buffer_pool,nvl(to_char(last_analy zed,'DD/MM/YYYY - HH24:MI'),-1) \n");strcat (dyn_sts,"order by 1,2 \n");strcpy (dyn_size,"1225200808101808");break;

case 23:strcpy (dyn_column,"|OWNER|INDEXNAME|TBLSPACE|LEAFB LK|NROROWS|BUFFPOOL|LASTANALIZ|SIZE_KB|");strcpy (dyn_title,"Non-Sys Indexes \n");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_anal yzed,'DD/MM/YYYY - HH24:MI'),-1), \n");strcat (dyn_sts,"sum((leaf_blocks) * (select value from v$parameter \n");strcat (dyn_sts,"where name in ('db_block_size')))/ 1000 \n");strcat (dyn_sts,"from dba_indexes \n");strcat (dyn_sts,"group by owner, index_name, tables pace_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");strcpy (dyn_size,"1225200808101808");

Page 399: Orastat line command

break;case 24:

strcpy (dyn_column,"|USUA|ACCSTAT|EXPIRYDATE|DFLTBL NAME|TMPTBLNAME|PROFILE|CREATED|");strcpy (dyn_title,"User Defined \n");strcpy (dyn_sts,"select * from (select distinct use rname, account_status, expiry_date, \n");strcat (dyn_sts,"default_tablespace, temporary_tabl espace, 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(nu ll), '', '', '', 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");strcpy (dyn_size,"25090820203018101010");break;

case 25:strcpy (dyn_column,"|FILENAME|TBLSPACE|ESTADO|");strcpy (dyn_title,"List Datafiles, Online Redo Logs , Control Files \n");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', statu s from v$controlfile \n");strcat (dyn_sts,"order by 1,2 \n");strcpy (dyn_size,"702010");break;

case 26:strcpy (dyn_column,"|TBLSPACE|FILENAME|BYTES|HIGHWA TER|");strcpy (dyn_title,"List Datafiles and their Used Bl ocks \n");strcpy (dyn_sts,"select a.tablespace_name, a.file_n ame, a.bytes, \n");strcat (dyn_sts,"(b.maximum + c.blocks -1) * d.db_b lock_size highwater \n");strcat (dyn_sts,"from dba_data_files a, \n");strcat (dyn_sts,"(select file_id, max(block_id) max imum \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");strcat (dyn_sts,"and c.file_id = b.file_id \n");strcat (dyn_sts,"and c.block_id = b.maximum \n");strcat (dyn_sts,"order by a.tablespace_name, a.file _name \n");strcpy (dyn_size,"256012121212");

Page 400: Orastat line command

break;case 27:

strcpy (dyn_column,"|VALOR|TYPESORT|OS_USER|DB_USER |");strcpy (dyn_title,"List sorts by user \n");strcpy (dyn_sts,"select vss.value VALOR, substr(vsn .name,1,20) TYPE_SORT, \n");strcat (dyn_sts,"substr(vs.osuser,1,20) OS_USER, su bstr(vs.username,1,20) DB_USER \n");strcat (dyn_sts,"from v$session vs, v$sesstat vss, v$statname vsn \n");strcat (dyn_sts,"where (vss.statistic# = vsn.statis tic#) and \n");strcat (dyn_sts,"(vs.sid = vss.sid ) and \n");strcat (dyn_sts,"(vsn.name like '%sort%') and \n");strcat (dyn_sts,"vss.value <> 0 \n");strcat (dyn_sts,"order by 1,2,3 \n");strcpy (dyn_size,"141820251010");break;

case 28:strcpy (dyn_column,"|ADDRESS|KADDRESS|SES|TIPO|OBJ_ ID|ID2|LOCKTY|REQT|");strcpy (dyn_title,"List lock status \n");strcpy (dyn_sts,"select lo.addr, lo.kaddr, lo.sid S ES, lo.type TIP, lo.id1 OBJID, lo.id2, \n");strcat (dyn_sts,"decode(lo.lmode,0,'None',1,'Null', 2,'Row-S (ss)',3,'Row-X (sx)',4,'Share',5,'S/Row-X (ssx)',6,'Exclu ')

LOCTYP, \n");strcat (dyn_sts,"lo.request REQT, \n");strcat (dyn_sts,"(select ltrim(object_type) \n");strcat (dyn_sts,"from all_objects where object_id=l o.id1) OBJ_TYP, \n");strcat (dyn_sts,"(select ltrim(owner)||'.'||ltrim(o bject_name) \n");strcat (dyn_sts,"from all_objects where object_id=l o.id1) OWN_OBJ, \n");strcat (dyn_sts,"(select sid SES \n");strcat (dyn_sts,"from v$session where lockwait=lo.k addr) LOC_SID \n");strcat (dyn_sts,"from v$lock lo \n");strcat (dyn_sts,"order by lo.id1, lo.lmode desc \n" );strcpy (dyn_size,"0909050405041105083509");break;

case 29:strcpy (dyn_column,"|SES|SERIAL|TYPE|OSUSER|LOGON|P ROCESS|MACHINE|USER|VALUE|PROGRAM|");strcpy (dyn_title,"List Users by CPU Usage \n");strcpy (dyn_sts,"select vs.sid, vs.serial#, vs.type , vs.osuser, \n");strcat (dyn_sts,"sysdate - logon_time, \n");strcat (dyn_sts,"vs.process, vs.machine, vs.usernam e, vss.value, \n");strcat (dyn_sts,"vs.program \n");strcat (dyn_sts,"from v$session vs, v$sesstat vss, v$statname vsn \n");strcat (dyn_sts,"where vss.statistic# = vsn.statist ic# and \n");

Page 401: Orastat line command

strcat (dyn_sts,"vs.sid = vss.sid and \n");strcat (dyn_sts,"vsn.name = 'CPU used by this sessi on' \n");strcat (dyn_sts,"and vss.value <> 0 \n");strcat (dyn_sts,"order by 10 \n");strcpy (dyn_size,"101010101010101010101010101010101 01010101010");break;

case 30:strcpy (dyn_column,"|TEXT_SQL|");strcpy (dyn_title,"Sql statement by this user \n");strcpy (dyn_sts,"select sql_text \n");strcat (dyn_sts,"from v$sqltext \n");strcat (dyn_sts,"where address = ( select sql_addre ss \n");strcat (dyn_sts,"from v$session \n");strcat (dyn_sts,"where sid=");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,") order by piece \n");strcpy (dyn_size,"70");break;

case 31:strcpy (dyn_column,"|GRUPO|THREAD|SEQUENCE|BYTES|ME MBER|ARCHIVED|ESTADO|FSTCHANGE|FSTTIME|");strcpy (dyn_title,"Redo Logs - Status ");strcpy (dyn_sts,"select group#, thread#, sequence#, bytes, members, \n");strcat (dyn_sts,"archived, status, first_change#, \ n");strcat (dyn_sts,"to_char(first_time,'DD/MM/YYYY - H H24:MI') \n");strcat (dyn_sts,"from v$log \n");strcpy (dyn_size,"070710101010101220");break;

case 32:strcpy (dyn_column,"|THREAD|SEQUENCE|NAME|FSTCHANGE |FSTTIME|BLOCKS|BLKSIZE|COMPTIME|");strcpy (dyn_title,"Archived Logs History - by firs t TimeStamp ");strcpy (dyn_sts,"select thread#, sequence#, name, f irst_change#, \n");strcat (dyn_sts,"to_char (first_time,'DD/MM/YYYY - HH24:MI:SS'), \n");strcat (dyn_sts,"blocks, block_size, \n");strcat (dyn_sts,"to_char (completion_time,'DD/MM/YY YY - HH24:MI:SS') \n");strcat (dyn_sts,"from v$archived_log order by 6 \n" );strcpy (dyn_size,"1010101020101020101020");break;

case 33:strcpy (dyn_column,"|GROUP|FSTCHANGE|MEMBER|SEQUENC E|");strcpy (dyn_title,"Redo Log Recovery Report - CURRE NT Online Redo log info ");

Page 402: Orastat line command

strcpy (dyn_sts,"select a.group#, a.first_change#, b.member, a.sequence# \n");strcat (dyn_sts,"from v$log a, v$logfile b \n");strcat (dyn_sts,"where a.group# = b.group# \n");strcat (dyn_sts,"and a.status = 'CURRENT' \n");strcpy (dyn_size,"06125208");break;

case 34:strcpy (dyn_column,"|THREAD|SEQUENCE|FSTCHANGE|SWIC HANGE|FSTTIME|");strcpy (dyn_title,"Archive Log History ");strcpy (dyn_sts,"select thread#, sequence#, first_c hange#, \n");strcat (dyn_sts,"switch_change#, \n");strcat (dyn_sts,"to_char(first_time,'DD/MM/YYYY - H H24:MI:SS') \n");strcat (dyn_sts,"from v$loghist \n");strcat (dyn_sts,"order by 5 \n");strcpy (dyn_size,"0810171722");break;

case 35:strcpy (dyn_column,"|SES|USER|STATUS|SQLTEXT|");strcpy (dyn_title,"Session Latch Waits - SQL ");strcpy (dyn_sts,"select sw.sid , nvl(se.username,'. ') , \n");strcat (dyn_sts,"nvl(se.status,'.') , sq.sql_text \ n");strcat (dyn_sts,"from v$session_wait sw, v$session se, v$sqltext sq \n");strcat (dyn_sts,"where sw.sid = se.sid and \n");strcat (dyn_sts,"se.sql_address = sq.address and \n ");strcat (dyn_sts,"se.sql_hash_value = sq.hash_value and \n");strcat (dyn_sts,"sw.event = 'latch_free' \n");strcat (dyn_sts,"order by 1 \n");strcpy (dyn_size,"0530303030");break;

case 36:strcpy (dyn_column,"|SES|USER|STATUS|SQLTEXT|");strcpy (dyn_title,"Whoami in Oracle ");strcpy (dyn_sts,"select substr(v2.sid,1,5), substr( v2.username,1,8), \n");strcat (dyn_sts,"program, sql_text \n");strcat (dyn_sts,"from sys.v_$sqlarea v1, \n");strcat (dyn_sts,"sys.v_$session v2 \n");strcat (dyn_sts,"where v1.address = v2.sql_address and \n");strcat (dyn_sts,"v1.hash_value = v2.sql_hash_value \n");strcpy (dyn_size,"10202030");break;

Page 403: Orastat line command

case 37:strcpy (dyn_column,"|fadsdf|asdfasd|");strcpy (dyn_title,"Privileges by User ");strcpy (dyn_sts,"select decode (sa1.grantee#1, 1, ' PUBLIC', u1.name), \n");strcat (dyn_sts,"substr (u2.name,1,20), substr(spm. name,1,27) \n");strcat (dyn_sts,"from sys.sysauth$ sa1, sys.sysauth # sa2, sys.user$ u1, \n");strcat (dyn_sts,"sys.user$ u2, sys.system_privilege _map spm \n");strcat (dyn_sts,"where sa1.grantee# = u1.user# and \n");strcat (dyn_sts,"sa1.privilege# = u2.user# and \n") ;strcat (dyn_sts,"u2.user# = sa2.grantee# and \n");strcat (dyn_sts,"sa2.privilege# = spm.privilege \n" );strcat (dyn_sts,"union \n");strcat (dyn_sts,"select u.name, NULL, substr(spm.na me,1,27) \n");strcat (dyn_sts,"from sys.system_privilege_map spm, sys.sysauth$ sa, \n");strcat (dyn_sts,"sys.user$ u \n");strcat (dyn_sts,"where sa.grantee#=u.user# and \n") ;strcat (dyn_sts,"sa.privilege# = spm.privilege \n") ;strcpy (dyn_size,"1010101010101010");break;

case 38:/* FORMATO |<SI PROCESO>|<NRO COLUMNA -1><NRO FUNC ION>| *//* LAS COLUMNAS EMPIEZAN A ENUMERARSE A PARTIR DE LA CERO (0) */

strcpy (dyn_proc_func,"|SI|0402|0503|0603|0804|");/* PROCESANDO ESTA PARTE DEL NUEVO SELECT */

strcpy (dyn_column,"|USERNAME|SID|TERMINAL|TAB|COMM AND|LMODE|REQUEST|LADDR|LOCKT|LOCKTYPE|");strcpy (dyn_title,"Detailed locking causes ");strcpy (dyn_sts,"select nvl(S.USERNAME,'Internal'), L.SID, nvl(S.TERMINAL,'None'),\n");strcat (dyn_sts,"decode(command, 0,'None',decode(l. id2,0,U1.NAME||'.'||substr(T1.NAME,1,20),'None')),\ n");strcat (dyn_sts,"command,\n");strcat (dyn_sts,"L.LMODE,L.REQUEST,\n");strcat (dyn_sts,"l.id1||'-'||l.id2, \n");strcat (dyn_sts,"l.type ||' - '||, \n");strcat (dyn_sts,"l.type \n");strcat (dyn_sts,"from v$lock l, v$session s, sys.us er$ u1, sys.obj$ t1 \n");strcat (dyn_sts,"where l.sid = s.sid and t1.obj# = decode (l.id2,0,l.id1,1) and \n");strcat (dyn_sts,"u1.user# = t1.owner# and s.type != 'BACKGROUND' \n");strcat (dyn_sts,"order by 1,2,5");strcpy (dyn_size,"101010101010101020");break;

case 39:

Page 404: Orastat line command

strcpy (dyn_column,"|VALOR|NOMBRE|");strcpy (dyn_title,"Current Activity Report ");strcpy (dyn_sts,"select name,value from v$sysstat \ n");strcat (dyn_sts,"where name like '%user%'; \n");strcpy (dyn_size,"2512");break;

case 40:strcpy (dyn_column,"|TBLSPACE|TABLENAME|NROWS|LAST

ANALIZED|INIEXT|NEXEXT|MINEXT|MAXEXT|PCTINC|BUFPOL| BLOCKS|FREELST|PCTFREE|INITRANS|MAXTRANS|FREEGRP");strcpy (dyn_title,"Table Description del Usuario [ ");strcat (dyn_title,opcion_uno);strcat (dyn_title," ] ");strcpy (dyn_sts,"select tablespace_name, table_name , \n");strcat (dyn_sts,"nvl(to_char (num_rows),\'(Null)\') , \n");strcat (dyn_sts,"nvl(to_char (last_analyzed,'YYYY/M M/DD-HH24:MI:SS'),\'(Null)\'), \n");strcat (dyn_sts,"initial_extent,next_extent,\n");strcat (dyn_sts,"min_extents,max_extents,pct_increa se,buffer_pool,\n");strcat (dyn_sts,"nvl(to_char (blocks),\'(Null)\'),\ n");strcat (dyn_sts,"freelists,pct_free,ini_trans,max_t rans,\n");strcat (dyn_sts,"freelist_groups \n");strcat (dyn_sts,"from dba_tables \n");strcat (dyn_sts,"where owner = '");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");if ( strlen (opcion_dos) > 0 )

{strcat (dyn_sts,"and table_name = '");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

else strcat (dyn_sts,"\n");strcpy (dyn_size,"15300719050505050508060606060606" );break;

case 41:strcpy (dyn_column,"|DIRECCION|BUF_GETS|NRO_EXEC|AV G_EXEC|SQL_TEXT|");strcpy (dyn_title,"Current Activity Report by Selec t Statements");strcat (dyn_sts,"SELECT address, buffer_gets, execu tions, ");strcat (dyn_sts,"round(buffer_gets/executions), SUB STR(sql_text,1,150) ");strcat (dyn_sts,"FROM v$sqlarea WHERE executions > 0 AND ");strcat (dyn_sts,"buffer_gets > 10000 ORDER BY 4 des c, 3 desc \n");

Page 405: Orastat line command

strcpy (dyn_size,"0909080999");break;

default:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|ORACLE_VERSION|");strcpy (dyn_title,"Oracle Version ...\n");strcpy (dyn_sts,"select ltrim(lpad(banner,70)) Ver sion from v$version ");strcpy (dyn_size,"80");break;

}/************************************************** ******/

/* printf ("Statement [%s] \n",dyn_sts); *//************************************************** ******/

/* printf ("Funcion [%s] \n",dyn_proc_func); *//************************************************** ******/

if (strlen (dyn_sts) >= MAX_STMT)printf ("Max Statement large [%d] | Actual Statemen t large [%d] \n",MAX_STMT,strlen(dyn_sts));

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

sql_error(){/* int i; */

printf ("\n\n%.70s\n",sqlca.sqlerrm.sqlerrmc);if (parse_flag)

printf("\n Error de Oracle... \n",sqlca.sqlerrd[4]) ;EXEC SQL WHENEVER SQLERROR CONTINUE;EXEC SQL ROLLBACK WORK;liberar_memoria();exit(1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

col_size (char *puntero, int posicion){

Page 406: Orastat line command

char ascii_nro[3];int numero, i;

for ( i = posicion*2; i < posicion*2+2; i++)ascii_nro[i-posicion*2]=puntero[i];

ascii_nro[2]=FIN_LINEA;numero=atoi(ascii_nro);return numero;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

int filtrar_char (int caracter){if ( (caracter >= 32 && caracter <= 127 ) ) return caracter;else

{switch (caracter)

{case 164: break;case 165: break;case 168: break;case 173: break;default: caracter=32;break;}

}return caracter;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_cadena (int nrocolum, char *puntero_char){int pos, caracter;

for ( pos=0; pos < nrocolum; pos++ ){caracter=filtrar_char(puntero_char[pos]);printf ("%c",caracter);}

Page 407: Orastat line command

fflush(stdout);return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_encabe (int tamano, int posicion, char *pu ntero_char){int pos_col=0;int pos_cad=0;int columna=-1;int caracter=0;int salto=0;

for ( pos_col = 0; pos_col < (int )strlen(puntero_c har); pos_col ++){if ( puntero_char[pos_col] == SEPARADOR ) columna++ ;if ( columna == posicion ) break;}

for ( pos_cad = pos_col+1; pos_cad < tamano+pos_col +1; pos_cad++ ){if ( puntero_char[pos_cad]==SEPARADOR) salto++;if (salto==0)

{caracter = filtrar_char ( puntero_char[pos_cad] );printf ("%c",caracter);}

else printf (" ");}

return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

void vaciar_estructura ( void *punt_sqlda ){int pos_k, pos_j;int limite_k = ((SQLDA *) punt_sqlda ) ->F;int limite_j;

Page 408: Orastat line command

for ( pos_k = 0; pos_k < limite_k ; pos_k++ ){limite_j = ((SQLDA *) punt_sqlda ) ->L[ pos_k ];

for ( pos_j = 0; pos_j < limite_j ; pos_j++)(char ) (((SQLDA *) punt_sqlda )->V[pos_k])[pos_j] = FIN_LINEA;

}}

/* ----****----****----****----****----****----**** ----****----****----****----**** */

void vaciar_cadena (void *punt_cadena, int largo){int pos;

for (pos = 0; pos < largo; pos ++)((char *) punt_cadena ) [pos] = FIN_LINEA;

}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

int version_oracle (){char Version[10];int conta=0;int pos=0;int caracter=0;int nro_puntos=0;

EXEC SQL BEGIN DECLARE SECTION;VARCHAR version [256];

EXEC SQL END DECLARE SECTION;

vaciar_cadena (version.arr,MAX_VERSION_LEN);for ( ; ; )

{EXEC SQL WHENEVER NOT FOUND DO break;EXEC SQL SELECT ltrim(lpad(banner,70))

INTO :version

Page 409: Orastat line command

FROM V$VERSIONWHERE banner like '%Oracle%';

break; /* SOLO ME INTERESA UN REGISTRO */}

for ( pos =0; pos < version.len; pos ++){caracter = version.arr[pos];Version[conta]=FIN_LINEA;if ( nro_puntos < 3 )

{switch (caracter)

{case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:

Version[conta]=caracter;conta++;Version[conta]=FIN_LINEA;break;

case 46:/* Version[conta]=caracter;conta++; */nro_puntos++;Version[conta]=FIN_LINEA;break;

default:conta=0;

}}

}return (atoi (Version));

}

Page 410: Orastat line command

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

int db_block_size (){int block_size=0;EXEC SQL BEGIN DECLARE SECTION;

VARCHAR data_block_size [20];EXEC SQL END DECLARE SECTION;

vaciar_cadena (data_block_size.arr,20);for ( ; ; )

{EXEC SQL WHENEVER NOT FOUND DO break;EXEC SQL SELECT value

INTO :data_block_sizeFROM V$PARAMETERWHERE NAME IN ('db_block_size');

break; /* SOLO ME INTERESA UN REGISTRO */}

block_size = atoi (data_block_size.arr);return (block_size);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *decode_command_oracle (int nro_decodificar){static char dato_1[64];

vaciar_cadena (dato_1,64);switch (nro_decodificar)

{case 0: strcpy (dato_1,"BACKGROUND"); break;case 1: strcpy (dato_1,"CREATE TABLE"); break;case 2: strcpy (dato_1,"INSERT"); break;case 3: strcpy (dato_1,"SELECT"); break;

Page 411: Orastat line command

case 4: strcpy (dato_1,"CREATE CLUSTER"); break;case 5: strcpy (dato_1,"ALTER CLUSTER"); break;case 6: strcpy (dato_1,"UPDATE"); break;case 7: strcpy (dato_1,"DELETE"); break;case 8: strcpy (dato_1,"DROP"); break;case 9: strcpy (dato_1,"CREATE INDEX"); break;case 10: strcpy (dato_1,"DROP INDEX"); break;case 11: strcpy (dato_1,"ALTER INDEX"); break;case 12: strcpy (dato_1,"DROP TABLE"); break;case 13: strcpy (dato_1,"CREATE SEQUENCE"); break;case 14: strcpy (dato_1,"ALTER SEQUENCE"); break;case 15: strcpy (dato_1,"ALTER TABLE"); break;case 16: strcpy (dato_1,"DROP SEQUENCE"); break;case 17: strcpy (dato_1,"GRANT"); break;case 18: strcpy (dato_1,"REVOKE"); break;case 19: strcpy (dato_1,"CREATE SYNONYM"); break;case 20: strcpy (dato_1,"DROP SYNONYM"); break;case 21: strcpy (dato_1,"CREATE VIEW"); break;case 22: strcpy (dato_1,"DROP VIEW"); break;case 23: strcpy (dato_1,"VALIDATE INDEX"); break;case 24: strcpy (dato_1,"CREATE PROCEDURE"); break;case 25: strcpy (dato_1,"ALTER PROCEDURE"); break;case 26: strcpy (dato_1,"LOCK TABLE"); break;case 27: strcpy (dato_1,"NO OPERATION"); break;case 28: strcpy (dato_1,"RENAME"); break;case 29: strcpy (dato_1,"COMMENT"); break;case 30: strcpy (dato_1,"AUDIT"); break;case 31: strcpy (dato_1,"NOAUDIT"); break;case 32: strcpy (dato_1,"CREATE EXTERNAL DATABASE") ; break;case 33: strcpy (dato_1,"DROP EXTERNAL DATABASE"); break;case 34: strcpy (dato_1,"CREATE DATABASE"); break;case 35: strcpy (dato_1,"ALTER DATABASE"); break;case 36: strcpy (dato_1,"CREATE ROLLBACK SEGMENT"); break;case 37: strcpy (dato_1,"ALTER ROLLBACK SEGMENT"); break;case 38: strcpy (dato_1,"DROP ROLLBACK SEGMENT"); b reak;case 39: strcpy (dato_1,"CREATE TABLESPACE"); break ;case 40: strcpy (dato_1,"ALTER TABLESPACE"); break;case 41: strcpy (dato_1,"DROP TABLESPACE"); break;case 42: strcpy (dato_1,"ALTER SESSION"); break;case 43: strcpy (dato_1,"ALTER USER"); break;

Page 412: Orastat line command

case 44: strcpy (dato_1,"COMMIT"); break;case 45: strcpy (dato_1,"ROLLBACK"); break;case 46: strcpy (dato_1,"SAVEPOINT"); break;case 47: strcpy (dato_1,"PL/SQL EXECUTE"); break;case 48: strcpy (dato_1,"SET TRANSACTION"); break;case 49: strcpy (dato_1,"ALTER SYSTEM SWITCH LOG"); break;case 50: strcpy (dato_1,"EXPLAIN"); break;case 51: strcpy (dato_1,"CREATE USER"); break;case 52: strcpy (dato_1,"CREATE ROLE"); break;case 53: strcpy (dato_1,"DROP USER"); break;case 54: strcpy (dato_1,"DROP ROLE"); break;case 55: strcpy (dato_1,"SET ROLE"); break;case 56: strcpy (dato_1,"CREATE SCHEMA"); break;case 57: strcpy (dato_1,"CREATE CONTROL FILE"); bre ak;case 58: strcpy (dato_1,"ALTER TRACING"); break;case 59: strcpy (dato_1,"CREATE TRIGGER"); break;case 60: strcpy (dato_1,"ALTER TRIGGER"); break;case 61: strcpy (dato_1,"DROP TRIGGER"); break;case 62: strcpy (dato_1,"ANALYZE TABLE"); break;case 63: strcpy (dato_1,"ANALYZE INDEX"); break;case 64: strcpy (dato_1,"ANALYZE CLUSTER"); break;case 65: strcpy (dato_1,"CREATE PROFILE"); break;case 66: strcpy (dato_1,"DROP PROFILE"); break;case 67: strcpy (dato_1,"ALTER PROFILE"); break;case 68: strcpy (dato_1,"DROP PROCEDURE"); break;case 69: strcpy (dato_1,"DROP PROCEDURE"); break;case 70: strcpy (dato_1,"ALTER RESOURCE COST"); bre ak;case 71: strcpy (dato_1,"CREATE SNAPSHOT LOG"); bre ak;case 72: strcpy (dato_1,"ALTER SNAPSHOT LOG"); brea k;case 73: strcpy (dato_1,"DROP SNAPSHOT LOG"); break ;case 74: strcpy (dato_1,"CREATE SNAPSHOT"); break;case 75: strcpy (dato_1,"ALTER SNAPSHOT"); break;case 76: strcpy (dato_1,"DROP SNAPSHOT"); break;case 79: strcpy (dato_1,"ALTER ROLE"); break;case 85: strcpy (dato_1,"TRUNCATE TABLE"); break;case 86: strcpy (dato_1,"TRUNCATE CLUSTER"); break;

/* case 87: strcpy (dato_1,"-"); break; */case 88: strcpy (dato_1,"ALTER VIEW"); break;

/* case 89: strcpy (dato_1,"-"); break; *//* case 90: strcpy (dato_1,"-"); break; */

Page 413: Orastat line command

case 91: strcpy (dato_1,"CREATE FUNCTION"); break;case 92: strcpy (dato_1,"ALTER FUNCTION"); break;case 93: strcpy (dato_1,"DROP FUNCTION"); break;case 94: strcpy (dato_1,"CREATE PACKAGE"); break;case 95: strcpy (dato_1,"ALTER PACKAGE"); break;case 96: strcpy (dato_1,"DROP PACKAGE"); break;case 97: strcpy (dato_1,"CREATE PACKAGE BODY"); bre ak;case 98: strcpy (dato_1,"ALTER PACKAGE BODY"); brea k;case 99: strcpy (dato_1,"DROP PACKAGE BODY"); break ;default: strcpy (dato_1,"-"); break;

}return dato_1;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

char *decode_lock_mode (int nro_decodificar){static char dato_1[64];

vaciar_cadena (dato_1,64);switch (nro_decodificar)

{case 1: strcpy (dato_1,"No Lock"); break; case 2: strcpy (dato_1,"Row Share"); break; case 3: strcpy (dato_1,"Row Exclusive"); break; case 4: strcpy (dato_1,"Share"); break; case 5: strcpy (dato_1,"Share Row Exclusive"); bre ak;case 6: strcpy (dato_1,"Exclusive"); break;default: strcpy (dato_1,"NONE"); break;}

return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****---- FUNCIONES A DEFINIR PARA PROCESAR L AS COLUMNAS RETORNADAS ----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

Page 414: Orastat line command

char *decode_name_lock (char *cad_decodificar){static char dato_1[256];

vaciar_cadena (dato_1,256);

if ( strncmp (cad_decodificar,"BL",2) == 0) strcpy (dato_1,"Buffer hash table instance lock"); elseif ( strncmp (cad_decodificar,"CF",2) == 0) strcpy (dato_1," Control file schema global enqueue lock") ; elseif ( strncmp (cad_decodificar,"CI",2) == 0) strcpy (dato_1,"Cross-instance function invocation instanc e lock"); elseif ( strncmp (cad_decodificar,"CS",2) == 0) strcpy (dato_1,"Control file schema global enqueue lock"); elseif ( strncmp (cad_decodificar,"CU",2) == 0) strcpy (dato_1,"Cursor bind lock"); elseif ( strncmp (cad_decodificar,"DF",2) == 0) strcpy (dato_1,"Data file instance lock"); elseif ( strncmp (cad_decodificar,"DL",2) == 0) strcpy (dato_1,"Direct loader parallel index create"); els eif ( strncmp (cad_decodificar,"DM",2) == 0) strcpy (dato_1,"Mount/startup db primary/secondary instanc e lock"); elseif ( strncmp (cad_decodificar,"DR",2) == 0) strcpy (dato_1,"Distributed recovery process lock"); elseif ( strncmp (cad_decodificar,"DX",2) == 0) strcpy (dato_1,"Distributed transaction entry lock"); elseif ( strncmp (cad_decodificar,"FI",2) == 0) strcpy (dato_1,"SGA open-file information lock"); elseif ( strncmp (cad_decodificar,"FS",2) == 0) strcpy (dato_1,"File set lock"); elseif ( strncmp (cad_decodificar,"HW",2) == 0) strcpy (dato_1,"Space management operations on a specific segment lock"); elseif ( strncmp (cad_decodificar,"IN",2) == 0) strcpy (dato_1,"Instance number lock"); elseif ( strncmp (cad_decodificar,"IR",2) == 0) strcpy (dato_1,"Instance recovery serialization global enq ueue lock"); elseif ( strncmp (cad_decodificar,"IS",2) == 0) strcpy (dato_1,"Instance state lock"); elseif ( strncmp (cad_decodificar,"IV",2) == 0) strcpy (dato_1,"Library cache invalidation instance lock") ; elseif ( strncmp (cad_decodificar,"JQ",2) == 0) strcpy (dato_1,"Job queue lock"); elseif ( strncmp (cad_decodificar,"KK",2) == 0) strcpy (dato_1,"Thread kick lock"); elseif ( strncmp (cad_decodificar,"MB",2) == 0) strcpy (dato_1,"Master buffer hash table instance lock"); elseif ( strncmp (cad_decodificar,"MM",2) == 0) strcpy (dato_1,"Mount definition gloabal enqueue lock"); e lseif ( strncmp (cad_decodificar,"MR",2) == 0) strcpy (dato_1,"Media recovery lock"); elseif ( strncmp (cad_decodificar,"PF",2) == 0) strcpy (dato_1,"Password file lock"); elseif ( strncmp (cad_decodificar,"PI",2) == 0) strcpy (dato_1,"Parallel operation lock"); elseif ( strncmp (cad_decodificar,"PR",2) == 0) strcpy (dato_1,"Process startup lock"); elseif ( strncmp (cad_decodificar,"PS",2) == 0) strcpy (dato_1,"Parallel operation lock"); elseif ( strncmp (cad_decodificar,"RE",2) == 0) strcpy (dato_1,"USE_ROW_ENQUEUE enforcement lock"); elseif ( strncmp (cad_decodificar,"RT",2) == 0) strcpy (dato_1,"Redo thread global enqueue lock"); elseif ( strncmp (cad_decodificar,"RW",2) == 0) strcpy (dato_1,"Row wait enqueue lock"); elseif ( strncmp (cad_decodificar,"SC",2) == 0) strcpy (dato_1,"System commit number instance lock"); elseif ( strncmp (cad_decodificar,"SH",2) == 0) strcpy (dato_1,"System commit number high water mark enque ue lock"); elseif ( strncmp (cad_decodificar,"SM",2) == 0) strcpy (dato_1,"SMON lock"); elseif ( strncmp (cad_decodificar,"SN",2) == 0) strcpy (dato_1,"Sequence number instance lock"); elseif ( strncmp (cad_decodificar,"SQ",2) == 0) strcpy (dato_1,"Sequence number enqueue lock"); else

Page 415: Orastat line command

if ( strncmp (cad_decodificar,"SS",2) == 0) strcpy (dato_1,"Sort segment lock"); elseif ( strncmp (cad_decodificar,"ST",2) == 0) strcpy (dato_1,"Space transaction enqueue lock"); elseif ( strncmp (cad_decodificar,"SV",2) == 0) strcpy (dato_1,"Sequence number value lock"); elseif ( strncmp (cad_decodificar,"TA",2) == 0) strcpy (dato_1,"Generic enqueue lock"); elseif ( strncmp (cad_decodificar,"TD",2) == 0) strcpy (dato_1,"DDL enqueue lock"); elseif ( strncmp (cad_decodificar,"TE",2) == 0) strcpy (dato_1,"Extend-segment enqueue lock"); elseif ( strncmp (cad_decodificar,"TM",2) == 0) strcpy (dato_1,"DML enqueue lock"); elseif ( strncmp (cad_decodificar,"TT",2) == 0) strcpy (dato_1,"Temporary table enqueue lock"); elseif ( strncmp (cad_decodificar,"TX",2) == 0) strcpy (dato_1,"Transaction enqueue lock"); elseif ( strncmp (cad_decodificar,"UL",2) == 0) strcpy (dato_1,"User supplied lock"); elseif ( strncmp (cad_decodificar,"UN",2) == 0) strcpy (dato_1,"User name lock"); elseif ( strncmp (cad_decodificar,"US",2) == 0) strcpy (dato_1,"Undo segment DDL lock"); elseif ( strncmp (cad_decodificar,"WL",2) == 0) strcpy (dato_1,"Being-written redo log instance lock"); el seif ( strncmp (cad_decodificar,"WS",2) == 0) strcpy (dato_1,"Write-atomic-log-switch global enqueue loc k"); elseif ( strncmp (cad_decodificar,"TS",2) == 0) strcpy (dato_1,"Temporary segment enqueue lock (ID2=0) New block allocation enqueue lock

(ID2=1)"); elseif ( strncmp (cad_decodificar,"LA",2) == 0) strcpy (dato_1,"Library cache lock instance lock (A=namesp ace)"); elseif ( strncmp (cad_decodificar,"LB",2) == 0) strcpy (dato_1,"Library cache lock instance lock (B=namesp ace)"); elseif ( strncmp (cad_decodificar,"LC",2) == 0) strcpy (dato_1,"Library cache lock instance lock (C=namesp ace)"); elseif ( strncmp (cad_decodificar,"LD",2) == 0) strcpy (dato_1,"Library cache lock instance lock (D=namesp ace)"); elseif ( strncmp (cad_decodificar,"LE",2) == 0) strcpy (dato_1,"Library cache lock instance lock (E=namesp ace)"); elseif ( strncmp (cad_decodificar,"LF",2) == 0) strcpy (dato_1,"Library cache lock instance lock (F=namesp ace)"); elseif ( strncmp (cad_decodificar,"LG",2) == 0) strcpy (dato_1,"Library cache lock instance lock (G=namesp ace)"); elseif ( strncmp (cad_decodificar,"LH",2) == 0) strcpy (dato_1,"Library cache lock instance lock (H=namesp ace)"); elseif ( strncmp (cad_decodificar,"LI",2) == 0) strcpy (dato_1,"Library cache lock instance lock (I=namesp ace)"); elseif ( strncmp (cad_decodificar,"LJ",2) == 0) strcpy (dato_1,"Library cache lock instance lock (J=namesp ace)"); elseif ( strncmp (cad_decodificar,"LK",2) == 0) strcpy (dato_1,"Library cache lock instance lock (K=namesp ace)"); elseif ( strncmp (cad_decodificar,"LL",2) == 0) strcpy (dato_1,"Library cache lock instance lock (L=namesp ace)"); elseif ( strncmp (cad_decodificar,"LM",2) == 0) strcpy (dato_1,"Library cache lock instance lock (M=namesp ace)"); elseif ( strncmp (cad_decodificar,"LN",2) == 0) strcpy (dato_1,"Library cache lock instance lock (N=namesp ace)"); elseif ( strncmp (cad_decodificar,"LO",2) == 0) strcpy (dato_1,"Library cache lock instance lock (O=namesp ace)"); elseif ( strncmp (cad_decodificar,"LP",2) == 0) strcpy (dato_1,"Library cache lock instance lock (P=namesp ace)"); elseif ( strncmp (cad_decodificar,"LS",2) == 0) strcpy (dato_1,"Log start/log switch enqueue lock"); elseif ( strncmp (cad_decodificar,"PA",2) == 0) strcpy (dato_1,"Library cache pin instance lock (A=namespa ce)"); elseif ( strncmp (cad_decodificar,"PB",2) == 0) strcpy (dato_1,"Library cache pin instance lock (B=namespa ce)"); elseif ( strncmp (cad_decodificar,"PC",2) == 0) strcpy (dato_1,"Library cache pin instance lock (C=namespa ce)"); elseif ( strncmp (cad_decodificar,"PD",2) == 0) strcpy (dato_1,"Library cache pin instance lock (D=namespa ce)"); elseif ( strncmp (cad_decodificar,"PE",2) == 0) strcpy (dato_1,"Library cache pin instance lock (E=namespa ce)"); elseif ( strncmp (cad_decodificar,"PF",2) == 0) strcpy (dato_1,"Library cache pin instance lock (F=namespa ce)"); elseif ( strncmp (cad_decodificar,"PG",2) == 0) strcpy (dato_1,"Library cache pin instance lock (G=namespa ce)"); else

Page 416: Orastat line command

if ( strncmp (cad_decodificar,"PH",2) == 0) strcpy (dato_1,"Library cache pin instance lock (H=namespa ce)"); elseif ( strncmp (cad_decodificar,"PI",2) == 0) strcpy (dato_1,"Library cache pin instance lock (I=namespa ce)"); elseif ( strncmp (cad_decodificar,"PJ",2) == 0) strcpy (dato_1,"Library cache pin instance lock (J=namespa ce)"); elseif ( strncmp (cad_decodificar,"PL",2) == 0) strcpy (dato_1,"Library cache pin instance lock (K=namespa ce)"); elseif ( strncmp (cad_decodificar,"PK",2) == 0) strcpy (dato_1,"Library cache pin instance lock (L=namespa ce)"); elseif ( strncmp (cad_decodificar,"PM",2) == 0) strcpy (dato_1,"Library cache pin instance lock (M=namespa ce)"); elseif ( strncmp (cad_decodificar,"PN",2) == 0) strcpy (dato_1,"Library cache pin instance lock (N=namespa ce)"); elseif ( strncmp (cad_decodificar,"PO",2) == 0) strcpy (dato_1,"Library cache pin instance lock (O=namespa ce)"); elseif ( strncmp (cad_decodificar,"PP",2) == 0) strcpy (dato_1,"Library cache pin instance lock (P=namespa ce)"); elseif ( strncmp (cad_decodificar,"PQ",2) == 0) strcpy (dato_1,"Library cache pin instance lock (Q=namespa ce)"); elseif ( strncmp (cad_decodificar,"PR",2) == 0) strcpy (dato_1,"Library cache pin instance lock (R=namespa ce)"); elseif ( strncmp (cad_decodificar,"PS",2) == 0) strcpy (dato_1,"Library cache pin instance lock (S=namespa ce)"); elseif ( strncmp (cad_decodificar,"PT",2) == 0) strcpy (dato_1,"Library cache pin instance lock (T=namespa ce)"); elseif ( strncmp (cad_decodificar,"PU",2) == 0) strcpy (dato_1,"Library cache pin instance lock (U=namespa ce)"); elseif ( strncmp (cad_decodificar,"PV",2) == 0) strcpy (dato_1,"Library cache pin instance lock (V=namespa ce)"); elseif ( strncmp (cad_decodificar,"PW",2) == 0) strcpy (dato_1,"Library cache pin instance lock (W=namespa ce)"); elseif ( strncmp (cad_decodificar,"PX",2) == 0) strcpy (dato_1,"Library cache pin instance lock (X=namespa ce)"); elseif ( strncmp (cad_decodificar,"PY",2) == 0) strcpy (dato_1,"Library cache pin instance lock (Y=namespa ce)"); elseif ( strncmp (cad_decodificar,"PZ",2) == 0) strcpy (dato_1,"Library cache pin instance lock (Z=namespa ce)"); elseif ( strncmp (cad_decodificar,"QA",2) == 0) strcpy (dato_1,"Row cache instance lock (A=cache)"); elseif ( strncmp (cad_decodificar,"QB",2) == 0) strcpy (dato_1,"Row cache instance lock (B=cache)"); elseif ( strncmp (cad_decodificar,"QC",2) == 0) strcpy (dato_1,"Row cache instance lock (C=cache)"); elseif ( strncmp (cad_decodificar,"QD",2) == 0) strcpy (dato_1,"Row cache instance lock (D=cache)"); elseif ( strncmp (cad_decodificar,"QE",2) == 0) strcpy (dato_1,"Row cache instance lock (E=cache)"); elseif ( strncmp (cad_decodificar,"QF",2) == 0) strcpy (dato_1,"Row cache instance lock (F=cache)"); elseif ( strncmp (cad_decodificar,"QG",2) == 0) strcpy (dato_1,"Row cache instance lock (G=cache)"); elseif ( strncmp (cad_decodificar,"QH",2) == 0) strcpy (dato_1,"Row cache instance lock (H=cache)"); elseif ( strncmp (cad_decodificar,"QI",2) == 0) strcpy (dato_1,"Row cache instance lock (I=cache)"); elseif ( strncmp (cad_decodificar,"QJ",2) == 0) strcpy (dato_1,"Row cache instance lock (J=cache)"); elseif ( strncmp (cad_decodificar,"QL",2) == 0) strcpy (dato_1,"Row cache instance lock (K=cache)"); elseif ( strncmp (cad_decodificar,"QK",2) == 0) strcpy (dato_1,"Row cache instance lock (L=cache)"); elseif ( strncmp (cad_decodificar,"QM",2) == 0) strcpy (dato_1,"Row cache instance lock (M=cache)"); elseif ( strncmp (cad_decodificar,"QN",2) == 0) strcpy (dato_1,"Row cache instance lock (N=cache)"); elseif ( strncmp (cad_decodificar,"QO",2) == 0) strcpy (dato_1,"Row cache instance lock (O=cache)"); elseif ( strncmp (cad_decodificar,"QP",2) == 0) strcpy (dato_1,"Row cache instance lock (P=cache)"); elseif ( strncmp (cad_decodificar,"QQ",2) == 0) strcpy (dato_1,"Row cache instance lock (Q=cache)"); elseif ( strncmp (cad_decodificar,"QR",2) == 0) strcpy (dato_1,"Row cache instance lock (R=cache)"); elseif ( strncmp (cad_decodificar,"QS",2) == 0) strcpy (dato_1,"Row cache instance lock (S=cache)"); elseif ( strncmp (cad_decodificar,"QT",2) == 0) strcpy (dato_1,"Row cache instance lock (T=cache)"); elseif ( strncmp (cad_decodificar,"QU",2) == 0) strcpy (dato_1,"Row cache instance lock (U=cache)"); else

Page 417: Orastat line command

if ( strncmp (cad_decodificar,"QV",2) == 0) strcpy (dato_1,"Row cache instance lock (V=cache)"); elseif ( strncmp (cad_decodificar,"QW",2) == 0) strcpy (dato_1,"Row cache instance lock (W=cache)"); elseif ( strncmp (cad_decodificar,"QX",2) == 0) strcpy (dato_1,"Row cache instance lock (X=cache)"); elseif ( strncmp (cad_decodificar,"QY",2) == 0) strcpy (dato_1,"Row cache instance lock (Y=cache)"); elseif ( strncmp (cad_decodificar,"QZ",2) == 0) strcpy (dato_1,"Row cache instance lock (Z=cache)");

return (dato_1);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

funcion_columna (int column_size, void *punt_cadena , int nro_funcion){char dato_1 [1024];

switch (nro_funcion){case FUNC_DB_BLOCK_SIZE:

/* Calculo DB_BLOCK_SIZE, multiplico por la COLUMNA y devuelvo el RESULTADO *//* ------------------------------------------------ ------------------------ */itoa ((atoi ( (char *) punt_cadena ) * db_block_siz e() ) / 1000,dato_1,10);break;

case FUNC_COMMAND_SQL:/* Decodifico el nro de la Columna y lo relaciono c on el nombre del COMANDO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_command_oracle ( atoi ( (ch ar *) punt_cadena) ) );

case FUNC_LOCK_MODE:/* Decodifico el nro de la Columna y lo relaciono c on el tipo de LOCKEO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_lock_mode ( atoi ( (char *) punt_cadena) ) );

case FUNC_LOCK_NAME_MODE:/* Decodifico el nro de la Columna y lo relaciono c on el nombre de LOCKEO *//* ------------------------------------------------ ------------------------ */strcpy ( dato_1, decode_name_lock ( (char *) punt_c adena) );

default: break;

}/* ------------------------------------------------ ------------------------ */strncpy ( (char *) punt_cadena, dato_1, column_size );

Page 418: Orastat line command

/* ------------------------------------------------ ------------------------ */return NO_ERROR;}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */

procesar_columna_funcion ( void *punt_cadena, int n ro_columna, int *nro_funcion ){char procesar[10];char col_char[10];char func_char[10];

int pos_col = 0;int flag_procesar = 0;int caracter = 0;int delimitador = 0;int contador = 0;int nro_col = 0;int nro_func = 0;

for ( pos_col = 1; pos_col < 3; pos_col ++){procesar [pos_col-1] = ( (char *) punt_cadena)[pos_ col];procesar [pos_col] = FIN_LINEA;}

if (strncmp (procesar,"SI",2) == 0 )flag_procesar = SI_PROCESAR;

if (strncmp (procesar,"NO",2) == 0 )flag_procesar = NO_PROCESAR;

for ( pos_col = 3; pos_col < (int ) (strlen ( (char *) punt_cadena )); pos_col ++ ){caracter = ( (char *) punt_cadena )[pos_col];if ( caracter == SEPARADOR )

if ( delimitador == 0 ) delimitador++;

elsedelimitador--;

Page 419: Orastat line command

if ( ( delimitador == 1 ) && ( caracter != SEPARADO R ) ){if ( contador < 2 )

{col_char[contador] = caracter;col_char[contador+1] = FIN_LINEA;}

else{func_char[contador - 2] = caracter;func_char[contador -2+1]= FIN_LINEA;}

contador++;if ( contador == 4 )

{nro_col = atoi (col_char);nro_func = atoi (func_char);contador=0;

/* printf ("Colu [%d] Func [%d] \n",nro_col, nro_fu nc); */if ( nro_col == nro_columna )

{*nro_funcion = nro_func;return (SI_PROCESAR);}

}}

}return (NO_PROCESAR);}

/* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** *//* ----****----****----****----****----****----**** ----****----****----****----**** */--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ---

Page 420: Orastat line command

--- ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: resource1.h ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***//{{NO_DEPENDENCIES}}// Microsoft Visual C++ generated include file.// Used by orastat01.rc

// Next default values for new objects// #ifdef APSTUDIO_INVOKED#ifndef APSTUDIO_READONLY_SYMBOLS#define _APS_NEXT_RESOURCE_VALUE 101#define _APS_NEXT_COMMAND_VALUE 40001#define _APS_NEXT_CONTROL_VALUE 1001#define _APS_NEXT_SYMED_VALUE 101#endif#endif--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ----------------------

Page 421: Orastat line command

--------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: senten500.c ****** ****** ****************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ***#include <stdio.h>#include <string.h>#include <stdlib.h>

cargar_sentencia (int version, int sentencia, char *opcion_uno, char *opcion_dos, char *opcion_tres ){switch (sentencia)

{case 0:

/********** PARA TODAS LAS VERSIONES **********/strcpy (dyn_column,"|ORACLE_VERSION|");strcpy (dyn_title,"Oracle Version ...\n");strcpy (dyn_sts,"select ltrim(lpad(banner,70)) Ver sion from v$version ");strcat (dyn_sts,"where banner like '%Oracle%' ");strcpy (dyn_size,"80");break;

case 1:

Page 422: Orastat line command

/********** PARA TODAS LAS VERSIONES **********/strcpy (dyn_column,"|NOMBRE|VALOR|DESCRIPCION|");strcpy (dyn_title,"Active Parameters ...\n");strcpy (dyn_sts,"select name,value,description from v$parameter order by 1 ");strcpy (dyn_size,"355540");break;

case 2:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|DIRECCION|SES|NOMBRE|CMD|ESTAD O|PID|TERMINAL|INICIADO|");strcpy (dyn_title,"User conected...\n");strcpy (dyn_sts,"select saddr ADDRESS,sid SES,usern ame NOMBRE,command CMD, \n");strcat (dyn_sts,"status ESTADO,process PID,terminal TERMINAL, \n");strcat (dyn_sts,"to_char(logon_time,'DD/MM/YYYY - H H24:MI:SS') INICIADO from v$session ");strcpy (dyn_size,"0804150608091122");break;

case 3:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|CANTIDAD|TIEMPO|CLASE|");strcpy (dyn_title,"User conected...\n");strcpy (dyn_title,"Wait Statistics...\n");strcpy (dyn_sts,"select count CANTIDAD,time TIEMPO, class CLASE from v$waitstat order by 1 ");strcpy (dyn_size,"101030");break;

case 4:strcpy (dyn_title,"Datafile I-O ...\n");switch (version)

{case VERSION_ORACLE_920:

strcpy (dyn_column,"|READPHY|READBLK|WRITPHY||WRITB LK|DATAFILE|IO_STAT|");strcpy (dyn_sts,"select f.phyrds, f.phyblkrd, f.phy wrts, ");strcat (dyn_sts,"f.phyblkwrt, f.lstiotim*10 , d.nam e\n");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");strcpy (dyn_size,"080808086010");break;

case VERSION_ORACLE_817:case VERSION_ORACLE_816:case VERSION_ORACLE_734:

strcpy (dyn_column,"|READPHY|READBLK|WRITPHY|WRITBL K|DATAFILE|");

Page 423: Orastat line command

strcpy (dyn_sts,"select f.phyrds, f.phyblkrd, f.phy wrts, ");strcat (dyn_sts,"f.phyblkwrt, d.name ");strcat (dyn_sts,"from v$filestat f,v$datafile d ");strcat (dyn_sts,"where f.file# = d.file# ");strcat (dyn_sts,"order by 2 \n");strcpy (dyn_size,"0606060660");break;

default:break;

}break;

case 5:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|DATAFILE|BLKREAD|BLKWRITE|BLKT OT|");strcpy (dyn_title,"Datafile Blocks R+W ...\n");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 f rom v$filestat f, v$datafile d \n");strcat (dyn_sts,"where f.file# = d.file# order by 3 desc ");strcpy (dyn_size,"60060606");break;

case 6:/********** PARA TODAS LAS VERSIONES **********/

strcpy (dyn_column,"|USUARIO|CANTIDAD|EVENTO|");strcpy (dyn_title,"Wait Events ...\n");strcpy (dyn_sts,"select 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: Executi on Msg%' and \n");strcat (dyn_sts,"sw.event not like 'pipe get%' grou p by se.username, sw.event ");strcpy (dyn_size,"201030");break;

case 7:strcpy (dyn_title,"Instance status ...\n");switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|INSTNRO|INSTNAME|HOSTNAME|VERS ION|INICIADO|ESTADO|PARALELO|DATAESTA|INSTROLE|ACTS TATUS|");

Page 424: Orastat line command

strcpy (dyn_title,"Instance status ...\n");strcpy (dyn_sts,"select instance_number, instance_n ame, host_name, version, \n");strcat (dyn_sts,"to_char(startup_time,'DD/MM/YYYY - HH24:MI:SS'),status, parallel, \n");strcat (dyn_sts,"database_status, instance_role \n" ); strcat (dyn_sts,"from v$instance \n");strcpy (dyn_size,"03080910220503101010");break;

case VERSION_ORACLE_734:strcpy (dyn_column,"|NOMBRE DE CLAVE|ESTADO|");strcpy (dyn_title,"Instance status ...\n");strcpy (dyn_sts,"select 'RESTRITED MODE',value ");strcat (dyn_sts,"from v$instance where key='RESTRIC TED MODE' ");strcat (dyn_sts,"union ");strcat (dyn_sts,"select 'SHUTDOWN PENDING',value ") ;strcat (dyn_sts,"from v$instance where key='SHUTDOW N PENDING' ");strcat (dyn_sts,"union ");strcat (dyn_sts,"select 'STARTUP TIME - JULIAN',val ue ");strcat (dyn_sts,"from v$instance where key='STARTUP TIME - JULIAN' ");strcat (dyn_sts,"union ");strcat (dyn_sts,"select 'STARTUP TIME - SECONDS', v alue ");strcat (dyn_sts,"from v$instance where key='STARTUP TIME - SECONDS' \n");strcpy (dyn_size,"4015");break;

default:break;

}break;

case 8:switch (version)

{case VERSION_ORACLE_816:case VERSION_ORACLE_817:case VERSION_ORACLE_920:

strcpy (dyn_column,"|SES|SERIAL|USER|EXTENTS|CONTEN TS|SIZEKB");strcpy (dyn_title,"Temporal Space by user ...\n");strcpy (dyn_sts,"select se.sid, se.serial#, se.user name, 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'))/1 000) 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.user name,so.extents,so.contents \n");

Page 425: Orastat line command

strcpy (dyn_size,"101010101030");break;

case VERSION_ORACLE_734:/* PROCESAR CON FUNCION.....SELECT NO SOPORTADO */

strcpy (dyn_proc_fun,"|NO|0601|");strcpy (dyn_column,"|SES|SERIAL|USER|EXTENTS|CONTEN TS|SIZEKB");strcpy (dyn_title,"Temporal Space by user ...\n");strcpy (dyn_sts,"select se.sid, se.serial#, se.user name, so.extents, so.contents, \n");strcat (dyn_sts,"sum(so.blocks) 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.user name,so.extents,so.contents \n");strcpy (dyn_size,"101010101030");

default:break;

}break;

case 9:strcpy (dyn_column,"|PCTFREE|");strcpy (dyn_title,"Total Freelist Wait Percentage . ..\n");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 li st' and \n");strcat (dyn_sts,"b.name in ('db block gets','consis tent gets') group by a.count ");strcpy (dyn_size,"12");break;

case 10:strcpy (dyn_column,"|CHEKPOINT_VALUE|FECHA|");strcpy (dyn_title,"Last Checkpoint Time ...\n");strcpy (dyn_sts,"select min(sysdate - CHECKPOINT_TI ME)*24*60 MINUTO, \n");strcat (dyn_sts,"to_char(sysdate,'DD/MM/YYYY - HH24 :MI:SS') FECHA from v$datafile_header");strcpy (dyn_size,"1522");break;

case 11:strcpy (dyn_column,"|TBLSPACE|CONTENT|AVAILA_KB|MAX _ID|USED_KB|FREE_KB|PCT_USED|");strcpy (dyn_title,"List Tablespaces ...\n");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_byt es),0.00)/a.sum_bytes*100.0,2) PCT_USED, d.status, \n");strcat (dyn_sts,"d.extent_management,d.allocation_t ype from (select tablespace_name,sum(bytes) sum_byt es, \n");strcat (dyn_sts,"count(1) max_id from dba_data_file s group by tablespace_name ) a, \n");

Page 426: Orastat line command

strcat (dyn_sts,"(select tablespace_name,sum(bytes) sum_bytes from dba_free_space \n");strcat (dyn_sts,"group by tablespace_name) c, dba_t ablespaces d \n");strcat (dyn_sts,"where a.tablespace_name = c.tables pace_name(+) and \n");strcat (dyn_sts,"a.tablespace_name = d.tablespace_n ame (+) order by 1 ");strcpy (dyn_size,"151010061010070810101010");break;

case 12:strcpy (dyn_column,"|ADDRESS|TIMESTART|ESTADO|BLK_U SED|KB_USED|SES|SERIAL|NOMBRE|USUARIO|");strcpy (dyn_title,"Active Transactions ...\n");strcpy (dyn_sts,"select tr.addr,to_char(tr.start_ti me,'DD/MM/YYYY - 24HH:MM:SS') TIME_START, \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");strcat (dyn_sts,"se.sid SES, se.serial# SERIAL,rn.n ame,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 6");strcpy (dyn_size,"102208080810040605101010");break;

case 13:strcpy (dyn_column,"|GETS|MISS|HITRATIO|IMM_GETS|IM M_MISS|SLEEP|GETSPIN|ADDRESS|LATCH|NOMBRE|");strcpy (dyn_title,"Latch Details ...\n");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 orde r by round(((gets-misses)/gets),2) desc");strcpy (dyn_size,"10040808080507080825");break;

case 14:strcpy (dyn_column,"|NOMBRE|INIT_ALLOC|CURR_UTILIZA |MAX_UTILIZA|LIMITE|");strcpy (dyn_title,"Resource Limits ...\n");strcpy (dyn_sts,"select resource_name NOMBRE,initia l_allocation INIT_ALLOC, \n");strcat (dyn_sts,"current_utilization CURR_UTILIZA,m ax_utilization MAX_UTILIZA, \n");strcat (dyn_sts,"limit_value LIMITE from v$resource _limit order by 1");strcpy (dyn_size,"3010101010");break;

case 15:strcpy (dyn_column,"|DATAFILE|MBYTES|ESTADO|");strcpy (dyn_title,"List Datafiles ...\n");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");

Page 427: Orastat line command

strcpy (dyn_size,"701008");break;

case 16:strcpy (dyn_column,"|ESTADO|DATAFILE|TBLSPACE|SIZE_ KB|USED_KB|USED_PCT|");strcpy (dyn_title,"List Datafiles New 9i ...\n");strcpy (dyn_sts,"select v.status ESTADO, d.file_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s,0))/d.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_data_files d, v$dataf ile v, (select file_id,sum(bytes) bytes \n");strcat (dyn_sts,"from sys.dba_free_space group by f ile_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_nam e DATAFILE, d.tablespace_name TBLNAME, \n");strcat (dyn_sts,"to_char(nvl((d.bytes/1024),0),'999 99990.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.byte s)*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");strcpy (dyn_size,"036018121208");break;

case 17:strcpy (dyn_column,"|ESTADO|TBLSPACE|TIPO|EXTENT_MG M|SIZE_KB|USED_KB|USED_PCT|");strcpy (dyn_title,"List Tablespaces New 9i...\n");strcpy (dyn_sts,"select d.status ESTADO, d.tablespa ce_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.byte s,0))/a.bytes)*100,0),'990.00') USED_PCT \n");strcat (dyn_sts,"from sys.dba_tablespaces d, (selec t tablespace_name, sum(bytes) bytes \n");strcat (dyn_sts,"from dba_data_files group by table space_name) a, (select tablespace_name,sum(bytes) b ytes \n");strcat (dyn_sts,"from dba_free_space group by table space_name ) f \n");strcat (dyn_sts,"where d.tablespace_name=a.tablespa ce_name(+) and \n");strcat (dyn_sts,"d.tablespace_name = f.tablespace_n ame(+) and \n");strcat (dyn_sts,"not (d.extent_management like 'LOC AL' and d.contents LIKE 'TEMPORARY') \n");strcat (dyn_sts,"union all \n"); strcat (dyn_sts,"select d.status ESTADO, d.tablespa ce_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");

Page 428: Orastat line command

strcat (dyn_sts,"to_char((nvl(t.bytes,0)/1024),'999 99999.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_nam e) 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_nam e (+) and d.extent_management like 'LOCAL' and \n") ;strcat (dyn_sts,"d.contents like 'TEMPORARY' "); strcpy (dyn_size,"06251012121212121212121010101010" );break;

case 18:strcpy (dyn_column,"|SES|SERIAL|TIPO|OS_USER|LOGON| ESTADO|PROCESO|MAQUINA|NOMBRE|PID|PROGRAMA|");strcpy (dyn_title,"Active Sessions ...\n");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 - H H24:MI:SS') LOGON,s.status ESTADO, \n");strcat (dyn_sts,"s.process PROCESO, s.machine MAQUI NA, 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.add r=s.paddr \n");strcpy (dyn_size,"0404101022100910100930");break;

case 19:strcpy (dyn_column,"|SES|SEQ|W_T|S_W_T|USUARIO|ESTA DO|EVENT|STATE|P1TEXT|P1|P1RAW|P2TEXT|P2|P2RAW|P3TE XT|P3|P3RAW|");strcpy (dyn_title,"Session Waits \n");strcpy (dyn_sts,"select sw.sid SES, sw.seq# SEQ, nv l(sw.wait_time,0) W_T, \n");strcat (dyn_sts,"nvl(sw.seconds_in_wait,0) S_W_T,nv l(se.username,'.') USUA, \n");strcat (dyn_sts,"nvl(se.status,'.') ESTA,sw.event E VENT, sw.state, sw.p1text, sw.p1, \n");strcat (dyn_sts,"sw.p1raw, sw.p2text, sw.p2, sw.p2r aw, 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 2 \ n");strcpy (dyn_size,"040405050606202010101010101010101 0101010101010");break;

case 20:strcpy (dyn_column,"|TBLSPACE|INI_EXT|NEX_EXT|MIN_E XT|MAX_EXT|PCT_INC|");strcpy (dyn_title,"Default Storage Settings - By Ta blespace \n");strcpy (dyn_sts,"select tablespace_name TBLNAME, in itial_extent INI_EXT, next_extent NEX_EXT, \n");strcat (dyn_sts,"min_extents MIN_EXT, max_extents M AX_EXT, pct_increase PCT_INC \n");strcat (dyn_sts,"from dba_tablespaces \n");strcat (dyn_sts,"order by tablespace_name \n");strcpy (dyn_size,"201212121207");

Page 429: Orastat line command

break;case 21:

strcpy (dyn_column,"|OWNER_TABLE|SEG_NAME|TBLSPACE| BLOCKS|SIZE_KB|MAX_EXT|");strcpy (dyn_title,"All tables Storage (Except SYS a nd SYSTEM) \n");strcpy (dyn_sts,"select owner OWNER_TABLE,segment_n ame SEG_NAME,tablespace_name TBL_NAME, blocks BLKS, \n");strcat (dyn_sts,"(select value from v$parameter whe re name in 'db_block_size')*blocks/1024 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 b y 1,2 \n");strcpy (dyn_size,"12402005060510");break;

case 22:strcpy (dyn_column,"|OWNER|TABLNAME|TBLSPACE|BLOCK| NROWS|BUFF_POOL|LAST_ANALIZE|SIZE_KB");strcpy (dyn_title,"Non-Sys Tables \n");strcpy (dyn_sts,"select owner OWNER, table_name TNA ME, 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/Y YYY - HH24:MI'),-1) LAST_ANALIZE, \n");strcat (dyn_sts,"sum((blocks) * (select value from v$parameter where name in ('db_block_size')))/1000 \n");strcat (dyn_sts,"from dba_tables \n");strcat (dyn_sts,"group by owner,table_name,tablespa ce_name,nvl(blocks,-1),nvl(num_rows,-1), \n");strcat (dyn_sts,"buffer_pool,nvl(to_char(last_analy zed,'DD/MM/YYYY - HH24:MI'),-1) \n");strcat (dyn_sts,"order by 1,2 \n");strcpy (dyn_size,"1225200808101808");break;

case 23:strcpy (dyn_column,"|OWNER|INDEXNAME|TBLSPACE|LEAFB LK|NROROWS|BUFFPOOL|LASTANALIZ|SIZE_KB|");strcpy (dyn_title,"Non-Sys Indexes \n");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_anal yzed,'DD/MM/YYYY - HH24:MI'),-1), \n");strcat (dyn_sts,"sum((leaf_blocks) * (select value from v$parameter \n");strcat (dyn_sts,"where name in ('db_block_size')))/ 1000 \n");strcat (dyn_sts,"from dba_indexes \n");strcat (dyn_sts,"group by owner, index_name, tables pace_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");strcpy (dyn_size,"1225200808101808");break;

case 24:strcpy (dyn_column,"|USUA|ACCSTAT|EXPIRYDATE|DFLTBL NAME|TMPTBLNAME|PROFILE|CREATED|");strcpy (dyn_title,"User Defined \n");

Page 430: Orastat line command

strcpy (dyn_sts,"select * from (select distinct use rname, account_status, expiry_date, \n");strcat (dyn_sts,"default_tablespace, temporary_tabl espace, 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(nu ll), '', '', '', 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");strcpy (dyn_size,"25090820203018101010");break;

case 25:strcpy (dyn_column,"|FILENAME|TBLSPACE|ESTADO|");strcpy (dyn_title,"List Datafiles, Online Redo Logs , Control Files \n");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', statu s from v$controlfile \n");strcat (dyn_sts,"order by 1,2 \n");strcpy (dyn_size,"702010");break;

case 26:strcpy (dyn_column,"|TBLSPACE|FILENAME|BYTES|HIGHWA TER|");strcpy (dyn_title,"List Datafiles and their Used Bl ocks \n");strcpy (dyn_sts,"select a.tablespace_name, a.file_n ame, a.bytes, \n");strcat (dyn_sts,"(b.maximum + c.blocks -1) * d.db_b lock_size highwater \n");strcat (dyn_sts,"from dba_data_files a, \n");strcat (dyn_sts,"(select file_id, max(block_id) max imum \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");strcat (dyn_sts,"and c.file_id = b.file_id \n");strcat (dyn_sts,"and c.block_id = b.maximum \n");strcat (dyn_sts,"order by a.tablespace_name, a.file _name \n");strcpy (dyn_size,"256012121212");break;

case 27:strcpy (dyn_column,"|VALOR|TYPESORT|OS_USER|DB_USER |");strcpy (dyn_title,"List sorts by user \n");

Page 431: Orastat line command

strcpy (dyn_sts,"select vss.value VALOR, substr(vsn .name,1,20) TYPE_SORT, \n");strcat (dyn_sts,"substr(vs.osuser,1,20) OS_USER, su bstr(vs.username,1,20) DB_USER \n");strcat (dyn_sts,"from v$session vs, v$sesstat vss, v$statname vsn \n");strcat (dyn_sts,"where (vss.statistic# = vsn.statis tic#) and \n");strcat (dyn_sts,"(vs.sid = vss.sid ) and \n");strcat (dyn_sts,"(vsn.name like '%sort%') and \n");strcat (dyn_sts,"vss.value <> 0 \n");strcat (dyn_sts,"order by 1,2,3 \n");strcpy (dyn_size,"141820251010");break;

case 28:strcpy (dyn_column,"|ADDRESS|KADDRESS|SES|TIPO|OBJ_ ID|ID2|LOCKTY|REQT|");strcpy (dyn_title,"List lock status \n");strcpy (dyn_sts,"select lo.addr, lo.kaddr, lo.sid S ES, lo.type TIP, lo.id1 OBJID, lo.id2, \n");strcat (dyn_sts,"decode(lo.lmode,0,'None',1,'Null', 2,'Row-S (ss)',3,'Row-X (sx)',4,'Share',5,'S/Row-X (ssx)',6,'Exclu ')

LOCTYP, \n");strcat (dyn_sts,"lo.request REQT, \n");strcat (dyn_sts,"(select ltrim(object_type) \n");strcat (dyn_sts,"from all_objects where object_id=l o.id1) OBJ_TYP, \n");strcat (dyn_sts,"(select ltrim(owner)||'.'||ltrim(o bject_name) \n");strcat (dyn_sts,"from all_objects where object_id=l o.id1) OWN_OBJ, \n");strcat (dyn_sts,"(select sid SES \n");strcat (dyn_sts,"from v$session where lockwait=lo.k addr) LOC_SID \n");strcat (dyn_sts,"from v$lock lo \n");strcat (dyn_sts,"order by lo.id1, lo.lmode desc \n" );strcpy (dyn_size,"0909050405041105083509");break;

case 29:strcpy (dyn_column,"|SES|SERIAL|TYPE|OSUSER|LOGON|P ROCESS|MACHINE|USER|VALUE|PROGRAM|");strcpy (dyn_title,"List Users by CPU Usage \n");strcpy (dyn_sts,"select vs.sid, vs.serial#, vs.type , vs.osuser, \n");strcat (dyn_sts,"sysdate - logon_time, \n");strcat (dyn_sts,"vs.process, vs.machine, vs.usernam e, vss.value, \n");strcat (dyn_sts,"vs.program \n");strcat (dyn_sts,"from v$session vs, v$sesstat vss, v$statname vsn \n");strcat (dyn_sts,"where vss.statistic# = vsn.statist ic# and \n");strcat (dyn_sts,"vs.sid = vss.sid and \n");strcat (dyn_sts,"vsn.name = 'CPU used by this sessi on' \n");strcat (dyn_sts,"and vss.value <> 0 \n");strcat (dyn_sts,"order by 10 \n");

Page 432: Orastat line command

strcpy (dyn_size,"101010101010101010101010101010101 01010101010");break;

case 30:strcpy (dyn_column,"|TEXT_SQL|");strcpy (dyn_title,"Sql statement by this user \n");strcpy (dyn_sts,"select sql_text \n");strcat (dyn_sts,"from v$sqltext \n");strcat (dyn_sts,"where address = ( select sql_addre ss \n");strcat (dyn_sts,"from v$session \n");strcat (dyn_sts,"where sid=");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,") order by piece \n");strcpy (dyn_size,"70");break;

case 31:strcpy (dyn_column,"|GRUPO|THREAD|SEQUENCE|BYTES|ME MBER|ARCHIVED|ESTADO|FSTCHANGE|FSTTIME|");strcpy (dyn_title,"Redo Logs - Status ");strcpy (dyn_sts,"select group#, thread#, sequence#, bytes, members, \n");strcat (dyn_sts,"archived, status, first_change#, \ n");strcat (dyn_sts,"to_char(first_time,'DD/MM/YYYY - H H24:MI') \n");strcat (dyn_sts,"from v$log \n");strcpy (dyn_size,"070710101010101220");break;

case 32:strcpy (dyn_column,"|THREAD|SEQUENCE|NAME|FSTCHANGE |FSTTIME|BLOCKS|BLKSIZE|COMPTIME|");strcpy (dyn_title,"Archived Logs History - by firs t TimeStamp ");strcpy (dyn_sts,"select thread#, sequence#, name, f irst_change#, \n");strcat (dyn_sts,"to_char (first_time,'DD/MM/YYYY - HH24:MI:SS'), \n");strcat (dyn_sts,"blocks, block_size, \n");strcat (dyn_sts,"to_char (completion_time,'DD/MM/YY YY - HH24:MI:SS') \n");strcat (dyn_sts,"from v$archived_log order by 6 \n" );strcpy (dyn_size,"1010101020101020101020");break;

case 33:strcpy (dyn_column,"|GROUP|FSTCHANGE|MEMBER|SEQUENC E|");strcpy (dyn_title,"Redo Log Recovery Report - CURRE NT Online Redo log info ");strcpy (dyn_sts,"select a.group#, a.first_change#, b.member, a.sequence# \n");strcat (dyn_sts,"from v$log a, v$logfile b \n");strcat (dyn_sts,"where a.group# = b.group# \n");strcat (dyn_sts,"and a.status = 'CURRENT' \n");

Page 433: Orastat line command

strcpy (dyn_size,"06125208");break;

case 34:strcpy (dyn_column,"|THREAD|SEQUENCE|FSTCHANGE|SWIC HANGE|FSTTIME|");strcpy (dyn_title,"Archive Log History ");strcpy (dyn_sts,"select thread#, sequence#, first_c hange#, \n");strcat (dyn_sts,"switch_change#, \n");strcat (dyn_sts,"to_char(first_time,'DD/MM/YYYY - H H24:MI:SS') \n");strcat (dyn_sts,"from v$loghist \n");strcat (dyn_sts,"order by 5 \n");strcpy (dyn_size,"0810171722");break;

case 35:strcpy (dyn_column,"|SES|USER|STATUS|SQLTEXT|");strcpy (dyn_title,"Session Latch Waits - SQL ");strcpy (dyn_sts,"select sw.sid , nvl(se.username,'. ') , \n");strcat (dyn_sts,"nvl(se.status,'.') , sq.sql_text \ n");strcat (dyn_sts,"from v$session_wait sw, v$session se, v$sqltext sq \n");strcat (dyn_sts,"where sw.sid = se.sid and \n");strcat (dyn_sts,"se.sql_address = sq.address and \n ");strcat (dyn_sts,"se.sql_hash_value = sq.hash_value and \n");strcat (dyn_sts,"sw.event = 'latch_free' \n");strcat (dyn_sts,"order by 1 \n");strcpy (dyn_size,"0530303030");break;

case 36:strcpy (dyn_column,"|SES|USER|STATUS|SQLTEXT|");strcpy (dyn_title,"Whoami in Oracle ");strcpy (dyn_sts,"select substr(v2.sid,1,5), substr( v2.username,1,8), \n");strcat (dyn_sts,"program, sql_text \n");strcat (dyn_sts,"from sys.v_$sqlarea v1, \n");strcat (dyn_sts,"sys.v_$session v2 \n");strcat (dyn_sts,"where v1.address = v2.sql_address and \n");strcat (dyn_sts,"v1.hash_value = v2.sql_hash_value \n");strcpy (dyn_size,"10202030");break;

case 37:strcpy (dyn_column,"|fadsdf|asdfasd|");strcpy (dyn_title,"Privileges by User ");strcpy (dyn_sts,"select decode (sa1.grantee#1, 1, ' PUBLIC', u1.name), \n");

Page 434: Orastat line command

strcat (dyn_sts,"substr (u2.name,1,20), substr(spm. name,1,27) \n");strcat (dyn_sts,"from sys.sysauth$ sa1, sys.sysauth # sa2, sys.user$ u1, \n");strcat (dyn_sts,"sys.user$ u2, sys.system_privilege _map spm \n");strcat (dyn_sts,"where sa1.grantee# = u1.user# and \n");strcat (dyn_sts,"sa1.privilege# = u2.user# and \n") ;strcat (dyn_sts,"u2.user# = sa2.grantee# and \n");strcat (dyn_sts,"sa2.privilege# = spm.privilege \n" );strcat (dyn_sts,"union \n");strcat (dyn_sts,"select u.name, NULL, substr(spm.na me,1,27) \n");strcat (dyn_sts,"from sys.system_privilege_map spm, sys.sysauth$ sa, \n");strcat (dyn_sts,"sys.user$ u \n");strcat (dyn_sts,"where sa.grantee#=u.user# and \n") ;strcat (dyn_sts,"sa.privilege# = spm.privilege \n") ;strcpy (dyn_size,"1010101010101010");break;

case 38:strcpy (dyn_column,"|USERNAME|SID|TERMINAL|TAB|COMM AND|LMODE|REQUEST|LADDR|LOCKT|");strcpy (dyn_title,"Detailed locking causes ");strcpy (dyn_sts,"select nvl(S.USERNAME,'Internal'), L.SID, nvl(S.TERMINAL,'None'),\n");strcat (dyn_sts,"decode(command, 0,'None',decode(l. id2,0,U1.NAME||'.'||substr(T1.NAME,1,20),'None')),\ n");strcat (dyn_sts,"decode(command,0,'BACKGROUND', 1,' Create Table', 2,'INSERT', 3,'SELECT', 4,'CREATE CL USTER',");strcat (dyn_sts,"5,'ALTER CLUSTER', 6,'UPDATE', 7,' DELETE', 8,'DROP', 9,'CREATE INDEX', 10,'DROP INDEX ',");strcat (dyn_sts,"11,'ALTER INDEX', 12,'DROP TABLE', 13,'CREATE SEQUENCE', 14,'ALTER SEQUENCE', 15,'ALT ER TABLE',");strcat (dyn_sts,"16,'DROP SEQUENCE', 17,'GRANT', 18 ,'REVOKE', 19,'CREATE SYNONYM', 20,'DROP SYNONYM', 21,'CREATE VIEW',");strcat (dyn_sts,"22,'DROP VIEW', 23,'VALIDATE INDEX ', 24,'CREATE PROCEDURE', 25,'ALTER PROCEDURE', 26, 'LOCK TABLE',");strcat (dyn_sts,"27,'NO OPERATION', 28,'RENAME', 29 ,'COMMENT', 30,'AUDIT', 31,'NOAUDIT', 32,'CREATE EX TERNAL DATABASE',");strcat (dyn_sts,"33,'DROP EXTERNAL DATABASE', 34,'C REATE DATABASE', 35,'ALTER DATABASE', 36,'CREATE RO LLBACK SEGMENT',");strcat (dyn_sts,"37,'ALTER ROLLBACK SEGMENT', 38,'D ROP ROLLBACK SEGMENT', 39,'CREATE TABLESPACE', 40,' ALTER TABLESPACE',");strcat (dyn_sts,"41,'DROP TABLESPACE', 42,'ALTER SE SSION', 43,'ALTER USER', 44,'COMMIT', 45,'ROLLBACK' ,");strcat (dyn_sts,"46,'SAVEPOINT', 47,'PL/SQL EXECUTE ', 48,'SET TRANSACTION', 49,'ALTER SYSTEM SWITCH LO G',");strcat (dyn_sts,"50,'EXPLAIN', 51,'CREATE USER', 52 ,'CREATE ROLE', 53,'DROP USER', 54,'DROP ROLE',");strcat (dyn_sts,"55,'SET ROLE', 56,'CREATE SCHEMA', 57,'CREATE CONTROL FILE', 58,'ALTER TRACING', 59,' CREATE TRIGGER',");strcat (dyn_sts,"60,'ALTER TRIGGER', 61,'DROP TRIGG ER', 62,'ANALYZE TABLE', 63,'ANALYZE INDEX', 64,'AN ALYZE CLUSTER',");strcat (dyn_sts,"65,'CREATE PROFILE', 66,'DROP PROF ILE', 67,'ALTER PROFILE', 68,'DROP PROCEDURE', 69,' DROP PROCEDURE',");strcat (dyn_sts,"70,'ALTER RESOURCE COST', 71,'CREA TE SNAPSHOT LOG', 72,'ALTER SNAPSHOT LOG', 73,'DROP SNAPSHOT LOG',");strcat (dyn_sts,"74,'CREATE SNAPSHOT', 75,'ALTER SN APSHOT', 76,'DROP SNAPSHOT', 79,'ALTER ROLE',85,'TR UNCATE TABLE',");strcat (dyn_sts,"86,'TRUNCATE CLUSTER', 87,'-', 88, 'ALTER VIEW', 89,'-', 90,'-', 91,'CREATE FUNCTION', ");strcat (dyn_sts,"92,'ALTER FUNCTION', 93,'DROP FUNC TION', 94,'CREATE PACKAGE', 95,'ALTER PACKAGE', 96, 'DROP PACKAGE',");strcat (dyn_sts,"97,'CREATE PACKAGE BODY', 98,'ALTE R PACKAGE BODY', 99,'DROP PACKAGE BODY', command||' - \?\?\?'),\n");strcat (dyn_sts,"decode(L.LMODE,1,'No Lock', 2,'Row Share', 3,'Row Exclusive', 4,'Share', 5,'Share Row Exclusive',");

Page 435: Orastat line command

strcat (dyn_sts,"6,'Exclusive','NONE'), decode(L.RE QUEST,1,'No Lock', 2,'Row Share', 3,'Row Exclusive' ,");strcat (dyn_sts,"4,'Share', 5,'Share Row Exclusive' , 6,'Exclusive','NONE'),\n");strcat (dyn_sts,"l.id1||'-'||l.id2, l.type||' - '|| decode(l.type, 'BL','Buffer hash table instance lo ck',");strcat (dyn_sts,"'CF',' Control file schema global enqueue lock', 'CI','Cross-instance function invoca tion instance lock',");strcat (dyn_sts,"'CS','Control file schema global e nqueue lock', 'CU','Cursor bind lock',");strcat (dyn_sts,"'DF','Data file instance lock', 'D L','Direct loader parallel index create',");strcat (dyn_sts,"'DM','Mount/startup db primary/sec ondary instance lock', 'DR','Distributed recovery p rocess lock',");strcat (dyn_sts,"'DX','Distributed transaction entr y lock', 'FI','SGA open-file information lock',");strcat (dyn_sts,"'FS','File set lock', 'HW','Space management operations on a specific segment lock'," );strcat (dyn_sts,"'IN','Instance number lock','IR',' Instance recovery serialization global enqueue lock ',");strcat (dyn_sts,"'IS','Instance state lock','IV','L ibrary cache invalidation instance lock',");strcat (dyn_sts,"'JQ','Job queue lock','KK','Thread kick lock','MB','Master buffer hash table instance lock',");strcat (dyn_sts,"'MM','Mount definition gloabal enq ueue lock', 'MR','Media recovery lock',");strcat (dyn_sts,"'PF','Password file lock','PI','Pa rallel operation lock','PR','Process startup lock', ");strcat (dyn_sts,"'PS','Parallel operation lock','RE ','USE_ROW_ENQUEUE enforcement lock', 'RT','Redo th read global enqueue

lock',");strcat (dyn_sts,"'RW','Row wait enqueue lock', 'SC' ,'System commit number instance lock',");strcat (dyn_sts,"'SH','System commit number high wa ter mark enqueue lock', 'SM','SMON lock','SN','Sequ ence number instance

lock',");strcat (dyn_sts,"'SQ','Sequence number enqueue lock ', 'SS','Sort segment lock','ST','Space transaction enqueue lock',");strcat (dyn_sts,"'SV','Sequence number value lock', 'TA','Generic enqueue lock', 'TD','DDL enqueue loc k',");strcat (dyn_sts,"'TE','Extend-segment enqueue lock' , 'TM','DML enqueue lock', 'TT','Temporary table en queue lock',");strcat (dyn_sts,"'TX','Transaction enqueue lock', ' UL','User supplied lock', 'UN','User name lock',");strcat (dyn_sts,"'US','Undo segment DDL lock','WL', 'Being-written redo log instance lock',");strcat (dyn_sts,"'WS','Write-atomic-log-switch glob al enqueue lock', 'TS',decode(l.id2,0,'Temporary se gment enqueue lock (ID2=

0)',");strcat (dyn_sts,"'New block allocation enqueue lock (ID2=1)'), 'LA','Library cache lock instance lock (A=namespace)',");strcat (dyn_sts,"'LB','Library cache lock instance lock (B=namespace)', 'LC','Library cache lock insta nce lock

(C=namespace)',");strcat (dyn_sts,"'LD','Library cache lock instance lock (D=namespace)', 'LE','Library cache lock insta nce lock

(E=namespace)',");strcat (dyn_sts,"'LF','Library cache lock instance lock (F=namespace)', 'LG','Library cache lock insta nce lock

(G=namespace)',");strcat (dyn_sts,"'LH','Library cache lock instance lock (H=namespace)', 'LI','Library cache lock insta nce lock

(I=namespace)',");strcat (dyn_sts,"'LJ','Library cache lock instance lock (J=namespace)', 'LK','Library cache lock insta nce lock

(K=namespace)',");strcat (dyn_sts,"'LL','Library cache lock instance lock (L=namespace)', 'LM','Library cache lock insta nce lock

(M=namespace)',");strcat (dyn_sts,"'LN','Library cache lock instance lock (N=namespace)', 'LO','Library cache lock insta nce lock

Page 436: Orastat line command

(O=namespace)',");strcat (dyn_sts,"'LP','Library cache lock instance lock (P=namespace)', 'LS','Log start/log switch enq ueue lock',");strcat (dyn_sts,"'PA','Library cache pin instance l ock (A=namespace)', 'PB','Library cache pin instanc e lock

(B=namespace)',");strcat (dyn_sts,"'PC','Library cache pin instance l ock (C=namespace)', 'PD','Library cache pin instanc e lock

(D=namespace)',");strcat (dyn_sts,"'PE','Library cache pin instance l ock (E=namespace)', 'PF','Library cache pin instanc e lock

(F=namespace)',");strcat (dyn_sts,"'PG','Library cache pin instance l ock (G=namespace)', 'PH','Library cache pin instanc e lock

(H=namespace)',");strcat (dyn_sts,"'PI','Library cache pin instance l ock (I=namespace)', 'PJ','Library cache pin instanc e lock

(J=namespace)',");strcat (dyn_sts,"'PL','Library cache pin instance l ock (K=namespace)', 'PK','Library cache pin instanc e lock

(L=namespace)',");strcat (dyn_sts,"'PM','Library cache pin instance l ock (M=namespace)', 'PN','Library cache pin instanc e lock

(N=namespace)',");strcat (dyn_sts,"'PO','Library cache pin instance l ock (O=namespace)', 'PP','Library cache pin instanc e lock

(P=namespace)',");strcat (dyn_sts,"'PQ','Library cache pin instance l ock (Q=namespace)', 'PR','Library cache pin instanc e lock

(R=namespace)',");strcat (dyn_sts,"'PS','Library cache pin instance l ock (S=namespace)', 'PT','Library cache pin instanc e lock

(T=namespace)',");strcat (dyn_sts,"'PU','Library cache pin instance l ock (U=namespace)', 'PV','Library cache pin instanc e lock

(V=namespace)',");strcat (dyn_sts,"'PW','Library cache pin instance l ock (W=namespace)', 'PX','Library cache pin instanc e lock

(X=namespace)',");strcat (dyn_sts,"'PY','Library cache pin instance l ock (Y=namespace)', 'PZ','Library cache pin instanc e lock

(Z=namespace)',");strcat (dyn_sts,"'QA','Row cache instance lock (A=c ache)', 'QB','Row cache instance lock (B=cache)',") ;strcat (dyn_sts,"'QC','Row cache instance lock (C=c ache)', 'QD','Row cache instance lock (D=cache)',") ;strcat (dyn_sts,"'QE','Row cache instance lock (E=c ache)', 'QF','Row cache instance lock (F=cache)',") ;strcat (dyn_sts,"'QG','Row cache instance lock (G=c ache)', 'QH','Row cache instance lock (H=cache)',") ;strcat (dyn_sts,"'QI','Row cache instance lock (I=c ache)', 'QJ','Row cache instance lock (J=cache)',") ;strcat (dyn_sts,"'QL','Row cache instance lock (K=c ache)', 'QK','Row cache instance lock (L=cache)',") ;strcat (dyn_sts,"'QM','Row cache instance lock (M=c ache)', 'QN','Row cache instance lock (N=cache)',") ;strcat (dyn_sts,"'QO','Row cache instance lock (O=c ache)', 'QP','Row cache instance lock (P=cache)',") ;strcat (dyn_sts,"'QQ','Row cache instance lock (Q=c ache)', 'QR','Row cache instance lock (R=cache)',") ;strcat (dyn_sts,"'QS','Row cache instance lock (S=c ache)', 'QT','Row cache instance lock (T=cache)',") ;strcat (dyn_sts,"'QU','Row cache instance lock (U=c ache)', 'QV','Row cache instance lock (V=cache)',") ;strcat (dyn_sts,"'QW','Row cache instance lock (W=c ache)', 'QX','Row cache instance lock (X=cache)',") ;

Page 437: Orastat line command

strcat (dyn_sts,"'QY','Row cache instance lock (Y=c ache)', 'QZ','Row cache instance lock (Z=cache)','\ ?\?\?\?') \n");strcat (dyn_sts,"from v$lock l, v$session s, sys.us er$ u1, sys.obj$ t1 \n");strcat (dyn_sts,"where l.sid = s.sid and t1.obj# = decode (l.id2,0,l.id1,1) and \n");strcat (dyn_sts,"u1.user# = t1.owner# and s.type != 'BACKGROUND' \n");strcat (dyn_sts,"order by 1,2,5");strcpy (dyn_size,"1010101010101010");break;

case 39:strcpy (dyn_column,"|VALOR|NOMBRE|");strcpy (dyn_title,"Current Activity Report ");strcpy (dyn_sts,"select name,value from v$sysstat \ n");strcat (dyn_sts,"where name like '%user%'; \n");strcpy (dyn_size,"2512");break;

case 40:strcpy (dyn_column,"|TBLSPACE|TABLENAME|NROWS|LAST

ANALIZED|INIEXT|NEXEXT|MINEXT|MAXEXT|PCTINC|BUFPOL| BLOCKS|FREELST|PCTFREE|INITRANS|MAXTRANS|FREEGRP");strcpy (dyn_title,"Table Description del Usuario [ ");strcat (dyn_title,opcion_uno);strcat (dyn_title," ] ");strcpy (dyn_sts,"select tablespace_name, table_name , \n");strcat (dyn_sts,"nvl(to_char (num_rows),\'(Null)\') , \n");strcat (dyn_sts,"nvl(to_char (last_analyzed,'YYYY/M M/DD-HH24:MI:SS'),\'(Null)\'), \n");strcat (dyn_sts,"initial_extent,next_extent,\n");strcat (dyn_sts,"min_extents,max_extents,pct_increa se,buffer_pool,\n");strcat (dyn_sts,"nvl(to_char (blocks),\'(Null)\'),\ n");strcat (dyn_sts,"freelists,pct_free,ini_trans,max_t rans,\n");strcat (dyn_sts,"freelist_groups \n");strcat (dyn_sts,"from dba_tables \n");strcat (dyn_sts,"where owner = '");strcat (dyn_sts,opcion_uno);strcat (dyn_sts,"' ");if ( strlen (opcion_dos) > 0 )

{strcat (dyn_sts,"and table_name = '");strcat (dyn_sts,opcion_dos);strcat (dyn_sts,"' \n");}

else strcat (dyn_sts,"\n");strcpy (dyn_size,"15300719050505050508060606060606" );

Page 438: Orastat line command

break;default:

strcpy (dyn_column,"|ORACLE_VERSION|");strcpy (dyn_title,"Oracle Version ...\n");strcpy (dyn_sts,"select ltrim(lpad(banner,70)) Ver sion from v$version ");strcpy (dyn_size,"80");break;

}/************************************************** ******//* printf ("Statement [%s] \n",dyn_sts); *//************************************************** ******/

if (strlen (dyn_sts) >= MAX_STMT)printf ("Max Statement large [%d] | Actual Statemen t large [%d] \n",MAX_STMT,strlen(dyn_sts));

return NO_ERROR;}

--- ------ ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---*************************************************** ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************************************************************* ************************* ****** ****** ARCHIVO: ver_menu_opcion.c ****** ****** ****************************************************** ************************************************************************* ************************************************************************* **********************

Page 439: Orastat line command

*************************************************** ************************************************************************* ************************* ****** ***#include <stdio.h>#include <stdlib.h>#include <string.h>

char *ver_menu_opcion (int opcion_menu ){static char dyn_title0[256];

switch ( opcion_menu ){case 0:

strcpy (dyn_title0,"Oracle Version ...\n");break;

case 1:strcpy (dyn_title0,"Active Parameters ...\n");break;

case 2:strcpy (dyn_title0,"User conected...\n");break;

case 3:strcpy (dyn_title0,"Wait Statistics...\n");break;

case 4:strcpy (dyn_title0,"Datafile I-O ...\n");break;

case 5:strcpy (dyn_title0,"Datafile Blocks R+W ...\n");break;

case 6:strcpy (dyn_title0,"Wait Events ...\n");break;

case 7:strcpy (dyn_title0,"Instance status ...\n");break;

case 8:strcpy (dyn_title0,"Temporal Space by user ...\n");

Page 440: Orastat line command

break;case 9:

strcpy (dyn_title0,"Total Freelist Wait Percentage ...\n");break;

case 10:strcpy (dyn_title0,"Last Checkpoint Time ...\n");break;

case 11:strcpy (dyn_title0,"List Tablespaces ...\n");break;

case 12:strcpy (dyn_title0,"Active Transactions ...\n");break;

case 13:strcpy (dyn_title0,"Latch Details ...\n");break;

case 14:strcpy (dyn_title0,"Resource Limits ...\n");break;

case 15:strcpy (dyn_title0,"List Datafiles ...\n");break;

case 16:strcpy (dyn_title0,"List Datafiles New 9i ...\n");break;

case 17:strcpy (dyn_title0,"List Tablespaces New 9i...\n");break;

case 18:strcpy (dyn_title0,"Active Sessions ...\n");break;

case 19:strcpy (dyn_title0,"Session Waits \n");break;

case 20:strcpy (dyn_title0,"Default Storage Settings - By T ablespace \n");break;

case 21:strcpy (dyn_title0,"All tables Storage (Except SYS and SYSTEM) \n");break;

Page 441: Orastat line command

case 22:strcpy (dyn_title0,"Non-Sys Tables \n");break;

case 23:strcpy (dyn_title0,"Non-Sys Indexes \n");break;

case 24:strcpy (dyn_title0,"User Defined \n");break;

case 25:strcpy (dyn_title0,"List Datafiles, Online Redo Log s, Control Files \n");break;

case 26:strcpy (dyn_title0,"List Datafiles and their Used B locks \n");break;

case 27:strcpy (dyn_title0,"List sorts by user \n");break;

case 28:strcpy (dyn_title0,"List lock status \n");break;

case 29:strcpy (dyn_title0,"List Users by CPU Usage \n");break;

case 30:strcpy (dyn_title0,"Sql statement by this user \n") ;break;

case 31:strcpy (dyn_title0,"Redo Logs - Status ");break;

case 32:strcpy (dyn_title0,"Archived Logs History - by fir st TimeStamp ");break;

case 33:strcpy (dyn_title0,"Redo Log Recovery Report - CURR ENT Online Redo log info ");break;

case 34:strcpy (dyn_title0,"Archive Log History ");break;

case 35:

Page 442: Orastat line command

strcpy (dyn_title0,"Session Latch Waits - SQL ");break;

case 36:strcpy (dyn_title0,"Whoami in Oracle ");break;

case 37:strcpy (dyn_title0,"Privileges by User ");break;

case 38:strcpy (dyn_title0,"Detailed locking causes ");break;

case 39:strcpy (dyn_title0,"Current Activity Report ");break;

case 40:strcpy (dyn_title0,"Table Description del Usuario [ %USERNAME% ]");break;

case 41:strcpy (dyn_title0,"Current Activity Report ");break;

default:strcpy (dyn_title0,"Oracle Version ...\n");break;

}return dyn_title0;}--- ---

--- ------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------- ------ ------ ------ ---