443
UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias Matemáticas y Físicas Carrera de Ingeniería en Sistemas Computacionales Sistema de Administración de Infraestructura Tecnológica “DBMS - FOX” TESIS DE GRADO Previo a la Obtención del Título de: INGENIERO EN SISTEMAS COMPUTACIONALES Autores: Briones Ávila Gissela Elizabeth Del Rosario González Willy José Jiménez Matías Boris Rafael GUAYAQUIL-ECUADOR Año: 2008

UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

UNIVERSIDAD DE GUAYAQUILFacultad de Ciencias Matemáticas y Físicas

Carrera de Ingeniería en SistemasComputacionales

Sistema de Administración de Infraestructura Tecnológica “DBMS - FOX”

TESIS DE GRADOPrevio a la Obtención del Título de:

INGENIERO EN SISTEMAS COMPUTACIONALES

Autores:

Briones Ávila Gissela ElizabethDel Rosario González Willy José

Jiménez Matías Boris Rafael

GUAYAQUIL-ECUADOR

Año: 2008

Page 2: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

II

AGRADECIMIENTO

Mi agradecimiento infinito a Dios por las múltiples

bendiciones que me a dado, entre ellas darme la

fuerza y la sabiduría para poder terminar mi carrera.

A mi mami Sra. Cecilia Ávila por su amor, apoyo y

confianza incondicional, una mujer que siempre con

su sabiduría y paciencia me han guiado durante

toda mi vida. A mis hermanos Cristian y Andrés por

su apoyo y aliento, al Sr. Vicente Alvarado por su

preocupación y ayuda. A la persona que lleno de

alegría y Amor a mi corazón Washington que con

sus consejos y apoyo me ha ayudado a tener

fuerzas en los momentos más difíciles. A mi querido

Padre Sr. William Briones que a pesar de que no

vivimos juntos siempre ha estado pendiente de mí.

Gissela Briones Avila

Page 3: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

III

AGRADECIMIENTO

Agradezco a mi Dios Todopoderoso por darme, la

vida, su amor y las fuerzas necesarias para poder

seguir adelante cada día. A mi madre Sra. Patricia

González por su comprensión y compañía en todo

momento. A mi padre Sr. Ernesto Del Rosario que a

pesar de la distancia siempre ha estado pendiente

de mí, de mis necesidades, de cada paso de mi vida

y de mi carrera y que ha sido siempre mi ejemplo de

superación.

Willy Del Rosario G.

Page 4: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

IV

AGRADECIMIENTO

A mi familia que me ha sabido apoyar en todos los

momentos buenos y malos, sobre todo a mi madre

la Sra. Nelly Matías Panchana que con su sacrificio

y abnegación supo inculcar valores importantes que

han sido un buen ejemplo en el transcurso de mi

vida. A Dios por las múltiples bendiciones que me a

dado, entre ellas permitirme terminar mi carrera. A

mis hermanos el Arq. Carlos Jiménez Matías y Erick

Jiménez Matías. A mi tía Bepcy Matías que me

apoyaron en estos últimos momentos para sacar

adelante este proyecto.

Boris Jiménez Matías.

Page 5: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

V

DEDICATORIA

El esfuerzo y perseverancia de este trabajo es

dedicado a Dios por haberme dado la fuerza

para terminar este proyecto y a mi madre que

han sido ejemplo de superación y siempre me ha

brindado su apoyo incondicional.

Gissela Briones Avila

Page 6: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

VI

DEDICATORIA

El esfuerzo que dio como resultado el término de

una etapa más de mi vida se lo dedico a Mi Dios

por su Amor y su Fidelidad.

A mi ser especial Ing. Laura Mazzini Martínez

que estuvo a mi lado incondicionalmente, con

fuerza, amor y comprensión de una etapa grande

en mi vida.

Willy Del Rosario G.

Page 7: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

VII

DEDICATORIA

A todo el esfuerzo de una gran persona como mi

Madre que a pesar de su enfermedad me apoyo

para que realizara este sacrificio y que le de el

privilegio de verme convertido en un profesional

y que con la ayuda de Dios nos permita salir

adelante en todo

Boris Jiménez Matías

Page 8: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

VIII

TRIBUNAL DE GRADUACIÓN

Presidente Tribunal Primer Vocal

Segundo Vocal Secretario

Page 9: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

IX

DECLARACIÓN EXPRESA

“La autoría de la tesis de grado corresponde exclusivamente al los suscritos,

perteneciendo a la Universidad de Guayaquil los derechos que generen la

aplicación de la misma”

(Reglamento de Graduación de la Carrera de Ingeniería en sistemas

Computacionales, Art. 26)

Gissela Elizabeth Briones Ávila Willy Del Rosario González

0921924668 0915267876

Boris Jiménez Matías

0919976050

Page 10: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

X

RESUMEN

Toda organización en la actualidad desea establecer los controles necesarios

de su Infraestructura de Tecnología de Información, centradose en el punto

clave de todos los sistemas que llegaran a utilizar, como lo es la

administración de la Base de Datos, actividades de los datos, manipulación de

los datos, establecer diccionario de datos, confiabilidad de la base de datos y la

seguridad de la base de datos.

En vista de esto hemos desarrollado una herramienta que sirva de

complemento a los diversos usuarios que puedan administrar las Bases de

Datos que posea la empresa.

El Sistema de Administración de Infraestructura Tecnológica “DBMS - FOX” les

va a permitir administrar de una manera eficiente y eficaz todas las

necesidades de la Empresa desde la creación de un usuario hasta la

generación de copias de seguridad.

El Sistema DBMS – FOX es de fácil compresión no solo para los

administradores de base de datos que han usado las herramientas Oracle sino

para los que no las hayan utilizado todavía.

Page 11: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XI

Da gran dinamismo a las diversas aplicaciones que desee realizar el

administrador, contando con los diversos métodos de notificación de las alertas

vía mail y sms al celular.

El sistema es de gran ayuda al administrador ya que integra diversos aspectos

como la simulación de una consola de comandos SQL y características del

comando RMAN.

DBMS – FOX integra todas estas funcionalidades que le permitirán al

administrador tener una gran ayuda al momento de supervisar el

funcionamiento de la Base de Datos.

Page 12: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XII

SUMMARY

All organization at the present time wants to establish the necessary controls of

their Technology Infrastructure of Information, being centered in the key point of

all the systems that they ended up using, as it is the Database administration,

data activities, manipulation of the data, establishing a data dictionary,

dependability of the database and the database security.

In view of this we have developed a tool that serves as complement to the

diverse users that can administer the Databases that the company possesses .

The Administration System of Technological Infrastructure "DBMS - FOX" will

allow them to administer in an efficient and effective way all the necessities of

the Company from the creation of an user, until the generation of security

copies.

The System DBMS - FOX is of non alone easy compression for the database

administrators that have used the tools Oracle but for those that have not still

used them.

It gives a great dynamism to the diverse applications that administrator wants

to carry out, having diverse methods of alerts notification as via mail and sms

to the cellular one.

Page 13: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XIII

The system is very helpful to the administrator, it integrates diverse aspects like

the simulation of a console of commands SQL and characteristic of the

command RMAN.

DBMS - FOX integrates all these functionalities that will allow the administrator

to have a great help to the moment to supervise the operation of the Database.

Page 14: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XIV

INDICE GENERAL

AGRADECIMIENTO II

DEDICATORIA V

TRIBUNAL DE GRADUACION VIII

DECLARACION EXPRESA IX

RESUMEN X

INDICE GENERAL XIV

CAPITULO 1

INTRODUCCION 1

1.1 Antecedentes 1

1.2 Solución 2

1.3 Visión 3

1.4 Misión 3

1.5 Objetivos Generales 4

1.6 Objetivos Específicos 4

1.7 Alcances 5

1.7.1 Modulo de Seguridades 6

1.7.2 Modulo de Biblioteca de Servicios 6

1.7.3 Modulo de Métricas de Rendimiento 7

1.7.4 Modulo Definición de Políticas 7

1.7.5 Modulo de Administración de Almacenamiento 7

1.7.6 Modulo de Administración de Recursos 8

1.7.7 Modulo de Eventos, Errores y Notificaciones 9

Page 15: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XV

1.7.8 Modulo Terminal 10

1.8 Recursos 10

1.8.1 Recurso Humano 10

1.8.2 Recurso Hardware 12

1.8.3 Recurso Software 13

1.9 Metodología 13

1.10 Arquitectura 14

1.10.1 Capa de Presentación 15

1.10.2 Capa de Datos 18

1.11 Cronograma de Actividades 18

1.12 Costos 19

1.12.1 Recurso Humano 19

1.12.2 Recurso Tecnológico 19

1.12.3 Costo de Servicio Básico 19

1.12.4 Costo Total del Proyecto 20

1.13 Riesgos del Proyecto 20

1.14 Foda 21

1.14.1 Fortaleza 21

1.14.2 Oportunidades 22

1.14.3 Debilidades 22

1.14.4 Amenazas 22

CAPITULO 2

ANALISIS 24

2.1 Ingeniería de la Información 24

2.1.1 Modulo de Seguridades 25

2.1.2 Modulo de Biblioteca de Servicios 25

2.1.3 Modulo de Métricas de Rendimiento 26

2.1.4 Modulo Definición de Políticas 26

Page 16: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XVI

2.1.5 Modulo de Administración de Almacenamiento 26

2.1.6 Modulo de Administración de Recursos 27

2.1.7 Modulo de Eventos, Errores y Notificaciones 27

2.1.8 Modulo Terminal 28

2.2 Desarrollo del Análisis 29

2.2.1 Diagramas de Caso de Uso 29

2.2.1.1 Caso de Uso de Seguridades 30

2.2.1.1.1 Requerimiento 31

2.2.1.1.2 Descripción 32

2.2.1.2 Caso de Uso de Biblioteca de Servicios 37

2.2.1.2.1 Requerimientos 37

2.2.1.2.2 Descripción 38

2.2.1.3 Caso de Uso Métricas de Rendimiento 39

2.2.1.3.1 Requerimiento 39

2.2.1.3.2 Descripción 40

2.2.1.4 Caso de Uso Definición de Políticas 41

2.2.1.4.1 Requerimiento 42

2.2.1.4.2 Descripción 43

2.2.1.5 Caso de Uso Administración de almacenamiento 44

2.2.1.5.1 Requerimiento 45

2.2.1.5.2 Descripción 45

2.2.1.6 Caso de Uso Administración de Recursos 50

2.2.1.6.1 Requerimiento 51

2.2.1.6.2 Descripción 51

2.2.1.7 Caso de Uso Eventos, Errores y Notificaciones 53

2.2.1.7.1 Requerimiento 54

2.2.1.7.1 Descripción 54

2.2.1.8 Caso de Uso Terminal 55

2.2.1.8.1 Requerimiento 56

Page 17: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XVII

2.2.1.8.2 Descripción 57

2.2.2 Modelo de Entidad de Relación 58

2.2.2.1 Descripción del Modelo de Entidad de Relación 59

2.2.3 Diagrama de Secuencia 68

2.2.4 Diagrama de Flujo de Datos 77

CAPITULO 3

DISEÑO 86

3.1. Introducción 86

3.1.1 Diseño de Clases 87

3.1.2 Diseño Arquitectónico 88

3.1.3 Diseño de Interfaz 90

3.1.3.1 Acceso al Sistema 93

3.1.3.2 Modulo de Seguridades 94

3.1.3.3 Modulo de biblioteca de Servicios 103

3.1.3.4 Modulo de Métricas de Rendimiento 106

3.1.3.5 Modulo Definición de Políticas 108

3.1.3.6 Modulo de Almacenamiento 108

3.1.3.7 Modulo de Recursos 120

3.1.3.8 Modulo Eventos, Errores y Notificaciones 123

3.1.3.9 Modulo Terminal 132

CAPITULO 4

DESARROLLO 135

4.1 Base de Datos 135

4.1.1 Modulo de Biblioteca de Servicios 136

4.1.2 Modulo de Métricas de Rendimiento 137

4.1.3 Modulo de Definición de Políticas 138

4.1.4 Modulo Eventos, Errores y Notificaciones 139

Page 18: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XVIII

4.2 Directorios de Sistema 140

4.3 Detalle del Subdirectorio 144

4.4 Detalle de Procesos Principales 146

4.4.1 Modulo de Seguridades 146

4.4.2 Modulo de Biblioteca de Servicios 147

4.4.3 Modulo de Métricas de Rendimiento 148

4.4.4 Modulo Definición de Política 149

4.4.5 Modulo de Administración de Almacenamiento 149

4.4.6 Modulo de Administración de Recursos 153

4.4.7 Modulo Eventos, Errores y Notificaciones 154

4.4.8 Modulo Terminal 155

CAPITULO 5

CONCLUSIONES Y RECOMENDACIONES 156

Page 19: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XIX

INDICE DE FIGURAS

Figura 1.1 Modelo Desarrollo Cliente – Servidor 14

Figura 2.1 Caso de Uso General 30

Figura 2.2 Caso de Uso de Seguridades 31

Figura 2.3 Caso de Uso Biblioteca de Servicios 37

Figura 2.4 Caso de Uso Métricas de Rendimiento 39

Figura 2.5 Caso de Uso Definición de Políticas 42

Figura 2.6 Caso de Uso Administ. de Almacenamiento 44

Figura 2.7 Caso de Uso Administración de Recursos 50

Figura 2.8 Caso de Uso Eventos, Errores y Notf. 53

Figura 2.9 Caso de Uso Terminal 56

Figura 2.10 Modelo de Entidad de Relación 59

Figura 2.11 Diagrama de Secuencia de Seguridades 69

Figura 2.12 Diagrama de Sec. Biblioteca de Servicios 70

Figura 2.13 Diagrama de Sec. Métricas de Rendimiento 71

Figura 2.14 Diagrama de Sec. Definición de Políticas 72Figura 2.15 Diagrama de Sec. Administración deAlmacenamiento

73

Figura 2.16 Diagrama de Sec. Administración Recursos 74Figura 2.17 Diagrama de Sec. Eventos, Errores yNotificaciones 75

Figura 2.18 Diagrama de Sec. Terminal 76

Figura 2.19 DFD Seguridades (Nivel 0) 77

Figura 2.20 DFD Seguridades (Nivel 2) 78

Figura 2.21 DFD Biblioteca de Servicios (Nivel 0) 78

Figura 2.22 DFD Biblioteca de Servicios (Nivel 2) 79

Figura 2.23 DFD Métricas de Rendimiento (Nivel 0) 79

Page 20: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XX

Figura 2.24 DFD Métricas de Rendimiento (Nivel 2) 79

Figura 2.25 DFD Definición de Políticas (Nivel 0) 80

Figura 2.26 DFD Definición de Políticas (Nivel 2) 80

Figura 2.27 DFD Almacenamiento(Nivel 0) 81

Figura 2.28 DFD Almacenamiento (Nivel 2) 82

Figura 2.29 DFD Administración de Recursos (Nivel 0) 83

Figura 2.30 DFD Administración de Recursos (Nivel 2) 83

Figura 2.31 DFD Eventos, Errores y Notificac. (Nivel 0) 84

Figura 2.32 DFD Eventos, Errores y Notificac. (Nivel 2) 84

Figura 2.33 DFD Terminal (Nivel 0) 85

Figura 2.34 DFD Terminal (Nivel 2) 85

Figura 3.1 Diagrama de Clases 88

Figura 3.2 Diseño arquitectónico 89

Figura 3.3 Pantalla Principal 92

Figura 3.4 Formulario de Acceso al sistema 93

Figura 3.5 Formulario Principal - Usuarios 94

Figura 3.6 Formulario General - Usuarios 95

Figura 3.7 Formulario Roles - Usuarios 95

Figura 3.8 Formulario Privilegios de Sistema – Usuarios 96

Figura 3.9 Formulario Privilegios de Objeto - Usuarios 96

Figura 3.10 Formulario Cuotas - Usuario 97

Figura 3.11 Formulario Grupo de Consumidores-Usuarios 97

Figura 3.12 Formulario Principal - Roles 98

Figura 3.13 Formulario General - Roles 99

Figura 3.14 Formulario Privilegios de Roles - Roles 99

Figura 3.15 Formulario Privilegios de Sistema – Roles 100

Figura 3.16 Formulario Privilegios de Objetos – Roles 100

Figura 3.17 Formulario Grupo de Consumidores – Roles 101

Figura 3.18 Formulario Principal – Perfiles 102

Page 21: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XXI

Figura 3.19 Formulario General – Perfiles 102

Figura 3.20 Formulario Contraseña – Perfiles 103

Figura 3.21 Formulario Programar Inspección - Listener 104

Figura 3.22 Formulario Estado - Listener 104

Figura 3.23 Formulario Disponibilidad - Listener 105

Figura 3.24 Formulario Parámetros Ubicación - Listener 105

Figura 3.25 Formulario Parámetros General – Listener 106

Figura 3.26 Formulario Principal - Métricas 107

Figura – 3.27 Formulario de Creación - Métricas 107

Figura 3.28 Formulario principal – Políticas 108

Figura 3.29– Formulario General – Archivo de Control 109

Figura 3.30 Formulario Avanzado – Archivo de Control 110Figura 3.31 Formulario Sección de Registros - Archivo deControl 110

Figura 3.32 Formulario Principal - Tablespace 111

Figura 3.33 Formulario General - Tablespace 112

Figura3.34 Formulario Almacenamiento - Tablespace 113

Figura 3.35 Pantalla Principal – Archivo de Datos 114

Figura 3.36 Formulario General – Archivo de Datos 114

Figura 3.37 Pantalla Principal – Segmentos de Rollback 115

Figura 3.38 Formulario General - Segmentos Rollback 116

Figura 3.39 Pantalla Principal – Grupo de Redo Logs 117

Figura 3.40 Formulario General – Grupo de Redo Logs 118

Figura 3.41 Pantalla Principal Archive Logs 119

FIGURA 3.42 Formulario General – Archive Logs 119

Figura 3.43 Formulario General del Host - Recursos 120

Figura 3.44 Formulario General Instancia- Recursos 121

Figura 3.45 Formulario Memoria - Recursos 121

Figura 3.46 Formulario Recuperación – Recursos 122

Page 22: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XXII

Figura 3.47 Formulario Informe de Sesiones - Recursos 123Figura 3.48 Formulario Configurar Parámetros–Notificaciones 124Figura 3.49Formulario Transacciones del Sistema –Eventos 125

Figura 3.50 Reporte Transacciones del Sistema – Eventos 125Figura 3.51 Reporte en Excel Transacciones del Sistema– Eventos 126

Figura 3.52 Formulario Ejecución de Métricas – Eventos 127

Figura 3.53 Formulario Historial de Métricas – Eventos. 127

Figura 3.54– Reporte Historial de Métricas – Eventos 128Figura 3.55– Formulario Transacciones del Sistema –Errores 129

Figura 3.56 Reporte Transacciones del Sistema – Errores 129Figura 3.57 Reporte en Excel Transacciones del Sistema– Errores 130

Figura 3.58 Formulario Contenido de Alerta – Errores 131

Figura 3.59 Formulario Historial – Políticas Violadas 131

Figura 3.60 Formulario de la Consola – Terminal 132

Figura 3.61 Formulario Schema RMAN– Terminal 133

Figura 3.62 Formulario List Backup– Terminal 133

Figura 3.63– Formulario Report Need Backup– Terminal 134

Figura 3.64– Formulario Rman Backup– Terminal 134

Figura 4.1 - Registro.bat 141

Page 23: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XXIII

INDICE DE TABLAS

Tabla 1.1 Cronograma General 18

Tabla 1.2 Costo – Recurso Humano 19

Tabla 1.3 Costo – Recurso Tecnológico 19

Tabla 1.4 Costo – Servicios Básicos 19

Tabla 1.5 Costo – Total del Proyecto 20

Tabla 2.1 Requerimientos Casos de uso de Seguridades 32Tabla 2.2 Descripción Sub_caso de Seguridad: CrearUsuario 32Tabla 2.3 Descripción Sub_caso de Seguridad: ModificarUsuario 33Tabla 2.4 Descripción Sub_caso de Seguridad: EliminarUsuario 33

Tabla 2.5 Descripción Sub_caso de Seguridad: Crear Roles 34Tabla 2.6 Descripción Sub_caso de Seguridad: ModificarRoles 34Tabla 2.7 Descripción Sub_caso de Seguridad: EliminarRoles 35Tabla 2.8 Descripción Sub_caso de Seguridad: CrearPerfiles 35Tabla 2.9 Descripción Sub_caso de Seguridades: ModificarPerfiles 36Tabla 2.10 Descripción Sub_caso de Seguridades: EliminarPerfiles 36Tabla 2.11 Requerimiento Caso de Uso de Bibliotecas deServicios 37

Tabla 2.12 Descripción Sub_caso Rendimiento del Listener 38

Page 24: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XXIV

Tabla 2.13 Descripción Sub_caso Parámetro del Listener 38Tabla 2.14 Requerimiento Caso de Uso de Métricas deRendimiento 40

Tabla 2.15 Descripción Sub_caso Gestionar Métricas Crear 40Tabla 2.16 Descripción Sub_caso Gestionar MétricasEliminar 41Tabla 2.17 Descripción Sub_caso Gestionar Definir valoresy acción 41Tabla 2.18 Requerimiento Caso de Uso Definición dePolíticas 42Tabla 2.19 Descripción Sub_caso Administración dePolíticas Activadas 43Tabla 2.20 Descripción Sub_caso Administración dePolíticas Desactivadas 43Tabla 2.21 Requerimiento Caso de Uso de Administraciónde Almacenamiento 45

Tabla 2.22 Descripción Sub_caso Archivos de Datos Crear46

Tabla 2.23 Descripción Sub_caso Archivos de Datos Editar 46Tabla 2.24 Descripción Sub_caso Archivos de DatosEliminar 46

Tabla 2.25 Descripción Sub_caso Redo Log Crear 47

Tabla 2.26 Descripción Sub_caso Redo Log Editar 47

Tabla 2.27 Descripción Sub_caso Redo Log Eliminar 47Tabla 2.28 Descripción Sub_caso Control File Directorio deControl File 48Tabla 2.29 Descripción Sub_caso Control File SecciónRegistros 48

Tabla 2.30 Descripción Sub_caso Control File Copias Seg. 48

Page 25: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XXV

Tabla 2.31 Descripción Sub_caso Tablespace Crear 49

Tabla 2.32 Descripción Sub_caso Tablespace Editar 49

Tabla 2.33 Descripción Sub_caso Tablespace Eliminar 49

Tabla 2.34 Descripción Sub_caso Tablespace Reportes 50Tabla 2.35 Requerimiento Caso de Uso de Administraciónde Recursos 51

Tabla 2.36 Descripción Sub_caso Informe CPU 51Tabla 2.37 Descripción Sub_caso Informe Instancia y Basede Datos 52

Tabla 2.38 Descripción Sub_caso Informe de Memoria 52

Tabla 2.39 Descripción Sub_caso Informe de Sesiones 53Tabla 2.40 Requerimiento Caso de Uso de Eventos yErrores 54

Tabla 2.40 Descripción Sub_caso Reporte Alertas 54

Tabla 2.41 Descripción Sub_caso Detalle de Alertas 55Tabla 2.42 Descripción Sub_caso Configurar Parámetros deNotificación 55

Tabla 2.43 Requerimiento Caso de Uso Terminal 56

Tabla 2.44 Descripción Sub_caso Consola 57

Tabla 2.45 Descripción Sub_caso Esquema Rman 57

Tabla 2.46 Descripción Sub_caso Listado Rman 58

Tabla 2.47 Descripción Sub_caso Backup Rman 58

Tabla 2.48 Entidad Menú 60

Tabla 2.49 Entidad LOGDBMS 61

Tabla 2.50 Entidad Partarea 62

Tabla 2.51 Entidad Hist_list 62

Tabla 2.52 Entidad Parámetros 63

Tabla 2.53 Entidad Políticas 64

Tabla 2.54 Entidad Poli_violadas 65

Page 26: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XXVI

Tabla 2.55 Entidad Métrica 66

Tabla 2.56 Entidad Detalle Métrica 67

Tabla 4.1 Tabla del Menú Principal 136

Tabla 4.2 Tabla de Tareas programadas 136Tabla 4.3 Tabla de Almacenamiento de las tareasprogramadas 137

Tabla 4.4 Tabla de Ingreso de Métricas 137

Tabla 4.5 Tabla de detalle de Métricas 138

Tabla 4.6 Tabla de Ingreso de Políticas 138

Tabla 4.7 Tabla de Políticas Violadas 139

Tabla 4.8 Tabla de sucesos en el sistema 139

Tabla 4.9 Tabla de Notificación 140

Page 27: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

CAPITULO 1

1. INTRODUCCION

1.1 Antecedentes

Toda organización en la actualidad desea establecer controles de su

Infraestructura de Tecnología de Información, centradose en el punto

clave de todos los sistemas que llegaran a utilizar, como lo es la

administración de la Base de Datos, actividades de los datos,

manipulación de los datos, establecer diccionario de datos, confiabilidad

de la base de datos y la seguridad de la base de datos.

El problema en nuestro medio es que muchas Empresas para obtener

una completa administración de su infraestructura utilizan la herramienta

de Oracle que es el Enterprise Manager, la cual es muy efectiva en la

integración total de la Base de Datos, pero no es muy autodidáctica en su

navegación y no brinda una interfaz amigable para el administrador.

Page 28: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 2 -

Además las organizaciones para obtener toda la información que

proporciona esta herramienta deben tener una persona especializada en

su manipulación para obtener un buen análisis de la administración de la

Infraestructura Tecnológica.

Unos de los inconvenientes encontrado en una de las versiones del

Oracle Enterprise Manager como lo es la versión 10G es que administra

las bases de datos en consolas independientes.

Las Empresas están acostumbradas a usar esta herramienta porque es

de uso mundial y no existe otra herramienta en Oracle que haga su

misma función y que sea de fácil manejo.

1.2 Solución

DBMS - FOX es la herramienta que nos va a brindar las opciones

necesarias para que el DBA pueda tener un completo control y

optimización de la infraestructura de tecnología de la información.

Esta herramienta va a hacer una nueva alternativa a la hora de

Administrar la base de datos de Oracle, la cual va a proporcionar las

partes fundamentales de la Administración con una interfaz amigable y de

Page 29: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 3 -

fácil compresión en la cual va a ser manejada desde un Administrador de

primer nivel hasta el más experto en donde se encontraran respuestas

concretas brindando todas las funciones de una consola Administrativa.

El aplicativo va a integrar los diferentes componentes que intervienen en

la Organización (Hardware, Software y Usuarios).

1.3 Misión

Proveer a los administradores de base de datos de Oracle un aplicativo

que cubra todas las necesidades en cuanto al manejo de la

infraestructura de tecnología de Información de la organización.

1.4 Visión

Ser un aplicativo a nivel nacional en el mercado de las Tecnologías de

Información de las herramientas Oracle con un objetivo común de

convertir como socio estratégico a los DBA, para su mejor

administración, entregando soluciones y servicios de calidad certificada,

conservando nuestros valores organizacionales.

Page 30: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 4 -

1.5 Objetivos Generales

Nuestro aplicativo DBMS-FOX nos va a permitir llevar una administración

de la Infraestructura Tecnológica facilitando a los actores que intervienen

en el proceso para avalar la redistribución, renovación y reposición de

dichos recursos, así como gestionar la adquisición de Recursos

Tecnológicos nuevos en base a las necesidades de la organización.

1.6 Objetivos Específicos

Tener reportes que nos permitan supervisar los servicios que se

esta ejecutando en los diferentes componentes del servidor.

Mostrar de manera porcentual y grafica el uso de cada recurso de

la Base de Datos.

Contar con informes que nos ayuden a prevenir posibles

eventualidades en el uso de todos los recursos de la Base de

Datos.

Mejorar los tiempos de respuesta ante cualquier proceso que se

este realizando en la Base de datos.

Page 31: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 5 -

1.7 Alcances

Los alcances que detallaremos a continuación están orientados y

pensados para ofrecer un mayor soporte a los DBA al momento de

administrar la Base de Datos de una manera funcional permitiéndoles

participar en el desarrollo de procedimientos y controles para asegurar la

calidad y la alta integridad de la BD.

Módulos a tratar en los alcances son:

Modulo de Seguridades

Modulo de Biblioteca de Servicios

Modulo de Métricas de Rendimiento

Modulo de Definición de Políticas

Modulo de Administración de Servicios

Modulo de Administración de Recursos

Modulo de Eventos, Errores y Notificaciones

Modulo Terminal

Dentro de estos módulos se van a detallar los diferentes aspectos a cubrir

en la creación del sistema automatizado DBMS - FOX.

Page 32: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 6 -

1.7.1 Módulo de Seguridades

Pantalla de autentificación donde los usuarios que deseen

ingresar a la base de datos deben ingresar su usuario y

contraseña.

Mantenimiento de usuario: se creara una pantalla que

permitirá crear usuario con sus respectivas contraseñas,

además podremos asignarles tablespace, roles, privilegios

de sistemas, privilegios de Objetos y Grupo de

Consumidores.

Mantenimiento de roles: se creara una pantalla donde

podremos visualizar todos los roles que exista así mismo

podremos otorgarle privilegios sistemas, objetos y grupo de

consumidores.

Mantenimiento de Perfiles: se creara opciones para dar

limitantes en lo mismos

1.7.2 Módulo de Biblioteca de Servicios

Mantenimiento de los Parámetros del Listener.

Creación del servicio en donde verificaremos la

disponibilidad del listener.

Reporte que nos permita tener el historial de 14 días

agrupando el historial por inactividad y disponibilidad los

Page 33: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 7 -

cuales no indicaran los tiempos de estado inactivo,

interrumpido y estados pendientes.

1.7.3 Módulo de Métricas de Rendimiento

Creación de un gestor de métricas en el cual se podrá crear,

eliminar y definir los diferentes umbrales para cada una de

las métricas.

1.7.4 Módulo Definición de Políticas

Creación de las políticas de tipo almacenamiento,

configuración y seguridad, como por ejemplo el tamaño

insuficiente del archivo redo log.

Creación de una opción en el cual nos permita gestionar las

diferentes políticas establecida para que el usuario

administrador pueda activar o desactivar las diversas

políticas.

Reporte que mostrara un historial de los diversos cambios

en la activación y desactivación de las políticas.

1.7.5 Módulo de Administración de Almacenamiento

Controlar el crecimiento de los datos generando repositorios

para una mejor administración de los objetos físicos y

Page 34: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 8 -

lógicos de almacenamiento.

Visualizar los tipos de archivos de control y realizar su

respectiva copia de seguridad en repositorios.

Opciones que permitan crear, modificar, eliminar los

tablespaces.

Opciones de modificar, eliminar y visualizar los archivos de

datos.

Opciones de crear, modificar, eliminar los segmentos de

rollback de los archivos de datos especificando el tamaño

del rollback.

Opciones de crear, modificar, eliminar Redo logs.

Opción que muestre un informe de los Archive Logs

Informes que nos permita mostrar la ubicación de los

archivos que permiten el funcionamiento de la base de

datos, información sobre la ubicación de los archivos, su

tamaño y el porcentaje de utilización de los mismos.

1.7.6 Módulo de Administración de Recursos

Monitorear el estado y mostrar la información general del

CPU y del sistema operativo.

Monitorear la información general de la instancia y de la

Base de datos.

Page 35: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 9 -

Monitorear el estado de la Instancia, bajar y subir la base de

datos.

Revisar los tamaños de la SGA y de la PGA.

Monitorear el tiempo de recuperación de fallo de la Instancia

Controlar el estado en Archivelog de la Base de Datos

Revisar las estadísticas de las sesiones activas e inactivas

1.7.7 Módulo de Manejo de Eventos, Errores y Notificaciones

Configuración del método de notificación para enviar los

correo de alertas en este caso por Servidor de Correo

Saliente (smtp) y vía sms.

Reporte que nos permita revisar los diferentes cambios en

las métricas establecidas.

Reportes que nos permita visualizar las diferentes

violaciones a las políticas establecidas y los errores en los

limites de las métricas.

Reporte del Log de errores.

Reporte de todas las transacciones del sistema que se han

ejecutado.

Page 36: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 10 -

1.7.8 Modulo Terminal

Crear una consola que me permita correr sentencias SQL.

Opción la cual permitirá guardar todas las sentencias

ejecutadas en la consola.

Opciones en la cual mostrara el estado de los esquemas de

los tablespace.

Opción la cual mostrara la información de los tablespace que

han sido respaldados y los que necesitan ser respaldados.

Opción la cual va a permitir sacar un respaldo de la Base de

Datos en RMAN.

1.8 Recursos

Los recursos que se necesitan para el desarrollo de nuestra aplicación,

son los siguientes:

1.8.1 Recurso Humano

Para la implementación del aplicativo necesitaremos de la

colaboración de tres desarrolladores y/o analistas como:

Srta. Gissela Briones Avila.

Conocimientos Básicos de Visual FoxPro 9.0

Manejo básico de Base de datos Sql Server 2000 y

Page 37: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 11 -

Oracle.

Conocimientos de soporte técnico a Usuario.

Sr. Boris Jiménez Matías

Programador de Visual FoxPro 9.0

Conocimientos básicos en la herramienta de

programación .net

Manejo de Base de Datos como Sql Server 2000

Implementación de Dispositivos Móviles integrando la

tecnología del Pocket Pc con sql Server 2000 ce.

Sr. Willy Del Rosario González

Conocimientos básicos de Visual FoxPro 9.0

Manejo básico de Oracle y MySql

Configuración de Redes Inalámbricas.

Conocimientos de Visual Basic 6.0 y .net

Soporte técnico a usuarios al aplicativo de vigilancia

electrónica.

Configuración de lectores y paneles electrónicos de

alarma.

Page 38: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 12 -

1.8.2 Recurso Hardware

Una maquina que hará la función de Servidor de la Base de

Datos, programas fuentes y ejecutables en cual tendrá la

siguientes características:

o Procesador Dual Core 2.0

o Mainboard Intel

o Disco Duro de 120 GB con 7200 rpm con tecnología

SATA.

o Unidad DVD-RW con tecnología SATA

o Memoria RAM de 2 GB PC 667

2 maquinas que harán de estación de Trabajo para el

desarrollo del aplicativo que tendrán las siguientes

características:

o Procesador P4 de 3 GHZ

o Memoria RAM de 512 MB

o Disco Duro de 80 GB

o Mainboard BioStar

o Unidad de CD-R

1 Impresora multifunción HP de Inyección de Tinta

1 Switch de 8 puertos

5 Patch Cord

3 Pen Drive Kingston (2 Gb, 1Gb, 512 Mb)

Page 39: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 13 -

1.8.3 Recurso Software

Sistema Operativo Windows Xp con Service Pack 2

Microsoft office 2003

Microsoft Project

Erwim 6.0

Microsoft Visual FoxPro 9.0

Oracle 9i

Oracle 10 G release 2 (Enterprise Manager)

Sistema Operativo Windows Vista Ultimate

1.9 Metodología

Para el desarrollo de nuestro aplicativo vamos a utilizar un modelo de

programación Orientado a Objeto como el Espiral.

Seleccionamos este modelo porque esta conformado de las siguientes

etapas como:

Análisis

Diseño

Implementación

Pruebas

Estas etapas nos ayudaran a tener un proceso iterativo el cual nos

permitirá dar mejoras a nuestro aplicativo.

El objetivo principal de este método es que nos va ayudar a administrar

Page 40: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 14 -

CAPA DE PRESENTACION

SERVIDOR DE BASE DE DATOS

LOGICA DE NEGOCIOS

una base de datos sólida de forma evolutiva, modificando procesos paso

a paso e ir mejorando la administración.

1.10 Arquitectura

Revisando los diferentes tipos de Arquitectura de los Sistemas

Informáticos Orientados a Objetos, hemos llegado a la conclusión que

para una buena aplicación de nuestro aplicativo nos basaremos en una

Arquitectura de Cliente – Servidor de dos capas. A continuación se detalla

un grafico con dicha Arquitectura.

Figura No 1.1 - MODELO DE DESARROLLO CLIENTE-SERVIDOR

ARQUITECTURA DOS CAPAS

Page 41: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 15 -

La idea de programar en dos capas, consiste en utilizar un método de

desarrollo para nuestro sistema DBMS-FOX que nos va a permitir separar

esto en distintas capas.

Estas aplicaciones son más conocidas como aplicaciones

Cliente/Servidor y lo más característico es que dividen una aplicación

entre un cliente y un servidor que controla las comunicaciones entre

ambos.

En la raíz de las aplicaciones cliente/servidor está la separación de la

aplicación en componentes encapsulados u objetos. La ventaja de romper

una aplicación en trozos es que cualquier cambio de uno de esos

componentes no tiene un impacto directo sobre los otros o en el resto de

la aplicación.

En las arquitecturas de dos capas, la aplicación se divide en dos

entidades separadas como se muestra en la figura 1.1.

1.10.1 Capa de Presentación

Para nuestro sistema DBMS-FOX, la capa de presentación le

permitirá al DBA interactuar con la capa de Base de datos junto

con la lógica de negocios a través de los diferentes formularios

creados en Visual FoxPro 9.0.

Page 42: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 16 -

Para ello nuestro proyecto va a constar los diferentes módulos

a desarrollar para que el usuario pueda tener una correcta

administración de la Base de Datos.

Algunos de los módulos que tendrán la capa de presentación de

nuestro aplicativo DBMS-FOX son:

Módulo de seguridades.

Módulo de biblioteca de servicios

Módulo de métricas de rendimiento

Módulo de definiciones de políticas

Módulo de administración de almacenamiento

Módulos de administración de recursos

Módulo de eventos, errores y notificaciones

Modulo Terminal

Todos estos módulos las implementaremos en formularios

creados bajo la herramienta de programación Visual FoxPro

9.0.

Page 43: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 17 -

La primera interacción con el usuario será a través de un

formulario en el cual el usuario deberá proporcionar los

siguientes datos como: Usuario, Clave y el Nombre del

Servicio al cual desea administrar, en este caso será la Base

de Datos Oracle la cual internamente tiene sus propias reglas

del negocio.

Una vez ingresado al servicio que desea administrar, esta capa

será encargada de:

Enviar la información del usuario a la capa del Servidor de

Base de datos para su procesamiento en la consultas y en

todas las actividades relacionadas con las mismas.

Recibir los diferentes resultados del procesamiento de la

Base de Datos

Mostrar dichos resultados al usuario.

Permitir la funcionalidad o la manipulación de las diferentes

opciones disponibles para cada usuario.

Page 44: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 18 -

1.10.2 Capa de datos (Servidor de Base de Datos)

En la parte de Datos es de donde se va a utilizar el Motor de

Base de Datos Oracle, el cual maneja sus propias reglas de

negocio las cuales nos encargaremos de administrar para poder

brindar los siguientes servicios a nuestro aplicativo:

Repositorio de datos

Manejar la integración de los datos

Recuperación de datos

1.11 Cronograma de Actividades

1.11.1 Cronograma General

A continuación detallaremos de manera general el cronograma

de actividades en el cual nos hemos basado en el tiempo entre

el rango que se nos ha expuesto, para ver mas detalles en el

Anexo 1.

Actividad Tiempo(días) Fecha Inicio Fecha FinPlanificación 42 15/12/2007 26/01/2008Análisis y Diseño 33 27/01/2008 29/02/2008Codificación 91 01/03/2008 31/05/2008Prueba 10 01/06/2008 11/06/2008Implementación 15 12/06/2008 27/06/2008

Tabla 1.1 – Cronograma General

Page 45: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 19 -

1.12 Costos

A continuación detallaremos los diversos costos para nuestro aplicativo.

1.12.1 Recurso Humano

Personas Función Sueldo Mensual Tiempo meses Total3 Programadores Junior 350.00 5 17501 Asesor DBA 500.00 3 1500

Total 3250

Tabla 1.2 – Costo – Recurso Humano

1.12.2 Recurso Tecnológico

Cant. Descripción Valor unitario Totales1 PC Servidor 800.00 800.002 PC Desarrollo 650.00 1300.00

Servicio de Internet x 5meses 50.00 250.00Configuración de Red por 3 maquinas 80.00 240.00

Total 2590.00Tabla 1.3 – Costo – Recurso Tecnológico

1.12.3 Costos de Servicios Básicos

Descripción Tiempo en mes Valor TotalEnergía Eléctrica 5 20.00 100.00Agua 5 10.00 50.00Telefonía celular 5 30.00 150.00Telefonía convencional 5 15.00 75.00

Total 375.00Tabla 1.4 – Costo – Servicios Básicos

Page 46: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 20 -

1.12.4 Costo Total del proyecto

El costo del aplicativo va a estar basado en estos aspectos.

Tabla 1.5 – Costo – Total del Proyecto

1.13 Riesgo del Proyecto

Hemos identificado diversos riesgos que podrían afectar en el normal

cumplimiento del tiempo para la entrega del proyecto, los cuales

detallaremos a continuación:

Daño en al aplicativo de la Base de Datos por mala Operación,

implicando retraso en el la continuación del proyecto.

No tener el completo abastecimiento del proveedor (Servicio de

Internet).

No tener suficiente dominio sobre la herramienta de programación.

Daños imprevistos en el hardware y software por factores externos e

internos.

No abarcar las necesidades básicas del proyecto.

Abandono imprevisto de algún integrante del grupo del curso de

graduación, sea este por factores externos e internos.

Diversidad de criterios de los integrantes del grupo que no permitan

Descripción de Costos ValorRecurso Humano 3250.00Recurso Tecnológico 2590.00Servicios Básicos 375.00

Total del Aplicativo 6215.00

Page 47: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 21 -

tomar decisiones de manera rápida y eficaz.

No tener una buena comunicación con los integrantes del proyecto,

ocasionando división en el grupo y alterando las funciones ya

establecidas para cada uno.

Tener inconveniente al momento de elegir al asesor.

No haber realizado una buena planeación en los costos operativos.

Mala estimación en la planeación del tiempo de entrega del Proyecto.

Para mas detalle de los riesgos, se realizo una matriz de riesgo (Ver

Anexo 2).

1.14 FODA

Para una mejor compresión de nuestro aplicativo hacia el mercado,

hemos decidido analizar las fortalezas, oportunidades, debilidades y

amenazas que nos pueden afectar en el normal cumplimiento del

proyecto.

1.14.1 Fortalezas

Las diversas fortalezas con las que va a contar el aplicativo son las

siguientes:

Aplicativo evolutivo en sus versiones.

De fácil uso con una interfaz amigable.

Page 48: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 22 -

Mantenimiento periódico del Sistema.

Aceptación del las pequeñas y medianas empresas.

1.14.2 Oportunidades

Las diversas oportunidades con las que va a contar el aplicativo son

las siguientes:

Tener cobertura a nivel Nacional.

Contacto directo con el DBA.

Poder ser adquirido el sistema por grandes industrias.

1.14.3 Debilidades

Las diversas debilidades con las que va a contar el aplicativo son las

siguientes:

Miedo al cambio con respecto a aplicativos ya establecidos en

el mercado.

No cumplir las expectativas del mercado.

1.14.4 Amenazas

Las diversas amenazas con las que va a contar el aplicativo son las

siguientes:

Susceptibilidad a la copia por parte de los competidores.

Fallas técnicas incontrolables.

Page 49: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 23 -

Que el motor de base de datos cambie el esquema como se ha

venido manejando en los últimos tiempos.

Competencia internacional.

Page 50: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

CAPITULO 2

2. ANALISIS

2.1 Ingeniería de la Información

Realizando un profundo análisis de las funciones que están involucradas

a un DBA de Oracle, hemos llegado a la conclusión de que el aplicativo a

desarrollar debe cubrir con ciertos aspectos fundamentales, que van a

permitir al DBA realizar un correcto análisis de toda la infraestructura

tecnológica de la Empresa.

Para cubrir esos aspectos se ha dividido el desarrollo del aplicativo en los

siguientes módulos:

Seguridades

Biblioteca de Servicios

Métricas de Rendimiento

Definición de Política

Page 51: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 25 -

Administración de Almacenamiento

Administración de Recursos

Eventos, Errores y Notificaciones

Terminal

2.1.1 Módulo de Seguridad

El DBA mediante este módulo podrá gestionar todos los acceso a los

usuarios administradores, el cual le va a permitir llevar un control en la

seguridad de cada uno de los servicios, Además se dará un

mantenimiento a los parámetros de seguridad (usuarios, roles y

perfiles), en la cual se podrá crear, editar o eliminar cada uno de ellos,

todo esto se hará a través de pantallas las cuales nos permitan

otorgar o revocar diferentes tipos de permisos y propiedades a cada

uno de lo usuarios, roles y perfiles

2.1.2 Módulo de Biblioteca de Servicios

La biblioteca de servicios es muy importante ya que a través de ella

vamos a realizar el análisis y el monitoreo del listener el cual es el

encargado de establecer la conexión de la Base de Datos con todas

las estaciones. En este módulo se podrá visualizar y modificar los

Page 52: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 26 -

parámetros de configuración del listener, además veremos su estado

y un historial de 14 días de la disponibilidad.

2.1.3 Módulo de Métricas de Rendimiento

A través de este módulo el DBA tendrá una opción el cual le permitirá

gestionar las diferentes métricas y establecer sus respectivos

umbrales, generando en estos procesos las debidas alertas que

permitan tomar acciones adecuadas por parte del DBA.

2.1.4 Módulo de Definición de Políticas

Se definirán políticas siguiendo los estándares que debe mantener un

DBA para la administración de servicios, usuarios y configuraciones de

la base de datos, mostrando a manera de informes dichas políticas y

el estado que se encuentra activa o inactiva.

2.1.5 Módulo de Administración de Almacenamiento

Este modulo va a permitir al DBA realizar tareas administrativas

asociada a la gestión de almacenamiento de la base de datos. Estas

tareas se realizaran a través de un mantenimiento a los Tablespace,

Archivo de Datos, Segmentos de Rollback, y Grupos de Redo Logs.

Además podremos Gestionar la visualización de información referente

Page 53: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 27 -

a los Archive Logs y a los Archivos de control y permitirá hacer las

respectivas copias de seguridad a los Control File

2.1.6 Módulo de Administración de Recursos

Este modulo va a brindar la herramienta necesaria para que el DBA

tenga un control sobre el estado y la información general del CPU, de

la Instancia, Base de Datos, de la utilización de memoria SGA, PGA y

de la recuperación de la instancia de control. A través de este control

podremos realizar tareas como bajar y subir la base de datos y poner

la base de datos en estado Archive Logs.

También va a permitir tener referencia sobre las diferentes sesiones

que se encuentra en estado activo e inactivas.

2.1.7 Módulo de Eventos, Errores y Notificaciones

Modulo encargado de mostrar al DBA mediante reportes las diferentes

violaciones a las políticas, cambios realizados a las diferentes

métricas de rendimiento, transacciones ejecutadas de cada usuario en

los diferentes módulos.

Además este módulo le permitirá configurar los parámetros de

notificación en el cual se definirá a que personas se les va a emitir

notificaciones tanto vía email o sms.

Page 54: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 28 -

2.1.8 Módulo Terminal

En este módulo se va a acceder a cuatro opciones:

Tendremos una consola el cual va a permitir correr sentencia SQL

y mostrara la información que la sentencia traiga. Además nos

dará opciones para guardar todas las sentencias ejecutadas en la

consola en la cual se definirá la ruta en donde se guardara y el

nombre.

Opción en la cual nos mostrara información acerca del estado del

esquema de los tablespace. Además podremos guardar esta

información

Opción en la cual nos mostrara información acerca de que

tablespace han sido respaldos y cuales necesitan respaldo. Esta

información también podremos guardarlo en una ruta.

Opción la cual permitirá hacer un respaldo de la base de datos en

Rman y se podrá guardar esta información en una ruta.

Page 55: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 29 -

2.2 Desarrollo del análisis

Para dicho análisis nos basaremos en las técnicas del Lenguaje de

Modelado Unificado (UML), debido a que dispone de diferentes

diagramas que permiten al momento de desarrollar el aplicativo tener una

vista estática y dinámica de los diferentes procesos que involucran.

Para el análisis de nuestro aplicativo utilizaremos los siguientes

diagramas:

Diagramas de caso de uso

Modelo Entidad Relación

Diagrama de secuencia

Diagrama de Flujo de Datos

2.2.1 Diagrama de Casos de Uso

Este tipo de diagrama va a representar como un actor opera con un

sistema de desarrollo, además de la forma, tipo y orden en que los

elementos interactúan. En resumen un diagrama de caso de uso se

emplea para visualizar el comportamiento y los procesos que se

Page 56: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 30 -

ejecutan en una parte del sistema.

Figura 2.1 - Caso de Uso General

2.2.1.1 Caso de uso de Seguridades

Se analizo todas las operaciones que tendrán que realizar el

módulo de Seguridades y Notificaciones, en el cual el actor

principal es el DBA.

Page 57: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 31 -

En la siguiente figura No. 2 se muestra el caso de uso de

Seguridades y Notificaciones

Figura 2.2 – Caso de Uso Seguridades

2.2.1.1.1 Requerimientos

Clasificación de los requerimientos del proyecto, los cuales

se identifican con el usuario, clave y servicios al que desea

ingresar.

Page 58: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 32 -

Se detalla los requerimientos para este caso de uso.

No Requerimientos DescripciónConsultas/Informes

R1 Inicia SesiónAlmacenamiento

R2Guarda los ingresos y los cambios dedatos

ProcesamientoR3 Crear UsuariosR4 Modificar UsuariosR5 Eliminar UsuariosR6 Crear RolesR7 Modificar RolesR8 Eliminar RolesR9 Crear Perfil

R10 Modificar PerfilesR11 Eliminar Perfile

Tabla 2.1 – Requerimientos Casos de uso deSeguridades

2.2.1.1.2 DescripciónA continuación se detalla la descripción de cada caso de

uso dentro de este módulo.

Modulo SeguridadesSub_caso Seguridad Crear Usuarios

Nombre Crear UsuariosAliasActores Grupo de Administradores

FunciónPermitir registrar lo diferentes usuariosadministradores

Descripción

El Administrador va a Iniciar Sesión para queingrese al Sistema con el Nombre, Clave yServicios, luego puede coger la opción Crearusuario

Referencias R1,R2,R3

Tabla 2.2 – Descripción Sub_caso de Seguridad: CrearUsuario

Page 59: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 33 -

Tabla 2.3 – Descripción Sub_caso de Seguridad:Modificar Usuario

Tabla 2.4 – Descripción Sub_caso de Seguridad:Eliminar Usuario

Modulo SeguridadesSub_caso Seguridad Modificar Usuarios

Nombre Modifica Usuarios

Alias

Actores Grupo de Administradores

FunciónPermitir modificar lo diferentes usuariosadministradores

Descripción

El Administrador va a Iniciar Sesión para queingrese al Sistema con el Nombre, Clave yServicios, luego escoge el usuario, y elige laopción editar.

Referencias R1,R2,R4

Modulo Seguridades

Sub_caso Seguridad Eliminar Usuarios

Nombre Eliminar Usuarios

Alias

Actores Grupo de Administradores

FunciónPermitir eliminar lo diferentes usuariosadministradores

Descripción

El Administrador va a Iniciar Sesión para queingrese al Sistema con el Nombre, Clave yServicios luego escoge el usuario, y elige laopción eliminar

Referencias R1,R2,R5

Page 60: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 34 -

Tabla 2.5 – Descripción Sub_caso de Seguridad: CrearRoles

Tabla 2.6 – Descripción Sub_caso de Seguridad:Modificar Roles

Modulo Seguridades

Sub_caso Seguridad Crear Roles

Nombre Crear Roles

Alias

Actores Grupo de Administradores

Función Permitir registrar lo diferentes Roles

Descripción

El Administrador va a Iniciar Sesión para queingrese al Sistema con el Nombre, Clave yServicios luego escoge Roles, y elige la opcióncrear

Referencias R1,R2,R6

Modulo Seguridades

Sub_caso Seguridad Modificar Roles

Nombre Modificar Roles

Alias

Actores Grupo de Administradores

Función Permitir modificar los diferentes Roles

Descripción

El Administrador va a Iniciar Sesión para queingrese al Sistema con el Nombre, Clave yServicios luego escoge Roles, y elige la opcióneditar

Referencias R1,R2,R7

Page 61: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 35 -

Tabla 2.7 – Descripción Sub_caso de Seguridad:Eliminar Roles

Tabla 2.8 – Descripción Sub_caso de Seguridad: CrearPerfiles

Modulo Seguridades

Sub_caso Seguridad Eliminar Roles

Nombre Eliminar Roles

Alias

Actores Grupo de Administradores

Función Permitir eliminar los diferentes Roles

Descripción

El Administrador va a Iniciar Sesión para queingrese al Sistema con el Nombre, Clave yServicios luego escoge Roles, y elige la opcióneliminar

Referencias R1,R2,R8

Modulo Seguridades

Sub_caso Seguridad Crear Perfiles

Nombre Crear Perfiles

Alias

Actores Grupo de Administradores

Función Permitir registrar los diferentes Perfiles

Descripción

El Administrador va a Iniciar Sesión para queingrese al Sistema con el Nombre, Clave yServicios luego escoge Perfiles, y elige laopción crear

Referencias R1,R2,R9

Page 62: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 36 -

Tabla 2.9 – Descripción Sub_caso de Seguridades:Modificar Perfiles

Tabla 2.10 – Descripción Sub_caso de Seguridades:Eliminar Perfiles

Modulo Seguridades

Sub_caso Seguridad Modificar Perfiles

Nombre Modificar Perfiles

Alias

Actores Grupo de Administradores

Función Permitir modificar los diferentes Perfiles

Descripción

El Administrador va a Iniciar Sesión para queingrese al Sistema con el Nombre, Clave yServicios luego escoge Perfiles, y elige laopción modificar

Referencias R1,R2,R10

Modulo Seguridades

Sub_caso Seguridad Eliminar Perfiles

Nombre Eliminar Perfiles

Alias

Actores Grupo de Administradores

Función Permitir Eliminar los diferentes Perfiles

Descripción

El Administrador va a Iniciar Sesión para queingrese al Sistema con el Nombre, Clave yServicios luego escoge Perfiles, y elige laopción eliminar

Referencias R1,R2,R11

Page 63: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 37 -

REPORTE DDISPONIBILIDAD

LISTENER

DBA

INICIOSESIÓN

RENDIMIENTODEL LISTENER

PARAMETROSDEL LISTENER

ENVIÓ DEINFORMACION

ORACLE SERVER

2.2.1.2 Caso de uso de Biblioteca de Servicios

La clasificación de los requerimientos del proyecto, Las cuales

tienen que iniciar sesión para ingresar el aplicativo.

Se detalla los requerimientos para este caso de uso.

Figura 2.3 – Caso de Uso Biblioteca de Servicios

2.2.1.2.1 Requerimientos.

A continuación se detalla la descripción de lo cada caso de

uso dentro de este módulo.

No Requerimientos DescripciónConsultas/Informes

R1 Inicia SesiónAlmacenamiento

R2Guarda parámetros para poder visualizarlos reportes de rendimientos

ProcesamientoR3 Rendimiento del ListenerR4 Parámetros del ListenerR5 Envió de Información

Tabla 2.11 – Requerimiento Caso de Uso deBibliotecas de Servicios

Page 64: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 38 -

2.2.1.2.2 Descripción

A continuación se detalla la descripción de lo cada caso de

uso dentro de este módulo.

Modulo Biblioteca de ServiciosSub_caso Rendimiento del Listener

Nombre Rendimiento del ListenerAliasActores Grupo de Administradores

FunciónPermitir Visualizar el reporte de rendimientodel listener

Descripción El Administrador inicia Sesión y ingresaReferencias R1,R2,R3,R5

Tabla 2.12 – Descripción Sub_caso Rendimiento del

Listener

Tabla 2.13 – Descripción Sub_caso Parámetro del

Listener

Modulo Biblioteca de ServiciosSub_caso Parámetros del Listener

Nombre Parámetros del Listener

Alias

Actores Grupo de Administradores

Función Configurar parámetros del Listener

Descripción Permite configurar los parámetros del Listener

Referencias R1,R2,R4,R5

Page 65: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 39 -

GESTIONARMETRICAS

INICIOSESIÓN

CREAR ELIMINARDEFINIR

VALORES YACCIÓNDBA

2.2.1.3 Caso de uso de Métricas de Rendimientos

Clasificación de los requerimientos del proyecto, los cuales se

identifican con el usuario, clave y servicios al que desea

ingresar.

Se detalla los requerimientos para este caso de uso.

Figura 2.4 – Caso de uso Métricas de Rendimiento

2.2.1.3.1 Requerimientos.

A continuación se detalla la descripción de lo cada caso de

uso dentro de este módulo.

Page 66: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 40 -

No Requerimientos DescripciónConsultas/Informes

R1 Inicia SesiónAlmacenamiento

R2Almacenar los umbrales de las Métricasde Rendimiento

ProcesamientoR3 Crear MétricasR4 Eliminar MétricasR5 Definir los valores de acción

Tabla 2.14 – Requerimiento Caso de Uso de Métricasde Rendimiento

2.2.1.3.2 Descripción

A continuación se detalla la descripción de cada caso de

uso dentro de este módulo.

Modulo Métricas de RendimientoSub_caso Gestionar Métricas Crear

Nombre Crear MétricasAliasActores Grupo de Administradores

FunciónPermite crear Métricas para los diferentesmódulos

DescripciónEl Administrador crea un umbral de acuerdo aestándares definidos por los otros módulos

Referencias R1,R2,R3

Tabla 2.15 – Descripción Sub_caso Gestionar MétricasCrear

Page 67: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 41 -

Tabla 2.16 – Descripción Sub_caso Gestionar MétricasEliminar

Tabla 2.17 – Descripción Sub_caso Gestionar Definirvalores y acción

2.2.1.4 Caso de uso de Definición de Políticas

Clasificación de los requerimientos del proyecto, los cuales se

identifican con el usuario, clave y servicios al que desea

ingresar.

Modulo Biblioteca de ServiciosGestionar Métricas Eliminar

Nombre Eliminar Métricas

Alias

Actores Grupo de Administradores

Función Permite eliminar métricas

DescripciónSe elige métricas para poder eliminar odesactivar

Referencias R1,R2,R4

Modulo Biblioteca de ServiciosGestionar Definir valores y Acción

Nombre Eliminar Métricas

Alias

Actores Grupo de Administradores

FunciónDefine Valores de las métricas y asigna laacción

DescripciónSe define las métricas con la respectiva accióna seguir generando alertas.

Referencias R1,R2,R5

Page 68: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 42 -

ADMINISTRACIÓNDE POLÍTICAS

DBA

INICIOSESIÓN

ACTIVAR DESACTIVAR

ENVIARINFORMACIÓN

ORACLE SERVER

Se detalla los requerimientos para este caso de uso.

Figura 2.5 – Caso de uso Definición de Políticas

2.2.1.4.1 Requerimientos.

A continuación se detalla la descripción de lo cada caso de

uso dentro de este módulo.

No Requerimientos DescripciónConsultas/Informes

R1 Inicia SesiónAlmacenamiento

R2Almacenar políticas creadas,modificadas y eliminadas

ProcesamientoR3 ActivadasR4 Desactivadas

Tabla 2.18 – Requerimiento Caso de Uso Definición dePolíticas

Page 69: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 43 -

2.2.1.4.2 Descripción

A continuación se detalla la descripción de cada caso de

uso dentro de este módulo.

Modulo Definición de PolíticasSub_caso Administración Políticas Activadas

Nombre Políticas ActivadasAliasActores Grupo de Administradores

Función Permite visualizar y activas políticas

DescripciónVisualiza las políticas Activadas para cadausuario

Referencias R1,R2,R3

Tabla 2.19 – Descripción Sub_caso Administración dePolíticas Activadas

Modulo Definición de PolíticasSub_caso Administración Políticas Desactivadas

Nombre Políticas ActivadasAliasActores Grupo de Administradores

Función Permite visualizar y desactivar políticas

DescripciónVisualiza las políticas Desactivadas para cadausuario

Referencias R1,R2,R4

Tabla 2.20 – Descripción Sub_caso Administración dePolíticas Desactivadas

Page 70: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 44 -

DBA

INICIOSESIÓN

GESTIÓNREDO LOG

GESTIÓNTABLESPACE

CREAR

EDITAR

ELIMINAR

CREAR

EDITAR

ELIMINAR

REPORTE

ENVIARINFORMACIÓN

GESTIÓNARCHIVO DE

DATOS

CREAR

EDITAR

ELIMINAR

GESTIÓNCONTROL FILE

DIRECTORIOCONTROL FILE

COPIA DESEGURIDAD

SECCIONREGISTROS

ORACLE SERVER

2.2.1.5 Caso de uso de Administración de almacenamiento

Clasificación de los requerimientos del proyecto, los cuales se

identifican con el usuario, clave y servicios al que desea

ingresar.

Se detalla los requerimientos para este caso de uso.

Figura 2.6 – Caso de uso Administración deAlmacenamiento

Page 71: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 45 -

2.2.1.5.1 Requerimientos.

A continuación se detalla la descripción de lo cada caso de

uso dentro de este módulo.

No Requerimientos DescripciónConsultas/Informes

R1 Inicia SesiónAlmacenamiento

R2 Gestión de Archivos de datosR3 Gestión de Redo logR4 Gestión Control fileR5 Gestión tablespace

ProcesamientoR6 Crear Archivos de DatosR7 Editar Archivos de DatosR8 Eliminar Archivos de DatosR9 Crear Redo log

R10 Editar Redo logR11 Eliminar Redo logR12 Direccionamiento de Control fileR13 Sección de RegistrosR14 Copias de SeguridadR15 Crear TablespaceR16 Editar TablespaceR17 Eliminar TablespaceR18 Reportes de tablespace

Tabla 2.21 – Requerimiento Caso de Uso deAdministración de Almacenamiento

2.2.1.5.2 Descripción

A continuación se detalla la descripción de cada caso de

uso dentro de este módulo.

Page 72: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 46 -

Modulo Administración de AlmacenamientoSub_caso Archivos de Datos Crear

Nombre Crear Archivos de datosAliasActores Grupo de Administradores, Base de DatosFunción Permite Crear Archivos de Datos

DescripciónSon creados para almacenar la creación decada archivo de dato generado

Referencias R1,R2,R6

Tabla 2.22 – Descripción Sub_caso Archivos de DatosCrear

Modulo Administración de AlmacenamientoSub_caso Archivos de Batos Editar

Nombre Editar Archivos de datosAliasActores Grupo de Administradores, Base de Datos

Función Permite Editar archivos de datos

DescripciónCreados los archivos de datos puede editararchivos de datos

Referencias R1,R2,R7

Tabla 2.23 – Descripción Sub_caso Archivos de DatosEditar

Modulo Administración de AlmacenamientoArchivos de Batos Eliminar

Nombre Eliminar r Archivos de datosAliasActores Grupo de Administradores, Base de Datos

Función Permite Eliminar Archivos de Datos

DescripciónPodremos Eliminar Archivos de Datos sitenemos los privilegios necesarios

Referencias R1,R2,R8

Tabla 2.24 – Descripción Sub_caso Archivos de DatosEliminar

Page 73: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 47 -

Modulo Administración de AlmacenamientoSub_caso Redo Log Crear

Nombre Crear Redo LogAliasActores Grupo de Administradores, Base de DatosFunción Permite Crear Redo Log

DescripciónCreados los archivos de datos pueden editarRedo log

Referencias R1,R3,R9

Tabla 2.25 – Descripción Sub_caso Redo Log Crear

Modulo Administración de Almacenamiento

Sub_caso Redo Log Editar

Nombre Editar Redo Log

Alias

Actores Grupo de Administradores, Base de Datos

Función Permite Editar Redo Log

DescripciónCreados los Redo Log puede editar archivosde datos

Referencias R1,R3,R10

Tabla 2.26 – Descripción Sub_caso Redo Log Editar

Modulo Administración de AlmacenamientoSub_caso Redo Log Eliminar

Nombre Eliminar Redo LogAliasActores Grupo de Administradores, Base de Datos

Función Permite Eliminar Redo Log

DescripciónPodremos Eliminar redo Log según losprivilegios que tengan el administrador

Referencias R1,R3,R11

Tabla 2.27 – Descripción Sub_caso Redo Log Eliminar

Page 74: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 48 -

Modulo Administración de AlmacenamientoSub_caso Control File Directorio de Control File

Nombre Direccionar los Control FileAliasActores Grupo de Administradores, Base de Datos

Función Ofrece la parte direccional de los Control File

DescripciónSe busca la ruta donde se va a generar losarchivos

Referencias R1,R4,R12

Tabla 2.28 – Descripción Sub_caso Control FileDirectorio de Control File

Modulo Administración de AlmacenamientoSub_caso Control File Sección Registros

Nombre Sección de RegistrosAliasActores Grupo de Administradores, Base de Datos

Función Información de los Archivos de Control

Descripción

Podremos ver la información de los archivosde control, como tamaño del registro, total deregistros y Registros Utilizados

Referencias R1,R4,R13

Tabla 2.29 – Descripción Sub_caso Control FileSección Registros

Modulo Administración de AlmacenamientoSub_caso Control File Copias de Seguridad

Nombre Copias de seguridadAliasActores Grupo de Administradores, Base de Datos

FunciónPermite realizar copias de seguridad de losarchivos de control

DescripciónSon copias creadas en otro repositorio con elobjetivo de realizar un backup

Referencias R1,R4,R14

Tabla 2.30 – Descripción Sub_caso Control FileCopias de Seguridad

Page 75: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 49 -

Modulo Administración de AlmacenamientoSub_caso Tablespace Crear

Nombre Crear TablespaceAliasActores Grupo de Administradores, Base de DatosFunción Permite Crear Tablespace

DescripciónNos va a permitir crear tablespace en la basede datos

Referencias R1,R5,R15

Tabla 2.31 – Descripción Sub_caso Tablespace Crear

Modulo Administración de AlmacenamientoSub_caso Tablespace Editar

Nombre Editar TablespaceAliasActores Grupo de Administradores, Base de Datos

Función Permite Editar Tablespace

DescripciónSe escoge el tablespace para modificar eltamaño del mismo

Referencias R1,R5,R16

Tabla 2.32 – Descripción Sub_caso TablespaceEditar

Modulo Administración de AlmacenamientoSub_caso Tablespace Eliminar

Nombre Eliminar TablespaceAliasActores Grupo de Administradores, Base de Datos

Función Permite Eliminar Tablespace

DescripciónSe escoge un tablespace para eliminarsiempre y cuando tenga los privilegios

Referencias R1,R5,R17

Tabla 2.33 – Descripción Sub_caso TablespaceEliminar

Page 76: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 50 -

Modulo Administración de AlmacenamientoSub_caso Tablespace Reportes

Nombre Reportes TablespaceAliasActores Grupo de Administradores, Base de Datos

Función Visualizar Tablespace

Descripción Se visualizaReferencias R1,R5,R17

Tabla 2.34 – Descripción Sub_caso TablespaceReportes

2.2.1.6 Caso de uso de Administración de Recursos

Clasificación de los requerimientos del proyecto, los cuales se

identifican con el usuario, clave y servicios al que desea

ingresar.

Se detalla los requerimientos para este caso de uso.

Figura 2.7 – Caso de uso Administración de Recursos

Page 77: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 51 -

2.2.1.6.1 Requerimientos.

A continuación se detalla la descripción de lo cada caso de

uso dentro de este módulo.

No Requerimientos DescripciónConsultas/Informes

R1 Inicia SesiónProcesamiento

R2 Informe de CPUR3 Informe de Instancia, Base de DatosR4 Informe de MemoriasR5 Informe de Sesiones

Tabla 2.35 – Requerimiento Caso de Uso deAdministración de Recursos

2.2.1.6.2 Descripción

A continuación se detalla la descripción de cada caso de

uso dentro de este módulo.

Modulo Administración de RecursosSub_caso Informe CPU

Nombre Informe CPUAliasActores Grupo de Administradores

Función Visualiza Informe de CPU

DescripciónVisualiza la información de manera general delCPU y del Sistema Operativo

Referencias R1,R2

Tabla 2.36 – Descripción Sub_caso Informe CPU

Page 78: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 52 -

Modulo Administración de RecursosSub_caso Informe de la Instancia y de la Base de Datos

Nombre Informe de la Instancia y de la Base de DatosAliasActores Grupo de Administradores

FunciónVisualiza Informe de la Instancia y Base deDatos

DescripciónVisualiza la información general acerca delestado de la Instancia y de la Base de Datos

Referencias R1,R3

Tabla 2.37 – Descripción Sub_caso Informe Instanciay Base de Datos

Tabla 2.38 – Descripción Sub_caso Informe deMemoria

Modulo Administración de RecursosSub_caso Informe Memoria

Nombre Informe MemoriaAliasActores Grupo de Administradores

FunciónVisualizar los recursos de memoria de la SGAy de la PGA

DescripciónPresenta un detalle del tamaño de memoria dela SGA y de la PGA

Referencias R1,R4

Page 79: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 53 -

GESTIÓN DEEVENTOS YERRORES

INICIOSESIÓN

REPORTESDE ALERTAS

DETALLE DEALERTAS

ENVÍAINFORMACIÓN

ORACLE SERVER

DBA CONFIGURARPARAMETROS DE

NOTIFICACION

Tabla 2.39 – Descripción Sub_caso Informe deSesiones

2.2.1.7 Caso de uso de Eventos, Errores y Notificaciones

Clasificación de los requerimientos del proyecto, los cuales se

identifican con el usuario, clave y servicios al que desea

ingresar.

Se detalla los requerimientos para este caso de uso.

Figura 2.8 – Caso de uso Eventos, Errores y Notificaciones

Modulo Administración de RecursosSub_caso Informe Sesiones

Nombre Informe SesionesAliasActores Grupo de Administradores

Función Visualizar Informe de Sesiones

DescripciónVisualiza de forma detalla las estadísticas desesiones y verifican si están activas o inactiva

Referencias R1,R5

Page 80: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 54 -

2.2.1.7.1 Requerimientos.A continuación se detalla la descripción de lo cada caso de

uso dentro de este módulo.

Tabla 2.40 – Requerimiento Caso de Uso de Eventos yErrores

2.2.1.7.2 Descripción

A continuación se detalla la descripción de cada caso de

uso dentro de este módulo.

Modulo Administración de Eventos, Errores yNotificaciones

Sub_caso Reporte AlertasNombre Reportes alertasAliasActores Grupo de Administradores

Función Reporte Alertas

Descripción

Visualizamos las Alertas creado por losdiferentes administradores en los eventos,metricas y politicas

Referencias R1,R2

Tabla 2.40 – Descripción Sub_caso Reporte Alertas

No Requerimientos Descripción

Consultas/Informes

R1 Inicia Sesión

Procesamiento

R2 Reporte de Alertas

R3 Detalle de Alertas

R4Configuración de Parámetros deNotificación

Page 81: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 55 -

Modulo Administración de Evetos, Errores y NotificacionesSub_caso Detalle de Alertas

Nombre Detalle de AlertasAliasActores Grupo de Administradores

Función Detalle de las Alertas

DescripciónVisualiza el detalle de las alertas en loseventos, metricas y politicas

Referencias R1,R3

Tabla 2.41 – Descripción Sub_caso Detalle deAlertas

Modulo Administración de Eventos, Errores yNotificaciones

Sub_caso Configurar Parámetros de NotificaciónNombre Configurar Parámetros de NotificaciónAliasActores Grupo de Administradores

Función Configurar Parámetros de Notificación

Descripción

Permite configurar los parámetros deNotificación para determinar a que usuarios seles envia las alertas ya sea via email o sms

Referencias R1,R4

Tabla 2.42 – Descripción Sub_caso ConfigurarParámetros de Notificación

2.2.1.8 Caso de uso de Terminal

Clasificación de los requerimientos del proyecto, los cuales se

identifican con el usuario, clave y servicios al que desea

ingresar.

Page 82: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 56 -

GESTIONTERMINAL

INICIOSESIÓN

CONSOLA ESQUEMARMAN

ENVÍAINFORMACIÓN

ORACLE SERVER

LISTADORMAN

BACKUPRMAN

Se detalla los requerimientos para este caso de uso.

Figura 2.9 – Caso de uso Terminal

2.2.1.8.1 Requerimientos.A continuación se detalla la descripción de lo cada caso de

uso dentro de este módulo.

Tabla 2.43 – Requerimiento Caso de Uso Terminal

No Requerimientos Descripción

Consultas/Informes

R1 Inicia Sesión

Procesamiento

R2 Consola

R3 Esquema RMAN

R4 Listado RMAN

R5 Backup RMAN

Page 83: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 57 -

2.2.1.8.2 Descripción

A continuación se detalla la descripción de cada caso de

uso dentro de este módulo.

Modulo TerminalSub_caso Consola

Nombre ConsolaAliasActores Grupo de Administradores

Función Consola

Descripción Permite correr sentencias SQLReferencias R1,R2

Tabla 2.44 – Descripción Sub_caso Consola

Modulo TerminalSub_caso Esquema Rman

Nombre Esquema RmanAliasActores Grupo de Administradores

Función Información del Esquema de Tablespace

DescripciónPermite visualizar información con respect alEsquema de tablespace

Referencias R1,R3

Tabla 2.45 – Descripción Sub_caso Esquema Rman

Page 84: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 58 -

Modulo TerminalSub_caso Listado Rman

Nombre Listado RmanAliasActores Grupo de Administradores

Función Información de los respaldos de Tablespace

Descripción

Permite visualizar cuales son los tablespaceque se han respaldado y los que necesitanrespaldo

Referencias R1,R4

Tabla 2.46 – Descripción Sub_caso Listado Rman

Modulo TerminalSub_caso Backup Respaldo

Nombre Backup RespaldoAliasActores Grupo de Administradores

FunciónRealizar el backup de la Base de Datos enRman

DescripciónPermite realizar el backup de la Base de datosen Rman.

Referencias R1,R5

Tabla 2.47 – Descripción Sub_caso Backup Rman

2.2.2 Modelo Entidad Relación

Estos diagramas son los más comunes en los sistemas orientados a

Objetos, un diagrama de clases muestra un conjunto de clases,

interfaces, colaboraciones y relaciones entre ellas.

Page 85: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 59 -

En base al análisis del aplicativo para administrar la base de datos, se

definió el siguiente diagrama de clase, algunas tablas no están

descritas debido a que se usaran las vistas de Oracle

.

Figura 2.10 - Modelo Entidad Relación

2.2.2.1 Descripción del Modelo Entidad Relación

A continuación se detallara la descripción de cada una de las

clases dentro del diagrama entidad relación.

Page 86: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 60 -

Tabla 2.48 - Entidad Menú

ENTIDAD – MENU

Descripción Almacenara los diferentes opciones de los módulos del Sistema

Constraint código clave Primaria

Campo Tipo_Dato Longitud Nulo Descripción

codigo char 5 NVa a detallar el código la opcióndel Modulo

nombre varchar2 50 NContendrá el Nombre la opcióndel modulo

opcion char 1 N

Es una bandera en la cual va atener un (si) es una opción y lallama, y si es (no) no llamara anada

nomb_fte varchar2 50 NEs el nombre de la carpeta dondese encuentra el ejecutable

nom_ejec varchar2 50 NEs el nombre del ejecutable al dela opción

Titulo Varchar2 80 NGuardara el titulo de la opción delmodulos

icono integer 2 N

Es el numero identificador delicono que s e le va a poner a laopción

apertura Varchar2 2 N

Es el número de la bandera en elcual se indica si la base de datosesta abierta o cerrada

Page 87: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 61 -

Tabla 2.49- Entidad LOGDBMS

ENTIDAD – LOGDBMS

DescripciónAlmacenara un registros de todas las transacciones que sehan hecho en cada uno de los módulos del Sistema

Constraint sid clave primaria

Campo Tipo_Dato Longitud Nulo Descripción

sid varchar2 20 NVa a detallar el nombrede la Base de Datos

maquina varchar2 30 NAlmacenara el nombrede la maquina en dondese hizo la transacción

fecha datetime N Detalla la fecha en quese hizo la transacción

operador varchar2 20 NGuardara el nombre delusuario que ejecuta latransacción

modulo varcha2 200 NGuardara el nombre delmodulo en donde seejecuto la transacción

sentencia varchar2 1000 NDetalla la sentencia SQLque se ejecuto para larealizar la transacción

Error varchar2 1000 NDetalla el error que seproduce en unasentencia

Tipo char 1 N

Es una bandera en laque guarda 1 si se haejecutado bien latransacción, y 2 si hay unerror al ejecutar latransacción

Page 88: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 62 -

Tabla 2.50- Entidad Partarea

Tabla 2.51- Entidad Hist_list

ENTIDAD – PARTAREA

Descripción Almacenara los parámetros que se configuran para lascensadas del listener

Constraint sid clave primaria

Campo Tipo_Dato Longitud Nulo Descripción

sid varchar2 25 N Almacena el nombre de aBase de Datos

ruta varchar2 80 N Es la ruta donde esta elsistema

tipo char 1 NIdentificador en donde seindica si esta en minutos oen horas

frecuencia integer 3 SSe guardara cada cuantotiempo estará censando ellistener

ENTIDAD – HIST_LIST

Descripción Almacenara la información de las censadas que se han hechoen el Listener.

Constraint No tiene clave primaria

Campo Tipo_Dato Longitud Nulo Descripción

fecha datetime N Almacena la fecha en quese hizo la censada dellistener

hora char 10 N Detalla la hora en que seejecuto la censada

censo integer 1 N Es el valor que toma cadauna de las censadas

sid char 20 S Se guardara el nombre dela Base de Datos

Page 89: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 63 -

Tabla 2.52- Entidad Parámetros

ENTIDAD – PARAMETROS

Descripción Almacenara la información de los parámetros de notificaciónde alertas que se les envía a los usuarios

Constraint No tiene clave primaria

Campo Tipo_Dato Longitud Nulo Descripción

nombremitente varchar2 50 N Almacena el nombre de dela persona que remite lanotificación

dirremitente varchar2 200 N Detalla la dirección decorreo de donde se va aenviar las notificaciones

password varchar2 50 N Se almacena la clave de ladirección de correo delremitente

smtp varchar2 60 N Se guardara la direccióndel servidor de correo

puerto integer 4 NSe registra el numero depuerto del servidor decorreo.

dirsaliente varchar2 1000 N

Se detalla las direcciones olos numero de teléfonos delos usuarios a los cueles seles envían las alertas.

enviar char 1 N

Es una bandera en la queindica que si es (S) seenviara las alertasautomáticamente si es (N)no se enviaranautomáticamente.

ENTIDAD – POLITICAS

Page 90: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 64 -

Tabla 2.53- Entidad Políticas

DescripciónSe almacenaran todas las políticas que se aplicaran ennuestro sistema

Constraint num clave primaria

Campo Tipo_Dato Longitud Nulo Descripción

num integer 4 N Es un numerosecuencial

nombre_poltica varchar2 128 N Se almacena el nombrede la política

id_categoria integer 4 N Detalla el id de lacategoría de la política

descripción varchar2 1000 N Contendré unadescripción General dela política

fecha_creacion datetime S

usuario_modifica varchar2 50 N Usuario por defectoDBMS-FOX

fecha_modifica datetime N

estado char 1 NEs donde se detalla siesta o no activa lapolítica

procedimiento varchar2 100 N

Se almacena el nombredel procedimiento quese ejecutara en esapolítica

Page 91: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 65 -

Tabla 2.54- Entidad Poli_violadas

ENTIDAD – POLI_VIOLADAS

DescripciónSe almacenaran toda la información de las políticas quehan sido violadas

Constraint num clave primaria

Campo Tipo_Dato Longitud Nulo Descripción

num integer 4 N

Es un numerosecuencial que secunado corre elproceso para verificarpolíticas violadas

Id_politica Integer 4 N Es el id de la política

Fecha Datetime N

Detalla la fecha en quese ejecuto el proceso yse genero una políticaviolada

Comentario varchar2 100 N Describe un comentariode porque se violo lapolítica

Fecha_modifica datetime N Indica la fecha decuando se dejo deviolar la política

Estado Char 1 N Indica el estado activoo inactivo de la Política

Enviado char 1 N Indica si la alerta de lapolítica violada ha sidoenviada al usuario

Fec_envio Datetime NEs donde se detalla lafecha de envió de laalerta

Page 92: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 66 -

Tabla 2.55- Entidad Métrica

ENTIDAD – METRICA

DescripciónSe almacenaran toda la información de las métricas quehan sido creadas

Constraint índice clave primaria

Campo Tipo_Dato Longitud Nulo Descripción

índice integer 5 N Es un valor secuencialde las métricas

métrica varchar2 250 N Detalla la descripciónde la Métrica

operador varchar2 20 N Detalla el nombre delusuario

mínimo varchar2 50 NEspecifica el valormínimo limitante de lamétrica

máximo varchar2 50 N Especifica el valormáximo limitante de lamétrica

sentencia varchar2 4000 N Detalla la sentenciaejecutarse para esamétrica

tipo char 1 N Indica (S) la sentenciaes un Query y (N) si esun procedimiento.

comparador char 15 N Indica el operadorlimitante con el que seevalúa la métrica

ejecuta char 1 N

Es una bandera (S) sise ha ejecutado lamétrica y (N) si o se haejecutado

ult_ejec datetimeIndica la fecha de laultima ejecución de lamétrica

Page 93: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 67 -

Tabla 2.56- Entidad Detalle Métrica

ENTIDAD – DETALLE_METRICA

DescripciónSe almacenaran toda la información de las métricas quehan sido creadas

Constraint Índice_met clave primaria ; secuenciaclave primaria

Campo Tipo_Dato Longitud Nulo Descripción

indice_met integer 5 N Es el id de la Métrica

secuencia integer 5 N Es un numerosecuencial

fecha datetime NDetalla la fecha en quese esta ejecutando lamétrica

valor integer 5 N Especifica el valor queobtuvo la métricacuando se ejecuto

tipo_umbral char 1 N

Indica a través de unaBandera si es ( C )Critico, si es (A)Advertencia

operador varchar2 15 N Especifica el operadorde comparaciónlimitante

limitante varchar2 20 N Detalle los valoreslimitantes de la métrica

comentario varchar2 3000 NDetalla un comentarioen el cual especificaporque la métrica seejecuto

notificado char 1 NEs una bandera (S) sise ha notificado métricay (N) si o se hanotificado

fec_notifica datetime NDetalla la fecha en lacual se envía lasnotificaciones

Page 94: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 68 -

2.2.3 Diagrama de Secuencias

Estos diagramas son aquellas que nos muestran las diversas

interacciones de un usuario con el sistema. La interacción es una

cadena de mensajes enviados entre los objetos en respuesta a un

evento que a sido generado por el usuario a de la aplicación.

En base al análisis de los siete módulos para la administración e la

Base de datos hemos detallado los siguientes diagramas de

secuencia.

Page 95: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 69 -

Ses

ion

Val

ida

Ses

ion

Cre

arU

suar

ioM

odifi

car

Usu

ario

Elim

inar

Usu

ario

Cre

arR

oles

Mod

ifica

rR

oles

Elim

inar

Rol

esC

rear

Per

files

Mod

ifica

rP

erfil

esE

limin

arP

erfil

es

Ret

orna

r

Dat

osM

inim

os

Esc

oger

usua

rio

Dat

osM

ínim

os

Esco

geru

suar

io

Esco

gerR

oles Es

coge

rRol

es

Dat

osm

inim

os

Esc

oger

Per

files

Esco

gerP

erfil

es

FIG

UR

A2.

11–

DIA

GR

AM

AD

ESE

CU

ENC

IAD

ESE

GU

RID

AD

ES

Inic

iaS

esio

n

Page 96: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 70 -

Sesi

onVa

lida

Sesi

onR

endi

mie

nto

del

List

ener

Ret

orna

r

Ver

ifica

elR

endi

mie

nto

del

List

ener

Con

figur

arP

arám

etro

sde

lLis

tene

r

Par

ámet

ros

del

List

ener

Inic

iaSe

sion

FIG

UR

A2.

12–

DIA

GR

AM

AD

ESE

CU

ENC

IAB

IBLI

OTE

CA

DE

SER

VIC

IOS

Page 97: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 71 -

Sesi

onV

alid

aSe

sion

Cre

ar

Ret

orna

r

Ver

ifica

elR

endi

mie

nto

del

List

ener

Esc

oge

laM

etric

aa

Mod

ifica

r

Def

inir

Val

ores

De

Acc

ión

Info

rmac

ion

dela

acci

ona

aplic

ar

Inic

iaSe

sion

FIG

UR

A2.

13–

DIA

GR

AM

AD

ESE

CU

ENC

IAD

EM

ÉTR

ICA

SD

ER

END

IMIE

NTO

Page 98: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 72 -

Ses

ion

Val

ida

Ses

ion

Act

ivar

Ret

orna

r

Esc

oge

una

polit

icas

Esco

geun

aP

oliti

ca

Des

activ

ar

Info

rmac

ion

dela

acci

ona

aplic

ar

Inic

iaS

esio

n

Env

íaIn

form

ació

n

Usu

ario

Adm

inis

trado

r

Ora

cle

Serv

er

FIG

UR

A2.

14–

DIA

GR

AM

AD

ESE

CU

ENC

IAD

EFIN

ICIÓ

ND

EPO

LITI

CA

S

Page 99: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 73 -

Page 100: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 74 -

Ora

cle

Serv

er

Enví

aIn

form

ació

nIn

icia

Sesi

on

Usu

ario

Adm

inis

trado

r

Ses

ion

Val

ida

Ses

ion

Info

rme

CP

U

Ret

orna

r

visu

aliz

acio

n

Info

rme

deIn

stan

cia,

Bas

ede

Dat

os

Info

rme

Mem

oria

visu

aliz

acio

n

visu

aliz

acio

n

FIG

UR

A2.

16–

DIA

GR

AM

AD

ESE

CU

ENC

IAA

DM

INIS

TRA

CIÓ

ND

ER

ECU

RSO

S

Info

rme

Ses

ione

s

visu

aliz

acio

n

Page 101: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 75 -

Ses

ion

Val

ida

Ses

ion

Rep

orte

deA

lerta

s

Ret

orna

r

Det

alle

aA

lerta

s

Inic

iaSe

sion

Enví

aIn

form

ació

n

Usu

ario

Adm

inis

trado

r

Ora

cle

Ser

ver

visu

aliz

acio

n

Vis

ualiz

amos

lade

finic

ion

deA

lerta

s

FIG

UR

A2.

17–

DIA

GR

AM

AD

ESE

CU

ENC

IAD

EEV

ENTO

S,ER

RO

RES

YN

OTI

FIC

AC

ION

ES

Con

figur

arP

arám

etro

sde

Not

ifica

ción

Con

figur

ació

nde

Pará

met

ros

deN

otifi

caci

ónpa

raen

víos

deal

erta

s

Page 102: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 76 -

Page 103: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 77 -

2.2.4 Diagrama de Flujo de Datos

Mediante este diagrama representaremos el funcionamiento de los

diversos módulos del sistema, para el respectivo análisis se usaran el

diagrama de contexto (nivel 0) y el diagrama de detalle o expansión

(nivel 2).

Diagrama de Flujo de Datos Seguridades

Figura 2.19 – DFD Seguridades (Nivel 0)

Page 104: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 78 -

Solicitud De Estado delListener

DBA Oracle

Solicita Rendimiento y Estado de Base

Envia Información

Envía Solicitud

Figura 2.20 – DFD Seguridades (Nivel 2)

Diagrama de Flujo de Datos Biblioteca de Servicios

Figura 2.21– DFD Biblioteca de Servicios (Nivel 0)

Page 105: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 79 -

DBA Gestión deMétricas

Solicita

Vistas de OracleCrear

Eliminar

Definir Valores

Figura 2.22– DFD Biblioteca de Servicios (Nivel 2)

Diagrama de Flujo de Datos Métricas de Rendimiento

Figura 2.23– DFD Métricas de Rendimiento (Nivel 0)

Figura 2.24– DFD Métricas de Rendimiento (Nivel 2)

Page 106: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 80 -

Diagrama de Flujo de Datos Políticas

Figura 2.25– DFD Definición de Políticas (Nivel 0)

Figura 2.26– DFD Definición de Políticas (Nivel 2)

Page 107: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 81 -

Diagrama de Flujo de Datos Almacenamiento

Figura 2.27– DFD Almacenamiento (Nivel 0)

Page 108: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 82 -

Figura 2.28– DFD Almacenamiento (Nivel 2)

Page 109: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 83 -

Diagrama de Flujo de Datos Administración de Recursos

Figura 2.29– DFD Administración de Recursos (Nivel 0)

Figura 2.30– DFD Administración de Recursos (Nivel 2)

Page 110: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 84 -

DBA Solicita

Reporte deAlertas

Detalle deAlertas

Vistas Oracle

EnvíaRequerimiento

EnvíaRequerimiento

EnvíaInformación

Parametros deNotifcación Alertas

Configura Envio

EnvíaInformación

Diagrama de Flujo de Datos Eventos, Errores y

Notificaciones

Figura 2.31– DFD Eventos, Errores y Notificaciones (Nivel 0)

Figura 2.32– DFD Eventos, Errores y Notificaciones (Nivel 2)

Page 111: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 85 -

Diagrama de Flujo de Datos Terminal

Figura 2.33– DFD Terminal (Nivel 0)

Figura 2.34– DFD Terminal (Nivel 2)

Page 112: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

CAPITULO 3

3. DISEÑO

3.1 Introducción

En la actualidad encontramos muchos aplicativos para poder administrar

una Infraestructura tecnológica las cuales son muy eficientes en sus

funciones pero su interfaz no es muy amigable

Un administrador de Base de Datos, siempre busca un aplicativo el cual le

proporcione todas las funciones necesarias para llevar un buen control en

la administración a través de una interfaz que sea amigable, fácil de

manejar y sobre todo dinámico en el acceso a diferentes pantallas para

poder visualizar diferentes tipos de información al mismo tiempo, esto va

a ayudar mucho al administrador a llevar un control de todos los módulos.

Page 113: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 87 -

Para la elaboración de Diseño de nuestro aplicativo nos basaremos en

tres aspectos fundamentales los cuales se detallan a continuación.

Diseño de Clases

Diseño Arquitectónico

Diseño de Interfaz

3.1.1 Diseño de Clases

Es un diagrama de estructura estática que describe la estructura de un

sistema mostrando sus clases, atributos y las relaciones entre ellas.

Estos diagramas los utilizaremos durante el proceso de análisis y

diseño del aplicativo, donde se crea el diseño conceptual de la

información que se manejara en el sistema, y de los componentes que

se encargaran del funcionamiento y la relación entre uno y otro.

Page 114: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 88 -

3.1.2 Diseño Arquitectónico

En la siguiente figura se muestra la estructura arquitectónica en que se

encuentra basado nuestro aplicativo.

Page 115: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 89 -

DB

MS-

FOX

AD

MIN

ISTR

AC

IÓN

DE

ALM

AC

EN

AM

IEN

TO

DEF

INIC

IÓN

DE

PO

LITI

CA

SM

ETR

ICA

SD

ER

EN

DIM

IEN

TOB

IBLI

OTE

CA

DE

SE

RV

ICIO

SEG

UR

IDA

DE

SA

DM

INIS

TRAC

IÓN

DE

RE

CU

RS

OS

EVE

NTO

S,E

RR

OR

ES

YN

OTI

FIC

AC

ION

ES

TER

MIN

AL

DE

SC

ON

EC

TAR

CO

NE

CTA

R

Adm

inis

traci

ónde

Seg

urid

ades

Man

teni

mie

nto

Adm

inis

traci

ónde

Segu

ridad

es

Par

ámet

ros

del

List

ener

Ren

dim

ient

ode

lLis

tene

r

Ges

tiona

rm

etric

asG

estio

nar

Pol

ítica

sC

ontro

lFile

Tabl

espa

ce

Man

teni

mie

nto

Arc

hivo

deD

atos

Seg

men

tos

deR

ollb

ack

Dire

ctor

ioC

ontro

lFile

Cop

iade

Seg

urid

ad

Sec

ción

Reg

istro

s

Man

teni

mie

nto

Man

teni

mie

nto

Ges

tión

deR

ecur

sos M

onito

reo

del

CPU

Mon

itore

ode

laIn

stan

cia

yla

BD

Mon

itore

oM

emor

ia

Ges

tión

Rep

orte

deE

vent

os

Rep

orte

deE

rrore

s

Con

sulta

s

Con

sola

FIG

UR

A3.

2–

DIS

EÑO

AR

QU

ITEC

TÓN

ICO

Usu

ario

Rol

es

Per

files

Con

figur

ació

nde

Par

ámet

ros

Pla

nific

ació

nde

Not

ifica

cion

es

Rep

orte

deP

olíti

cas

Vio

lada

s

Mon

itore

oR

ecup

erac

ión

defa

llode

BD

Gru

pode

Red

oLo

gs

Man

teni

mie

nto

Arc

hive

Logs

Info

rme

Ses

ione

s

Con

figur

ació

n

Sch

ema

Rm

an

List

ado

Rm

an

Rm

anB

acku

p

Page 116: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 90 -

3.1.3 Diseño de Interfaz

Para realizar las interfaces nos basaremos en el diseño arquitectónico

en la cual se detalla toda la estructura del aplicativo. Se mostrara de

manera detallada las interfaces principales que tendrá cada uno de los

módulos del aplicativo del DBMS-FOX.

Pantalla Principal

La siguiente interfaz contendrá el diseño de la página principal del

aplicativo en la cual consta de 3 regiones como son:

Barra de Titulo (1)

Explorador de Módulos (2)

Área de Presentación (3)

Barra de Titulo.- Es donde se muestra el titulo de nuestro sistema,

además de esto a lado del mismo, se muestra el nombre de la Base

de datos a la cual estamos conectados.

Explorador de Módulos.- En esta sección se muestra a nivel de

explorador, todas las opciones (módulos) del sistema a las cuales el

DBA tiene acceso para poder administrar la base de Datos. Cada una

de estas opciones contiene subdivisiones en las cuales se especifica

las diferentes aplicaciones de cada uno de ellos.

Page 117: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 91 -

Área de Presentación.- En esta sección se muestra todas las

pantallas, a las cuales accedemos a través del explorador de módulos.

Aquí podremos presentar desde una hasta muchas pantallas al mismo

tiempo, ya que esta área tiene la característica de ser una interfaz

multiventanas, la cual va a facilitar a la administración del DBA en la

observación de diferente tipo de información

Page 118: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 92 -

FIG

UR

A 3

.3–

PAN

TALL

APR

INC

IPA

L

(1)

(2)

(3)

Page 119: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 93 -

La siguientes interfaces contendrá el diseño de acceso a la base de

datos así como también el diseño de los diferentes módulos que

forman parte del sistema.

3.1.3.1 Acceso al Sistema

El Administrador accederá al Sistema a través de una pequeña

pantalla en la cual tendrá que especificar los siguientes campos:

Servidor : IP del servidor

Usuario: Nombre del Usuario

Clave: Clave del usuario

SID: Nombre de la Base de Datos

Conectar como: Privilegio de Conexión

El sistema validará el ingreso de los datos, al momento de digitarlos

correctamente iniciara la sesión.

Figura 3.4 – Formulario de Acceso al sistema

Page 120: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 94 -

3.1.3.2 Modulo de Seguridades

A través de este modulo se podrán visualizar tres tipos de pantalla en

la cual se llevara un control a través de mantenimientos a los

usuarios, roles y perfiles. Este mantenimiento permitirá crear, editar y

eliminar información.

Usuario.- En esta opción tendremos una pantalla principal,

donde se mostraran todos los usuarios que existen en la Base de

Datos con su respectivo resumen de información además también

permitirá crearlos o eliminarlos. A través de esta pantalla

tendremos acceso a cada uno de los formularios de los mismos.

Este formulario contara con seis pestañas, cada una tendrá

diferente tipo de información asociada a un usuario. en el cual se

podrá realizar tareas de visualización o edición, a través del cual

nos permitirá llevar un óptimo mantenimiento.

FIGURA 3.5 – Formulario Principal - Usuarios

Page 121: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 95 -

En esta pantalla podremos visualizar, editar toda la información

general del usuario, o crear uno nuevo si se ha seleccionado el

botón de crear que se encuentra en la Figura 3.5.

Figura 3.6 – Formulario General - Usuarios

Permite visualizar, agregar y quitar los distintos roles a los

usuarios.

Figura 3.7 – Formulario Roles - Usuarios

Page 122: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 96 -

Permite visualizar, agregar y quitar privilegio de sistemas a los

usuarios

Figura 3.8 – Formulario Privilegios de Sistema – Usuarios

Permite visualizar los privilegios de objetos que tiene el usuario,

así mismo agregar y quitar dichos privilegios.

Figura 3.9 – Formulario Privilegios de Objeto - Usuarios

Page 123: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 97 -

Permite agregarle valores a las cuotas que tienen asignados el

usuario.

Figura 3.10 – Formulario Cuotas - Usuario

Permite visualizar, agregar y quitar los grupos de consumidores

a los usuarios

Figura 3.11 – Formulario Grupo de Consumidores-Usuarios

Page 124: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 98 -

Roles.- En esta opción tendremos una pantalla principal, donde

se mostraran todos los roles que existen en la Base de Datos con

su respectivo resumen de información además también permitirá

crearlos o eliminarlos. A través de esta pantalla tendremos acceso

a cada uno de los formularios de cada uno de los roles. Este

formulario contara con cinco pestañas, cada una tendrá diferente

tipo de información asociada a un rol en el cual se podrá realizar

tareas de visualización o edición, a través del cual nos permitirá

llevar un óptimo mantenimiento.

Figura 3.12 – Formulario Principal - Roles

Page 125: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 99 -

En esta pantalla podremos visualizar, editar toda la información

general de un rol, o crear uno nuevo si se ha seleccionado el botón

de crear que se encuentra en la figura Figura 3.12.

Figura 3.13 – Formulario General - Roles

Permite visualizar, agregar y quitar los distintos privilegios de roles

a los roles.

Figura 3.14 – Formulario Privilegios de Roles - Roles

Page 126: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 100 -

Permite visualizar, agregar y quitar privilegio de sistemas a los

roles.

Figura 3.15 – Formulario Privilegios de Sistema – Roles

Permite visualizar los privilegios de objetos que tiene el rol, así

mismo agregar y quitar dichos privilegios.

Figura 3.16 – Formulario Privilegios de Objetos – Roles

Page 127: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 101 -

Permite visualizar, agregar y quitar los grupos de consumidores a

los Roles.

Figura 3.17 – Formulario Grupo de Consumidores – Roles

Perfiles.- En esta opción tendremos una pantalla principal, donde

se mostraran todos los perfiles que existen en la Base de Datos

con su respectivo resumen de información, además también

permitirá crearlos o eliminarlos. A través de esta pantalla

tendremos acceso a cada uno de los formularios de los mismos.

Este formulario contara con dos pestañas, cada una tendrá

diferente tipo de información asociada a un perfil en el cual se

podrá realizar tareas de visualización o edición a cada una de sus

propiedades, a través del cual nos permitirá llevar un óptimo

mantenimiento.

Page 128: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 102 -

Figura 3.18 – Formulario Principal – Perfiles

En esta pantalla podremos visualizar o editar toda la información

general de un perfil, o crear uno nuevo si se ha seleccionado el

botón de crear que se encuentra en la Figura 3.18. En esta pantalla

podremos saber cuales son los límites que tiene un perfil sobre los

recursos de la Base de Datos.

Figura 3.19 – Formulario General – Perfiles

Page 129: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 103 -

Permite visualizar y gestionar los límites de la contraseña del perfil

Figura 3.20 – Formulario Contraseña – Perfiles

3.1.3.3 Modulo Biblioteca de Servicios

Este modulo esta conformado por dos opciones. Las cuales permitirán

llevar un control del Listener.

Programar Inspección del Listener.- Permite tener una

programación en minutos o en horas de cada cuanto se va a

censar el estado del listener.

Page 130: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 104 -

Figura 3.21 – Formulario Programar Inspección - Listener

Listener.- Esta opción muestra un formulario con dos pestañas, en

el cual se detalla información general del listener, como su estado,

la disponibilidad, además permite levantar, bajar y darle un

mantenimiento a los parámetros del listener.

Figura 3.22 Formulario Estado - Listener

Page 131: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 105 -

Muestra la disponibilidad del listener gráficamente dependiendo de

la programación que se le haya hecho en la cesada del estado del

listener. Ver figura 3.21

Figura 3.23 Formulario Disponibilidad - Listener

En este formulario se puede configurar los parámetros de

ubicación del listener, se tiene acceso a este formulario dando clic

en el botón Parámetros que se encuentra en la Figura 3.23.

Figura 3.24 Formulario Parámetros Ubicación - Listener

Page 132: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 106 -

Permite con figurar los parámetros generales del listener como

activar o desactivar la clave para el listener, el registro de

Archivelog y el Archivo de rastreo.

Figura 3.25 Formulario Parámetros General – Listener

3.1.3.4 Modulo de Métricas de Rendimiento

A través de este modulo se podrán visualizar todas las métricas que

se han creado con sus respectivo operador, umbral de advertencia y

umbral critico. Además nos permite crear una métrica a través del

botón crear.

Page 133: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 107 -

Figura 3.26 Formulario Principal - Métricas

El siguiente formulario podemos crear una métrica en el cual se debe

de especificar los umbrales limites y la sentencia a ejecutarse para el

funcionamiento de la métrica. Para tener acceso a esta pantalla se

debe dar un clic en el botón de crear de la Figura 3.26

Figura – 3.27 Formulario de Creación - Métricas

Page 134: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 108 -

3.1.3.5 Modulo Definición de Políticas

Este modulo permite visualizar todas las políticas creadas para

nuestro sistema, el DBA podrá activar o desactivar políticas para

especificar que políticas quiere que se analice a la hora de obtener un

reporte de políticas violadas. Para visualizar el reporte Ver figura 3.59

Figura 3.28 Formulario principal – Políticas

3.1.3.6 Modulo de Almacenamiento

A través de este modulo se podrán visualizar seis tipos de opciones en

la cual se realizaran tareas administrativas asociadas a la gestión de

almacenamiento de la base de datos, esto se llevara a cabo a través

de mantenimientos a los Archivos de Control, Tablespace, Archivos

de Datos, Segmentos de Rollbak, Grupos de Redo Logs y Archive

Page 135: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 109 -

Log. Estos mantenimientos permitirán crear, editar y eliminar

información.

Archivo de Control.- En esta opción nos mostrara un formulario

el cual contara con tres pestañas, cada una tendrá diferente tipo de

información asociado al archivo de datos, además tendrá un botón

el cual nos permitirá realizar una copia de seguridad al Archivo de

Control.

En la siguiente pantalla se muestra los nombres de los controlfiles

y el directorio en donde esta ubicado cada uno.

Figura 3.29– Formulario General – Archivo de Control

Page 136: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 110 -

Muestra información avanzada referente a los Archivos de Control

Figura 3.30 Formulario Avanzado – Archivo de Control

Permite visualizar la información general sobre la sección de

registros del Archivo de control

Figura 3.31 Formulario Sección de Registros – Archivo de

Control

Page 137: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 111 -

Tablespace.- En esta opción nos mostrara una pantalla en el cual

se detalla todos los tablespace creados en la base de datos con su

respectivo resumen de información, también se podrá eliminar y

crear tablespace. A través de esta pantalla tendremos acceso a

cada uno de los formularios de los mismos. Este formulario contara

con dos pestañas, cada una tendrá diferente tipo de información

asociada al tablespace en el cual se podrá realizar tareas de

visualización o edición, a través del cual nos permitirá llevar un

óptimo mantenimiento.

Figura 3.32 – Formulario Principal - Tablespace

Page 138: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 112 -

En esta pantalla podremos visualizar o editar toda la información

general del tablespace existentes o crear uno nuevo si se

selecciona el botón de Crear que se encuentra en la Figura 3.32.

Se podrá observar información del mismo, como el nombre del

archivo, directorio de archivo, tamaño, el almacenamiento y el

tamaño máximo.

Figura – 3.33 Formulario General - Tablespace

Muestra información acerca de los métodos de gestión de espacio

que están asignados al tablespace. Esta información se la puede

manipular a la hora de crear un nuevo tablespace

Page 139: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 113 -

Figura–3.34 Formulario Almacenamiento - Tablespace

Archivo de Datos.- En esta opción nos mostrara una pantalla en

el cual se detalla todos los Archivos de datos creados en la base

de datos con su respectivo resumen de información, además

también permitirá crearlos. A través de esta pantalla tendremos

acceso a cada uno de los formularios de los mismos que tendrá

información general y de almacenamiento asociado al Archivo de

datos, en el cual se podrá realizar tareas de visualización o

edición que nos permitirá llevar un óptimo mantenimiento.

Page 140: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 114 -

Figura 3.35 – Pantalla Principal – Archivo de Datos

En la siguiente pantalla podremos visualizar o editar los

parámetros de los archivos de datos existentes, o crear un nuevo

si esta seleccionado el botón de crear que se encuentra en la

figura 3.35. La información que muestra en esta pantalla es de tipo

general y de almacenamiento en donde se puede ver el nombre del

archivo de datos, el tablespace donde esta creado, el estado, el

tamaño y la opción de almacenamiento.

Figura 3.36 – Formulario General – Archivo de Datos

Page 141: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 115 -

Segmentos de Rollbak.- En esta opción nos mostrara una

pantalla en el cual se detalla todos los Segmentos Rollbak creados

en la base de datos con su respectivo resumen de información,

además también permitirá crearlos y eliminarlos . A través de esta

pantalla tendremos acceso a cada uno de los formularios de los

mismos que tendrá información general y de almacenamiento

asociado al Segmento Rollbak, en el cual se podrá realizar tareas

de visualización o edición que nos permitirá llevar un óptimo

mantenimiento.

Figura 3.37 – Pantalla Principal – Segmentos de Rollback

Page 142: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 116 -

En esta pantalla podremos visualizar o editar la información de los

Segmentos Rollback existentes, o crear un nuevo si esta

seleccionado el botón de crear que se encuentra en la figura 3.37.

La información que muestra en esta pantalla es de tipo general y

de almacenamiento en donde se puede ver el nombre del

Segmento Rollback, el tablespace donde esta creado, el estado, y

las características de almacenamiento donde se detalla diferente

tipos de tamaños.

Figura 3.38 – Formulario General - Segmentos Rollback

Grupo de Redo Logs.- En esta opción nos mostrara una pantalla

en el cual se detalla todos los Grupos de Redo Logs creados en la

base de datos con su respectivo resumen de información, además

Page 143: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 117 -

también permitirá crearlos y eliminarlos. A través de esta pantalla

tendremos acceso a cada uno de los formularios de los mismos

que tendrá información general asociado al Grupo de Redo Logs

en el cual se podrá realizar tareas de visualización o edición que

nos permitirá llevar un óptimo mantenimiento.

Figura 3.39 – Pantalla Principal – Grupo de Redo Logs

En la siguiente pantalla podremos visualizar o editar los

parámetros de los Grupos de Redo Logs existentes, o crear un

nuevo si esta seleccionado el botón de crear que se encuentra en

la figura 3.39. La información que muestra en esta pantalla es de

tipo general en donde se puede ver el número de Grupo de Redo

Logs, el tamaño, los nombres de los miembros actuales que

pertenecen al grupo y el directorio de ubicación. Además este

formulario permite agregar mas miembros al grupo de Redo Log a

través del botón Agregar.

Page 144: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 118 -

Figura 3.40 – Formulario General – Grupo de Redo Logs

Archive Logs.- En esta opción nos mostrara una pantalla en el

cual se detalla la secuencia de los Archive Logs que se han hecho

a la base de datos con su respectivo resumen de información. A

través de esta pantalla tendremos acceso a cada uno de los

formularios de los mismos en donde se podrá visualizar

información general asociado al Archive Logs.

Page 145: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 119 -

Figura 3.41 – Pantalla Principal Archive Logs

La información que muestra en esta pantalla es de tipo general en

donde se puede ver el directorio del archive Logs, nombre,

secuencia, tamaño, hora de archivado, primer cambio y segundo

cambio.

FIGURA 3.42 – Formulario General – Archive Logs

Page 146: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 120 -

3.1.3.7 Modulo de Recursos

En este modulo se podrán visualizar dos tipos de opciones en la cual

no permitirá monitorear información referente al CPU, Instancia,

Base de Datos, memoria y sesiones.

Configuración.- En esta opción nos mostrara un formulario el

cual contara con cuatro pestañas, cada una tendrá diferente tipo de

información asociado al monitoreo de recursos.

La siguiente pantalla muestra información general correspondiente

al HOST, como es su estado, nombre del equipo, sistema

operativo, dirección IP, número de cpu, tamaño de la memoria,

capacidad de disco y espacio en disco.

Figura 3.43– Formulario General del Host - Recursos

Page 147: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 121 -

Muestra información referente al estado de la Instancia, los

parámetros de inicialización, información general de la instancia y

la base de Datos. Además esta pantalla nos permite bajar y subir

la base de datos.

Figura 3.44 Formulario General Instancia- Recursos

En la siguiente pantalla nos permite tener un monitoreo de todos

los parámetros de la memoria tanto de la SGA y de la PGA.

Figura 3.45 Formulario Memoria - Recursos

Page 148: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 122 -

La siguiente pantalla nos permite tener un monitoreo del Tiempo de

recuperación de fallo de la Instancia, Recuperación de medio físico

donde se muestra el estado actual del archivado de Redo Log,

especifica el destino en el que se deben crear los archivos archive

Log, además esta pantalla nos permite poner en estado Archive

Log a la Base de Datos

Figura – 3.46 Formulario Recuperación – Recursos

Sesiones.- En esta opción nos mostrara una pantalla en la cual

se detalla un informe de todas las secciones principales activas e

inactivas que hay en la base de datos ayudando al DBA a tener

una visión general por medio de la estadística de la actividad de

cada sesión y así poder identificar los cuellos de botella de

rendimiento de la base de datos.

Page 149: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 123 -

Figura 3.47– Formulario Informe de Sesiones - Recursos

3.1.3.8 Modulo de Eventos, Errores y Notificaciones

A través de este modulo se podrán visualizar cuatro tipos de opciones

en la cual se realizaran tareas de configuración de notificaciones para

que el DBA reciba notificaciones de alerta por medio del correo, se

mostrara reportes de todos los eventos ocurridos, errores de métricas

y políticas violadas.

Configurar Parámetros- Esta opción nos va a mostrar una

pantalla en la cual se definen los métodos de notificación para ellos

se especifica la dirección del servidor de Correo, del remitente y de

los destinatarios. Los destinatarios van a hacer a las personas a

quienes les va a llegar la notificación

Page 150: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 124 -

Figura 3.48 – Formulario Configurar Parámetros –

Notificaciones

Reporte de Eventos.- Esta opción nos va a mostrar una pantalla

la cual esta conformada por dos pestañas.

En la primera pestaña se mostrara todas las transacciones que se

han hecho en cada uno de los módulos del sistema, se especificara

la fecha, la hora, la maquina desde donde se hizo la transacción, el

módulos en que se realizo la transacción y el tipo de sentencia que

se ejecuto. Además en esta pantalla se podrán tener una

búsqueda de eventos por usuario y sacar reportes tipo Pantalla y

Excel.

.

Page 151: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 125 -

Figura 3.49– Formulario Transacciones del Sistema – Eventos

Al dar un clic en el botón Pantalla que se muestra en la figura 3.49

nos mostrara el siguiente reporte.

Figura 3.50– Reporte Transacciones del Sistema – Eventos

Page 152: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 126 -

Al dar un clic en el botón Excel que se muestra en la figura 3.49

nos mostrara el siguiente reporte.

Figura 3.51– Reporte en Excel Transacciones del Sistema –

Eventos

En la segunda pestaña se mostrara el listado de las métricas

donde se especifica los criterios con los cuales fueron creadas,

además se muestra la fecha y la hora de la ultima evaluación de la

métrica, fecha de la alerta, tipo de advertencia, el campo de

notificación donde indica si se ha enviado la alerta y la fecha de

cuando se envió la notificación..

Page 153: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 127 -

Figura 3.52– Formulario Ejecución de Métricas – Eventos

Al dar doble clic en cada una de las métricas que se muestra en la

Figura 3.52 se mostrara un formulario en donde se detalla un

historial de todas las veces en que la métrica ha pasado sus

limitantes.

Figura 3.53– Formulario Historial de Métricas – Eventos.

Page 154: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 128 -

Al hacer clic en el botón que dice Excel que se muestra en la

Figura 3.53 se mostrara el informe del historial en un

documentos.exe como se puede apreciar en la Figura 3.54

Figura 3.54– Reporte Historial de Métricas – Eventos

Reporte de Errores.- Esta opción nos va a mostrar una pantalla la

cual esta conformada por dos pestañas.

En la primera pestaña muestra el detalle de todos los errores que

han ocurridos en las transacciones que se han hecho en cada

modulo, se especificara la fecha, la hora, la maquina desde donde

se hizo la transacción, el módulos en que se realizo la transacción

y el tipo de sentencia que se ejecuto. Además en esta pantalla se

Page 155: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 129 -

podrán tener una búsqueda de errores por usuario y sacar reportes

tipo Pantalla y Excel.

Figura 3.55– Formulario Transacciones del Sistema – Errores

Al dar un clic en el botón Pantalla que se muestra en la figura 3.55

nos mostrara un reporte de los errores de las transacciones.

Figura 3.56– Reporte Transacciones del Sistema – Errores

Page 156: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 130 -

Al dar un clic en el botón Excel que se muestra en la figura 3.55

nos mostrara un reporte de los errores de las transacciones en un

documento en Excel.

Figura 3.57– Reporte en Excel Transacciones del Sistema –

Errores

En la segunda pestaña se mostrara el contenido del archivo de la

alerta. Esta pantalla también ofrece una opción para guardar el

archivo en la cual se debe especificar la ruta de la ubicación y el

nombre.

Page 157: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 131 -

Figura 3.58– Formulario Contenido de Alerta – Errores

Políticas Violadas.- Esta opción nos mostrara un formulario en la

cual se detallan todas las políticas que han sido violadas, el estado,

la hora y fecha en que ocurrió, y la fecha de modificación que es la

fecha en que se corrigió la política.

Figura 3.59– Formulario Historial – Políticas Violadas

Page 158: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 132 -

3.1.3.9 Modulo Terminal

A través de este modulo se podrá acceder a cuatro opciones que se

detallan continuación:

Consola.- Se podrá visualizar una consola en la cual se podrá

ejecutar comando SQL, también se podrá especificar una ruta para

guardar todos los script que ejecutemos en la consola

Figura 3.60– Formulario de la Consola – Terminal

Schema RMAN.- En la siguiente opción se visualiza la

información acerca del estado, lugar y tamaño de los tablespace.

También se podrá especificar una ruta para guardar esta

información

Page 159: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 133 -

Figura 3.61– Formulario Schema RMAN– Terminal

Listados RMAN.- En la siguiente opción se visualiza un formulario

el cual estará conformado por dos pestañas.

En la primera pestaña se visualizar una lista de todos los

tablespace que han sido respaldados. También se podrá

especificar una ruta para guardar esta información

Figura 3.62– Formulario List Backup– Terminal

Page 160: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 134 -

En la segunda pestaña se visualizar una lista de todos los

tablespace que no han sido respaldados. También se podrá

especificar una ruta para guardar esta información.

Figura 3.63– Formulario Report Need Backup– Terminal

RMAN Backup.- Esta opción nos permitirá hacer un respaldo de

la Base de Datos en Rman. También se podrá especificar una ruta

para guardar la información que se genera en pantalla al hacer el

respaldo.

Figura 3.64– Formulario Rman Backup– Terminal

Page 161: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

CAPITULO 4

4. Desarrollo

Este capitulo trata sobre estándares de programación que se mantienen en el

sistema DBMS-FOX, tomando en cuenta la administración que demanda la

herramienta de programación Visual Fox 9.0.

4.1 Base de datos

El motor de base de datos utilizado es Oracle9i, y para su

administración utilizaremos las vistas que ofrece la base de datos.

En la base de datos se crearán 7 tablas internas y 2 tablas externas,

que mencionamos a continuación:

Internas

Menú, Detalle _ métricas, Métrica, Parámetros, Logdbms, Políticas,

Poli _ violadas

Externas

Partarea, HistList

Page 162: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-136-

A continuación indicaremos, a quien pertenece cada tabla creada.

Menú principal del Sistema DBMS-FOX

Tabla Menú.- Creada para una mejor administración del menú

Tabla 4.1–Tabla del Menú Principal

4.1.1 Modulo de Biblioteca de Servicio

Tabla Partarea.- Creada para las tareas programadas del listener

Tabla 4.2–Tabla de Tareas programadas

Page 163: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-137-

Tabla Histlist.- Creada para almacenar el resultado de las tareas

programadas de la tabla Partarea

Tabla 4.3–Tabla de Almacenamiento de las tareas programadas

4.1.2 Modulo de Métricas de Rendimiento

Tabla Métrica.- Creada para ingresar las métricas importantes del

DBA.

Tabla 4.4–Tabla de Ingreso de Métricas

Page 164: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-138-

Tabla Detalle _ métricas.- Creada para mostrar el detalle de las

métricas con sus respectivos Umbrales

Tabla 4.5–Tabla de detalle de Métricas

4.1.3 Modulo Definición de Políticas

Tabla Políticas.- Creada para ingresar las políticas definidas por el

DBA

Tabla 4.6–Tabla de Ingreso de Políticas

Page 165: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-139-

Tabla Poli _ Violadas.- Creada para ingresar las políticas Violadas

por el Operador

Tabla 4.7–Tabla de Políticas Violadas

4.1.4 Modulo de Eventos, Errores y Notificaciones

Tabla Logdbms.- Creada para ingresar todo lo que sucede en elSistema DBMS-FOX.

Tabla 4.8–Tabla de sucesos en el sistema

Page 166: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-140-

Tabla Parámetros.- Creada para detallar las especificaciones delCorreo de notificación

Tabla 4.9–Tabla de Notificación

4.2 Directorios del sistema

El contenido del directorio DBMS-FOX, son los subdirectorios que

utilizaremos para el desarrollo de este sistema, donde se detallara

el contenido de las mismas con el fin, de mantener una buena

administración

SCRIPTS RMAN CLASES DBF FTE

DBMS-FOX

Page 167: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-141-

En este directorio se encuentran los scripts que se ejecutan al

inicio del aplicativo, ya que el mismo lo valida, como pueden ser

la extensión ini y los esquemas de la base, que son los

procedimientos, las tablas y paquetes etc. Se crea y se ejecuta

un archivo bat, llamado Registro.bat donde realiza la ejecución

de los scripts internos en la carpeta Scripts

Los Scripts son: usuario, Principal, Insert, Q$politicas.spc,

Q$politicas.bdy y procedure.

Figura 4.1 - Registro.bat

@echo offSet ORACLE_SID=orcl10echo set echo on > %0.tmpecho connect / as sysdba; >> %0.tmpecho spool D:\dbms-fox\txt\registro.txt; >> %0.tmpecho Drop User DBMSFOX cascade; >> %0.tmpecho start D:\dbms-fox\scripts\usuario.sql; >> %0.tmpecho start D:\dbms-fox\scripts\principal.sql; >> %0.tmpecho start D:\dbms-fox\scripts\insert.sql; >> %0.tmpecho start D:\dbms-fox\scripts\Q$politicas.spc; >> %0.tmpecho start D:\dbms-fox\scripts\Q$politicas.bdy; >> %0.tmpecho start D:\dbms-fox\scripts\procedure.sql; >> %0.tmpecho SPOOL OFF; >>%0.tmpecho exit; >>%0.tmpsqlplus /nolog @%0.tmpdel %0.tmp

EXE PRG TXT

SCRIPTS

ICO

Page 168: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-142-

En este directorio se encuentran cuatros archivos que se

generan en el sistema para el uso de backup del sistema,

presentar reportes etc.

Los archivos generados y eliminados son: Rbackup, RlistB,

Rschema y RneedB.

En este directorio vse alojan dos clases, estándar y frmbase las

que representan las funciones básicas con sus variables

generales y la forma general del sistema respectivamente.

En este directorio se alojan dos clases, estándar y frmbase las

que representan las funciones básicas con sus variables

generales y la forma general del sistema respectivamente

RMAN

CLASES

DBF

Page 169: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-143-

En este directorio se sitúan otros subdirectorios que contienen

los módulos separados por proyectos respectivamente.

En este directorio se sitúan los ejecutables de los proyectos

pertenecientes a cada modulo.

En este directorio se sitúan un proyecto donde se codifica para

generar tareas programadas en Windows

En esta carpeta se crean y generar archivos txt para el uso de

presentación y obtención de datos de los módulos

FTE

EXE

PRG

TXT

Page 170: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-144-

4.3 Detalle del subdirectorio

En el detalle de los subdirectorios presentamos los proyectos que

corresponden a cada modulo que contiene el directorio FTE.

Modulo de Seguridades

Modulo de Bibliotecas deServicios

Modulo de Métricas deRendimiento

FTE

manusuarios

manroles

manperfiles

manbibliotecas

maninslist

manmetricas

Page 171: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-145-

Modulo de Políticas

Modulo de Almacenamiento

Modulo de Recursos

manpoliticas

Infctrfile

mantablespace

manarchdatos

mansegrol

manredlog

infarchlogs

manrecursos

mansesiones

Page 172: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-146-

Modulo Eventos, Errores yNotificaciones

Terminal

4.4 Detalle de Procesos Principales de cada modulo:

4.4.1 Modulo de seguridades

manusuarios

En la carpeta manusuarios, encontraremos dos formularios en el cual

presentaremos a los usuarios con sus respectivas características.

manmetnot

infalert

inferror

manpoliticasvioladas

manconsola

Rmanbackup

Page 173: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-147-

Formulario manusuario

Muestra datos.- Presenta información general de los datos de los

usuarios.

Formulario dtosusuarios

llena_privobj.- Este método realiza el proceso de llenar los

privilegios de objetos disponibles de la base

Llena_trwobjeto.- Este método realiza el proceso de llenar los

objetos disponibles de la base

Llena_cuotas.- Este método realiza el proceso de llenar las cuotas

disponibles del sistema

Llena_grupos.- Este método realiza el proceso de llenar los

grupos de consumidores

Cambios_totales.- Este método realiza los cambios que se

hicieron en el formulario, llamando a otros métodos, que realizan

los cambios respectivos del estado del usuario.

4.4.2 Modulo de bibliotecas de Servicios

manbibliotecas

En la carpeta manbibliotecas, encontraremos dos formularios en el

cual presentaremos el estado del listener, historial gráfico y los

parámetros del listener

Page 174: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-148-

Formulario frmparametros

CargaUbicacion.- Presenta información general de los datos del

listener.

CargaGenerales.- Presenta información general de los parámetros

del listener donde son cambiados.

Cmd_listenerguardar.- Este proceso realiza los cambios de los

parámetros del listener

4.4.3 Modulo de Métricas de Rendimiento

manmetricas

En la carpeta manmetricas, encontraremos dos formularios donde

presenta, crear y modifica métricas del base de datos

Formulario manmétricas

Cmd_crear.- Sirve para crear una métrica según las

consideraciones del administrador de datos.

Formulario manmetricas

Cmdguardar.- Sirve para guardar cambios que se realicen en los

umbrales de la métrica, y almacenarla en las tablas respectivas.

Page 175: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-149-

4.4.4 Modulo Definición de Políticas

manpoliticas

En la carpeta manpoliticas, encontraremos un formulario donde las

políticas las presenta.

Formulario manpoliticas

Cmd_aplicar.- Este proceso guarda los cambios realizados en las

políticas, en la activación y desactivación de las mismas

4.4.5 Modulo de Administración de Almacenamiento

mantablespace

En la carpeta mantablespace, encontraremos 3 formulario donde

presenta, edita y elimina tablespace respectivamente

Formulario mantablespace

Cmd_crear.- Este proceso levanta un formulario llamado edittable,

donde ingresa los parámetros del tablespace, como nombre,

tamaño, archivo de datos entre otros.

Page 176: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-150-

Método muestra.- Este proceso carga los tablespace creados,

donde podemos editarlos y guardar los cambios

Formulario edittable

Cmd_aceptar.-.Este proceso guardo los parámetros del

tablespace.

Infctrfile

En esta carpeta encontramos un formulario donde presenta

información general de los control files de la base de datos.

Formulario Infctrfile

Cmd_copiaSegr.- Realiza la copia de los controlfiles de la base de

datos

manarchdatos

En esta carpeta encontramos dos formularios donde presenta

información general y modifica los archivos de datos de la base de

datos.

Page 177: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-151-

Formulario manarchdatos

Cmd_crear.- Este proceso levanta un formulario llamado editarch

donde carga la información de los archivos de datos.

Formulario manarchdatos

Cmd_aceptar.- Este proceso guarda la información de los archivos

datos cambiados en el formulario

mansegrol

En esta carpeta encontramos dos formularios donde presenta

información general y modifica segmentos del rollback de la base de

datos.

Formulario mansegrol

Cmd_crear.- Este proceso levanta un formulario llamado editsegrol

donde carga la información de los segmentos de rollback

Formulario editsegrol

Cmd_aceptar.- Este proceso guarda la información de segmentos

del rollback cambiados en el formulario

Page 178: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-152-

manredlog

En esta carpeta encontramos dos formularios donde presenta

información general y modifica segmentos del rollback de la base de

datos.

Formulario mansegrol

Cmd_crear.- Este proceso levanta un formulario llamado

editredolog donde carga la información del grupo de redo logs

Formulario editredolog

Cmd_aceptar.- Este proceso guarda la información de los grupos

de redo logs cambiados en el formulario

infarchlog

En esta carpeta encontramos dos formularios donde presenta

información general de los archivos log de la base de datos con sus

respectivos parámetros

Page 179: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-153-

Formulario infarchlog

Muestra.- Este proceso presenta los archivo log que se encuentra

en la base de datos y al ves podemos levantar un formulario

llamado editarchlog donde carga los parámetros del los archivos

log.

4.4.6 Modulo de Administración de Recursos

manrecursos

En la carpeta manrecursos, encontraremos dos formularios donde

muestra información del host, la instancia, la memoria interna y

tiempos de fallo de recuperación

Formulario manrecursos

Cmd_aceptar.- Este proceso dispone de dos parámetros del

formularios, que son de abrir o cerrar la base, como también

activar y desactivar el modo de archivo log de la misma

Page 180: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-154-

4.4.7 Modulo de Eventos, Errores y Notificaciones

manmetnot

En la carpeta manmetnot, encontraremos un formulario donde se

ingresa los datos para el envió de correo de las alertas del sistema,

cuando se presente un inconveniente en los módulos de métricas y

políticas de la base de datos.

Formulario manmetnot

Cmd_probar.- Este proceso guarda los datos para el envió del

correo, estos datos son: el servidor de correo (smtp), dirección del

remitente, puerto de salida, clave y los correos o celulares de los

destinatarios

Cmd_grabar.- Guarda los datos para el envio de correos, como

también los correos o celulares de los destinatarios

Page 181: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-155-

4.4.8 Modulo Terminal

manconsola

Formulario manconsola

Cmd_ejecutar.- Este proceso ejecuta cualquier sentencia sql en la

consola del sistema que simula la consola de Windows, donde la

misma la guarda en un archivo para su presentación.

Cmd_mostrar.- Este proceso lee un archivo ejecutado por el

proceso cmd_ejecutar y lo presenta en la consola.

Rmanbackup

Formulario Rmanbackup

Cmd_ejecutar.- Este proceso ejecuta la copia de la base de datos

y la presenta en el formulario.

Cmd_Guardar.- Podemos guardar el resultado de la copia de la

base de datos en un archivo txt en cualquier ruta de su ordenador.

Page 182: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

CAPITULO 5

5. CONCLUSIONES Y RECOMENDACIONES

El Sistema de Infraestructura tecnológica DBMS-FOX es un software que ha

sido creado para ofrecer a los DBA una nueva herramienta de fácil uso la

permite tener un completo control sobre la Base de Datos a través de 8

módulos en el cual se reparten las principales tareas que se deben de

ejecutar a la hora de administrar los datos.

Estos módulos son:

Modulo de Seguridades

Modulo de Biblioteca de Servicios

Modulo de Métricas de Rendimiento

Modulo de Definición de Políticas

Modulo de Administración de Servicios

Modulo de Administración de Recursos

Modulo de Eventos, Errores y Notificaciones

Modulo Terminal

Page 183: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

-157-

En cumplimento con los objetivos planteados al inicio de este proyecto se ha

logrado implementar lo siguiente:

1. Ofrecer una herramienta autodidáctica de fácil comprensión para el

DBA el cual ofrece información confiable.

2. Tener un aplicativo donde se manejen interfaces dinámicas en el cual

se tendrá acceso a diferentes pantallas para poder visualizar

diferentes tipos de información al mismo tiempo.

3. Las Interfaces del software permiten gestionar la información en la

Base de Datos a través de mantenimientos (crear, modificar y

eliminar).

4. Tener reportes que nos permitan supervisar la información que se

esta ejecutando en los diferentes componentes del aplicativo.

Por otro lado se recomienda, seguir en la actualización del software creando

nuevas versiones en la cual se incluya nuevos módulos para que el DBA

tenga más opciones a la hora de manipular los datos teniendo una óptima

Administración de la Base de Datos.

Page 184: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

INDICE GENERAL

AGRADECIMIENTO II

DEDICATORIA V

TRIBUNAL DE GRADUACION VIII

DECLARACION EXPRESA IX

RESUMEN X

INDICE GENERAL XIV

MANUAL TECNICO

1. Codificación 1

1.1 Menu Principal 1

1.2 Programa principal 18

1.3 Programa Envia mail 191.4 Método de Conexión a la Base de Datos - ClaseEstandar 23

1.5 Metodo path_archivo - Clase Estandar 25

1.6 Modulo de Seguridades 26

1.6.1 Usuarios – método muestra Datos 26

1.6.2 Roles 35

1.6.3 Perfiles 44

1.7 Método Bibliotecas de Servicios 56

1.7.1 Listener 56

1.8 Módulo de Politicas 70

1.8.1 Definición de politicas 70

1.9 Módulo de Métricas de Rendimiento 72

Page 185: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XV

XV

1.9.1 Definición de métricas 72

1.10 Modulo de Almacenamiento 75

1.10.1 Archivo de Control 75

1.10.2 Tablespaces 77

1.10.3 Archivos de Datos 96

1.10.4 Segmentos de Rollback 104

1.10.5 Redo Logs 110

1.11 Modulo de Recursos 116

1.11.1 Mantenimiento de Recursos 116

1.11.2 Informe de Sesiones 132

1.12 Modulo de eventos, errores y notificaciones 135

1.12.1 Configuración de Parámetros y Notificaciones 135

1.12.2 Reporte de Eventos 142

1.12.3 Informe de Errores 147

1.12.4 Políticas violadas 151

1.13 Módulo Terminal 153

1.13.1 Consola Sqlplus 153

1.13.2 Schema Rman 155

1.13.3 Listado de Backup 156

1.13.4 Rman Backup 158

MANUAL DE USUARIO

2.1 Introducción 160

2.2 Especificaciones del sistema DBMS-FOX 161

2.2.1 Pantalla Principal 161

2.2.2 Acceso al Sistema 163

2.2.3 Modulo de Seguridades 164

2.2.3.1 Usuario 164

2.2.3.2 Roles 173

Page 186: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XVI

XVI

2.2.3.3 Perfiles 180

2.2.4 Modulo Biblioteca de Servicios 184

2.2.4.1 Programar Inspección del Listener 184

2.2.4.2 Listener 185

2.2.5 Modulo de Métricas de Rendimiento 188

2.2.6 Modulo Definición de Políticas 189

2.2.7 Modulo de Almacenamiento 190

2.2.7.1 Archivo de Control 190

2.2.7.2 Tablespace 192

2.2.7.3 Archivo de Datos 195

2.2.7.4 Segmentos de Rollbak 196

2.2.7.5 Grupo de Redo Logs 198

2.2.7.6 Archive Logs 200

2.2.8 Modulo de Recursos 202

2.2.8.1 Configuración 202

2.2.8.2 Sesiones 204

2.2.9 Modulo de Eventos, Errores y Notificaciones 205

2.2.9.1 Configurar Parámetros 205

2.2.9.2 Reporte de Eventos 206

2.2.9.3 Reporte de Errores 210

2.2.9.4 Políticas Violadas 213

2.2.10 Modulo Terminal 213

2.2.10.1 Consola Plus 213

2.2.10.2 Schema Rman 214

2.2.10.3 Listado Rman 215

2.2.10.4 Backup Database 217

Page 187: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XVII

XVII

INDICE DE FIGURAS

FIGURA 2.1 PANTALLA PRINCIPAL 162

Figura 2.2 Formulario de Acceso al sistema 164

FIGURA 2.3 Pantalla Principal – Usuarios 165

FIGURA 2.4 Pantalla de Creación y edición de usuario 166

FIGURA 2.5 Muestra los cambios en sentencias sql 167

Figura 2.6 Pantalla Roles – Usuarios 168

Figura 2.7 Pantalla de Privilegios – Usuarios 169

Figura 2.8 Pantalla de Objetos del Usuarios 170

Figura 2.9 Pantalla de Cuota – Usuarios 171Figura 2.10 Pantalla de Grupos de Consumidores –Usuarios 172

Figura 2.11 Pantalla General – Roles 174

Figura 2.12 Pantalla Rol – Roles 175

Figura 2.13 Pantalla Sistema – Roles 176

Figura 2.14 Pantalla Objeto – Roles 178

Figura 2.15 Pantalla Grupo de Consumidores – Roles 179

Figura 2.16 Pantalla Administración de Perfiles – General 181Figura 2.17 Pantalla Administración de Perfiles –Contraseña 182

Figura 2.18 Pantalla Programar Inspección – Listener 184

Figura 2.19 Formulario Estado – Listener 185

Figura 2.20 Formulario Disponibilidad – Listener 186

Figura 2.21 Formulario Parámetros Ubicación – Listener 186

Page 188: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XVIII

XVIII

Figura 2.22 Formulario Parámetros Contraseña – Listener 187

Figura 2.23 Formulario Principal – Métricas 188

Figura – 2.24 Formulario de Creación – Métricas

189

Figura 2.25 Formulario principal – Políticas 190

Figura 2.26– Formulario General – Archivo de Control 191

Figura 2.27 Formulario Avanzado – Archivo de Control 191Figura 2.28 Formulario Sección de Registros – Archivode Control 192

Figura 2.29 – Formulario Principal – Tablespace 193

Figura – 2.30 Formulario General - Tablespace 194

Figura–2.31 Formulario Almacenamiento – Tablespace 194

Figura 2.32 – Pantalla Principal – Archivo de Datos 195

Figura 2.33 – Formulario General – Archivo de Datos 196

Figura 2.34 – Pantalla Principal – Segmentos de Rollback 197

Figura 2.35 – Formulario General - Segmentos Rollback 198

Figura 2.36 – Pantalla Principal – Grupo de Redo Logs 199

Figura 2.37 – Formulario General – Grupo de Redo Logs 200

Figura 2.38 – Pantalla Principal Archive Logs 201

Figura 2.39 – Formulario General – Archive Logs 201

Figura 2.40 – Formulario General del Host - Recursos 202

Figura 2.41 Formulario General Instancia- Recursos 203

Figura 2.42 Formulario Memoria - Recursos 203

Figura – 2.43 Formulario Recuperación – Recursos 204

Figura 2.44– Formulario Informe de Sesiones – Recursos 205Figura 2.45 – Formulario Configurar Parámetros –Notificaciones 206

Figura 2.46– Formulario Transacciones del Sistema – 207

Page 189: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

XIX

XIX

Eventos

Figura 2.47– Reporte Transacciones del Sistema –Eventos 207Figura 2.48– Reporte en Excel Transacciones del Sistema– Eventos 208

Figura 2.49– Formulario Ejecución de Métricas – Eventos 208

Figura 2.50 – Formulario Historial de Métricas – Eventos 209

Figura 2.51– Reporte Historial de Métricas – Eventos 210Figura 2.52 – Formulario Transacciones del Sistema –Errores 211Figura 2.53 – Reporte Transacciones del Sistema –Errores 211Figura 2.54 – Reporte en Excel Transacciones delSistema – Errores 212

Figura 2.55 – Formulario Contenido de Alerta – Errores 212

Figura 2.56– Formulario Historial – Políticas Violadas 213

Figura 2.57– Formulario de la Consola – Terminal 214

Figura 2.58 – Formulario Report Schema – Terminal 215

Figura 2.59– Formulario List backup – Terminal 216

Figura 2.60 – Formulario de la Consola – Terminal 217

Figura 2.61 – Formulario de la Consola – Terminal 218

Page 190: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

CAPITULO 1

MANUAL TECNICO

En este manual detallaremos los procesos mas importantes que se

desarrollaron para el funcionamiento de nuestro Sistema.

1. Codificación

A continuación se detalla la codificación de los principales procesos

para la elaboración del sitio.

1.1 Menu Principal

Bat de Creación del Usuario y Tablas a Utilizar

ºcarchivobat = SYS(5) + "\dbms-fox\txt\registro.bat"lcarchivo = SYS(5) + "\dbms-fox\txt\registro.txt"IF FILE("&lcarchivobat")

DELETE FILE ("&lcarchivobat")ENDIFIF FILE("&lcarchivo")

DELETE FILE ("&lcarchivo")ENDIFlcsql1 = "" arch = fcreate("&lcarchivobat")FPUTS(arch,"@echo off") FPUTS(arch,"Set ORACLE_SID=" + ALLTRIM(thisform.tsid.Value))FPUTS(arch,"echo set echo on > %0.tmp") FPUTS(arch,"echo set echo on > %0.tmp")FPUTS(arch,"echo connect / as sysdba; >> %0.tmp") FPUTS(arch,"echo spool " + lcarchivo + "; >>%0.tmp") FPUTS(arch,"echo Drop User DBMSFOX cascade; >> %0.tmp")FPUTS(arch,"echo start " + SYS(5) + "\dbms-fox\scripts\usuario.sql; >> %0.tmp")FPUTS(arch,"echo start " + SYS(5) + "\dbms-fox\scripts\principal.sql; >> %0.tmp")FPUTS(arch,"echo start " + SYS(5) + "\dbms-fox\scripts\insert.sql; >> %0.tmp")FPUTS(arch,"echo start " + SYS(5) + "\dbms-fox\scripts\Q$politicas.spc; >> %0.tmp")FPUTS(arch,"echo start " + SYS(5) + "\dbms-fox\scripts\Q$politicas.bdy; >> %0.tmp")FPUTS(arch,"echo start " + SYS(5) + "\dbms-fox\scripts\procedure.sql; >> %0.tmp")

Page 191: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 2 -

FPUTS(arch,"echo SPOOL OFF; >>%0.tmp")FPUTS(arch,"echo exit; >>%0.tmp")FPUTS(arch,"sqlplus /nolog @%0.tmp")FPUTS(arch,"del %0.tmp")FCLOSE(arch)

WAIT WINDOW "Ejecutando Script de Creacion.... espere por favor" NOWAITRUN &lcarchivobat

WAIT CLEAR

Script deUsuario

--Creacion del UsuarioCREATE USER "DBMSFOX" IDENTIFIED BY "DBMSFOX"DEFAULT TABLESPACE EXAMPLEQUOTA UNLIMITED ON EXAMPLE;

--Asignando PrivilegiosGRANT "CONNECT" TO "DBMSFOX";GRANT "DBA" TO "DBMSFOX";GRANT "RESOURCE" TO "DBMSFOX";ALTER USER "DBMSFOX" DEFAULT ROLE "CONNECT", "DBA", "RESOURCE";grant select any dictionary to DBMSFOX;

--Conectarc con el Usuarioconnect DBMSFOX/DBMSFOX;

alter session set current_schema=DBMSFOX;

Script Principal

-- Creando las SecuenciasCREATE SEQUENCE SEC_AUDITORIA_01

START WITH 207MAXVALUE 10000MINVALUE 0NOCYCLENOCACHENOORDER;

Page 192: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 3 -

CREATE SEQUENCE SEC_POLI_VIOLADASTART WITH 100MAXVALUE 10000MINVALUE 0NOCYCLENOCACH; NOORDER;

CREATE TABLE CATEGORIA(

ID NUMBER,CATEGORIA VARCHAR2(100 BYTE),DESCRIPCION VARCHAR2(100 BYTE)

);

CREATE TABLE POLITICAS(

NUM NUMBER NOT NULL,NOMBRE_POLITICA VARCHAR2(128 BYTE),ID_CATEGORIA NUMBER,DESCRIPCION VARCHAR2(1000 BYTE),FECHA_CREACION DATE,USUARIO_MODIFICA VARCHAR2(50 BYTE),FECHA_MODIFICA DATE,ESTADO CHAR(1 BYTE),PROCEDIMIENTO VARCHAR2(100 BYTE)

);

CREATE TABLE POLI_VIOLADAS(

NUM NUMBER,ID_POLITICA NUMBER,FECHA DATE,COMENTARIO VARCHAR2(100 BYTE),FECHA_MODIFICA DATE,ESTADO CHAR(1 BYTE),ENVIADO CHAR(1 BYTE) DEFAULT 'N',FEC_ENVIO DATE

);

create table menu(codigo char(5),nombre varchar(50),opcion char(1),nom_fte varchar(50),nom_ejec varchar(50),titulo varchar(80),icono number,

Page 193: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 4 -

apertura number);alter table menu

add primary key(codigo);

--CReación de las Metricascreate table metrica(indice number(5),metrica varchar(250),operador varchar(20),minimo varchar(50),maximo varchar(50),sentencia varchar(4000),tipo char(1), -- S= Query; P=Procedurecomparador char(15), -- >,>=,<,<=ejecuta char(1), -- Estatus de si se ejecuta la instruccion o Parámetro

ult_ejec date);

alter table metricaadd primary key(indice);

create sequence metrica_idincrement by 1start with 1;

create sequence metrica_seqincrement by 1start with 1;

create table detalle_metrica(indice_met number(5),secuencia number(5),fecha date,valor number(5),tipo_umbral char(1),operador varchar(15),limitante varchar(20),comentario varchar2(3000),notificado char(1),fec_notifica date);

CREATE TABLE LOGDBMS(SID VARCHAR2(20),MAQUINA VARCHAR2(30),

Page 194: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 5 -

FECHA DATE,OPERADOR VARCHAR2(20),MODULO VARCHAR2(200),SENTENCIA VARCHAR2(1000),ERROR VARCHAR2(1000),TIPO CHAR(1) -- 1=TRANSACCION, 2=ERROR);

Create table parametros(nombremitente varchar(150),dirremitente varchar(200),password varchar(50),smtp varchar(60),puerto number,dirsaliente varchar(1000),tipo char(1),envia char(1)

);alter table menu

add primary key(codigo);

--CReación de las Metricascreate table metrica(indice number(5),metrica varchar(250),operador varchar(20),minimo varchar(50),

maximo varchar(50),sentencia varchar(4000),tipo char(1), -- S= Query; P=Procedurecomparador char(15), -- >,>=,<,<=ejecuta char(1), -- Estatus de si se ejecuta la instruccion o Parametroult_ejec date

);

alter table metricaadd primary key(indice);

create sequence metrica_idincrement by 1start with 1;

create sequence metrica_seqincrement by 1start with 1;

Page 195: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 6 -

create table detalle_metrica(indice_met number(5),secuencia number(5),fecha date,valor number(5),tipo_umbral char(1),operador varchar(15),limitante varchar(20),comentario varchar2(3000),notificado char(1),fec_notifica date);

CREATE TABLE LOGDBMS(SID VARCHAR2(20),MAQUINA VARCHAR2(30),FECHA DATE,OPERADOR VARCHAR2(20),MODULO VARCHAR2(200),SENTENCIA VARCHAR2(1000),ERROR VARCHAR2(1000),TIPO CHAR(1) -- 1=TRANSACCION, 2=ERROR);

Create table parametros(nombremitente varchar(150),dirremitente varchar(200),password varchar(50),smtp varchar(60),puerto number,dirsaliente varchar(1000),tipo char(1),envia char(1)

);

Script Insert.sql

-- Datos del MenuInsert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A','ADMINISTRACION DE:','N',' ',' ',' ',1,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A1','Seguridades','N',' ',' ',' ',4,0);

Page 196: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 7 -

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A2','Biblioteca de Servicios','N',' ',' ',' ',5,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A3','Metricas de Rendimiento','N',' ',' ',' ',6,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A4','Politicas','N',' ',' ',' ',7,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A5','Almacenamiento','N',' ',' ',' ',8,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A6','Recursos','N',' ',' ',' ',9,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A7','Eventos y Errores','N',' ',' ',' ',10,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A8','Terminal','N',' ',' ',' ',12,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A9','Salir','N','Salir','Salir.exe',' ',11,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A11','Usuarios','S','manusuario\manusuario.scx','manusuario.exe','[ Seguridad ] - Administración deUsuarios',2,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A12','Roles','S','manroles\frmroles.scx','manroles.exe','[ Seguridad ] - Administración de Roles',2,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A13','Perfiles','S','manperfiles\frmperfiles.scx','manperfiles.exe','[ Seguridad ] - Administración dePerfiles',2,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A21','Programar Inspección','S','maninslist\maninslist.scx','maninslist.exe','[ Servicios ] ProgramarInspección',2,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A22','Listener','S','manbibliotecas\frmlistener.scx','manbibliotecas.exe','[ Servicios ] Bibliotecas deServicios',2,1);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A31','Definición de Métricas','S','manmetricas\manmetricas.scx','manmetricas.exe','[ Métricas deRendimiento ] - Definición de Métricas',2,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A41','Definicion de Politicas','S','manpoliticas\manpoliticas.scx','manpoliticas.exe','[ Politicas ] - Biblioteca dePoliticas',2,0);

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A51','Archivo de Control','S','infctrlfile\infctrlfile.scx','infctrlfile.exe','[ Almacenamiento ] - Administración deArchivos de Control',2,0);

Page 197: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 8 -

Insert into menu(codigo,nombre,opcion,nom_fte,nom_ejec,titulo,icono,apertura)values('A52','Tablespaces','S','mantablespace\mantablesapce.scx','mantablespace.exe','[ Almacenamiento ] -Administración de Archivos de Tablespace',2,0);

Script Q$politicas.spc

CREATE OR REPLACE PACKAGE Q$politicas ASPROCEDURE P$EJECUTA;PROCEDURE P$POLITICA_01;PROCEDURE P$POLITICA_02;PROCEDURE P$POLITICA_03;PROCEDURE P$POLITICA_04;PROCEDURE P$POLITICA_05;PROCEDURE P$POLITICA_06;PROCEDURE P$POLITICA_07;PROCEDURE P$POLITICA_08;PROCEDURE P$POLITICA_09;PROCEDURE P$POLITICA_10;

END;/

Script Q$politicas.bdy

CREATE OR REPLACE PACKAGE BODY Q$politicas ASPROCEDURE P$EJECUTA ASlcEje varchar2(100);BEGIN

/*P$POLITICA_01;P$POLITICA_02;P$POLITICA_03;P$POLITICA_04;P$POLITICA_05;P$POLITICA_06;P$POLITICA_07;P$POLITICA_08;P$POLITICA_09;P$POLITICA_10;*/for V in (select * from politicas)loop

if v.estado='A' thenlcEje:='begin Q$politicas.P$POLITICA_'||trim(to_char(v.num,'00'))||'; end;';execute immediate lcEje;

elseupdate poli_violadas set estado='I' where num=v.num and estado='A';

Page 198: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 9 -

end if;end loop;

END;

PROCEDURE P$POLITICA_01 ASESTADO VARCHAR(50);lccomentario varchar(200);valor_politica varchar(100);BEGINSELECT VALUE INTO valor_politica FROM v$parameter WHERE NAME='spfile';SELECT DECODE(trim(valor_politica),NULL,'VIOLADA','CUMPLIDA') INTO valor_politica FROM dual;SELECT NVL((SELECT ESTADO FROM POLI_VIOLADAS WHERE ID_POLITICA=1 AND ESTADO='A'),'N')INTO

ESTADO FROM DUAL;dbms_output.put_line(valor_politica);IF valor_politica='CUMPLIDA' THEN

UPDATE POLI_VIOLADAS SET FECHA_MODIFICA=SYSDATE, ESTADO='I' WHERE ID_POLITICA=1 ANDESTADO='A';END IF;IF ESTADO='N' AND valor_politica='VIOLADA' THEN

lccomentario:='Base de datos empieza con:'|| valor_politica; INSERT INTO POLI_VIOLADAS(ID_POLITICA,FECHA, ESTADO,COMENTARIO) Values (1, SYSDATE,'A',lccomentario);END IF;IF ESTADO='A' AND valor_politica='VIOLADA' THEN

lccomentario:='Base de datos empieza con:'|| valor_politica;UPDATE POLI_VIOLADAS SET COMENTARIO=LCCOMENTARIO,enviado='N' WHERE ID_POLITICA=1 and

estado='A';END IF;

END;

PROCEDURE P$POLITICA_02 ASlnredologs VARCHAR(50);valor_politica VARCHAR(50);ESTADO VARCHAR(50);lccomentario varchar (200);BEGINSELECT SUM(DECODE(SIGN(TRUNC(bytes/1024/1024)),1,0,1)) INTO lnredologs FROM v$log;SELECT DECODE(lnredologs,0,'CUMPLIDA','VIOLADA') INTO valor_politica FROM dual;DBMS_OUTPUT.PUT_LINE(VALOR_POLITICA);SELECT NVL((SELECT ESTADO FROM POLI_VIOLADAS WHERE ID_POLITICA=2 AND ESTADO='A'),'N')INTO

ESTADO FROM DUAL;dbms_output.put_line(valor_politica);IF valor_politica='CUMPLIDA' THEN

UPDATE POLI_VIOLADAS SET FECHA_MODIFICA=SYSDATE, ESTADO='I' WHERE ID_POLITICA=2 ANDESTADO='A';END IF;IF ESTADO='N' AND valor_politica='VIOLADA' THEN

lccomentario:='Numero de Redologs:'|| lnredologs;INSERT INTO POLI_VIOLADAS(ID_POLITICA, FECHA, ESTADO,COMENTARIO) Values (2,

SYSDATE,'A',lccomentario);END IF;IF ESTADO='A' AND valor_politica='VIOLADA' THEN

Page 199: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 10 -

lccomentario:='Redologs:'|| lnredologs;UPDATE POLI_VIOLADAS SET COMENTARIO=LCCOMENTARIO,enviado='N' WHERE ID_POLITICA=2 and

estado='A';END IF;

END;

PROCEDURE P$POLITICA_02 ASlnredologs VARCHAR(50);valor_politica VARCHAR(50);ESTADO VARCHAR(50);lccomentario varchar (200);BEGINSELECT SUM(DECODE(SIGN(TRUNC(bytes/1024/1024)),1,0,1)) INTO lnredologs FROM v$log;SELECT DECODE(lnredologs,0,'CUMPLIDA','VIOLADA') INTO valor_politica FROM dual;DBMS_OUTPUT.PUT_LINE(VALOR_POLITICA);SELECT NVL((SELECT ESTADO FROM POLI_VIOLADAS WHERE ID_POLITICA=2 AND ESTADO='A'),'N')INTO

ESTADO FROM DUAL;dbms_output.put_line(valor_politica);IF valor_politica='CUMPLIDA' THEN

UPDATE POLI_VIOLADAS SET FECHA_MODIFICA=SYSDATE, ESTADO='I' WHERE ID_POLITICA=2 ANDESTADO='A';END IF;IF ESTADO='N' AND valor_politica='VIOLADA' THEN

lccomentario:='Numero de Redologs:'|| lnredologs;INSERT INTO POLI_VIOLADAS(ID_POLITICA, FECHA, ESTADO,COMENTARIO) Values (2,

SYSDATE,'A',lccomentario);END IF;IF ESTADO='A' AND valor_politica='VIOLADA' THEN

lccomentario:='Redologs:'|| lnredologs;UPDATE POLI_VIOLADAS SET COMENTARIO=LCCOMENTARIO,enviado='N' WHERE ID_POLITICA=2 and

estado='A';END IF;

END;PROCEDURE P$POLITICA_03 ASlcpga VARCHAR(50);lnvalor1 VARCHAR(50);lcworkarea VARCHAR(50);lnvalor2 VARCHAR(50);valor_politica VARCHAR(50);ESTADO VARCHAR(50);lccomentario varchar (200);BEGINSELECT SUBSTR(NAME, 1, 250), SUBSTR(VALUE,1, 250) INTO lcpga,lnvalor1 FROM v$parameter WHERE

NAME ='pga_aggregate_target';SELECT SUBSTR(NAME, 1, 250), SUBSTR(VALUE,1, 250) INTO lcworkarea,lnvalor2 FROM v$parameter

WHERE NAME ='workarea_size_policy';DBMS_OUTPUT.PUT_LINE(lcpga||' '||lnvalor1);DBMS_OUTPUT.PUT_LINE(lcworkarea||' '||lnvalor2);IF lnvalor1=0 OR lnvalor2='MANUAL'THEN

valor_politica:=1;

Page 200: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 11 -

ELSEvalor_politica:=0;

END IF;SELECT NVL((SELECT ESTADO FROM POLI_VIOLADAS WHERE ID_POLITICA=3 AND ESTADO='A'),'N')INTO

ESTADO FROM DUAL;SELECT DECODE(valor_politica,1,'CUMPLIDA','VIOLADA') INTO valor_politica FROM dual;DBMS_OUTPUT.PUT_LINE(valor_politica);IF valor_politica='CUMPLIDA' THEN

UPDATE POLI_VIOLADAS SET FECHA_MODIFICA=SYSDATE, ESTADO='I' WHERE ID_POLITICA=3 ANDESTADO='A';END IF;IF ESTADO='N' AND valor_politica='VIOLADA' THEN

lccomentario:='Gestión Automática de PGA:'|| valor_politica;INSERT INTO POLI_VIOLADAS(ID_POLITICA, FECHA, ESTADO,COMENTARIO) Values (3,

SYSDATE,'A',lccomentario);END IF;IF ESTADO='A' AND valor_politica='VIOLADA' THEN

lccomentario:='Gestión Automática de PGA:'|| valor_politica;UPDATE POLI_VIOLADAS SET COMENTARIO=LCCOMENTARIO,enviado='N' WHERE ID_POLITICA=3 and

estado='A';END IF;

END;

PROCEDURE P$POLITICA_04 ASvalor_politica VARCHAR(50);estado varchar(50);lccomentario varchar (200);BEGINSELECT DECODE(TRUNC(COUNT(*)/3),0,'VIOLADA','CUMPLIDA') INTO valor_politica FROM v$controlfile;DBMS_OUTPUT.PUT_LINE(valor_politica);SELECT NVL((SELECT ESTADO FROM POLI_VIOLADAS WHERE ID_POLITICA=4 AND ESTADO='A'),'N')INTO

ESTADO FROM DUAL;IF valor_politica='CUMPLIDA' THEN

UPDATE POLI_VIOLADAS SET FECHA_MODIFICA=SYSDATE, ESTADO='I' WHERE ID_POLITICA=4 ANDESTADO='A';

END IF;IF ESTADO='N' AND valor_politica='VIOLADA' THEN

lccomentario:='Numero de controlfiles:'|| valor_politica;INSERT INTO POLI_VIOLADAS(ID_POLITICA, FECHA, ESTADO,COMENTARIO) Values (4,

SYSDATE,'A',lccomentario);END IF;IF ESTADO='A' AND valor_politica='VIOLADA' THEN

lccomentario:='Numero de controlfiles:'|| valor_politica;UPDATE POLI_VIOLADAS SET COMENTARIO=LCCOMENTARIO,enviado='N' WHERE ID_POLITICA=4 and

estado='A';END IF;

END;PROCEDURE P$POLITICA_05 ASlclogmode VARCHAR(50);valor_politica VARCHAR(50);estado varchar(50);

Page 201: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 12 -

lccomentario varchar (200);BEGINSELECT log_mode INTO lclogmode FROM v$database;SELECT DECODE(lclogmode,'ARCHIVELOG','CUMPLIDA','VIOLADA') INTO valor_politica FROM dual;SELECT NVL((SELECT ESTADO FROM POLI_VIOLADAS WHERE ID_POLITICA=5 AND ESTADO='A'),'N')INTO

ESTADO FROM DUAL;dbms_output.put_line(valor_politica);IF valor_politica='CUMPLIDA' THEN

UPDATE POLI_VIOLADAS SET FECHA_MODIFICA=SYSDATE, ESTADO='I' WHERE ID_POLITICA=5 ANDESTADO='A';END IF;IF ESTADO='N' AND valor_politica='VIOLADA' THEN

lccomentario:='Base de Datos en Modo: '|| lclogmode;INSERT INTO POLI_VIOLADAS(ID_POLITICA, FECHA, ESTADO,COMENTARIO) Values (5, SYSDATE,'A',

lccomentario);END IF;IF ESTADO='A' AND valor_politica='VIOLADA' THEN

lccomentario:='Base de Datos en Modo: '|| lclogmode;UPDATE POLI_VIOLADAS SET COMENTARIO=LCCOMENTARIO,enviado='N' WHERE ID_POLITICA=5 and

estado='A';END IF;

END;PROCEDURE P$POLITICA_06 ASlccomentario varchar (200);lctable varchar (50);valor_politica varchar(50);estado varchar(50);begin

select count(*) status into lctable from dba_tablespaces where status='OFFLINE';select(decode(lctable,0,'CUMPLIDA','VIOLADA')) INTO valor_politica from dual;SELECT NVL((SELECT ESTADO FROM POLI_VIOLADAS WHERE ID_POLITICA=6 AND ESTADO='A'),'N')INTO

ESTADO FROM DUAL;dbms_output.put_line(valor_politica);IF valor_politica='CUMPLIDA' THEN

UPDATE POLI_VIOLADAS SET FECHA_MODIFICA=SYSDATE, ESTADO='I' WHERE ID_POLITICA=6 ANDESTADO='A';END IF;IF ESTADO='N' AND valor_politica='VIOLADA' THEN

lccomentario:='Tablespaces fuera de linea '|| lctable;INSERT INTO POLI_VIOLADAS(ID_POLITICA, FECHA, ESTADO,COMENTARIO) Values (6,

SYSDATE,'A',lccomentario);END IF;IF ESTADO='A' AND valor_politica='VIOLADA' THEN

lccomentario:='Tablespaces fuera de linea '|| lctable;UPDATE POLI_VIOLADAS SET COMENTARIO=LCCOMENTARIO,enviado='N' WHERE ID_POLITICA=6 and

estado='A';END IF;

end;

PROCEDURE P$POLITICA_07 ASlcobjetos varchar (50);valor_politica varchar(50);estado varchar(50);lccomentario varchar (200);

Page 202: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 13 -

beginselect count(*) status into lcobjetos from dba_objects where status='INVALID';select(decode(lcobjetos,0,'CUMPLIDA','VIOLADA')) INTO valor_politica from dual;SELECT NVL((SELECT ESTADO FROM POLI_VIOLADAS WHERE ID_POLITICA=7 AND ESTADO='A'),'N')INTO

ESTADO FROM DUAL;dbms_output.put_line(valor_politica);IF valor_politica='CUMPLIDA' THEN

UPDATE POLI_VIOLADAS SET FECHA_MODIFICA=SYSDATE, ESTADO='I' WHERE ID_POLITICA=7 ANDESTADO='A';END IF;IF ESTADO='N' AND valor_politica='VIOLADA' THEN

lccomentario:='Objetos Invalidos:'|| lcobjetos;INSERT INTO POLI_VIOLADAS(ID_POLITICA, FECHA, ESTADO,COMENTARIO) Values (7, SYSDATE,'A',

lccomentario);END IF;IF ESTADO='A' AND valor_politica='VIOLADA' THEN

lccomentario:='Objetos Invalidos:'|| lcobjetos;UPDATE POLI_VIOLADAS SET COMENTARIO=LCCOMENTARIO,enviado='N' WHERE ID_POLITICA=7 and

estado='A';END IF;

end;PROCEDURE P$POLITICA_08 ASlcfile1 varchar (50);valor_politica varchar(50);estado varchar(50);lccomentario varchar (200);beginselect value into lcfile1 from v$parameter where name='utl_file_dir';select(decode(lcfile1,'*','VIOLADA','CUMPLIDA')) INTO valor_politica from dual;SELECT NVL((SELECT ESTADO FROM POLI_VIOLADAS WHERE ID_POLITICA=8 AND ESTADO='A'),'N')INTO

ESTADO FROM DUAL;dbms_output.put_line(valor_politica);IF valor_politica='CUMPLIDA' THEN

UPDATE POLI_VIOLADAS SET FECHA_MODIFICA=SYSDATE, ESTADO='I' WHERE ID_POLITICA=8 ANDESTADO='A';END IF;IF ESTADO='N' AND valor_politica='VIOLADA' THEN

lccomentario:='Parametro utl_file_dir esta accesado a cualquier directorio:'|| lcfile1;INSERT INTO POLI_VIOLADAS(ID_POLITICA, FECHA, ESTADO,COMENTARIO) Values (8,

SYSDATE,'A',lccomentario);END IF;IF ESTADO='A' AND valor_politica='VIOLADA' THEN

lccomentario:='Parametro utl_file_dir esta accesado a cualquier directorio:'|| lcfile1;UPDATE POLI_VIOLADAS SET COMENTARIO=LCCOMENTARIO,enviado='N' WHERE ID_POLITICA=8 and

estado='A';END IF;

END; PROCEDURE P$POLITICA_09 ASlcUSRTABLE VARCHAR(50);valor_politica VARCHAR(50);estado varchar(50);lccomentario varchar (200);BEGINSELECT COUNT(*) INTO lcUSRTABLE FROM DBA_USERS WHERE USERNAME NOT IN

('SYS','SYSTEM','OUTLN','WMSYS','ORDSYS','ORDPLUGINS','MDSYS','DBSNMP') and

Page 203: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 14 -

default_tablespace='SYSTEM' ORDER BY USERNAME;SELECT DECODE(lcUSRTABLE,0,'CUMPLIDA','VIOLADA')INTO valor_politica FROM dual;DBMS_OUTPUT.PUT_LINE(valor_politica);SELECT NVL((SELECT ESTADO FROM POLI_VIOLADAS WHERE ID_POLITICA=9 AND ESTADO='A'),'N')INTO

ESTADO FROM DUAL;dbms_output.put_line(valor_politica);

IF valor_politica='CUMPLIDA' THENUPDATE POLI_VIOLADAS SET FECHA_MODIFICA=SYSDATE, ESTADO='I' WHERE ID_POLITICA=9 AND

ESTADO='A';END IF;IF ESTADO='N' AND valor_politica='VIOLADA' THEN

lccomentario:='Numero de Usuarios que no debe de tener el default_tablespace: '|| lcUSRTABLE;INSERT INTO POLI_VIOLADAS(ID_POLITICA, FECHA, ESTADO,COMENTARIO) Values (9,

SYSDATE,'A',lccomentario);END IF;IF ESTADO='A' AND valor_politica='VIOLADA' THEN

lccomentario:='Numero de Usuarios que no debe de tener el default_tablespace: '|| lcUSRTABLE;UPDATE POLI_VIOLADAS SET COMENTARIO=LCCOMENTARIO,enviado='N' WHERE ID_POLITICA=9 and

estado='A';END IF;

END;

PROCEDURE P$POLITICA_10 ASlcsegmentos varchar (50);valor_politica varchar(50);estado varchar(50);lccomentario varchar (200);beginselect count(*) tablespace_name into lcsegmentos from dba_segments where owner not in

('SYS','SYSTEM','OUTLN','WMSYS','ORDSYS','ORDPLUGINS','MDSYS','DBSNMP') andtablespace_name='SYSTEM';select(decode(lcsegmentos,0,'CUMPLIDA','VIOLADA')) INTO valor_politica from dual;SELECT NVL((SELECT ESTADO FROM POLI_VIOLADAS WHERE ID_POLITICA=10 AND

ESTADO='A'),'N')INTO ESTADO FROM DUAL;dbms_output.put_line(valor_politica);IF valor_politica='CUMPLIDA' THEN

UPDATE POLI_VIOLADAS SET FECHA_MODIFICA=SYSDATE, ESTADO='I' WHERE ID_POLITICA=10 ANDESTADO='A';END IF;IF ESTADO='N' AND valor_politica='VIOLADA' THEN

lccomentario:='Numero de objetos que no pertenecen al SYSTEM:'|| lcsegmentos;INSERT INTO POLI_VIOLADAS(ID_POLITICA, FECHA, ESTADO,COMENTARIO) Values (10,

SYSDATE,'A',lccomentario);END IF;IF ESTADO='A' AND valor_politica='VIOLADA' THEN

lccomentario:='Numero de objetos que no pertenecen al SYSTEM:'|| lcsegmentos;UPDATE POLI_VIOLADAS SET COMENTARIO=LCCOMENTARIO,enviado='N' WHERE ID_POLITICA=10 and

estado='A';END IF;

END;

Page 204: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 15 -

END;/

Scrip Procedure.sql

--Procedimientos

Create or replace procedure INSERTA_DET_METRICAS(LINDICE IN NUMBER,FECHA IN DATE,VALOR INNUMBER,UMBRAL IN VARCHAR,OPERADOR IN VARCHAR,LIMITANTE IN VARCHAR,COMENTARIO INVARCHAR) isbegin

insert into detalle_metrica(indice_met,fecha,valor,tipo_umbral,operador,limitante,Comentario,secuencia)values (Lindice,fecha,valor,umbral,operador,limitante,Comentario,metrica_seq.nextval);

UPDATE METRICA SET EJECUTA='S' WHERE INDICE=LINDICE;COMMIT;

end INSERTA_DET_METRICAS;/CREATE OR REPLACE Procedure inspeccion_metrica as

-- devuelve 1= solo si da un resultado-- tipodev 1=el resultado es numerico-- TIPO S es un querycursor metrica is select * from metrica where TIPO='S';

lnValor number;lcUmbral char(1) ;lcSql varchar2(4000);

lbentro boolean;lclimitante varchar2(15);liindice number(5);

Beginupdate metrica set ejecuta='N' where indice=liindice;commit;For x in metrica loop

lcSQl:=trim(x.sentencia);liindice:= x.indice;

execute immediate lcSql into lnValor;--lnValor:= lcSQl;lbentro:=false;lcUmbral:='X';

if lbentro=false thenIf trim(x.comparador) = '>' then

If lnValor > x.maximo thenlcUmbral:='C';

lbentro:=true;lclimitante:=x.maximo;

elsif lnValor > x.minimo then

Page 205: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 16 -

lcUmbral:='A';lbentro:=true;lclimitante:=x.minimo;

end if ;end if;

end if;if lbentro=false thenIf trim(x.comparador) = '>=' then

If lnValor >= x.maximo thenlcUmbral:='C';

lbentro:=true;lclimitante:=x.maximo;

elsif lnValor >= x.minimo thenlcUmbral:='A';

lbentro:=true;lclimitante:=x.minimo;

end if ;end if;

end if;

if lbentro=false thenIf trim(x.comparador) = '<' then

If lnValor < x.maximo thenlcUmbral:='C';

lbentro:=true;lclimitante:=x.maximo;

elsif lnValor < x.minimo thenlcUmbral:='A';

lbentro:=true;lclimitante:=x.minimo;

end if ;end if;

end if;

if lbentro=false thenIf trim(x.comparador) = '<=' then

If lnValor <= x.maximo thenlcUmbral:='C';

lbentro:=true;lclimitante:=x.maximo;

elsif lnValor <= x.minimo thenlcUmbral:='A';

lbentro:=true;lclimitante:=x.minimo;

end if ;end if;

end if;

if lbentro=true theninsert into detalle_metrica(indice_met,fecha,valor,tipo_umbral,operador,limitante,secuencia)values (x.indice,sysdate,lnvalor,lcumbral,x.comparador,lclimitante,metrica_SEQ.Nextval);

Page 206: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 17 -

commit;end if;

update metrica set ejecuta='S',ult_ejec=sysdate where indice=liindice;commit;

End loop;End;

/

create or replace procedure PRC_ESPERA_SESION isCURSOR TMP ISSELECT NVL(s.username, '(oracle)') AS username,s.sid,s.serial#,sw.event,sw.wait_time,sw.seconds_in_wait,sw.state FROM v$session_wait sw,v$session s

WHERE s.sid = sw.sidORDER BY sw.seconds_in_wait DESC;LIVALOR NUMBER;LIINDICE NUMBER;

begin-- VALIDA EL MAXIMO DE SEGUNDOS DE UNA SESION EN ESPERALIVALOR:=10000;SELECT INDICE INTO LIINDICE FROM METRICA WHERE TRIM(SENTENCIA)='PRC_ESPERA_SESION';

FOR X IN TMP LOOPIF X.SECONDS_IN_WAIT>=LIVALOR THEN

INSERTA_DET_METRICAS(LIINDICE,SYSDATE,X.SECONDS_IN_WAIT,'C','>=',TO_CHAR(LIVALOR),'SESIONESEN ESPERA ' || TRIM(X.EVENT));

COMMIT;END IF;

END LOOP;UPDATE METRICA SET EJECUTA='S',ult_ejec=sysdate WHERE INDICE=LIINDICE;COMMIT;

end PRC_ESPERA_SESION;/create or replace procedure PRC_FREE_TABLESPACE is

CURSOR TMP ISSELECT Total.name,nvl(Free_space, 0) Free_space,nvl(total_space-Free_space, 0) Used_space,total_space,round(((nvl(Free_space, 0)*100)/total_space),2) Porc_libre FROM (select tablespace_name,

sum(bytes/1024/1024) Free_Spacefrom sys.dba_free_space group by tablespace_name) Free, (select b.name, sum(bytes/1024/1024)

TOTAL_SPACE from sys.v_$datafile a,sys.v_$tablespace B where a.ts# = b.ts# group by b.name) Total WHERE Free.Tablespace_name(+) =

Total.name ORDER by Porc_Libre desc;LIINDICE NUMBER;

BeginSELECT INDICE INTO LIINDICE FROM METRICA WHERE TRIM(SENTENCIA)='PRC_FREE_TABLESPACE';

FOR X IN TMP LOOPIF X.PORC_LIBRE>=10 AND X.PORC_LIBRE<30 THEN

INSERTA_DET_METRICAS(LIINDICE,SYSDATE,X.PORC_LIBRE,'A','>=','10% - 30%','ESPACIO LIBREDEL TABLESPACE ' || TRIM(X.NAME));

COMMIT;END IF;

Page 207: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 18 -

IF X.PORC_LIBRE<10 THENINSERTA_DET_METRICAS(LIINDICE,SYSDATE,X.PORC_LIBRE,'C','>=','<10%','ESPACIO LIBRE DEL

TABLESPACE ' || TRIM(X.NAME));COMMIT;

END IF;END LOOP;UPDATE METRICA SET EJECUTA='S',ult_ejec=sysdate WHERE INDICE=LIINDICE;COMMIT;

end PRC_FREE_TABLESPACE;/create or replace procedure PRC_USO_TABLESPACE is

CURSOR TMP ISSELECT Total.name ,nvl(Free_space, 0) Free_space,nvl(total_space-Free_space, 0) Used_space,total_space,round(((nvl(total_space-Free_space, 0)*100)/total_space),2) Porc_UsadoFROM (select tablespace_name, sum(bytes/1024/1024) Free_Space from sys.dba_free_space group by

tablespace_name) Free,(select b.name, sum(bytes/1024/1024) TOTAL_SPACE from sys.v_$datafile a, sys.v_$tablespace B where

a.ts# = b.ts# group by b.name) TotalWHERE Free.Tablespace_name(+) = Total.name ORDER by Porc_usado desc;LIINDICE NUMBER;

beginSELECT INDICE INTO LIINDICE FROM METRICA WHERE TRIM(SENTENCIA)='PRC_USO_TABLESPACE';

FOR X IN TMP LOOPIF X.PORC_USADO>=80 AND X.PORC_USADO<90 THEN

INSERTA_DET_METRICAS(LIINDICE,SYSDATE,X.PORC_USADO,'A','>=','80% - 90%','ESPACIOUSADO DEL TABLESPACE ' || TRIM(X.NAME));

COMMIT;END IF;

IF X.PORC_USADO>=90 THENINSERTA_DET_METRICAS(LIINDICE,SYSDATE,X.PORC_USADO,'C','>=','90%','ESPACIO USADO DEL

TABLESPACE ' || TRIM(X.NAME));COMMIT;

END IF;END LOOP;

UPDATE METRICA SET EJECUTA='S',ult_ejec=sysdate WHERE INDICE=LIINDICE;COMMIT;

end PRC_USO_TABLESPACE;/DECLARE

X NUMBER;BEGIN

SYS.DBMS_JOB.SUBMIT( job => X,what => 'Q$POLITICAS.P$EJECUTA;',next_date => to_date('08/07/2008 21:43:27','dd/mm/yyyy hh24:mi:ss'),interval => 'SYSDATE+5/1440 ',no_parse => FALSE);

END;/

Page 208: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 19 -

DECLAREX NUMBER;

BEGINSYS.DBMS_JOB.SUBMIT( job => X,what => 'prc_uso_tablespace;',next_date => to_date('08/07/2008 21:43:27','dd/mm/yyyy hh24:mi:ss'),interval => 'SYSDATE+5/1440 ',no_parse => FALSE);

END;/DECLARE

X NUMBER;BEGIN

SYS.DBMS_JOB.SUBMIT( job => X,what => 'prc_uso_tablespace;',next_date => to_date('08/07/2008 21:43:27','dd/mm/yyyy hh24:mi:ss'),interval => 'SYSDATE+5/1440 ',no_parse => FALSE);

END;/

DECLAREX NUMBER;

BEGINSYS.DBMS_JOB.SUBMIT( job => X,what => 'prc_free_tablespace;',next_date => to_date('08/07/2008 21:43:27','dd/mm/yyyy hh24:mi:ss'),interval => 'SYSDATE+5/1440 ',no_parse => FALSE);

END;/

DECLAREX NUMBER;

BEGINSYS.DBMS_JOB.SUBMIT( job => X,what => 'prc_espera_sesion;',next_date => to_date('08/07/2008 21:43:27','dd/mm/yyyy hh24:mi:ss'),interval => 'SYSDATE+5/1440 ',no_parse => FALSE);

END;/

DECLAREX NUMBER;

Page 209: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 20 -

BEGINSYS.DBMS_JOB.SUBMIT( job => X,what => 'inspeccion_metrica;',next_date => to_date('08/07/2008 21:43:27','dd/mm/yyyy hh24:mi:ss'),interval => 'SYSDATE+5/1440 ',no_parse => FALSE);

END;/CREATE OR REPLACE TRIGGER TRG_POLI_VIOLADASBEFORE INSERT

ON GUISELA.POLI_VIOLADASREFERENCING NEW AS New OLD AS OldFOR EACH ROWDECLAREtmpVar NUMBER;BEGINSELECT SEC_POLI_VIOLADA.NEXTVAL INTO tmpVar FROM dual;:NEW.NUM:=tmpVar;END TRG_POLI_VIOLADAS;/disconnect;

Scrip que crea el archive DBMSFOX.ini

WAIT WINDOW "Guardando la Información..... espere por favor" NOWAITlcarc = GETENV("SystemRoot") + '\system32\DbmsFox.ini'IF FILE("&lcarc")

DELETE FILE ("&lcarc")ENDIFarch = fcreate("&lcarc")IF arch > 0

FPUTS(arch,'*********************************************************')FFLUSH(arch)FPUTS(arch,'* *')FFLUSH(arch)FPUTS(arch,'* Archivo de Configuración del Sitema Dbms-Fox *')FFLUSH(arch)FPUTS(arch,'* *')FFLUSH(arch)FPUTS(arch,'*********************************************************')FFLUSH(arch)FPUTS(arch,'')FFLUSH(arch)FPUTS(arch,'')FFLUSH(arch)FPUTS(arch,'--------------------------------------------------------------')FFLUSH(arch)FPUTS(arch,'* No modificar el archivo de Inicio del Sistema,')

Page 210: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 21 -

FFLUSH(arch)FPUTS(arch,'* debido a que puede causar error en el Funcionamiento')FFLUSH(arch)FPUTS(arch,'--------------------------------------------------------------')FFLUSH(arch)FPUTS(arch,'')FFLUSH(arch)FPUTS(arch,'')FFLUSH(arch)FPUTS(arch,'* Conexión a Oracle Server *')FFLUSH(arch)FPUTS(arch,'[Conexion]')FFLUSH(arch)FPUTS(arch,'Driver=' + ALLTRIM(thisform.tdriver.Value))FFLUSH(arch)FFLUSH(arch)FPUTS(arch,'')FFLUSH(arch)FPUTS(arch,'** Tipo de Ambiente')FFLUSH(arch)FPUTS(arch,'[Ambiente]')FFLUSH(arch)FPUTS(arch,'Sesion = E')FFLUSH(arch)FPUTS(arch,'')FFLUSH(arch)FPUTS(arch,'[Rutas]'FFLUSH(arch)FPUTS(arch,'Fte=\DBMS-FOX\FTE\')

FFLUSH(arch,’Exe=\DBMS-FOX\EXE\’FFLUSH(arch)FPUTS(arch,'Txt=\DBMS-FOX\TXT\')FFLUSH(arch)FPUTS(arch,'Dbf=\DBMS-FOX\DBF\')FFLUSH(arch)FPUTS(arch,'')FFLUSH(arch)FPUTS(arch,'** Servidor de Conexión')FFLUSH(arch)FPUTS(arch,'[Servidor]')FFLUSH(arch)FPUTS(arch,'Server=' + ALLTRIM(thisform.tipserv.Value))FFLUSH(arch)FPUTS(arch,'')FFLUSH(arch)FPUTS(arch,'[UsuarioBd]')FFLUSH(arch)FPUTS(arch,'nombre=DBMSFOX')FFLUSH(arch)FPUTS(arch,'')

Page 211: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 22 -

FFLUSH(arch)

thisform.cmdregistro.Enabled = .F.MESSAGEBOX("Creacion correcta...",64,"Sistema DBMS - FOX")thisform.Release

ELSEMESSAGEBOX("Error al Crear el archivo...",16,"Sistema DBMS - FOX")

ENDIFFCLOSE(arch)

WAIT CLEAR

1.2 Programa Principal

************************************************ Programa de Inicio al Sistema DBMS-FOX ************************************************** Definición de Variables de Ambiente

SET DELETED ONSET CENTURY ONSET DATE DMYSET TALK OFFSET ESCAPE OFFSET SYSMENU TOSET EXCLUSIVE OFFSET NOTIFY OFFSET CONFIRM ONSET CONSOLE OFFSET MULTILOCKS ONSET SAFETY OFFSET CLOCK STATUSSET EXACT ON

** Desactivas VentanasDEACTIVATE WINDOW "Estándar"DEACTIVATE WINDOW "Standard"DEACTIVATE WINDOW "Controles de formularios"DEACTIVATE WINDOW "Diseñador de formularios"

** Dar forma a la Pantalla PrincipalSET SYSMENU TO_screen.AutoCenter = .T._screen.WindowState = 2_screen.Visible = .T._screen.MDIForm = .T._screen.Closable = .F._screen.Caption = " DBMS - FOX Sistema de Administración de Infraestructura Tecnológica "_screen.Icon = '\DBMS-FOX\Ico\DBMS-FOX.ico'

** Añado las Librerias al Screen de FoxproSet Classlib TO '\DBMS-FOX\Clases\Estandar' ADDITIVEIF type('_screen.estandar')!='O'

Page 212: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 23 -

_screen.AddObject("estandar","estandar")ENDIFIF _screen.estandar.Bexistefile

DO FORM \dbms-fox\frmLoginIF _screen.estandar.ctipoSesion = 'E'

READ EVENTSENDIF

ELSEDO FORM \Dbms-Fox\registramaquinaCLOSE ALLQUIT

ENDIFON SHUTDOWN do \DBMS-FOX\salir_sistema

1.3 Programa Envia mail

set confirm onset console offset century onset date to dmyset multilocks onset safety offset clock statusSET EXACT ON

SELECT 0CREATE CURSOR tmpmail(;tipo c(25),;numero n(10),;secuencia n(10),;nombre c(80),;comentario c(254),;fecha c(25))ln = SQLSETPROP(0,"DispLogin",3)liconex = SQLSTRINGCONNECT(_screen.esTANDAR.cstringconnect)IF liconex > 0

lcsql = "select a.num,a.nombre_politica,a.descripcion,to_char(b.fecha,'dd/mm/yyyy hh:mi:ss')fecha,b.comentario "

lcsql = lcsql + " From " + _screen.esTANDAR.cusubd + ".politicas a, " + _screen.esTANDAR.cusubd +".poli_violadas b "

lcsql = lcsql + " Where a.num=b.id_politica and b.enviado<>'S' and b.estado='A' "liresult = SQLEXEC(liconex,lcsql,"tmppoli")IF liresult > 0

SELECT tmppoliSCAN

SELECT tmpmailAPPEND BLANKreplace tmpmail.tipo WITH 'Políticas',;

tmpmail.numero WITH tmppoli.num,;tmpmail.secuencia WITH 0,;

Page 213: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 24 -

tmpmail.nombre WITHALLTRIM(tmppoli.nombre_politica),;

tmpmail.comentario WITH ALLTRIM(tmppoli.comentario),;tmpmail.fecha WITH tmppoli.fecha

ENDSCANENDIF

lcsql = "Select x.indice,x.metrica,NVL(y.comentario,'') comentario,to_char(y.fecha,'dd/mm/yyyy hh:mi:ss')fecha,y.secuencia "

lcsql = lcsql + " from " + _screen.esTANDAR.cusubd + ".metrica x," + _screen.esTANDAR.cusubd +".detalle_metrica y "

lcsql = lcsql + " where x.indice=y.indice_met and NVL(y.notificado,'N')<>'S' order by y.fecha "liresult = SQLEXEC(liconex,lcsql,"tmpmet")IF liresult > 0

SELECT tmpmetSCAN

SELECT tmpmailAPPEND BLANKreplace tmpmail.tipo WITH 'Métricas',;

tmpmail.numero WITH tmpmet.indice,;tmpmail.secuencia WITH tmpmet.secuencia,;tmpmail.nombre WITH ALLTRIM(tmpmet.metrica),;tmpmail.comentario WITH

IIF(ISNULL(ALLTRIM(tmpmet.comentario)),'',ALLTRIM(tmpmet.comentario)),;tmpmail.fecha WITH tmpmet.fecha

ENDSCANENDIF

lcdetalle = ''licnt = 0SELECT tmpmaillinum = RECCOUNT()IF linum > 0

SELECT tmpmailSCAN FOR ALLTRIM(tmpmail.tipo)=='Políticas'

IF licnt = 0lcdetalle = 'Alerta de Políticas ' + CHR(13) + CHR(13)

ENDIFlcdetalle = lcdetalle + ALLTRIM(tmpmail.fecha) + ' - ' + ALLTRIM(tmpmail.nombre) + '

- ' + ALLTRIM(tmpmail.comentario) + CHR(13)licnt = licnt + 1

ENDSCAN

IF LEN(lcdetalle)>0lcdetalle = lcdetalle + CHR(13)lcdetalle = lcdetalle + CHR(13)

ENDIF

licnt = 0SELECT tmpmailSCAN FOR ALLTRIM(tmpmail.tipo)=='Métricas'

IF licnt = 0

Page 214: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 25 -

lcDetalle = lcDetalle + CHR(13) + "Alerta de Métricas " + CHR(13) +CHR(13)

ENDIFlcdetalle = lcdetalle + ALLTRIM(tmpmail.fecha) + ' - ' + ALLTRIM(tmpmail.nombre) + '

- ' + ALLTRIM(tmpmail.comentario) + CHR(13)licnt = licnt + 1

ENDSCAN

IF LEN(lcdetalle)>0lcdetalle = lcdetalle + CHR(13)

ENDIF**Envia maillcsql = "Select * from " + _screen.esTANDAR.cusubd + ".parametros where tipo='E' and

dirsaliente is not null and envia='S' "liresult = SQLEXEC(liconex,lcsql,"tpar")IF liresult > 0

SELECT tparlinum = RECCOUNT()IF linum > 0

TRYsmtp = ALLTRIM(tpar.smtp)puerto = INT(tpar.puerto)lcfrom = ALLTRIM(tpar.dirremitente)clave = _screen.esTANDAR.desencriptador(ALLTRIM(tpar.password))LOCAL lcSchema, loConfig, loMsg, loError, lcErrlcErr = ""lcSchema = "http://schemas.microsoft.com/cdo/configuration/"loConfig = CREATEOBJECT("CDO.Configuration")WITH loConfig.FIELDS

.ITEM(lcSchema + "smtpserver") = "&smtp"

.ITEM(lcSchema + "smtpserverport") = puerto

.ITEM(lcSchema + "sendusing") = 2

.ITEM(lcSchema + "smtpauthenticate") = .T.

.ITEM(lcSchema + "smtpusessl") = .T.

.ITEM(lcSchema + "sendusername") = "&lcfrom"

.ITEM(lcSchema + "sendpassword") = "&clave"

.UPDATEENDWITHlcmail = ALLTRIM(tpar.dirsaliente)lcmail = SUBSTR(lcmail,1,LEN(ALLTRIM(lcmail))-1)loMsg = CREATEOBJECT ("CDO.Message")WITH loMsg

.Configuration = loConfig

.FROM = "&lcfrom"

.TO = "&lcmail"

.Subject = " Alertas de la Base " + _screen.esTANDAR.cdatabase

.TextBody = lcdetalle

.Send()ENDWITH

CATCH TO loError

lcErr = [Error: ] + STR(loError.ERRORNO) + CHR(13) + ;[Linea: ] + STR(loError.LINENO) + CHR(13) + ;

Page 215: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 26 -

[Mensaje: ] + loError.MESSAGEFINALLY

SELECT tmpmailSCAN

IF ALLTRIM(tmpmail.tipo)=='Métricas'lcsql = "Update " +

_screen.esTANDAR.cusubd + ".detalle_metrica "lcsql = lcsql + " set notificado='S',

fec_notifica=sysdate "lcsql = lcsql + " where

indice_met=?tmpmail.numero and secuencia=?tmpmail.secuencia "ELSE

lcsql = "Update " +_screen.esTANDAR.cusubd + ".poli_violadas "

lcsql = lcsql + " setenviado='S',fec_envio=sysdate "

lcsql = lcsql + " Whereid_politica=?tmpmail.numero "

ENDIFliresult = SQLEXEC(liconex,lcsql)IF liresult < 0

men = MESSAGE()MESSAGEBOX(men)

ENDIFENDSCAN

ENDTRYENDIF

**Envia SMSlcsql = "Select * from " + _screen.esTANDAR.cusubd + ".parametros where tipo='C' and

dirsaliente is not null and envia='S' "liresult = SQLEXEC(liconex,lcsql,"tpar")IF liresult > 0

SELECT tparlinum = RECCOUNT()IF linum > 0

TRYsmtp = ALLTRIM(tpar.smtp)puerto = INT(tpar.puerto)lcfrom = ALLTRIM(tpar.dirremitente)clave = _screen.esTANDAR.desencriptador(ALLTRIM(tpar.password))lccel = ''lcmail = ''

FOR i=0 TO LEN(tpar.dirsaliente)IF SUBSTR(tpar.dirsaliente,i,1) = ";"DO CASE

CASE ALLTRIM(SUBSTR(lccel,1,1))=='P'IF LEN(SUBSTR(lccel,2,len(lccel))) > 0

IF SUBSTR(lccel,2,3)='090'lcdato = ALLTRIM(SUBSTR(lccel,3,LEN(lccel)))lccel = lcdato + IIF(LEN(ALLTRIM(lcdato))>0,'@portafree.com;','')

ELSE

Page 216: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 27 -

lcdato = ALLTRIM(SUBSTR(lccel,4,LEN(lccel)))lccel = lcdato + IIF(LEN(ALLTRIM(lcdato))>0,'@portafree.com;','')

ENDIfENDIF

CASE ALLTRIM(SUBSTR(lccel,1,1))=='M'IF LEN(SUBSTR(lccel,2,len(lccel))) > 0lcdato = ALLTRIM(SUBSTR(lccel,3,LEN(lccel)))lccel = lcdato + IIF(LEN(ALLTRIM(lcdato))>0,'@im.movistar.com.ec;','')ENDIF

ENDCASElcmail = lcmail + IIF(LEN(ALLTRIM(lccel))>1,lccel,'')lccel = ''

ELSElccel = lccel + SUBSTR(tpar.dirsaliente,i,1)

ENDIFENDFOR

LOCAL lcSchema, loConfig, loMsg, loError, lcErrlcErr = ""lcSchema = "http://schemas.microsoft.com/cdo/configuration/"loConfig = CREATEOBJECT("CDO.Configuration")WITH loConfig.FIELDS

.ITEM(lcSchema + "smtpserver") = "&smtp"

.ITEM(lcSchema + "smtpserverport") = puerto

.ITEM(lcSchema + "sendusing") = 2

.ITEM(lcSchema + "smtpauthenticate") = .T.

.ITEM(lcSchema + "smtpusessl") = .T.

.ITEM(lcSchema + "sendusername") = "&lcfrom"

.ITEM(lcSchema + "sendpassword") = "&clave"

.UPDATEENDWITHlcmail = SUBSTR(lcmail,1,LEN(ALLTRIM(lcmail))-1)loMsg = CREATEOBJECT ("CDO.Message")WITH loMsg

.Configuration = loConfig.FROM = "&lcfrom".TO = "&lcmail".Subject = " Alertas de la Base " + _screen.esTANDAR.cdatabase.TextBody = "Revise el mail se generaron nuevas alertas".Send()

ENDWITH

CATCH TO loErrorlcErr = [Error: ] + STR(loError.ERRORNO) + CHR(13) + ;

[Linea: ] + STR(loError.LINENO) + CHR(13) + ;[Mensaje: ] + loError.MESSAGE

FINALLYRELEASE loConfig, loMsgSTORE .NULL. TO loConfig, loMsg

ENDTRYENDIF

Page 217: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 28 -

ENDIFENDIF

ENDIF

TRYSQLDISCONNECT(liconex)

CATCH TO lerror**Pasa de largo

ENDTRY

1.4 Método de Conexión a la Base de Datos - Clase Estandar

LPARAMETERS cServidor,cUsuario,cClave,cSid,cPrivilegio*** Busco Driver Oracle

ln = SQLSETPROP(0,"DispLogin",3)this.cdriveroracle = this.busca_datos("Conexion","Driver")this.cstringconnect = "Driver=" + this.cdriveroracle + ";server=" + cServidor + ";DBQ=" + cSid + ";uid=" +

cUsuario + ";pwd=" + cClave + ";DBA privilege=" + cPrivilegiolinum = SQLSTRINGCONNECT(this.cstringconnect)IF linum < 0

men = MESSAGE()_screen.estandar.iconectada = 0DO CASE

CASE LIKE('*ORA-01034*',men) OR LIKE('*ORA-12514*',men)MESSAGEBOX("No se encuentra conectado a

Oracle",16,_screen.estandar.cmensistema)vb = MESSAGEBOX("Desea Subir la Base de

Datos",32+4,_screen.estandar.cmensistema)IF vb = 6

lcarch = SYS(5) + '\' + _screen.esTANDAR.crutatxt + 'sube.bat'IF FILE("&lcarch")

DELETE FILE ("&lcarch")ENDIF

cnprivilegio = ''IF ALLTRIM(cprivilegio)=='Normal'

cnprivilegio = ' 'ELSE

cnprivilegio = ' as ' + cprivilegioENDIF

arch = fcreate("&lcarch")FPUTS(arch,"@echo off")FPUTS(arch,"set oracle_sid="+ csid)FPUTS(arch,"echo set echo on > %0.tmp")FPUTS(arch,"echo connect " + cusuario + '/' + cclave +

cnprivilegio + "; >> %0.tmp")FPUTS(arch,"echo startup; >> %0.tmp")FPUTS(arch,"echo exit; >> %0.tmp")FPUTS(arch,"sqlplus /nolog @%0.tmp")FPUTS(arch,"del %0.tmp")fclose(arch)

Page 218: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 29 -

WAIT WINDOW "Levantando el Servicio de la Base de Datos....espere por favor" NOWAIT

RUN "&lcarch"WAIT CLEAR

_screen.esTANDAR.iconectada = 1ELSE

QUITENDIF

CASE LIKE('*ORA-12541*',men)MESSAGEBOX("No se encuentra levantado el listener - " +

MESSAGE(),16,_screen.estandar.cmensistema)vb = MESSAGEBOX("Desea levantar el Servicio del

Listener",32+4,_screen.estandar.cmensistema)IF vb = 6

WAIT WINDOW "Subiendo el Servicio del Listener... espere por

favor" NOWAIT

RUN lsnrctl start

WAIT WINDOW "Esperando Respuestas delServicio.... espere por favor" TIMEOUT 60

WAIT CLEARWAIT CLEAR

ELSEQUIT

ENDIF_screen.esTANDAR.iconectada = 1

OTHERWISEMESSAGEBOX(men,16,this.cmensistema)

ENDCASE

RETURN .f.ENDIF

lcsql = "Select * from " + _screen.esTANDAR.cusubd + ".menu order by codigo"liresult = SQLEXEC(linum,lcsql,"tmp")IF liresult < 0

men = MESSAGE()IF !LIKE('*ORA-00942*',men)

MESSAGEBOX(men,16,_screen.estandar.cmensistema)RETURN .f.

ENDIFENDIF

_screen.estandar.iconectada = 1this.cdatabase = cSid

RETURN .t.

Page 219: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 30 -

1.5 Metodo path_archivo - Clase Estandar

LPARAMETERS cArchivoLOCAL loFiler AS 'Filer.FileUtil'**Datos de BUsqueda*-- Creo el objetoloFiler = CREATEOBJECT('Filer.FileUtil')*-- Indico el archivo o mascara (Ej: *.dbf)loFiler.FileExpression = cArchivo*-- Indico que busque en subcarpetasloFiler.SubFolder = 1

**Datos de los Discos LocalesobjWMI = Getobject("winmgmts:\\")cCadWMI = "Select * from Win32_LogicalDisk"oSistema = objWMI.ExecQuery(cCadWMI)lcruta = ''For Each Disco In oSistema

IF! ISNULL(Disco.size)*-- Indico la rutaloFiler.SearchPath = Disco.name + '\Oracle\'*-- Busco...loFiler.Find(0)IF loFiler.Files.Count > 0

FOR lnCant = 1 TO loFiler.Files.CountWITH loFiler.Files.Item(lnCant)

lcruta = lcruta + ALLTRIM(.Path) + ALLTRIM(.name) + ';'ENDWITH

ENDFORENDIF

ENDIFNEXTloFiler = NULLDisco = null

RETURN lcruta

1.5 Método Init - Clase Estándar

PUBLIC patron_busqueda,Patron_encripta&& Variables de Encriptaciónpatron_busqueda ="aRñGJry8Tiw0FQqv9ÑbKgk4PlBD1xZMsm5ehW3cUYfEj7NISntuz2pLAd6XOVoCH./\{}$%&=?¿"Patron_encripta = "n¿y8Tit&g3SkehUd6XOVo{aRqv9Ñ}$ñGJr\fEK%4?CHjFQ=bcY/PlBDz2pLA1xZMs7NI.w0mu5W"

this.cmensistema = " Sistema DBMS - FOX "*** Busco Si existe archivo de Inicio

this.crutafile = GETENV("SystemRoot") + "\system32\DbmsFox.ini"

Page 220: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 31 -

IF .not. FILE(this.crutafile)MESSAGEBOX("No se encuentra el archivo de Configuración, por favor revise", 16, this.cmensistema )this.bexistefile = .f.ELSEthis.bexistefile = .T.ENDIFthis.ctiposesion = this.busca_datos("Ambiente","Sesion")this.crutaexe = this.busca_datos("Rutas","Exe")this.crutafte = this.busca_datos("Rutas","Fte")THIS.CRUtatxt = this.busca_datos("Rutas","Txt")this.crutadbf = this.busca_datos("Rutas","DBF")this.cusubd = this.busca_datos("UsuarioBd","nombre")

Page 221: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 32 -

1.6 Modulo de Seguridades

1.6.1 Usuarios – método muestra Datos

lcsql = "Select username,account_status,NVL(to_char(expiry_date,'dd- mon -yyyy'),' ')expiry_date,NVL(default_tablespace,' ') default_tablespace, "lcsql = lcsql + " NVL(temporary_tablespace,' ') temporary_tablespace, profile, NVL(to_char(created,'dd- mon -yyyy'),'') created from DBA_users order by username"liresult = thisform.sqlexec(lcsql,"tmpCreaUsers")IF liresult < 0

men = "Error al actualizar los Usuarios - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)thisform.Release

ENDIF

SELECT TmpUsersDELETE ALL

SELECT tmpCreaUsersSCAN

SELECT TmpUsersAPPEND BLANKreplace TmpUsers.username WITH TmpCreaUsers.username,;

TmpUsers.account_status WITHTmpCreaUsers.account_status,;

TmpUsers.expiry_date WITH TmpCreaUsers.expiry_date,;TmpUsers.default_tablespace WITH TmpCreaUsers.default_tablespace,;TmpUsers.temporary_tablespace WITH

TmpCreaUsers.temporary_tablespace,;TmpUsers.profile WITH TmpCreaUsers.profile,;TmpUsers.created WITH TmpCreaUsers.created

ENDSCAN

SELECT TmpUsersCOUNT TO linumthisform.lblcuenta.Caption = ALLTRIM(STR(linum,10)) + " Usuarios"

SELECT TmpUsersGO TOPthisform.grid1.Refresh

Frmbase1 – método init

Page 222: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 33 -

LPARAMETERS lcuserlcusuario = lcuser

IF LEN(ALLTRIM(lcuser)) > 0thisform.Caption = "Editar Usuario: &lcusuario"thisform.lblglosa.Caption = lcusuariothisform.pguser.pggeneral.tnom.Value = ALLTRIM(lcuser)thisform.pguser.pggeneral.tnom.Enabled = .F.

ELSEthisform.Caption = "Crear Usuario: &lcusuario"thisform.lblglosa.Caption = lcusuariothisform.pguser.pggeneral.tnom.Value = ALLTRIM(lcuser)thisform.pguser.pggeneral.tnom.Enabled = .T.

ENDIF

lcsql = "select * from dba_users where RTRIM(username)=RTRIM(?lcusuario)"liresult = thisform.sqlexec(lcsql,"tmpresul")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmpresulGO TOPDO CASE

CASE ALLTRIM(tmpresul.password)=="GLOBAL"thisform.pguser.pggeneral.cautentica.ListIndex = 3

CASE ALLTRIM(tmpresul.password)=="EXTERNAL"thisform.pguser.pggeneral.cautentica.ListIndex = 2

OTHERWISEthisform.pguser.pggeneral.cautentica.ListIndex = 1thisform.pguser.pggeneral.tintrocontra.Value = ALLTRIM(tmpresul.password)thisform.pguser.pggeneral.ticonfcontra.Value = ALLTRIM(tmpresul.password)IF LIKE('*EXPIRED*',ALLTRIM(tmpresul.account_status))

thisform.pguser.pggeneral.chkvence.Value = 1thisform.pguser.pggeneral.chkvence.Caption = "Vencido"thisform.pguser.pggeneral.chkvence.Enabled = .f.

ELSEthisform.pguser.pggeneral.chkvence.Value = 0thisform.pguser.pggeneral.chkvence.Caption = "Forzar Vencimiento de

Contraseña Ahora"thisform.pguser.pggeneral.chkvence.Enabled = .T.

ENDIFENDCASElcdato = thisform.pguser.pggeneral.cautentica.ValueDO CASE

CASE ALLTRIM(lcdato) = "Externo"thisform.pguser.pggeneral.lblcon1.Visible = .F.thisform.pguser.pggeneral.lblcon2.Visible = .F.thisform.pguser.pggeneral.ticonfcontra.Visible = .F.thisform.pguser.pggeneral.tintrocontra.Visible = .F.

Page 223: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 34 -

thisform.pguser.pggeneral.chkvence.Visible = .F.thisform.pguser.pggeneral.lblexterno.Visible = .T.thisform.pguser.pggeneral.lblglobal.Visible = .F.

CASE ALLTRIM(lcdato) = "Global"thisform.pguser.pggeneral.lblcon1.Visible = .F.thisform.pguser.pggeneral.lblcon2.Visible = .F.thisform.pguser.pggeneral.ticonfcontra.Visible = .F.thisform.pguser.pggeneral.tintrocontra.Visible = .F.thisform.pguser.pggeneral.chkvence.Visible = .F.thisform.pguser.pggeneral.lblexterno.Visible = .F.thisform.pguser.pggeneral.lblglobal.Visible = .T.

OTHERWISEthisform.pguser.pggeneral.lblcon1.Visible = .t.thisform.pguser.pggeneral.lblcon2.Visible = .t.thisform.pguser.pggeneral.ticonfcontra.Visible = .t.thisform.pguser.pggeneral.tintrocontra.Visible = .t.thisform.pguser.pggeneral.chkvence.Visible = .t.thisform.pguser.pggeneral.lblexterno.Visible = .f.thisform.pguser.pggeneral.lblglobal.Visible = .f.

ENDCASE

SELECT tmpresulGO TOPFOR i=1 TO thisform.pguser.Pggeneral.cperfil.ListCount

IF ALLTRIM(thisform.pguser.Pggeneral.cperfil.List(i,1))==ALLTRIM(tmpresul.profile)thisform.pguser.Pggeneral.cperfil.ListIndex = iEXIT

ENDIFENDFOR

IF thisform.pguser.pggeneral.tnom.Enabled = .F.SELECT tmpresulGO TOPFOR i=1 TO thisform.pguser.Pggeneral.cdefecto.ListCount

IFALLTRIM(thisform.pguser.Pggeneral.cdefecto.List(i,1))==ALLTRIM(tmpresul.default_tablespace)

thisform.pguser.Pggeneral.cdefecto.ListIndex = iEXIT

ENDIFENDFOR

IF ALLTRIM(tmpresul.account_status)=='OPEN'thisform.pguser.pggeneral.optestado.optdesbloq.Value = 1thisform.pguser.pggeneral.optestado.optbloq.Value = 0

ELSEthisform.pguser.pggeneral.optestado.optdesbloq.Value = 0thisform.pguser.pggeneral.optestado.optbloq.Value = 1

ENDIFELSE

SELECT tmpresulGO TOP

Page 224: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 35 -

FOR i=1 TO thisform.pguser.Pggeneral.cdefecto.ListCountIF ALLTRIM(thisform.pguser.Pggeneral.cdefecto.List(i,1))=="USERS"

thisform.pguser.Pggeneral.cdefecto.ListIndex = iEXIT

ENDIFENDFOR

thisform.pguser.pggeneral.optestado.optdesbloq.Value = 1thisform.pguser.pggeneral.optestado.optbloq.Value = 0

ENDIF

SELECT tmpresulGO TOPFOR i=1 TO thisform.pguser.Pggeneral.ctemporal.ListCount

IFALLTRIM(thisform.pguser.Pggeneral.ctemporal.List(i,1))==ALLTRIM(tmpresul.temporary_tablespace)

thisform.pguser.Pggeneral.ctemporal.ListIndex = iEXIT

ENDIFENDFOR

**Mostrar los Roles asignadoslcsql = "select granted_role,case admin_option when 'NO' then 0 else 1 end admin_option,case

default_role when 'NO' then 0 else 1 end default_role "lcsql = lcsql + "from dba_role_privs where rtrim(grantee)=RTRIM(?lcusuario) order by granted_role "liresult = thisform.sqlexec(lcsql,"tmprolasig")IF liresult < 0

men = "Error al buscar los Roles Asignados - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT TmpRolAsigINDEX on ALLTRIM(TmpRolAsig.granted_role) TAG rol

IF USED("Tmprolasig")with thisform.pguser.pgrol.grid1

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""

.Column3.Controlsource = ""SELECT TmpRolAsigGO TOP.Recordsource = "TmpRolAsig".Column1.Controlsource = "TmpRolAsig.granted_role".Column2.Controlsource = "TmpRolAsig.admin_option".Column3.Controlsource = "TmpRolAsig.default_role"

.refreshENDWITH

ENDIF

Page 225: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 36 -

SELECT TmpRolAsigSEEK "RESOURCE"IF FOUND()

thisform.inactiva()ENDIF

IF thisform.pguser.pggeneral.tnom.Enabled = .T.SELECT TmpRolAsigAPPEND BLANKreplace TmpRolAsig.granted_role WITH "CONNECT",;

TmpRolAsig.admin_option WITH 0,;TmpRolAsig.default_role WITH 1

ELSESELECT TmpRolAsigSCAN

SELECT TmpRolPriObjAPPEND BLANKreplace TmpRolPriObj.categoria WITH 'ROL',;

TmpRolPriObj.tipo WITHALLTRIM(TmpRolAsig.granted_role),;

TmpRolPriObj.admin WITHTmpRolAsig.admin_option,;

TmpRolPriObj.defecto WITH TmpRolAsig.default_roleENDSCAN

ENDIF

SELECT TmpRolAsigGO TOPthisform.pguser.pgrol.grid1.Refresh

**Mostrar los Privilegios del Sistema Asignadoslcsql = "select privilege,case admin_option when 'NO' then 0 else 1 end admin_option from dba_sys_privs

where RTRIM(grantee)=RTRIM(?lcusuario) order by privilege"liresult = thisform.sqlexec(lcsql,"TmpPrivSis")IF liresult < 0

men = "Error al buscar los Privilegios del Sistema Asignados - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT TmpPrivSisINDEX on ALLTRIM(TmpPrivSis.privilege) TAG rol

IF USED("TmpPrivSis")with thisform.pguser.pgsis.grid1

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""SELECT TmpPrivSisGO TOP.Recordsource = "TmpPrivSis".Column1.Controlsource = "TmpPrivSis.privilege"

Page 226: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 37 -

.Column2.Controlsource = "TmpPrivSis.admin_option".refresh

ENDWITHENDIF

SELECT TmpPrivSisGO TOPSCAN

SELECT TmpRolPriObjAPPEND BLANKreplace TmpRolPriObj.categoria WITH 'SIS',;

TmpRolPriObj.tipo WITH ALLTRIM(TmpPrivSis.privilege),;TmpRolPriObj.admin WITH TmpPrivSis.admin_option

ENDSCAN

SELECT TmpPrivSisGO TOPthisform.pguser.pgsis.grid1.Refresh

**Llenar Privilegios de Objetos** 1. Llenar el treeview de Objetosthisform.llena_trwobjeto()

** 2. Llenar privilegios de objetosthisform.llena_privobj(lcusuario)

** Llenar las cuotasthisform.llena_cuotas(lcusuario)

** Llenar los Grupos de Consumidoresthisform.llena_grupos(lcusuario)

IF thisform.pguser.pggeneral.tnom.Enabled = .T.thisform.cambiostotales()

ENDIF

thisform.pguser.pggeneral.tnom.SetFocus()

Llena_trwObetos

lcsql = "select distinct owner from dba_objects order by owner "liresult = thisform.sqlexec(lcsql,"tmpEsquema")IF liresult< 0

men = "Error al buscar los datos de los esquemas - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

Page 227: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 38 -

DIMENSION m_tipo(13)m_tipo(1) = "Tipos"m_tipo(2) = "Secuencias"m_tipo(3) = "Instantáneas"m_tipo(4) = "Sinónimos"m_tipo(5) = "Tablas"m_tipo(6) = "Vistas"m_tipo(7) = "Funciones"m_tipo(8) = "Paquetes"m_tipo(9) = "Cuerpo de Paquete"m_tipo(10) = "Procedimientos"m_tipo(11) = "Colas"m_tipo(12) = "Clases java"m_tipo(13) = "Origenes Java"

likey = 0SELECT tmpEsquemaSCAN

likey = likey + 1linivelkey1 = ALLTRIM(STR(likey)) + '_'thisform.pguser.pgobjeto.trwObjeto.Nodes.Add(,1, ALLTRIM(STR(likey))+'_',

ALLTRIM(TmpEsquema.owner),1,1)

FOR i=1 TO 13likey = likey + 1linivelkey2 = ALLTRIM(STR(likey)) + '_'thisform.pguser.pgobjeto.trwObjeto.Nodes.Add(linivelkey1, 4,

ALLTRIM(STR(likey))+'_', m_tipo(i),2,2)NEXT

ENDSCAN

Llena_privobj

LPARAMETERS cdatolcuser = cdatolcsql = "Select privilege,owner,table_name, case grantable when 'NO' then 0 else 1 end grantable "lcsql = lcsql + " from dba_tab_privs where RTRIM(grantee)=RTRIM(?lcuser) "liresult = thisform.sqlexec(lcsql,"TmpPrivObj")IF liresult < 0

men = "Error al buscar los Privilegios de Objetos Otorgados - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIFSELECT TmpPrivObjINDEX on ALLTRIM(TmpPrivObj.privilege) TAG rol

IF USED("TmpPrivObj")WITH thisform.pguser.pgobjeto.grid1

.Recordsource = ""

Page 228: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 39 -

.Column1.Controlsource = ""

.Column2.Controlsource = ""

.Column3.Controlsource = ""

.Column4.Controlsource = ""

SELECT TmpPrivObjGO TOP.Recordsource = "TmpPrivObj".Column1.Controlsource = "TmpPrivObj.privilege".Column2.Controlsource = "TmpPrivObj.grantable".Column3.Controlsource = "TmpPrivObj.owner".Column4.Controlsource = "TmpPrivObj.table_name"

.refreshENDWITH

ENDIF

SELECT TmpPrivSisSEEK "UNLIMITED TABLESPACE"IF FOUND()

thisform.inactiva()ENDIF

SELECT TmpPrivObjGO TOPSCAN

SELECT TmpRolPriObjAPPEND BLANKreplace TmpRolPriObj.categoria WITH 'OBJ',;

TmpRolPriObj.tipo WITH ALLTRIM(TmpPrivObj.privilege),;TmpRolPriObj.objeto WITH

ALLTRIM(TmpPrivObj.table_name),;TmpRolPriObj.esquema WITH ALLTRIM(TmpPrivObj.owner),;TmpRolPriObj.admin WITH TmpPrivObj.grantable

ENDSCAN

SELECT TmpPrivObjGO TOPthisform.pguser.pgobjeto.grid1.Refresh

Llena_listadogrupo

LPARAMETERS cuserlcuser = cuser

lcsql = "select consumer_group "lcsql = lcsql + " from dba_rsrc_consumer_groups "lcsql = lcsql + " where consumer_group not in (Select granted_group fromDBA_RSRC_CONSUMER_GROUP_PRIVS where rtrim(grantee)=RTRIM(?lcuser)) "lcsql = lcsql + " and rtrim(consumer_group)<>'OTHER_GROUPS'"

Page 229: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 40 -

liresult = thisform.sqlexec(lcsql,"tmpconsu")SELECT tmpconsuSCAN

thisform.pguser.pggrupo.lstconsumer.AddItem(tmpconsu.consumer_group)ENDSCAN

Llena_grupos

LPARAMETERS cdatolcuser = cdatolcsql = "SELECT granted_group,case grant_option when 'NO' then 0 else 1 end grant_option, "lcsql = lcsql + " case initial_group when 'NO' then 0 else 1 end initial_group "lcsql = lcsql + " FROM DBA_RSRC_CONSUMER_GROUP_PRIVS "lcsql = lcsql + " where RTRIM(grantee)=RTRIM(?lcuser) "liresult = thisform.sqlexec(lcsql,"TmpGruAsig")IF liresult < 0

men = "Error al buscar los grupos de consumidores Otorgados - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT TmpGruAsigINDEX on ALLTRIM(TmpGruAsig.granted_group) TAG grupo

IF USED("TmpGruAsig")WITH thisform.pguser.pggrupo.grid1

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""

.Column3.Controlsource = ""SELECT TmpGruAsigGO TOP.Recordsource = "TmpGruAsig".Column1.Controlsource = "TmpGruAsig.granted_group".Column2.Controlsource = "TmpGruAsig.grant_option".Column3.Controlsource = "TmpGruAsig.initial_group"

.refreshENDWITH

ENDIF

SELECT TmpGruAsigGO TOPSCAN

SELECT TmpRolPriObjAPPEND BLANKreplace TmpRolPriObj.categoria WITH 'GRP',;

TmpRolPriObj.tipo WITH ALLTRIM(TmpGruAsig.granted_group),;TmpRolPriObj.admin WITH TmpGruAsig.grant_option,;TmpRolPriObj.defecto WITH TmpGruAsig.initial_group

Page 230: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 41 -

ENDSCAN

SELECT TmpGruAsigGO TOPthisform.pguser.pggrupo.Refresh

thisform.llena_listadogrupo(lcuser)

Llena_cuotas

LPARAMETERS lcuserlcdato = lcuser

lcsql = "select tablespace_name,tablespace_name tamanio from dba_tablespaces order bytablespace_name"

liresult = thisform.sqlexec(lcsql,"tmptabcuo")IF liresult < 0 THEN

men='Error al momento de extraer los datos de los tablespaces en cuotas - ' +MESSAGE()

thisform.log_error(lcsql)MESSAGEBOX(men,64,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmptabcuoreplace ALL tmptabcuo.tamanio WITH '<ninguno>'

SELECT TmpTabCuoINDEX on ALLTRIM(TmpTabCuo.tablespace_name) TAG llave

IF USED("TmpTabCuo")with thisform.pguser.pgcuota.grid1

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""SELECT TmpTabCuoGO TOP.Recordsource = "TmpTabCuo".Column1.Controlsource = "TmpTabCuo.tablespace_name".Column2.Controlsource = "TmpTabCuo.tamanio"

.refreshENDWITH

ENDIF

lcsql = "Select * from dba_ts_quotas where RTRIM(username)=RTRIM(?lcdato) ORDER BYTABLESPACE_NAME"

liresult = thisform.sqlexec(lcsql,"TmpCuotas")IF liresult < 0

men = "Error al consultar las Cuotas del Usuario - " + MESSAGE()thisform.log_error(lcsql)

Page 231: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 42 -

MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT TmpCuotasSCAN

SELECT TmpTabCuoGO TOPSEEK ALLTRIM(TmpCuotas.tablespace_name)IF FOUND()

SELECT TmpTabCuoreplace TmpTabCuo.tamanio WITH

ALLTRIM(STR((TmpCuotas.max_bytes/1024),10)) + ' K'ENDIF

ENDSCAN

SELECT TmpTabCuoSCAN

SELECT TmpRolPriObjAPPEND BLANKreplace TmpRolPriObj.categoria WITH 'QTA',;

TmpRolPriObj.tipo WITHALLTRIM(TmpTabCuo.tablespace_name),;

TmpRolPriObj.objeto WITHALLTRIM(TmpTabCuo.tamanio)

ENDSCAN

SELECT TmpTabCuoGO TOPthisform.pguser.pgcuota.grid1.Refreshthisform.pguser.pgcuota.opt.Enabled = .F.thisform.pguser.pgcuota.cmbescala.ListIndex = 1

SELECT TmpRolAsigSEEK 'RESOURCE'IF !FOUND()

SELECT TmpPrivSisSEEK 'UNLIMITED TABLESPACE'IF !FOUND()

thisform.activa()ELSE

thisform.inactiva()ENDIF

ELSEthisform.inactiva()

ENDIF

Page 232: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 43 -

Cmdaceptar.click

IF !EMPTY(thisform.editsql.Value)lcsql = ALLTRIM(thisform.editsql.Value)lcsqlT = ""lcsqlG = ""lcsqlC = ""libandera = 0FOR i=0 TO LEN(lcsql)

lcsqlT = lcsqlT + SUBSTR(lcsql,i,1)lcsqlG = lcsqlG + SUBSTR(lcsql,i,5)IF lcsqlG = "BEGIN" OR libandera = 1

libandera = 1lcsqlC = lcsqlC + SUBSTR(lcsql,i,1)IF LIKE('*END;*',lcsqlC)

liresult = thisform.sqlexec(lcsqlC,"")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsqlC)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIFlcsqlC = ""lcsqlG = ""

ENDIFELSE

IF libandera = 0IF SUBSTR(lcsql,i,1) = ";"

liresult = thisform.sqlexec(lcsqlT,"")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsqlT)

MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIFlcsqlT = ""

ENDIFENDIF

ENDIFlcsqlG = ""

ENDFORENDIF

thisform.editsql.Value = ""thisform.Release

1.6.2 Roles

Page 233: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 44 -

Muestra_datos

lcsql = "Select role, password_required from dba_roles order by role"liresult = thisform.sqlexec(lcsql,"tmpr")IF liresult < 0

men = "Error al buscar los Roles - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)thisform.Release

ENDIF

SELECT tmprolesZAP

SELECT tmprSCAN

SELECT tmprolesAPPEND BLANKreplace tmproles.role WITH Tmpr.role,;

tmproles.password_required WITH Tmpr.password_required

ENDSCAN

SELECT TmprolesCOUNT TO linumthisform.lblroles.Caption = ALLTRIM(STR(linum,10)) + " Roles"

SELECT TmprolesGO TOPthisform.grid1.Refresh

frmbase.init()

LPARAMETERS lcrollcroles = lcrol

IF LEN(ALLTRIM(lcrol)) > 0thisform.Caption = "Editar Rol: &lcroles"thisform.lblglosarol.Caption = lcrolesthisform.pgroles.pggeneral.tnom.Value = ALLTRIM(lcrol)thisform.pgroles.pggeneral.tnom.Enabled = .F.

ELSEthisform.Caption = "Crear Rol: &lcroles"thisform.lblglosarol.Caption = lcrolesthisform.pgroles.pggeneral.tnom.Value = ALLTRIM(lcrol)thisform.pgroles.pggeneral.tnom.Enabled = .T.

ENDIF

Page 234: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 45 -

lcsql = "select * from dba_roles where RTRIM(role)=RTRIM(?lcroles)"liresult = thisform.sqlexec(lcsql,"tmpresul")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmpresulGO TOPDO CASE

CASE ALLTRIM(tmpresul.password_required)=="GLOBAL"thisform.pgroles.pggeneral.cautentica.ListIndex = 4CASE ALLTRIM(tmpresul.password_required)=="EXTERNAL"

thisform.pgroles.pggeneral.cautentica.ListIndex = 3CASE ALLTRIM(tmpresul.password_required)=="NO"

thisform.pgroles.pggeneral.cautentica.ListIndex = 1

OTHERWISEIF thisform.pgroles.pggeneral.tnom.Value = ""

thisform.pgroles.pggeneral.cautentica.ListIndex = 1else

thisform.pgroles.pggeneral.cautentica.ListIndex = 2thisform.pgroles.pggeneral.tintrocontra.Value =

ALLTRIM(tmpresul.password_required)+ "*****"thisform.pgroles.pggeneral.ticonfcontra.Value =

ALLTRIM(tmpresul.password_required) + "*****"endif

ENDCASElcdato = thisform.Pgroles.pggeneral.Cautentica.Value

DO CASECASE ALLTRIM(lcdato) = "Ninguno"

thisform.pgroles.pggeneral.label4.Visible = .F.thisform.pgroles.pggeneral.label5.Visible = .F.thisform.pgroles.pggeneral.tintrocontra.Visible = .F.thisform.pgroles.pggeneral.ticonfcontra.Visible = .F.thisform.pgroles.pggeneral.lblexternorol.Visible = .F.thisform.pgroles.pggeneral.lblglobalrol.Visible = .F.thisform.pgroles.pggeneral.lblningunorol.Visible = .T.

CASE ALLTRIM(lcdato) = "Global"thisform.pgroles.pggeneral.label4.Visible = .F.thisform.pgroles.pggeneral.label5.Visible = .F.thisform.pgroles.pggeneral.tintrocontra.Visible = .F.thisform.pgroles.pggeneral.ticonfcontra.Visible = .F.thisform.pgroles.pggeneral.lblexternorol.Visible = .F.thisform.pgroles.pggeneral.Lblningunorol.Visible = .F.thisform.pgroles.pggeneral.lblglobalrol.Visible = .T.

CASE ALLTRIM(lcdato) = "Externo"thisform.pgroles.pggeneral.label4.Visible = .F.thisform.pgroles.pggeneral.label5.Visible = .F.

Page 235: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 46 -

thisform.pgroles.pggeneral.tintrocontra.Visible = .F.thisform.pgroles.pggeneral.ticonfcontra.Visible = .F.thisform.pgroles.pggeneral.Lblningunorol.Visible = .F.thisform.pgroles.pggeneral.lblglobalrol.Visible = .F.thisform.pgroles.pggeneral.lblexternorol.Visible = .T.

OTHERWISEthisform.pgroles.pggeneral.label4.Visible = .T.thisform.pgroles.pggeneral.label5.Visible = .T.thisform.pgroles.pggeneral.tintrocontra.Visible = .T.thisform.pgroles.pggeneral.ticonfcontra.Visible = .T.thisform.pgroles.pggeneral.Lblningunorol.Visible = .F.thisform.pgroles.pggeneral.lblglobalrol.Visible = .F.thisform.pgroles.pggeneral.lblexternorol.Visible = .F.

ENDCASE

**Mostrar los Roles asignadoslcsql = "select granted_role,case admin_option when 'NO' then 0 else 1 end admin_option "lcsql = lcsql + "from dba_role_privs where rtrim(grantee)=RTRIM(?lcroles) order by granted_role "liresult = thisform.sqlexec(lcsql,"tmprolasig")IF liresult < 0

men = "Error al buscar los Roles Asignados - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT TmpRolAsigINDEX on ALLTRIM(TmpRolAsig.granted_role) TAG rol

IF USED("Tmprolasig")with thisform.pgroles.pgrol.grid1

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""SELECT TmpRolAsigGO TOP.Recordsource = "TmpRolAsig".Column1.Controlsource = "TmpRolAsig.granted_role".Column2.Controlsource = "TmpRolAsig.admin_option"

.refreshENDWITH

ENDIF

**SELECT TmpRolAsig**SEEK "RESOURCE"**IF FOUND()

**thisform.inactiva()**ENDIF

SELECT TmpRolAsigSCAN

SELECT TmpRolPriObj

Page 236: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 47 -

APPEND BLANKreplace TmpRolPriObj.categoria WITH 'ROL',;

TmpRolPriObj.tipo WITH ALLTRIM(TmpRolAsig.granted_role),;TmpRolPriObj.admin WITH TmpRolAsig.admin_option

ENDSCAN

SELECT TmpRolAsigGO TOPthisform.pgroles.pgrol.grid1.Refresh

**Mostrar los Privilegios de Sistemalcsql = "select privilege,case admin_option when 'NO' then 0 else 1 end admin_option "lcsql = lcsql + "from dba_sys_privs where rtrim(grantee)=RTRIM(?lcroles) order by privilege "liresult = thisform.sqlexec(lcsql,"tmprolasigsis")IF liresult < 0

men = "Error al buscar Privilegios de Sistemas - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT TmprolasigsisINDEX on ALLTRIM(TmpRolAsigsis.privilege) TAG rol

IF USED("Tmprolasigsis")with thisform.pgroles.pgsistema.grid2

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""SELECT TmpRolAsigsisGO TOP.Recordsource = "TmpRolAsigsis".Column1.Controlsource = "TmpRolAsigsis.privilege".Column2.Controlsource = "TmpRolAsigsis.admin_option"

.refreshENDWITH

ENDIF

SELECT TmpRolAsigsisGO TOPSCAN

SELECT TmpRolPriObjAPPEND BLANKreplace TmpRolPriObj.categoria WITH 'SIS',;

TmpRolPriObj.tipo WITH ALLTRIM(TmpRolAsigsis.privilege),;TmpRolPriObj.admin WITH

TmpRolAsigsis.admin_optionENDSCAN

SELECT TmpRolAsigsisGO TOP

Page 237: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 48 -

thisform.pgroles.pgsistema.grid2.Refresh

**Mostrar los Privilegios de las tablas(objeto) que han sido otorgados a los roleslcsql = "select table_name,privilege,owner "lcsql = lcsql + "from dba_tab_privs where rtrim(grantee)=RTRIM(?lcroles) order by privilege "liresult = thisform.sqlexec(lcsql,"tmprolasigobj")IF liresult < 0

men = "Error al buscar Privilegios de Objetos - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT TmpRolAsigobjINDEX on ALLTRIM(TmpRolAsigobj.privilege) TAG rol

IF USED("Tmprolasigobj")with thisform.pgroles.pgobjeto.grid3

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""

.Column3.Controlsource = ""

SELECT TmpRolAsigobjGO TOP.Recordsource = "TmpRolAsigobj".Column1.Controlsource = "TmpRolAsigobj.privilege".Column2.Controlsource = "TmpRolAsigobj.owner".Column3.Controlsource = "TmpRolAsigobj.table_name"

.refreshENDWITH

ENDIF

SELECT TmpRolAsigobjGO TOPSCAN

SELECT TmpRolPriObjAPPEND BLANKreplace TmpRolPriObj.categoria WITH 'OBJ',;

TmpRolPriObj.tipo WITH ALLTRIM(TmpRolAsigobj.privilege),;TmpRolPriObj.esquema WITH ALLTRIM(TmpRolAsigobj.owner),;TmpRolPriObj.objeto WITH

ALLTRIM(TmpRolAsigobj.table_name)ENDSCAN

SELECT TmpRolAsigobjGO TOPthisform.pgroles.pgobjeto.grid3.Refresh

**Llenar Privilegios de Objetos

Page 238: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 49 -

** 1. Llenar el treeview de Objetosthisform.llena_trwobjetorol()** Llena los Grupos de Consumidores los cuales estan asignados a los Rolesthisform.llena_consumidores_roles(lcroles)** Llena los Grupos de Consumidores los cuales estan asignados a los Rolesthisform.llena_consum_no_rol(lcroles)

IF thisform.Pgroles.pggeneral.Tnom.Enabled = .T.thisform.CAmbios_totalesrol ()

ENDIF

Asignar_grupoconsumidoreslcsql = ''

lcinicial = ''SELECT TmpConsumRollipos = RECNO('TmpConsumRol')lcsqlrol = ""SELECT TmpRolPriObjSCAN FOR ALLTRIM(TmpRolPriObj.categoria)='GRP'

SELECT TmpConsumRolSEEK ALLTRIM(TmpRolPriObj.tipo)IF !FOUND()

lcsql = lcsql + "BEGINdbms_resource_manager_privs.revoke_switch_consumer_group("

lcsql = lcsql + " revokee_name=>'" +ALLTRIM(thisform.pgroles.pggeneral.tnom.Value) + "', "

lcsql = lcsql + " consumer_group=>'" + ALLTRIM(TmpRolPriObj.tipo) + "');END;"ENDIF

ENDSCANSELECT TmpConsumRollint = RECCOUNT()SCAN

SELECT TmpRolPriObjSEEK 'GRP'+ALLTRIM(TmpConsumRol.granted_group)IF !FOUND()

**IF INT(TmpConsumRol.grant_option) = 0lcsql = lcsql + "BEGIN

dbms_resource_manager_privs.grant_switch_consumer_group("lcsql = lcsql + " grantee_name =>'" +

ALLTRIM(thisform.pgroles.pggeneral.tnom.Value) + "', "lcsql = lcsql + " consumer_group =>'" +

ALLTRIM(TmpConsumRol.granted_group) + "',"lcsql = lcsql + " grant_option =>FALSE);END;"

**ELSE**lcsql = lcsql + "BEGIN

dbms_resource_manager_privs.grant_switch_consumer_group("**lcsql = lcsql + " grantee_name =>'" +

ALLTRIM(thisform.pguser.pggeneral.tnom.Value) + "', "**lcsql = lcsql + " consumer_group =>'" +

ALLTRIM(TmpConsumRol.granted_group) + "',"

Page 239: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 50 -

**lcsql = lcsql + " grant_option =>TRUE);END;"**ENDIF

ENDIFENDSCAN

IF lipos > lintlipos = lint

ENDIF

IF lipos > 0SELECT TmpConsumRolGO lipos

ENDIF

thisform.editsql.Value = thisform.editsql.Value + lcsql

asignar_privilegios_tablas

lcsql = ''libandera = 0lcsqlrol = ""SELECT tmprolasigobjlipos = RECNO('tmprolasigobj')

SELECT TmpRolPriObjDELETE TAG llave

SELECT TmpRolPriObjINDEX on

ALLTRIM(TmpRolPriObj.tipo)+ALLTRIM(TmpRolPriObj.esquema)+ALLTRIM(TmpRolPriObj.objeto) TAG llave1

SELECT tmprolasigobjDELETE TAG rol

SELECT tmprolasigobjINDEX on

ALLTRIM(tmprolasigobj.privilege)+ALLTRIM(tmprolasigobj.owner)+ALLTRIM(tmprolasigobj.table_name) TAG rol1

SELECT TmpRolPriObjSCAN FOR ALLTRIM(TmpRolPriObj.categoria)='OBJ'

SELECT tmprolasigobjSEEK

ALLTRIM(TmpRolPriObj.tipo)+ALLTRIM(TmpRolPriObj.esquema)+ALLTRIM(TmpRolPriObj.objeto)IF !FOUND()

lcsql = lcsql + "REVOKE " + ALLTRIM(TmpRolPriObj.tipo) + " ON " +ALLTRIM(TmpRolPriObj.esquema) + "." + ALLTRIM(TmpRolPriObj.objeto) + " FROM " +ALLTRIM(thisform.lblglosarol.Caption) +";"

libandera = 1**ELSE

Page 240: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 51 -

**IF TmpRolPriObj.admin <> INT(tmprolasigobj.grantable)**lcsql = lcsql + "REVOKE " + ALLTRIM(TmpRolPriObj.tipo) + " ON " +

ALLTRIM(TmpRolPriObj.esquema) + "." + ALLTRIM(TmpRolPriObj.objeto) + " FROM " +ALLTRIM(thisform.lblglosarol.Caption) +";"

**IF INT(tmprolasigobj.grantable) = 0**lcsql = lcsql + "GRANT " + ALLTRIM(TmpRolPriObj.tipo) + " ON

" + ALLTRIM(TmpRolPriObj.esquema) + "." + ALLTRIM(TmpRolPriObj.objeto) + " TO " +ALLTRIM(thisform.lblglosarol.Caption) + ";"

**ELSE**lcsql = lcsql + "GRANT " + ALLTRIM(TmpRolPriObj.tipo) + " ON

" + ALLTRIM(TmpRolPriObj.esquema) + "." + ALLTRIM(TmpRolPriObj.objeto) + " TO " +ALLTRIM(thisform.lblglosarol.Caption) + ";"

**ENDIF**ENDIF

ENDIFENDSCAN

SELECT tmprolasigobjlint = RECCOUNT()SCAN

SELECT TmpRolPriObjSEEK

ALLTRIM(tmprolasigobj.privilege)+ALLTRIM(tmprolasigobj.owner)+ALLTRIM(tmprolasigobj.table_name)IF !FOUND()

lcsql = lcsql + "GRANT " + ALLTRIM(tmprolasigobj.privilege) + " ON " +ALLTRIM(tmprolasigobj.owner) + "." + ALLTRIM(tmprolasigobj.table_name) + " TO " +ALLTRIM(thisform.lblglosarol.Caption) + ";"

ENDIFENDSCAN

SELECT TmpRolPriObjDELETE TAG llave1

SELECT TmpRolPriObjINDEX on ALLTRIM(TmpRolPriObj.categoria)+ALLTRIM(TmpRolPriObj.tipo) TAG llave

SELECT tmprolasigobjDELETE TAG rol1

SELECT tmprolasigobjINDEX on ALLTRIM(tmprolasigobj.privilege) TAG rol

IF lipos > lintlipos = lint

ENDIF

IF lipos > 0SELECT tmprolasigobjGO lipos

ENDIF

thisform.editsql.Value = thisform.editsql.Value + lcsql

Page 241: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 52 -

Asigna_roles

lcsql = ''libandera = 0

SELECT TmpRolAsiglipos = RECNO('TmpRolAsig')

lcsqlrol = ""SELECT TmpRolPriObjSCAN FOR ALLTRIM(TmpRolPriObj.categoria)='ROL'

SELECT TmpRolAsigSEEK ALLTRIM(TmpRolPriObj.tipo)IF !FOUND()

lcsql = lcsql + "REVOKE " + ALLTRIM(TmpRolPriObj.tipo) + " FROM " +ALLTRIM(thisform.lblglosarol.Caption) +";"

libandera = 1ELSE

IF TmpRolPriObj.admin <> INT(TmpRolAsig.admin_option)lcsql = lcsql + "REVOKE " + ALLTRIM(TmpRolPriObj.tipo) + " FROM " +

ALLTRIM(thisform.lblglosarol.Caption) +";"IF INT(TmpRolAsig.admin_option) = 0

lcsql = lcsql + "GRANT " + ALLTRIM(TmpRolPriObj.tipo) + " TO "+ ALLTRIM(thisform.lblglosarol.Caption) + ";"

ELSElcsql = lcsql + "GRANT " + ALLTRIM(TmpRolPriObj.tipo) + " TO "

+ ALLTRIM(thisform.lblglosarol.Caption) + " WITH ADMIN OPTION;"ENDIF

ENDIFENDIF

ENDSCAN

SELECT TmpRolAsiglint = RECCOUNT()SCAN

SELECT TmpRolPriObjSEEK 'ROL'+ALLTRIM(TmpRolAsig.granted_role)IF !FOUND()

IF INT(TmpRolAsig.admin_option) = 0lcsql = lcsql + "GRANT " + ALLTRIM(TmpRolAsig.granted_role) + " TO " +

ALLTRIM(thisform.lblglosarol.Caption) + ";"ELSE

lcsql = lcsql + "GRANT " + ALLTRIM(TmpRolAsig.granted_role) + " TO " +ALLTRIM(thisform.lblglosarol.Caption) + " WITH ADMIN OPTION;"

ENDIFENDIF

ENDSCAN

IF lipos > lintlipos = lint

Page 242: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 53 -

ENDIF

IF lipos > 0SELECT TmpRolAsigGO lipos

ENDIF

thisform.editsql.Value = lcsql

cmdaceptar.click

IF !EMPTY(thisform.editsql.Value)lcsql = ALLTRIM(thisform.editsql.Value)lcsqlT = ""lcsqlG = ""lcsqlC = ""libandera = 0FOR i=0 TO LEN(lcsql)

lcsqlT = lcsqlT + SUBSTR(lcsql,i,1)lcsqlG = lcsqlG + SUBSTR(lcsql,i,5)IF lcsqlG = "BEGIN" OR libandera = 1

libandera = 1lcsqlC = lcsqlC + SUBSTR(lcsql,i,1)IF LIKE('*END;*',lcsqlC)

liresult = thisform.sqlexec(lcsqlC,"")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsqlC)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIFlcsqlC = ""lcsqlG = ""

ENDIFELSE

IF libandera = 0IF SUBSTR(lcsql,i,1) = ";"

liresult = thisform.sqlexec(lcsqlT,"")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsqlT)

MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIFlcsqlT = ""

ENDIFENDIF

ENDIFlcsqlG = ""

Page 243: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 54 -

ENDFORENDIF

thisform.editsql.Value = ""

thisform.Release

1.6.3 Perfiles

Mostrar_datos()

lcsql = "Select * from dba_profiles order by profile"liresult = thisform.sqlexec(lcsql,"tmp2")IF liresult < 0

men = "Error al buscar los perfiles - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)thisform.Release

ENDIF

SELECT tmp2GO TOPlcprofile = ' '

SELECT tmp1DELETE ALL

SELECT tmp2

SCANIF ALLTRIM(lcprofile)<>ALLTRIM(tmp2.profile)

SELECT tmp1APPEND BLANKlcprofile = ALLTRIM(tmp2.profile)

ENDIFSELECT tmp1replace tmp1.profile WITH ALLTRIM(tmp2.profile)

DO CASECASE ALLTRIM(tmp2.resource_name)=='FAILED_LOGIN_ATTEMPTS'

SELECT tmp1replace tmp1.c1 WITH ALLTRIM(tmp2.limit)

CASE ALLTRIM(tmp2.resource_name)=='PASSWORD_LIFE_TIME'SELECT tmp1replace tmp1.c2 WITH ALLTRIM(tmp2.limit)

CASE ALLTRIM(tmp2.resource_name)=='PASSWORD_LOCK_TIME'SELECT tmp1replace tmp1.c3 WITH ALLTRIM(tmp2.limit)

Page 244: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 55 -

CASE ALLTRIM(tmp2.resource_name)=='CONNECT_TIME'SELECT tmp1replace tmp1.c4 WITH ALLTRIM(tmp2.limit)

CASE ALLTRIM(tmp2.resource_name)=='IDLE_TIME'SELECT tmp1replace tmp1.c5 WITH ALLTRIM(tmp2.limit)

CASE ALLTRIM(tmp2.resource_name)=='SESSIONS_PER_USER'SELECT tmp1replace tmp1.c6 WITH ALLTRIM(tmp2.limit)

ENDCASE

ENDSCAN

SELECT tmp1COUNT TO linumthisform.lblcuenta.Caption = ALLTRIM(STR(linum,10)) + " Perfiles"

SELECT tmp1GO topthisform.grid1.Refresh

Frmbase.init

lparameters lcprofilecperfil = lcprofile

IF LEN(ALLTRIM(lcprofile))> 0thisform.pgperfiles.pggeneral.lbprofile.Value= ALLTRIM(lcprofile)thisform.pgperfiles.pggeneral.lbprofile.Enabled =.f.

bandera = 0

lcsql = "Select * from dba_profiles where RTRIM(profile)= RTRIM(?cperfil)order by resource_name"liresult = thisform.sqlexec(lcsql,"tmp2")

****copia de cursor para utilizar para la comparacion

SELECT * FROM tmp2 INTO CURSOR tmp2cp

IF liresult < 0men = "Error al buscar los perfiles - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)thisform.Release

ENDIFSELECT tmp2GO top

SCAN

Page 245: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 56 -

DO CASE*************GENERAL - DETALLES (CARGA DE LOS DATOS)

CASE ALLTRIM(tmp2.resource_name)=="CPU_PER_SESSION"bandera1=0

FOR i=1 TOthisform.pgperfiles.pggeneral.pgdetalles.page1.cbsesion.ListCount

IFALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbsesion.List(i,1))

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbsesion.ListIndex = ibandera1= 1

EXITENDIF

ENDFORIF bandera1 = 0

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbsesion.AddItem(tmp2.limit)

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbsesion.ListIndex =thisform.pgperfiles.pggeneral.pgdetalles.page1.cbsesion.ListCount

ENDIF

CASE ALLTRIM(tmp2.resource_name)=="CPU_PER_CALL"

bandera1 = 0FOR i=1 TO

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbllamada.ListCountIF

ALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbllamada.List(i,1))

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbllamada.ListIndex = ibandera1=1EXIT

ENDIFENDFORIF bandera1 = 0

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbllamada.AddItem(tmp2.limit)

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbllamada.ListIndex =thisform.pgperfiles.pggeneral.pgdetalles.page1.cbllamada.ListCount

ENDIFCASE ALLTRIM(tmp2.resource_name)=="CONNECT_TIME"

bandera1 = 0FOR i=1 TO

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbconexion.ListCountIF

ALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbconexion.List(i,1))

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbconexion.ListIndex = i

Page 246: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 57 -

bandera1=1EXIT

ENDIFENDFORIF bandera1 = 0

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbconexion.AddItem(tmp2.limit)

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbconexion.ListIndex =thisform.pgperfiles.pggeneral.pgdetalles.page1.cbconexion.ListCount

ENDIF

CASE ALLTRIM(tmp2.resource_name)=="IDLE_TIME"bandera1=0

FOR i=1 TOthisform.pgperfiles.pggeneral.pgdetalles.page1.cbinacti.ListCount

IFALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbinacti.List(i,1))

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbinacti.ListIndex = ibandera1=1EXIT

ENDIFENDFOR

IF bandera1=0

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbinacti.AddItem(tmp2.limit)

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbinacti.ListIndex =thisform.pgperfiles.pggeneral.pgdetalles.page1.cbinacti.ListCount

ENDIF*************GENERAL - SERVICIOS (CARGA DE LOS DATOS)

CASE ALLTRIM(tmp2.resource_name)=="SESSIONS_PER_USER"bandera1=0

FOR i=1 TOthisform.pgperfiles.pggeneral.pgservicios.page1.cbsimul.ListCount

IFALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbsimul.List(i,1))

thisform.pgperfiles.pggeneral.pgservicios.page1.cbsimul.ListIndex = ibandera1=1EXIT

ENDIFENDFOR

IF bandera1=0

thisform.pgperfiles.pggeneral.pgservicios.page1.cbsimul.AddItem(tmp2.limit)

thisform.pgperfiles.pggeneral.pgservicios.page1.cbsimul.ListIndex =thisform.pgperfiles.pggeneral.pgservicios.page1.cbsimul.ListCount

ENDIFCASE ALLTRIM(tmp2.resource_name)=="LOGICAL_READS_PER_SESSION"

bandera1=0

Page 247: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 58 -

FOR i=1 TOthisform.pgperfiles.pggeneral.pgservicios.page1.cblecturas.ListCount

IFALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cblecturas.List(i,1))

thisform.pgperfiles.pggeneral.pgservicios.page1.cblecturas.ListIndex = ibandera1=1EXIT

ENDIFENDFOR

IF bandera1=0

thisform.pgperfiles.pggeneral.pgservicios.page1.cblecturas.AddItem(tmp2.limit)

thisform.pgperfiles.pggeneral.pgservicios.page1.cblecturas.ListIndex =thisform.pgperfiles.pggeneral.pgservicios.page1.cblecturas.ListCount

ENDIFCASE ALLTRIM(tmp2.resource_name)=="LOGICAL_READS_PER_CALL"

bandera1=0FOR i=1 TO

thisform.pgperfiles.pggeneral.pgservicios.page1.cbllamadas.ListCountIF

ALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbllamadas.List(i,1))

thisform.pgperfiles.pggeneral.pgservicios.page1.cbllamadas.ListIndex = ibandera1=1EXIT

ENDIFENDFOR

IF bandera1=0

thisform.pgperfiles.pggeneral.pgservicios.page1.cbllamadas.AddItem(tmp2.limit)

thisform.pgperfiles.pggeneral.pgservicios.page1.cbllamadas.ListIndex =thisform.pgperfiles.pggeneral.pgservicios.page1.cbllamadas.ListCount

ENDIFCASE ALLTRIM(tmp2.resource_name)=="PRIVATE_SGA"

bandera1=0FOR i=1 TO

thisform.pgperfiles.pggeneral.pgservicios.page1.cbsga.ListCountIF

ALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbsga.List(i,1))

thisform.pgperfiles.pggeneral.pgservicios.page1.cbsga.ListIndex = ibandera1=1EXIT

ENDIFENDFOR

IF bandera1=0

thisform.pgperfiles.pggeneral.pgservicios.page1.cbsga.AddItem(tmp2.limit)

Page 248: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 59 -

thisform.pgperfiles.pggeneral.pgservicios.page1.cbsga.ListIndex =thisform.pgperfiles.pggeneral.pgservicios.page1.cbsga.ListCount

ENDIFCASE ALLTRIM(tmp2.resource_name)=="COMPOSITE_LIMIT"

bandera1=0FOR i=1 TO

thisform.pgperfiles.pggeneral.pgservicios.page1.Cblimite.ListCountIF

ALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cblimite.List(i,1))

thisform.pgperfiles.pggeneral.pgservicios.page1.cblimite.ListIndex = ibandera1=1EXIT

ENDIFENDFOR

IF bandera1=0

thisform.pgperfiles.pggeneral.pgservicios.page1.cblimite.AddItem(tmp2.limit)

thisform.pgperfiles.pggeneral.pgservicios.page1.cblimite.ListIndex =thisform.pgperfiles.pggeneral.pgservicios.page1.cblimite.ListCount

ENDIF*********************CONTRASEÑA - PGContraseña (Tiempo de vencimiento de Contraseña)

CASE ALLTRIM(tmp2.resource_name) =="PASSWORD_LIFE_TIME"bandera1=0

FOR i=1 TOthisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbvencer.ListCount

IFALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbvencer.List(i,1))

thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbvencer.ListIndex = ibandera1=1EXIT

ENDIFENDFOR

IF bandera1=0SET STEP ON

thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbvencer.AddItem(tmp2.limit)

thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbvencer.ListIndex =thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbvencer.ListCount

ENDIF

CASE ALLTRIM(tmp2.resource_name) =="PASSWORD_GRACE_TIME"

bandera1=0

Page 249: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 60 -

FOR i=1 TOthisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbbloquear.ListCount

IFALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbbloquear.List(i,1))

thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbbloquear.ListIndex = ibandera1=1

EXITENDIF

ENDFOR

IF bandera1=0

thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbbloquear.AddItem(tmp2.limit)

thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbbloquear.ListIndex =thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbbloquear.ListCount

ENDIF

CASE ALLTRIM(tmp2.resource_name) =="PASSWORD_REUSE_MAX"bandera1=0

FOR i=1 TOthisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantCon.ListCount

IFALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantCon.List(i,1))

thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantCon.ListIndex = ibandera1=1EXIT

ENDIFENDFORIF bandera1=0

thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantCon.AddItem(tmp2.limit)

thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantCon.ListIndex =thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantCon.ListCount

ENDIF

CASE ALLTRIM(tmp2.resource_name) =="PASSWORD_REUSE_TIME"bandera1=0

FOR i=1 TOthisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantcontDias.ListCount

IFALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantcontDias.List(i,1))

thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantcontDias.ListIndex = ibandera1=1EXIT

ENDIFENDFOR

Page 250: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 61 -

IF bandera1=0

thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantcontDias.AddItem(tmp2.limit)

thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantcontDias.ListIndex =thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantcontDias.ListCount

ENDIFCASE ALLTRIM(tmp2.resource_name)

=="PASSWORD_VERIFY_FUNCTION"bandera1=0

FOR i=1 TOthisform.pgperfiles.pgcontraseña.PGomplejidad.page1.cbcomplejidad.ListCount

IFALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pgcontraseña.PGomplejidad.page1.cbcomplejidad.List(i,1))

thisform.pgperfiles.pgcontraseña.PGomplejidad.page1.cbcomplejidad.ListIndex = ibandera1=1EXIT

ENDIFENDFORIF bandera1=0

thisform.pgperfiles.pgcontraseña.PGomplejidad.page1.cbcomplejidad.AddItem(tmp2.limit)

thisform.pgperfiles.pgcontraseña.PGomplejidad.page1.cbcomplejidad.ListIndex =thisform.pgperfiles.pgcontraseña.PGomplejidad.page1.cbcomplejidad.ListCount

ENDIFCASE ALLTRIM(tmp2.resource_name) =="FAILED_LOGIN_ATTEMPTS"

bandera1=0FOR i=1 TO

thisform.pgperfiles.pgcontraseña.pgconexion.Page1.cbbloquear.ListCountIF

ALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pgcontraseña.pgconexion.Page1.cbbloquear.List(i,1))

thisform.pgperfiles.pgcontraseña.pgconexion.Page1.cbbloquear.ListIndex = ibandera1=1EXIT

ENDIFENDFORIF bandera1=0

thisform.pgperfiles.pgcontraseña.pgconexion.Page1.cbbloquear.AddItem(tmp2.limit)

thisform.pgperfiles.pgcontraseña.pgconexion.Page1.cbbloquear.ListIndex =thisform.pgperfiles.pgcontraseña.pgconexion.Page1.cbbloquear.ListCount

ENDIFCASE ALLTRIM(tmp2.resource_name) =="PASSWORD_LOCK_TIME"

bandera1=0FOR i=1 TO

thisform.pgperfiles.pgcontraseña.pgconexion.Page1.cbbloqueardias.ListCountIF

ALLTRIM(tmp2.limit)==ALLTRIM(thisform.pgperfiles.pgcontraseña.pgconexion.Page1.cbbloqueardias.List(i,1))

thisform.pgperfiles.pgcontraseña.pgconexion.Page1.cbbloqueardias.ListIndex = i

Page 251: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 62 -

bandera1=1EXIT

ENDIFENDFORIF bandera1=0

thisform.pgperfiles.pgcontraseña.pgconexion.Page1.cbbloqueardias.AddItem(tmp2.limit)

thisform.pgperfiles.pgcontraseña.pgconexion.Page1.cbbloqueardias.ListIndex =thisform.pgperfiles.pgcontraseña.pgconexion.Page1.cbbloqueardias.ListCount

ENDIF

OTHERWISE

ENDCASE

ENDSCANIF thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbvencer.Value="UNLIMITED" AND

thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbbloquear.value="UNLIMITED"thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbbloquear.Enabled= .F.thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbvencer.Enabled= .F.thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.label3.Enabled= .F.thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.label4.Enabled= .F.thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.label5.Enabled= .F.thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.label6.Enabled= .F.

ELSEthisform.pgperfiles.pgcontraseña.pgcontraseña.page1.check1.value= 1

ENDIF

IF thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantCon.Value="UNLIMITED" ANDthisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantcontDias.value="UNLIMITED"

thisform.pgperfiles.pgcontraseña.pghistorial.page1.CbmantCon.Enabled= .F.thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantcontDias.Enabled= .F.thisform.pgperfiles.pgcontraseña.pghistorial.page1.label3.Enabled= .F.thisform.pgperfiles.pgcontraseña.pghistorial.page1.label4.Enabled= .F.thisform.pgperfiles.pgcontraseña.pghistorial.page1.label5.Enabled= .F.thisform.pgperfiles.pgcontraseña.pghistorial.page1.label6.Enabled= .F.

ELSEthisform.pgperfiles.pgcontraseña.pghistorial.page1.check1.value =1

ENDIF

IF thisform.pgperfiles.pgcontraseña.pgomplejidad.page1.cbcomplejidad.Value="NULL"thisform.pgperfiles.pgcontraseña.pgomplejidad.page1.cbcomplejidad.Enabled=.F.thisform.pgperfiles.pgcontraseña.pgomplejidad.page1.label4.Enabled=.F.

ELSEthisform.pgperfiles.pgcontraseña.pgomplejidad.page1.check1.value=1

ENDIF

IF thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloquear.Value = "UNLIMITED" ANDthisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloqueardias.Value="UNLIMITED"

thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloquear.Enabled= .F.thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloqueardias.Enabled= .F.thisform.pgperfiles.pgcontraseña.pgconexion.page1.label3.Enabled= .F.

Page 252: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 63 -

thisform.pgperfiles.pgcontraseña.pgconexion.page1.label4.Enabled= .F.thisform.pgperfiles.pgcontraseña.pgconexion.page1.label5.Enabled= .F.thisform.pgperfiles.pgcontraseña.pgconexion.page1.label6.Enabled= .F.

ELSEthisform.pgperfiles.pgcontraseña.pgconexion.page1.check1.value= 1

ENDIF

ELSE

thisform.pgperfiles.pggeneral.pgdetalles.page1.cbsesion.ListIndex = 1thisform.pgperfiles.pggeneral.pgdetalles.page1.cbllamada.ListIndex = 1thisform.pgperfiles.pggeneral.pgdetalles.page1.cbconexion.ListIndex = 1thisform.pgperfiles.pggeneral.pgdetalles.page1.cbinacti.ListIndex = 1

thisform.pgperfiles.pggeneral.pgservicios.page1.cbsimul.ListIndex = 1thisform.pgperfiles.pggeneral.pgservicios.page1.cblecturas.ListIndex = 1thisform.pgperfiles.pggeneral.pgservicios.page1.cbllamadas.ListIndex = 1thisform.pgperfiles.pggeneral.pgservicios.page1.cbsga.ListIndex = 1thisform.pgperfiles.pggeneral.pgservicios.page1.cblimite.ListIndex = 1

thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.check1.Value = 1thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbvencer.ListIndex = 1thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbbloquear.ListIndex= 1

thisform.pgperfiles.pgcontraseña.pghistorial.page1.check1.Value = 1thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantCon.ListIndex = 1thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantcontDias.ListIndex = 1

thisform.pgperfiles.pgcontraseña.pgomplejidad.page1.check1.Value = 1thisform.pgperfiles.pgcontraseña.pgomplejidad.page1.cbcomplejidad.ListIndex = 1

thisform.pgperfiles.pgcontraseña.pgconexion.page1.check1.Value = 1thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloquear.ListIndex = 1thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloqueardias.ListIndex = 1

thisform.mostrarsql()

ENDIF

MostrarSql

IF USED("tmp2cp")

lcsql = "Alter profile "+ ALLTRIM(tmp2cp.profile) + " LIMIT "lcsql1 = "Alter profile "+ ALLTRIM(tmp2cp.profile) + " LIMIT "

Page 253: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 64 -

SELECT tmp2GO top

SCANDO CASE

*************GENERAL - DETALLES (MOSTRAR EL SQL MODIFICADO)CASE ALLTRIM(tmp2.resource_name)=="CPU_PER_SESSION"

IF ALLTRIM(tmp2.limit)<>thisform.pgperfiles.pggeneral.pgdetalles.page1.cbsesion.Value

lcsql = lcsql + " CPU_PER_SESSION " +ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbsesion.Text)

ENDIFCASE ALLTRIM(tmp2.resource_name)=="CPU_PER_CALL"

IF ALLTRIM(tmp2.limit)<>thisform.pgperfiles.pggeneral.pgdetalles.page1.cbllamada.Value

lcsql = lcsql + " CPU_PER_CALL " +ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbllamada.text)

ENDIFCASE ALLTRIM(tmp2.resource_name)=="CONNECT_TIME"

IF ALLTRIM(tmp2.limit)<>thisform.pgperfiles.pggeneral.pgdetalles.page1.cbconexion.value

lcsql = lcsql + " CONNECT_TIME " +ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbconexion.Text)

ENDIFCASE ALLTRIM(tmp2.resource_name)=="IDLE_TIME"

IF ALLTRIM(tmp2.limit)<>thisform.pgperfiles.pggeneral.pgdetalles.page1.cbinacti.Value

lcsql = lcsql + " IDLE_TIME " +alltrim(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbinacti.Text)

ENDIF*************GENERAL - SERVICIOS (MOSTRAR EL SQL MODIFICADO)

CASE ALLTRIM(tmp2.resource_name)=="SESSIONS_PER_USER"IF ALLTRIM(tmp2.limit)<>

thisform.pgperfiles.pggeneral.pgservicios.page1.cbsimul.Valuelcsql = lcsql + " SESSIONS_PER_USER " +

ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbsimul.text)ENDIF

CASEALLTRIM(tmp2.resource_name)=="LOGICAL_READS_PER_SESSION"

IF ALLTRIM(tmp2.limit)<>thisform.pgperfiles.pggeneral.pgservicios.page1.cblecturas.Value

lcsql = lcsql + " LOGICAL_READS_PER_SESSION " +ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cblecturas.text)

ENDIFCASE ALLTRIM(tmp2.resource_name)=="LOGICAL_READS_PER_CALL"

IF ALLTRIM(tmp2.limit)<>thisform.pgperfiles.pggeneral.pgservicios.page1.cbllamadas.Value

lcsql = lcsql + " LOGICAL_READS_PER_CALL " +ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbllamadas.text)

ENDIFCASE ALLTRIM(tmp2.resource_name)=="PRIVATE_SGA"

IF ALLTRIM(tmp2.limit)<>thisform.pgperfiles.pggeneral.pgservicios.page1.cbsga.Value

lcsql = lcsql + " PRIVATE_SGA " +ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbsga.text)

Page 254: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 65 -

ENDIFCASE ALLTRIM(tmp2.resource_name)=="COMPOSITE_LIMIT"

IF ALLTRIM(tmp2.limit)<>thisform.pgperfiles.pggeneral.pgservicios.page1.cblimite.Value

lcsql = lcsql + " COMPOSITE_LIMIT " +ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cblimite.Text)

ENDIF**************CONTRASEÑA - CONTRASEÑA (MOSTRAR EL SQL MODIFICADO)

CASE ALLTRIM(tmp2.resource_name)=="PASSWORD_LIFE_TIME"IF ALLTRIM(tmp2.limit)<>

thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbvencer.Valuelcsql = lcsql + " PASSWORD_LIFE_TIME " +

ALLTRIM(thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbvencer.text)ENDIF

CASE ALLTRIM(tmp2.resource_name)=="PASSWORD_GRACE_TIME"IF ALLTRIM(tmp2.limit)<>

thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbbloquear.Valuelcsql = lcsql + " PASSWORD_GRACE_TIME " +

ALLTRIM(thisform.pgperfiles.pgcontraseña.pgcontraseña.page1.cbbloquear.text)ENDIF

CASE ALLTRIM(tmp2.resource_name)=="PASSWORD_REUSE_MAX"IF ALLTRIM(tmp2.limit)<>

thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantCon.Valuelcsql = lcsql + " PASSWORD_REUSE_MAX " +

ALLTRIM(thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantCon.text)ENDIF

CASE ALLTRIM(tmp2.resource_name)=="PASSWORD_REUSE_TIME"IF ALLTRIM(tmp2.limit)<>

thisform.pgperfiles.pgcontraseña.pghistorial.page1.CBmantcontDias.Valuelcsql = lcsql + " PASSWORD_REUSE_TIME " +

ALLTRIM(thisform.pgperfiles.pgcontraseña.pghistorial.page1.CBmantcontDias.text)ENDIF

CASE ALLTRIM(tmp2.resource_name)=="PASSWORD_VERIFY_FUNCTION"IF ALLTRIM(tmp2.limit)<>

thisform.pgperfiles.pgcontraseña.pgomplejidad.page1.cbcomplejidad.Valuelcsql = lcsql + " PASSWORD_VERIFY_FUNCTION " +

ALLTRIM(thisform.pgperfiles.pgcontraseña.pgomplejidad.page1.cbcomplejidad.text)ENDIF

CASE ALLTRIM(tmp2.resource_name)=="FAILED_LOGIN_ATTEMPTS"IF ALLTRIM(tmp2.limit)<>

thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloquear.Valuelcsql = lcsql + " FAILED_LOGIN_ATTEMPTS " +

ALLTRIM(thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloquear.text)ENDIF

CASE ALLTRIM(tmp2.resource_name)=="PASSWORD_LOCK_TIME"IF ALLTRIM(tmp2.limit)<>

thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloqueardias.Valuelcsql = lcsql + " PASSWORD_LOCK_TIME " +

ALLTRIM(thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloqueardias.text)ENDIF

ENDCASEENDSCAN

IF lcsql <> lcsql1

Page 255: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 66 -

Thisform.edit1.Value = lcsqlELSE

Thisform.edit1.Value = ""endif

ELSE

lcsql = "CREATE profile "+ alltrim(thisform.pgperfiles.pggeneral.lbprofile.value) + " LIMIT "lcsql2 = "CREATE profile "+ alltrim(thisform.pgperfiles.pggeneral.lbprofile.value) + " LIMIT "

IF ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbsesion.Value) <> "DEFAULT"lcsql = lcsql + " CPU_PER_SESSION " +

ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbsesion.text)ELSE

lcsql = lcsql + " CPU_PER_SESSION " +ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbsesion.Text)

ENDIFIF ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbllamada.Value) <> "DEFAULT"

lcsql = lcsql + " CPU_PER_CALL " +ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbllamada.text)

ELSElcsql = lcsql + " CPU_PER_CALL " +

ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbllamada.Text)ENDIFIF ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbconexion.Value) <> "DEFAULT"

lcsql = lcsql + " CONNECT_TIME " +ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbconexion.text)

ELSElcsql = lcsql + " CONNECT_TIME " +

ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbconexion.Text)ENDIFIF ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbinacti.Value) <> "DEFAULT"

lcsql = lcsql + " IDLE_TIME " +ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbinacti.text)

ELSElcsql = lcsql + " IDLE_TIME " +

ALLTRIM(thisform.pgperfiles.pggeneral.pgdetalles.page1.cbinacti.Text)ENDIF

IF ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbsimul.Value) <> "DEFAULT"lcsql = lcsql + " SESSIONS_PER_USER " +

ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbsimul.text)ELSE

lcsql = lcsql + " SESSIONS_PER_USER " +ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbsimul.Text)

ENDIFIF ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cblecturas.Value) <> "DEFAULT"

lcsql = lcsql + " LOGICAL_READS_PER_SESSION " +ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cblecturas.text)

ELSElcsql = lcsql + " LOGICAL_READS_PER_SESSION " +

ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cblecturas.Text)ENDIF

IF ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbllamadas.Value) <> "DEFAULT"

Page 256: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 67 -

lcsql = lcsql + " LOGICAL_READS_PER_CALL " +ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbllamadas.text)

ELSElcsql = lcsql + " LOGICAL_READS_PER_CALL " +

ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbllamadas.Text)ENDIF

IF ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbsga.Value) <> "DEFAULT"lcsql = lcsql + " PRIVATE_SGA " +

ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbsga.text)ELSE

lcsql = lcsql + " PRIVATE_SGA " +ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cbsga.Text)

ENDIFIF ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cblimite.Value) <> "DEFAULT"

lcsql = lcsql + " COMPOSITE_LIMIT " +ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cblimite.text)

ELSElcsql = lcsql + " COMPOSITE_LIMIT " +

ALLTRIM(thisform.pgperfiles.pggeneral.pgservicios.page1.cblimite.Text)ENDIF

********Contrasena

IF ALLTRIM(thisform.pgperfiles.pgcontraseña.pgcontraseña.Page1.cbvencer.Value) <>"DEFAULT"

lcsql = lcsql + " PASSWORD_LIFE_TIME " +ALLTRIM(thisform.pgperfiles.pgcontraseña.pgcontraseña.Page1.cbvencer.text)

ELSElcsql = lcsql + " PASSWORD_LIFE_TIME " +

ALLTRIM(thisform.pgperfiles.pgcontraseña.pgcontraseña.Page1.cbvencer.Text)ENDIF

IF ALLTRIM(thisform.pgperfiles.pgcontraseña.pgcontraseña.Page1.CBbloquear.Value) <>"DEFAULT"

lcsql = lcsql + " PASSWORD_GRACE_TIME " +ALLTRIM(thisform.pgperfiles.pgcontraseña.pgcontraseña.Page1.cbbloquear.text)

ELSElcsql = lcsql + " PASSWORD_GRACE_TIME " +

ALLTRIM(thisform.pgperfiles.pgcontraseña.pgcontraseña.Page1.cbbloquear.Text)ENDIF

IF ALLTRIM(thisform.pgperfiles.pgcontraseña.pghistorial.Page1.cbmantCon.Value) <>"DEFAULT"

lcsql = lcsql + " PASSWORD_REUSE_MAX " +ALLTRIM(thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantCon.text)

ELSElcsql = lcsql + " PASSWORD_REUSE_MAX " +

ALLTRIM(thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantCon.Text)ENDIF

IF ALLTRIM(thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantcontDias.Value) <>"DEFAULT"

lcsql = lcsql + " PASSWORD_REUSE_TIME " +ALLTRIM(thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantcontDias.text)

ELSE

Page 257: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 68 -

lcsql = lcsql + " PASSWORD_REUSE_TIME " +ALLTRIM(thisform.pgperfiles.pgcontraseña.pghistorial.page1.cbmantcontDias.Text)

ENDIFIF ALLTRIM(thisform.pgperfiles.pgcontraseña.pgomplejidad.page1.cbcomplejidad.Value) <>

"DEFAULT"lcsql = lcsql + " PASSWORD_VERIFY_FUNCTION " +

ALLTRIM(thisform.pgperfiles.pgcontraseña.pgomplejidad.page1.cbcomplejidad.text)ELSE

lcsql = lcsql + " PASSWORD_VERIFY_FUNCTION " +ALLTRIM(thisform.pgperfiles.pgcontraseña.pgomplejidad.page1.cbcomplejidad.Text)

ENDIFIF ALLTRIM(thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloquear.Value) <>

"DEFAULT"lcsql = lcsql + " FAILED_LOGIN_ATTEMPTS " +

ALLTRIM(thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloquear.text)ELSE

lcsql = lcsql + " FAILED_LOGIN_ATTEMPTS " +ALLTRIM(thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloquear.Text)

ENDIFIF ALLTRIM(thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloqueardias.Value) <>

"DEFAULT"lcsql = lcsql + " PASSWORD_LOCK_TIME " +

ALLTRIM(thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloqueardias.text)ELSE

lcsql = lcsql + " PASSWORD_LOCK_TIME " +ALLTRIM(thisform.pgperfiles.pgcontraseña.pgconexion.page1.cbbloqueardias.Text)

ENDIF

IF lcsql <> lcsql2thisform.edit1.Value = lcsql

ELSEthisform.edit1.Value = ""

ENDIF

ENDIF

Cmdaceptar.click

IF LEN(ALLTRIM(THISFORM.pgperfiles.pggeneral.lbprofile.Value))>0IF !EMPTY(thisform.edit1.Value)

lcsql = ALLTRIM(thisform.edit1.Value)liresult = thisform.sqlexec(lcsql,"")IF liresult < 0

MESSAGEbox(MESSAGE(),16,_screen.esTANDAR.cmensistema)thisform.log_error(lcsql)

Page 258: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 69 -

ENDIFENDIF

ELSEMESSAGEBOX("Ingrese nombre de perfil")THISFORM.pgperfiles.pggeneral.lbprofile.SetFocus

ENDIF

thisform.Release

1.7 Método Bibliotecas de Servicios

1.7.1 Listener

Init

IF _screen.esTANDAR.cprivilegio = 'SYSDBA'thisform.cmbtipo.ListIndex = 1thisform.cmbtipo.InteractiveChange()SELECT 0USE _screen.esTANDAR.crutadbf + 'partarea' ALIAS ptar

SELECT ptarlinum = RECCOUNT()IF linum = 0

MESSAGEBOX("No se ha programado ninguna Tarea deInspección",64,_screen.esTANDAR.cmensistema)

ELSESELECT ptarthisform.spntiempo.Value = ptar.frecuenciathisform.cmbtipo.ListIndex = IIF(ptar.tipo='M',1,2)

ENDIF

SELECT ptarUSE

ELSEthisform.SetAll('Enabled',.F.)MESSAGEBOX("Privilegios Insuficientes",48,_screen.esTANDAR.cmensistema)thisform.cmdsalir.Click()

ENDIF

Page 259: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 70 -

Guardar.click

lcsid = _screen.esTANDAR.cdatabase

*!* lcsql = "select * from partarea where TRIM(sid)=TRIM(?lcsid)"*!* liresult = thisform.sqlexec(lcsql,"ptar")*!* IF liresult < 0*!* men = MESSAGE()*!* thisform.log_error(lcsql)*!* MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)*!* RETURN*!* ENDIF

SELECT 0USE _screen.esTANDAR.crutadbf + 'partarea' order sid ALIAS ptar

BEGIN TRANSACTION

lcsid = _screen.esTANDAR.cdatabase

SELECT ptarSEEK ALLTRIM(lcsid)IF FOUND()

SELECT ptarreplace ptar.frecuencia WITH thisform.spntiempo.value;

ptar.tipo WITH SUBSTR(thisform.cmbtipo.Value,1,1),;ptar.ruta WITH SYS(5)

ELSESELECT ptarAPPEND BLANKreplace ptar.sid WITH lcsid,;

ptar.frecuencia WITH thisform.spntiempo.Value,;ptar.tipo WITH SUBSTR(thisform.cmbtipo.Value,1,1),;ptar.ruta WITH SYS(5)

ENDIF

WAIT WINDOW "Programando Tarea.... espere por favor!!!" NOWAITcdoselimina = "at /delete /yes"

RUN /N0 &cdoselimina

lctime = TIME()IF thisform.cmbtipo.ListIndex = 1

litope = 1440 / IIF(thisform.spntiempo.Value=0,1,thisform.spntiempo.Value )limin = INT(VAL(SUBSTR(lctime,4,2)))lihor = INT(VAL(SUBSTR(lctime,1,2)))

FOR i=1 TO litopeIF limin > 60

limin = limin - 60lihor = lihor + 1

ENDIF

Page 260: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 71 -

lchora = IIF(lihor<10,'0'+STR(lihor,1),STR(lihor,2)) + ':' +IIF(limin<10,'0'+STR(limin,1),STR(limin,2))

lcdostarea = "at " + ALLTRIM(lchora) + '/INTERACTIVE/EVERY ' + SYS(5)+ _screen.esTANDAR.crutaexe + "prginslist.exe"

RUN /N0 &lcdostarealimin = limin + thisform.spntiempo.Value

ENDFORELSE

litope = 24 / IIF(thisform.spntiempo.Value=0,1,thisform.spntiempo.Value)limin = INT(VAL(SUBSTR(lctime,4,2)))lihor = INT(VAL(SUBSTR(lctime,1,2)))

FOR i=1 TO litopelchora = IIF(lihor<10,'0'+STR(lihor,1),STR(lihor,2)) + ':' +

IIF(limin<10,'0'+STR(limin,1),STR(limin,2))lcdostarea = "at " + ALLTRIM(lchora) + '/INTERACTIVE/EVERY ' + SYS(5)

+ _screen.esTANDAR.crutaexe + "prginslist.exe"RUN /N0 &lcdostarea

limin = limin + thisform.spntiempo.ValueENDFOR

ENDIFWAIT CLEARIF !error_al_grabar

END TRANSACTIONmen = 'Se registro la tarea de inspección correctamente'MESSAGEBOX(men,64,_screen.esTANDAR.cmensistema)

ELSEROLLBACK

ENDIF

SELECT ptarUSE

thisform.metodo_biblio_cargarlistener()thisform.pageframe1.page2.cmb_biblio_disponible.ListIndex = 1thisform.pageframe1.page2.cmb_biblio_disponible.InteractiveChange()

IF _screen.estandar.iconectada = 0thisform.cmd_biblio_parametros.Enabled = .F.thisform.cmd_biblio_pararlistener.Enabled = .F.

ENDIF

Load

Page 261: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 72 -

DODEFAULT()

SELECT 0CREATE CURSOR tmpdib(;etiqueta c(25),;valor n(10),;fecha d)INDEX on tmpdib.fecha TAG llave

Conecta_new

ln = SQLSETPROP(0,"DispLogin",3)liconex = SQLSTRINGCONNECT(_screen.esTANDAR.cstringconnect)IF liconex < 0

men = "No se pudo conectar al servidor - " + MESSAGE()IF LIKE('*ORA-01034*',men)

MESSAGEBOX("No se encuentra conectado a Oracle",16,_screen.estandar.cmensistema)ELSE

MESSAGEBOX(men,16,_screen.estandar.cmensistema)ENDIF_screen.estandar.iconectada = 0this.liconexion = -1RETURN

ENDIF

IF liconex > 0this.liconexion = liconex_screen.estandar.iconectada = 1

ELSEthis.liconex = -1_screen.estandar.iconectada = 0

ENDIF

Metodo_biblio_cargaListener

Local gnFileHandle,nSize,cString

thisform.pageframe1.page1.staTUS.Value=''

contador = 0WAIT WINDOW "Cargando Informacion del Listener...!" NOWAIT

listener_status =" RUN lsnrctl status >" + _screen.esTANDAR.crutatxt + "listenerstatus.txt"&listener_statusgnFileHandle = FOPEN(_screen.estANDAR.crutatxt + "listenerstatus.txt")* Seek to end of file to determine number of bytes in the file.

Page 262: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 73 -

nSize = FSEEK(gnFileHandle, 1, 2) && Move pointer to EOFIF nSize <= 0

* If file is empty, display an error message.WAIT WINDOW "This file is empty!" NOWAIT

ELSE= FSEEK(gnFileHandle, 0, 0) && Move pointer to BOFFOR i=1 TO nSize STEP 263

contador = contador + 1IF contador >= 2

cString = FREAD(gnFileHandle, i)thisform.pageframe1.page1.sTATUS.Value=

thisform.pageframe1.page1.sTATUS.Value + cstringELSE

cString = FREAD(gnFileHandle, i)ENDIF

ENDFORENDIF= FCLOSE(gnFileHandle) && Close the file

WAIT CLEAR

Cmb_biblio_disponible

DO CASECASE this.ListIndex = 1

SELECT TmpdibZAP

SELECT 0USE _screen.estandar.crutadbf + 'histlist' ALIAS tmphist

lihora = STR(INT(VAL(SUBSTR(TIME(),1,2)) - 1),2)

SELECT * FROM tmphist WHERE fecha=DATE() AND SUBSTR(hora,1,2)=lihora ANDALLTRIM(sid)==ALLTRIM(_screen.estandar.cdatabase) ORDER BY hora INTO CURSOR tmp1

SELECT tmp1SCAN

SELECT tmpdibAPPEND BLANKreplace tmpdib.etiqueta WITH tmp1.hora,;

tmpdib.valor WITH tmp1.censoENDSCAN

SELECT tmphistUSE

thisform.pageframe1.page2.simplechart1.createchart()

Page 263: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 74 -

CASE this.ListIndex = 2 OR this.ListIndex =3SELECT TmpdibZAP

SELECT 0USE _screen.estandar.crutadbf + 'histlist' ALIAS tmphist

IF this.ListIndex =2licriterio = 7

ELSElicriterio = 14

ENDIF

SELECT * FROM tmphist WHERE fecha>=DATE() - licriterio AND fecha<= DATE() ANDALLTRIM(sid)==ALLTRIM(_screen.estandar.cdatabase) ORDER BY fecha,hora INTO CURSOR tmp1 READWRITE

SELECT tmp1GO TOP

lidia = DAY(tmp1.fecha)lcglosa1 = DTOC(tmp1.fecha)lcglosa2 = ""

licnt = 0lisum = 0licnt1 = 0lisum1 = 0SELECT tmp1SCAN

IF lidia <> DAY(tmp1.fecha)IF licnt > 0

SELECT tmpdibAPPEND BLANKreplace tmpdib.etiqueta WITH lcglosa1 + " 12:00 AM";

tmpdib.valor WITH lisum /IIF(licnt=0,1,licnt);

tmpdib.fecha WITH CTOD(lcglosa1)ELSE

SELECT tmpdibAPPEND BLANKreplace tmpdib.etiqueta WITH lcglosa1 + " 12:00 AM";

tmpdib.valor WITH 0;tmpdib.fecha WITH CTOD(lcglosa1)

ENDIF

IF licnt1 > 0SELECT tmpdibAPPEND BLANKreplace tmpdib.etiqueta WITH lcglosa1 + " 12:00 PM";

tmpdib.valor WITH lisum1 /IIF(licnt1=0,1,licnt1);

Page 264: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 75 -

tmpdib.fecha WITH CTOD(lcglosa1)ELSE

SELECT tmpdibAPPEND BLANKreplace tmpdib.etiqueta WITH lcglosa1 + " 12:00 PM";

tmpdib.valor WITH 0;tmpdib.fecha WITH CTOD(lcglosa1)

ENDIF

lcglosa1 = DTOC(tmp1.fecha)lcglosa2 = ""licnt = 0lisum = 0licnt1 = 0lisum1 = 0

lidia = DAY(tmp1.fecha)ENDIF

DO CASECASE tmp1.hora <= "12:59"

licnt = licnt + 1lisum = lisum + tmp1.censo

CASE tmp1.hora > "12:59" AND tmp1.hora<="23:59"licnt1 = licnt + 1lisum1 = lisum + tmp1.censo

ENDCASEENDSCAN

IF licnt > 0SELECT tmpdibAPPEND BLANKreplace tmpdib.etiqueta WITH lcglosa1 + " 12:00 AM";

tmpdib.valor WITH lisum / IIF(licnt=0,1,licnt);tmpdib.fecha WITH CTOD(lcglosa1)

ELSESELECT tmpdibAPPEND BLANKreplace tmpdib.etiqueta WITH lcglosa1 + " 12:00 AM";

tmpdib.valor WITH 0;tmpdib.fecha WITH CTOD(lcglosa1)

ENDIF

IF licnt1 > 0SELECT tmpdibAPPEND BLANKreplace tmpdib.etiqueta WITH lcglosa1 + " 12:00 PM";

tmpdib.valor WITH lisum1 / IIF(licnt1=0,1,licnt1);tmpdib.fecha WITH CTOD(lcglosa1)

ELSE

Page 265: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 76 -

SELECT tmpdibAPPEND BLANKreplace tmpdib.etiqueta WITH lcglosa1 + " 12:00 PM";

tmpdib.valor WITH 0;tmpdib.fecha WITH CTOD(lcglosa1)

ENDIF

lidia = licriterioFOR i=DAY(DATE())-(licriterio+1) TO DAY(DATE())

lbentre = .f.

SELECT tmphistSCAN FOR DAY(tmphist.fecha)=i

lbentre = .t.ENDSCANIF !lbentre

SELECT tmpdibAPPEND BLANKreplace tmpdib.etiqueta WITH DTOC(DATE()-lidia) + " 12:00 AM";

tmpdib.valor WITH 0;tmpdib.fecha WITH DATE() - lidia

SELECT tmpdibAPPEND BLANKreplace tmpdib.etiqueta WITH DTOC(DATE()-lidia) + " 12:00 PM";

tmpdib.valor WITH 0;tmpdib.fecha WITH DATE() - lidia

ENDIFlidia = lidia - 1

ENDFOR

SELECT tmphistUSEthisform.pageframe1.page2.simplechart1.createchart()

ENDCASE

Cmd_biblio_levantar

*************************************************************************LEVANTAR EL LISTENER DE LA BASE DE DATOS *************************************************************************

IF ALLTRIM(_screen.esTANDAR.cprivilegio)=="SYSDBA"listener_start =" RUN lsnrctl start > " + _screen.esTANDAR.crutatxt + "listenerstart.txt"&listener_startIF FILE(_screen.esTANDAR.crutatxt + 'listenerstart.txt')

Page 266: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 77 -

WAIT WINDOW "Esperando Servicio" TIMEOUT 60thisform.metodo_biblio_cargarlistener()_screen.esTANDAR.iconectada = 1thisform.cmd_biblio_parametros.Enabled = .T.thisform.cmd_biblio_parametros.Enabled = .T.thisform.cmd_biblio_levantarlistener.Enabled = .T.thisform.cmd_biblio_pararlistener.Enabled = .T.MESSAGEBOX("Se levanto el listener",64)

WAIT CLEARELSE

MESSAGEBOX("No existe listener Levantado",64)ENDIF

ELSEMESSAGEBOX("Privilegios Insuficientes",16,_screen.esTANDAR.cmensistema)

ENDIF

Cmd_biblio_pararlistener

********************************************************************* PARA DETENER EL LISTENER DE LA BASE DE DATOS *********************************************************************

IF ALLTRIM(_screen.esTANDAR.cprivilegio)=="SYSDBA"vb=MESSAGEBOX("Esta seguro de bajar el Servicio del

Listener..?",32+4+256,_screen.esTANDAR.cmensistema)IF vb=6

RUN lsnrctl stop > + _screen.esTANDAR.crutatxt + 'listenerstop.txt'listener_stop =" RUN lsnrctl stop >" + _screen.esTANDAR.crutatxt + "listenerstop.txt"&listener_stopIF FILE(_screen.esTANDAR.crutatxt + 'listenerstop.txt')

MESSAGEBOX("Se paro el listener",64)thisform.metodo_biblio_cargarlistener()_screen.esTANDAr.iconectada = 0thisform.cmd_biblio_parametros.Enabled = .F.thisform.cmd_biblio_levantarlistener.Enabled = .F.thisform.cmd_biblio_pararlistener.Enabled = .F.

ELSEMESSAGEBOX("No existe listener Levantado",64)

ENDIFENDIF

ELSEMESSAGEBOX("Privilegios Insuficientes",16,_screen.esTANDAR.cmensistema)

ENDIF

Cmd_biblio_parametros

IF ALLTRIM(_screen.esTANDAR.cprivilegio)=="SYSDBA"

Page 267: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 78 -

DO FORM _screen.estandar.crutafte + 'manbibliotecas\frmparametros.scx'ELSE

MESSAGEBOX("Privilegios Insuficientes",16,_screen.esTANDAR.cmensistema)ENDIF

Frmparametros.init

WAIT WINDOW "Cargando Informacion... espere por favor" NOWAITthisform.cargaubicacion()thisform.cargagenerales()** Ruta del Log

lcpath = ALLTRIM(_screen.estaNDAR.path_archivo('listener.log'))thisform.pglist.page2.pgregistro.page1.txtlog.value = SUBSTR(lcpath,1,LEN(lcpath)-1)

** Ruta de Rastreolcpath = ALLTRIM(_screen.estaNDAR.path_archivo('listener.trc'))thisform.pglist.page2.pgrastreo.page1.txtrastreo.Value = SUBSTR(lcpath,1,LEN(lcpath)-1)

SELECT tmptemporalreplace tmptemporal.ruta_registro WITH thisform.pglist.page2.pgregistro.page1.txtlog.valuereplace tmptemporal.ruta_rastreo WITH thisform.pglist.page2.pgrastreo.page1.txtrastreo.Value

WAIT CLEAR

Load

DODEFAULT()

PUBLIC band_listenerpassPUBLIC band_listenerpass1

band_listenerpass = 0band_listenerpass1 =''

SELECT 0CREATE CURSOR tmptemporal(;registro c(1),;registro_new c(1),;ruta_registro c(120),;rastreo c(1),;rastreo_new c(1),;ruta_rastreo c(120),;clave c(1),;clave_new c(1),;

Page 268: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 79 -

ruta_clavea c(20),;ruta_clave c(20))

SELECT tmptemporalAPPEND BLANK

Cargagenerales

***********************************************************************Buscar el archivo del listener y lo apertura****************************************************************txtarchivo =_screen.estaNDAR.path_archivo('listener.ora')

x=0FOR i=1 TO LEN(txtarchivo)

IF SUBSTR(txtarchivo,i,1)=';'x = iEXIT

ENDIFENDFOR

txtarchivo = SUBSTR(txtarchivo,1,x-1)Archivo_listener = FOPEN(txtarchivo)*******Tamaño del listener***********************************************************************Variables del listener****************************************************************

band_listenerpass = 0band_listenerpass1 = ''

*******Verifica si existe el ArchivoIF archivo_listener <= 0

WAIT WINDOW "El archivo esta vacio o no se encuentra!" NOWAITELSE

cstring =fread(Archivo_listener,1000)***********************************************************************Buscar registros activados del listener****************************************************************IF LIKE('*LOGGING_LISTENER = OFF*', cString) = .t.

thisform.pglist.page2.pgregistro.page1.optregistro.optsi.Value = 0thisform.pglist.page2.pgregistro.page1.optregistro.optno.Value = 1thisform.pglist.page2.pgregistro.page1.txtlog.Enabled=.f.

SELECT tmptemporalreplace tmptemporal.registro WITH 'D'

ELSEthisform.pglist.page2.pgregistro.page1.optregistro.optsi.Value = 1thisform.pglist.page2.pgregistro.page1.optregistro.optno.Value = 0thisform.pglist.page2.pgregistro.page1.txtlog.Enabled=.F.

SELECT tmptemporalreplace tmptemporal.registro WITH 'A'

Page 269: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 80 -

ENDIF

IF LIKE('*TRACE_LEVEL_LISTENER*',cString) = .t.thisform.pglist.page2.pgrastreo.page1.optrastreo.optno.Value = 0thisform.pglist.page2.pgrastreo.page1.optrastreo.optsi.Value = 1thisform.pglist.page2.pgrastreo.page1.txtrastreo.Enabled= .F.

SELECT tmptemporalreplace tmptemporal.rastreo WITH 'A'

ELSEthisform.pglist.page2.pgrastreo.page1.optrastreo.optno.Value = 1thisform.pglist.page2.pgrastreo.page1.optrastreo.optsi.Value = 0

thisform.pglist.page2.pgrastreo.page1.txtrastreo.Enabled= .F.

SELECT tmptemporalreplace tmptemporal.rastreo WITH 'D'

ENDIF

IF LIKE('*PASSWORDS_LISTENER=*',cString) = .T.thisform.pglist.page2.pgcontra.page1.optcontra.optno.Value = 0thisform.pglist.page2.pgcontra.page1.optcontra.optsi.Value = 1

thisform.pglist.page2.pgcontra.page1.txtcontra.value =_screen.esTANDAR.desencriptador(SUBSTR(cString,22,8))

SELECT tmptemporalreplace tmptemporal.clave WITH 'A'replace tmptemporal.ruta_clavea WITH

thisform.pglist.page2.pgcontra.page1.txtcontra.valuereplace tmptemporal.ruta_clave WITH

thisform.pglist.page2.pgcontra.page1.txtcontra.valueELSE

thisform.pglist.page2.pgcontra.page1.optcontra.optno.Value = 1thisform.pglist.page2.pgcontra.page1.optcontra.optsi.Value = 0

SELECT tmptemporalreplace tmptemporal.clave WITH 'D'

ENDIFENDIF

FCLOSE(Archivo_listener)

thisform.pglist.page2.pgcontra.page1.optcontra.InteractiveChange()

cargaubicacion

***************************************************************Este Método Carga la información de la ubicacion*******del listener********************************************************

lcsql = "select name from v$database "contador = 0

Page 270: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 81 -

liresult = thisform.sqlexec(lcsql,"tmp1")IF liresult < 0

thisform.log_error(lcsql)RETURN

ENDIF******* Buscar el nombre de la base de datos

SELECT tmp1GO TOP

*******Se crea un archivo de información del listenercoperacion = "run(tnsping " + tmp1.name + ">" + _screen.estANDAR.crutatxt + "tnsping_base.txt)"coperacion1 = "run(lsnrctl set current_listener" + ">" + _screen.estANDAR.crutatxt + "Current_listener.txt)"&coperacion&coperacion1

*******Apertura de archivos creadosgnFileHandle = FOPEN(_screen.estANDAR.crutatxt + "tnsping_base.txt")&& Nombre de la basecontador =0nSize = FSEEK(gnFileHandle, 1, 2) && se mueve hasta el EOFIF nSize <= 0

WAIT WINDOW "El Archivo esta vacio!" NOWAITELSE

= FSEEK(gnFileHandle, 0, 0) && se mueve hasta el BOFFOR i=1 TO nSize STEP 100

cString = FREAD(gnFileHandle, i)

IF LIKE('*PROTOCOL = TCP*', cString) = .T. AND LIKE('*PORT = 1521*', cString)= .t.thisform.pglist.page1.txtprotocolo.value = "TCP"thisform.pglist.page1.txthost.Value = tmp1.namethisform.pglist.page1.txtport.Value = "1521"

ENDIFENDFOR

ENDIF= FCLOSE(gnFileHandle)****************************************************************************

txtValOpen = FOPEN(_screen.estandar.crutatxt + "Current_listener.txt")DO WHILE NOT FEOF(txtvalopen) &&hasta que este vacia la linea

txtCadena = FGETS(txtvalopen)IF LIKE('*El listener actual es*',txtcadena) = .T.

thisform.pglist.page1.listener.value =SUBSTR(txtcadena,22,10)ENDIF

ENDDOFCLOSE(txtValopen)

*******************************************************************************

Cmd_listenerguardar.click

*****************************

Page 271: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 82 -

IF thisform.pglist.page2.pgcontra.page1.optcontra.optsi.Value = 1IF LEN(ALLTRIM(thisform.pglist.page2.pgcontra.page1.txtcontra.Value)) = 0

MESSAGEBOX("Debe Ingresar la contraseña del Listener",16,_screen.estandar.cmensistema)RETURN

ENDIFENDIF

SELECT tmptemporalGO TOPreplace tmptemporal.registro_new WITHIIF(thisform.pglist.page2.pgregistro.page1.optregistro.optsi.Value=1,'A','D')replace tmptemporal.rastreo_new WITHIIF(thisform.pglist.page2.pgrastreo.page1.optrastreo.optsi.Value=1,'A','D')replace tmptemporal.clave_new WITHIIF(thisform.pglist.page2.pgcontra.page1.optcontra.optsi.Value=1,'A','D')replace tmptemporal.ruta_clave WITH thisform.pglist.page2.pgcontra.page1.txtcontra.Value

txtArchivo = _screen.estanDAR.path_archivo('listener.ora') &&nombre del archivo.. con todo y su rutax=0FOR i=1 TO LEN(txtarchivo)

IF SUBSTR(txtarchivo,i,1)=';'x = iEXIT

ENDIFENDFOR

txtarchivor = SYS(5) + '\DBMS-FOX\listener.ora'SELECT tmptemporalGO TOPlbgraba = 0

IF tmptemporal.rastreo <> tmptemporal.rastreo_newWAIT WINDOW "Modificando parametro TRACE_LEVEL_LISTENER" TIMEOUT 2

IF tmptemporal.rastreo_new = 'A'lbgraba = 1txtarchivo = SUBSTR(txtarchivo,1,x-1)gnFileHandle = FOPEN(txtArchivo,12) &&abre el archivo para lecturaIF gnFileHandle > 0

nSize = FSEEK(gnFileHandle, 0, 2) && Move pointer to EOFgcstring = FSEEK(gnFileHandle, 0, 1)STORE FSEEK(gnFileHandle, 0, 1) TO gnendgcString = FGETS(gnFileHandle, gnEnd) && Store contentsFPUTS(gnFileHandle,"TRACE_LEVEL_LISTENER = USER")FFLUSH(gnFileHandle)FPUTS(gnFileHandle,"")FFLUSH(gnFileHandle)

ENDIFFCLOSE(gnFileHandle)

ELSElbgraba = 1txtarchivo = SUBSTR(txtarchivo,1,x-1)lhFile = FOPEN(txtArchivo,12)lFIle = FCREATE(txtArchivor)

Page 272: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 83 -

IF lhFile>0DO WHILE NOT FEOF(lhFile)

lsBuffer=FGETS(lhFile)IF ALLTRIM(lsBuffer)<>ALLTRIM('TRACE_LEVEL_LISTENER =

USER')FPUTS(lFile,lsBuffer)FFLUSH(lFile)

ENDIFENDDO

ENDIFFCLOSE(lhFile)FCLOSE(lFile)

IF FILE(txtarchivor)DELETE FILE(txtarchivo)c_copia = 'xcopy ' + txtarchivor + ' ' + SUBSTR(txtarchivo,1,LEN(txtarchivo)-

12)RUN /N0 &c_copia

ENDIFENDIF

WAIT CLEAR

ENDIF

IF tmptemporal.registro <> tmptemporal.registro_newWAIT WINDOW "Modificando parametro LOGGING_LISTENER" TIMEOUT 2

IF tmptemporal.registro_new = 'D'lbgraba = 1txtarchivo = SUBSTR(txtarchivo,1,x-1)gnFileHandle = FOPEN(txtArchivo,12) &&abre el archivo para lecturaIF gnFileHandle > 0

nSize = FSEEK(gnFileHandle, 0, 2) && Move pointer to EOFgcstring = FSEEK(gnFileHandle, 0, 1)STORE FSEEK(gnFileHandle, 0, 1) TO gnendgcString = FGETS(gnFileHandle, gnEnd) && Store contentsFPUTS(gnFileHandle,"LOGGING_LISTENER = OFF")FFLUSH(gnFileHandle)

FPUTS(gnFileHandle,"")FFLUSH(gnFileHandle)

ENDIFFCLOSE(gnFileHandle)

ELSElbgraba = 1txtarchivo = SUBSTR(txtarchivo,1,x-1)lhFile = FOPEN(txtArchivo,12)lFIle = FCREATE(txtArchivor)IF lhFile>0

DO WHILE NOT FEOF(lhFile)lsBuffer=FGETS(lhFile)IF ALLTRIM(lsBuffer)<>ALLTRIM('LOGGING_LISTENER = OFF')

FPUTS(lFile,lsBuffer)FFLUSH(lFile)

Page 273: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 84 -

ENDIFENDDO

ENDIFFCLOSE(lhFile)FCLOSE(lFile)

IF FILE(txtarchivor)DELETE FILE(txtarchivo)c_copia = 'xcopy ' + txtarchivor + ' ' + SUBSTR(txtarchivo,1,LEN(txtarchivo)-

12)RUN /N0 &c_copia

ENDIFENDIF

WAIT CLEARENDIF

IF tmptemporal.clave <> tmptemporal.clave_newWAIT WINDOW 'Modificando parametro PASSWORDS_LISTENER ' TIMEOUT 2

tcl = ''IF tmptemporal.clave_new = 'A'

lbgraba = 1clav = ALLTRIM(tmptemporal.ruta_clave)tcl = clavIF LEN(clav) <17

FOR i=LEN(clav) TO 17tcl = tcl + 'X'

ENDFORENDIFtcl = _screen.estandar.encriptador(tcl)txtarchivo = SUBSTR(txtarchivo,1,x-1)gnFileHandle = FOPEN(txtArchivo,12) &&abre el archivo para lecturaIF gnFileHandle > 0

nSize = FSEEK(gnFileHandle, 0, 2) && Move pointer to EOFgcstring = FSEEK(gnFileHandle, 0, 1)STORE FSEEK(gnFileHandle, 0, 1) TO gnendgcString = FGETS(gnFileHandle, gnEnd) && Store contentsFPUTS(gnFileHandle,"PASSWORDS_LISTENER= (" + tcl + ")" )FFLUSH(gnFileHandle)FPUTS(gnFileHandle,"")FFLUSH(gnFileHandle)

ENDIFFCLOSE(gnFileHandle)

ELSElbgraba = 1txtarchivo = SUBSTR(txtarchivo,1,x-1)lhFile = FOPEN(txtArchivo,12)lFIle = FCREATE(txtArchivor)IF lhFile>0

DO WHILE NOT FEOF(lhFile)lsBuffer=FGETS(lhFile)IF !LIKE('*PASSWORDS_LISTENER=*',lsBuffer)

FPUTS(lFile,lsBuffer)FFLUSH(lFile)

Page 274: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 85 -

ENDIFENDDO

ENDIFFCLOSE(lhFile)FCLOSE(lFile)

IF FILE(txtarchivor)DELETE FILE(txtarchivo)c_copia = 'xcopy ' + txtarchivor + ' ' + SUBSTR(txtarchivo,1,LEN(txtarchivo)-

12)RUN /N0 &c_copia

ENDIFENDIF

WAIT CLEARELSE

IF ALLTRIM(tmptemporal.ruta_clavea) <> ALLTRIM(tmptemporal.ruta_clave)lbgraba = 1tcl = ''clav = ALLTRIM(tmptemporal.ruta_clave)tcl = clavIF LEN(clav) <17

FOR i=LEN(clav) TO 17tcl = tcl + 'X'

ENDFORENDIF

tcl = _screen.estandar.encriptador(tcl)

txtarchivo = SUBSTR(txtarchivo,1,x-1)lhFile = FOPEN(txtArchivo,12)lFIle = FCREATE(txtArchivor)IF lhFile>0

DO WHILE NOT FEOF(lhFile)lsBuffer=FGETS(lhFile)IF !LIKE('*PASSWORDS_LISTENER=*',lsBuffer)

FPUTS(lFile,lsBuffer)FFLUSH(lFile)

ELSEFPUTS(lFile,"PASSWORDS_LISTENER= (" + tcl + ")" )FFLUSH(lFile)

ENDIFENDDO

ENDIFFCLOSE(lhFile)FCLOSE(lFile)

IF FILE(txtarchivor)DELETE FILE(txtarchivo)c_copia = 'xcopy ' + txtarchivor + ' ' + SUBSTR(txtarchivo,1,LEN(txtarchivo)-12)RUN /N0 &c_copia

ENDIFENDIF

ENDIF

Page 275: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 86 -

IF lbgraba = 1MESSAGEBOX("Cambios realizados con exito",64,_screen.estandar.cmensistema)thisform.Release

ENDIF

1.8 Módulo de Politicas

1.8.1 Definición de politicas

Init

IF this.obtener_datos()<1 thenRETURN

ENDIFthis.llenar_datos()

thisform.grid_politicas.column4.ReadOnly = .F.

IF _screen.esTANDAR.cprivilegio<>"SYSDBA"thisform.SetAll('Enabled',.f.)MESSAGEBOX("Privilegios Insuficientes",48,_screen.esTANDAR.cmensistema)

ENDIF

Llenar_datos

SELECT c_politicasWITH this.grid_politicas as Grid

.ColumnCount=5

.RecordSource='c_politicas'WITH .Columns(1) as Column

.Header1.Caption="ID"

.ControlSource="c_politicas.NUM"

.Width=20

.ReadOnly= .T.

.InputMask="99"ENDWITHWITH .Columns(2) as Column

.header1.Caption="Regla de Politica"

.ControlSource='c_politicas.nombre_politica'

.Width=340

.ReadOnly= .T.ENDWITHWITH .Columns(3) as Column

.header1.caption="Categoria"

.ControlSource='c_politicas.NOM_CATEGORIA'

Page 276: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 87 -

.Width=100

.ReadOnly= .T.ENDWITHWITH .Columns(4) as Column

.header1.caption="Estado"

.ControlSource='c_politicas.LESTADO'

.Width=70

.Alignment= 2

.Sparse= .F.ENDWITHWITH .Columns(5) as Column

.header1.caption="Descripcion"

.ControlSource='c_politicas.DESCRIPCION'

.Width=750

.ReadOnly= .T.ENDWITH

.SetAll("dynamicfontbold","iif(LESTADO<>ANT_ESTADO,.T.,.F.)","column")ENDWITH

Obtener_datos

*!* CONSULTA DE POLITICAS DE LA BASE DE DATOS

lcsql = "SELECT A.NUM NUM, A.NOMBRE_POLITICA NOMBRE_POLITICA, SUBSTR(A.DESCRIPCION,1,250)DESCRIPCION, B.CATEGORIA NOM_CATEGORIA, A.ESTADO ESTADO "lcsql = lcsql + " FROM " + _screen.esTANDAR.cusubd + ".politicas A," + _screen.esTANDAR.cusubd + ".CATEGORIA B WHERE A.ID_CATEGORIA=B.ID order by a.num"RESULT=THISFORM.SQLexec(lcSql,"c_politicas")IF RESULT < 0

men = "Error al buscar las politicas - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.ESTANDAR.cmensistema)RETURN

ENDIF

SELECT C.*, IIF(ESTADO="A",.T.,.F.) LESTADO FROM c_politicas C INTO CURSOR c_politicas READWRITESELECT A.*, NUM LNUM, LESTADO ANT_ESTADO FROM c_politicas A INTO CURSOR c_politicas READWRITE

RETURN 1

Cmd_aplicar.click

lcSql=""lcSql1=""LNPOLITICAS=0

SELECT C_POLITICASGO TOPSCAN FOR LESTADO!=ANT_ESTADO

Page 277: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 88 -

LNPOLITICAS=LNUMIF C_POLITICAS.LESTADO=.T. THEN

lcSql1="UPDATE " + _screen.esTANDAR.cusubd + ".POLITICAS SET ESTADO=" +"'A'" + "WHERE NUM=" + TRANSFORM(LNPOLITICAS)+';'

ELSElcSql1="UPDATE " + _screen.esTANDAR.cusubd + ".POLITICAS SET ESTADO=" +"'I'" + "

WHERE NUM=" + TRANSFORM(LNPOLITICAS)+';'ENDIFLCSQL=lcSql+lcSql1

ENDSCAN

IF EMPTY(lcsql) thenMESSAGEBOX("Usted no ha realizado cambios",48,_screen.esTANDAR.cmensistema)RETURN

ENDIF

LCSQL="BEGIN "+ LCSQL + " END;"liresult = thisform.sqlexec(lcsql,"tmpresul")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)

RETURNENDIF

MESSAGEBOX("Transacción finalizada con éxito",64,_screen.esTANDAR.cmensistema)thisform.Release()

1.9 Módulo de Métricas de Rendimiento

1.9.1 Definición de métricas

Limpia

WITH thisform.grid1.Recordsource = "".Column1.Controlsource = "".Column2.Controlsource = "".Column3.Controlsource = "".Column4.Controlsource = ""

SELECT TmpmetGO TOP.Recordsource = "Tmpmet".Column1.Controlsource = "Tmpmet.nombre".Column2.Controlsource = "Tmpmet.comparador".Column3.Controlsource = "Tmpmet.minimo".Column4.Controlsource = "Tmpmet.maximo"

.refresh

Page 278: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 89 -

ENDWITH

Init

thisform.limpia()thisform.muestra()

IF _screen.esTANDAR.cprivilegio<>"SYSDBA"thisform.SetAll('Enabled',.f.)MESSAGEBOX("Privilegios Insuficientes",48,_screen.esTANDAR.cmensistema)

ENDIF

Load

DODEFAULT()

SELECT 0CREATE CURSOR Tmpmet(;indice n(10),;nombre c(100),;operador c(50),;minimo c(10),;maximo c(10),;comparador c(15))INDEX on tmpmet.indice TAG llave

Muestra

SELECT TmpMetZAP

lcsql = "Select * from " + _screen.esTANDAR.cusubd + ".metrica order by indice"liresult = thisform.sqlexec(lcsql,"Tmpm1")IF liresult<0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

Page 279: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 90 -

SELECT tmpm1SCAN

SELECT TmpMetAPPEND BLANKreplace TmpMet.indice WITH tmpm1.indice,;

TmpMet.nombre WITH ALLTRIM(tmpm1.metrica),;TmpMet.operador WITH tmpm1.operador,;TmpMet.minimo WITH tmpm1.minimo,;TmpMet.maximo WITH tmpm1.maximo,;TmpMet.comparador WITH tmpm1.comparador

ENDSCAN

SELECT tmpm1USE

SELECT TmpMetGO TOP

thisform.grid1.Refresh()

Editmetrica.init

LPARAMETERS iindice

thisform.tinDICE.Value = iindiceliindice = iindicelcsql = "Select * from " + _screen.esTANDAR.cusubd + ".metrica where indice=?liindice"liresult = thisform.sqlexec(lcsql,"tmpm1")IF liresult <0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmpm1li = RECCOUNT()IF li > 0

thisform.tnombre.Value = ALLTRIM(tmpm1.metrica)thisform.tcritico.Value = tmpm1.maximothisform.tadvierte.Value = tmpm1.minimothisform.editsql.Value = ALLTRIM(tmpm1.sentencia)thisform.lbltit.Caption = "Editar métricas"FOR i=1 TO thisform.coperador.ListCount

IF ALLTRIM(thisform.coperador.List(i,1))==ALLTRIM(tmpm1.comparador)thisform.coperador.ListIndex = iEXIT

ENDIFENDFOR

Page 280: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 91 -

IF tmpm1.tipo ='P'thisform.ctiposent.ListIndex = 2

ELSEthisform.ctiposent.ListIndex = 1

ENDIF

ELSEthisform.tnombre.Enabled = .T.thisform.coperador.Enabled = .T.thisform.coperador.ListIndex = 1thisform.lbltit.Caption = "Creación de métricas"thisform.ctiposent.Enabled = .T.thisform.ctiposent.ListIndex=1

ENDIFthisform.ctiposent.InteractiveChange()thisform.Caption = thisform.lbltit.Caption

cmdguardar.click

lccadena = CHRTRAN(thisform.editsql.Value,CHR(8),' ')lccadena = CHRTRAN(lccadena,CHR(13),' ')lctipo = IIF(thisform.ctiposent.ListIndex=1,'S','P')

IF thisform.ctiposent.ListIndex = 1IF !LIKE('*SELECT*',UPPER(lccadena))

MESSAGEBOX("Debe ingresar una instruccion deSeleccion",16,_screen.esTANDAR.cmensistema)

RETURNENDIF

ELSEIF LIKE('*SELECT*',UPPER(lccadena))

MESSAGEBOX("No debe ingresar una instruccion deSeleccion",16,_screen.esTANDAR.cmensistema)

RETURNENDIF

ENDIF

IF thisform.tinDICE.Value > 0lcsql = "Update " + _screen.esTANDAR.cusubd + ".metrica "lcsql = lcsql + " set minimo=?thisform.tadvierte.Value,"lcsql = lcsql + " maximo=?thisform.tcritico.Value,"lcsql = lcsql + " sentencia=RTRIM(?lccadena),"lcsql = lcsql + " comparador=RTRIM(?thisform.coperador.Value), "lcsql = lcsql + " tipo=?lctipo "lcsql = lcsql + " where indice=?thisform.tindice.value "liresult = thisform.sqlexec(lcsql,"")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)

Page 281: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 92 -

MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIFELSE

lcsql = "Insert Into " + _screen.esTANDAR.cusubd +".metrica(indice,metrica,comparador,minimo,maximo,sentencia,tipo,operador) "

lcsql = lcsql + " values(" +_screen.esTANDAR.cusubd + ".metrica_id.nextval,'" +ALLTRIM(thisform.tnombre.value) + "','" + thisform.coperador.Value + "','"

lcsql = lcsql + ALLTRIM(thisform.tadvierte.Value) + "','" + ALLTRIM(thisform.tcritico.Value) + "','" +lccadena + "','" + lctipo + "','" + ALLTRIM(_screen.esTANDAR.cusuario) +"')"

liresult = thisform.sqlexec(lcsql,"")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIFENDIF

MESSAGEBOX("Cambios relizados con exito",64,_screen.esTANDAR.cmensistema)thisform.cmdsalir.Click()

1.10 Modulo de Almacenamiento

1.10.1 Archivo de Control

Load

DODEFAULT()

SELECT 0CREATE CURSOR tmpfile(;status c(20),;name c(160),;directorio c(160))

lcsql = "Select * from v$controlfile "liresult = thisform.sqlexec(lcsql,"tmpf")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

Page 282: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 93 -

lcban = ''liban = 0SELECT tmpfSCAN

FOR i=1 TO LEN(ALLTRIM(tmpf.name))lcban = SUBSTR(ALLTRIM(tmpf.name),i,1)IF lcban ='\'

liban = iENDIF

ENDFORlcnombre = SUBSTR(ALLTRIM(tmpf.name),liban+1,LEN(ALLTRIM(tmpf.name)))

SELECT tmpfileAPPEND BLANKreplace tmpfile.status WITH IIF(ISNULL(tmpf.status),'VALID',ALLTRIM(tmpf.status)),;

tmpfile.name WITH ALLTRIM(lcnombre),;tmpfile.directorio WITH SUBSTR(tmpf.name,1,liban)

ENDSCAN

lcsql = "select type,record_size,records_total,records_used from v$controlfile_record_section"lcsql = lcsql + " where type in ('CKPT PROGRESS','DATABASE','DATAFILE','FILENAME','LOG HISTORY','REDOLOG','REDO THREAD','TABLESPACE')"liresult = thisform.sqlexec(lcsql,"tmprecord")IF liresult<0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,64,_screen.esTANDAR.cmensistema)RETURN

ENDIF

Limpia

IF USED("TmpFile")with thisform.pgcontrol.pggeneral.grid1

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""

.Column3.Controlsource = ""SELECT TmpFileGO TOP.Recordsource = "TmpFile".Column1.Controlsource = "TmpFile.status".Column2.Controlsource = "TmpFile.name".Column3.Controlsource = "TmpFile.Directorio"

.refreshENDWITH

Page 283: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 94 -

ENDIF

thisform.pgcontrol.pggeneral.grid1.Refresh

IF USED("TmpRecord")with thisform.pgcontrol.pgrecord.grid1

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""

.Column3.Controlsource = ""

.Column4.Controlsource = ""SELECT TmpRecordGO TOP.Recordsource = "TmpRecord".Column1.Controlsource = "TmpRecord.type".Column2.Controlsource = "TmpRecord.record_size".Column3.Controlsource = "TmpRecord.records_total".Column4.Controlsource = "TmpRecord.records_used"

.refreshENDWITH

ENDIF

thisform.pgcontrol.pgrecord.grid1.Refresh

thisform.llena_datos()

Llena_datos

lcbase = _screen.esTANDAR.cdatabaselcsql = "select dbid,name,controlfile_type,to_char(controlfile_created,'dd - month- yyyy hh:mm:ss')controlfile_created,"lcsql = lcsql + " controlfile_sequence# sequence,controlfile_change# change,"lcsql = lcsql + " to_char(controlfile_time,'dd - month- yyyy hh:mm:ss') controlfile_time "lcsql = lcsql + " from v$database where UPPER(RTRIM(name))=UPPER(RTRIM(?lcbase)) "liresult = thisform.sqlexec(lcsql,"tmpInf")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT TmpInfthisform.pgcontrol.pginfo.lbliddata.Caption = ALLTRIM(STR(TmpInf.dbid))thisform.pgcontrol.pginfo.lbltipctrl.Caption = TmpInf.controlfile_typethisform.pgcontrol.pginfo.lblfeccrea.Caption = TmpInf.controlfile_createdthisform.pgcontrol.pginfo.lblnumsec.Caption = ALLTRIM(STR(TmpInf.sequence))thisform.pgcontrol.pginfo.lblnumultcam.Caption = ALLTRIM(STR(TmpInf.change))thisform.pgcontrol.pginfo.lblfecmodi.Caption = TmpInf.controlfile_time

Page 284: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 95 -

cmdcopia.click

lcsql = "Alter Database backup Controlfile to trace;"liresult = thisform.sqlexec(lcsql,"")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ELSEmen = "Copia realizada con exito.."MESSAGEBOX(men,64,_screen.esTANDAR.cmensistema)thisform.llena_datos()

ENDIF

1.10.2 Tablespaces

Load

DODEFAULT()

SELECT 0CREATE CURSOR TmpTableSpace(;name c(80),;contents c(160),;extent_management c(25),;tamanio n(11,3),;usado n(11,3),;porusado n(11,3))

SELECT TmpTableSpaceINDEX on ALLTRIM(TmpTableSpace.name) TAG llave

thisform.muestra()

limpia

IF USED("TmpTableSpace")with thisform.grid1

.Recordsource = ""

.Column1.Controlsource = ""

Page 285: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 96 -

.Column2.Controlsource = ""

.Column3.Controlsource = ""

.Column4.Controlsource = ""

.Column5.Controlsource = ""

.Column6.Controlsource = ""SELECT TmpTableSpaceGO TOP.Recordsource = "TmpTableSpace".Column1.Controlsource = "TmpTableSpace.name".Column2.Controlsource = "TmpTableSpace.contents".Column3.Controlsource = "TmpTableSpace.extent_management".Column4.Controlsource = "TmpTableSpace.tamanio".Column5.Controlsource = "TmpTableSpace.usado".Column6.Controlsource = "TmpTableSpace.porusado"

.refreshENDWITH

ENDIF

Muestra

SELECT TmpTableSpaceZAP

lcsql = 'Select t.tablespace_name "Tablespace", t.contents "Tipo", t.extent_management "Gestion",d.file_name, 'lcsql = lcsql + ' ROUND(MAX(d.bytes)/1024/1024,2) "MB_Tamanio", 'lcsql = lcsql + ' ROUND((MAX(d.bytes)/1024/1024) - (SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024),2)"MB_Usados" 'lcsql = lcsql + ' FROM DBA_FREE_SPACE f, DBA_DATA_FILES d, DBA_TABLESPACES t 'lcsql = lcsql + ' WHERE t.tablespace_name = d.tablespace_name AND f.tablespace_name(+) = d.tablespace_name'lcsql = lcsql + ' AND f.file_id(+) = d.file_id 'lcsql = lcsql + ' GROUP BY t.tablespace_name,t.contents,t.extent_management,d.file_name 'lcsql = lcsql + ' ORDER BY 1,3 DESC 'liresult = thisform.sqlexec(lcsql,"TmpTable")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT TmpTableSCAN

SELECT TmpTableSpaceSEEK ALLTRIM(TmpTable.Tablespace)IF !FOUND()

SELECT TmpTableSpaceAPPEND BLANK

Page 286: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 97 -

replace TmpTableSpace.name WITHTmpTable.Tablespace,;

TmpTableSpace.contents WITH TmpTable.tipo,;TmpTableSpace.extent_management WITH TmpTable.Gestion,;TmpTableSpace.tamanio WITH

IIF(ISNULL(TmpTable.MB_tamanio),0,TmpTable.MB_tamanio),;TmpTableSpace.usado WITH

IIF(ISNULL(TmpTable.MB_usados),0,TmpTable.MB_usados),;TmpTableSpace.porusado WITH

IIF(ISNULL(TmpTable.MB_usados),0,ROUND((TmpTable.MB_usados *100)/IIF(TmpTable.MB_tamanio=0,1,TmpTable.MB_tamanio),2))

ELSESELECT TmpTableSpacereplace TmpTableSpace.tamanio WITH TmpTableSpace.tamanio +

IIF(ISNULL(TmpTable.MB_tamanio),0,TmpTable.MB_tamanio),;TmpTableSpace.usado WITH

TmpTableSpace.usado + IIF(ISNULL(TmpTable.MB_usados),0,TmpTable.MB_usados),;TmptableSpace.porusado WITH

ROUND((TmpTableSpace.usado * 100)/IIF(TmpTableSpace.tamanio=0,1,TmpTableSpace.tamanio),2)

ENDIFENDSCAN

SELECT TmpTableSpaceGO TOP

Editable.init

LPARAMETERS cnombrelcntable = cnombre

thisform.pgtable.pggeneral.txtnombre.Value = lcntablethisform.limpia()thisform.llena_archivos(lcntable)thisform.inf_status(lcntable)thisform.pgtable.pggeneral.cmdoffline.ListIndex = 1thisform.pgtable.pggeneral.optestado.InteractiveChange()

IF LEN(ALLTRIM(lcntable))=0thisform.pgtable.pggeneral.txtnombre.Enabled = .T.thisform.Caption = 'Crear Tablespace 'thisform.pgtable.pggeneral.cmdagrega.Click()

lcsql = "select value from v$parameter where RTRIM(name)='control_files'"liresult = thisform.sqlexec(lcsql,"tmpname")IF liresult < 0

men = "Error al seleccionar la ruta del tablespace - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)

Page 287: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 98 -

ENDIF

libar = 0licom = 0SELECT tmpnameFOR i=0 TO LEN(ALLTRIM(Tmpname.value))

IF SUBSTR(ALLTRIM(tmpname.value),i,1)<>','IF SUBSTR(ALLTRIM(tmpname.value),i,1)='\'

libar = iENDIF

ELSEEXIT

ENDIFENDFOR

SELECT TmpFileGO TOPreplace TmpFile.nombre WITH '.ora'replace TmpFile.ruta WITH UPPER(SUBSTR(ALLTRIM(Tmpname.value),1,libar))replace TmpFile.peso WITH 'MB'replace TmpFile.tamanio WITH 5

cruta = UPPER(SUBSTR(ALLTRIM(Tmpname.value),1,libar))thisform.pgtable.pggeneral.grid1.Refresh()thisform.pgtable.pggeneral.grid1.column1.text1.InteractiveChange()thisform.pgtable.page2.optregistro.optsi.Value = 1thisform.pgtable.page2.optregistro.optno.Value = 0thisform.cmdsql.Click()thisform.pgtable.pggeneral.chkestado.Enabled = .F.

thisform.pgtable.page2.optgestion.optdiccionario.Value = 0thisform.pgtable.page2.optgestion.optdiccionario.Enabled = .F.thisform.pgtable.page2.optgestion.optlocal.Value = 1thisform.pgtable.page2.optgestion.optlocal.Enabled = .T.thisform.pgtable.page2.optasigna.optautoma.Enabled = .T.thisform.pgtable.page2.optasigna.optautoma.Value = 1thisform.pgtable.page2.optasigna.optuniforme.Enabled = .T.thisform.pgtable.page2.optasigna.optuniforme.Value = 0thisform.pgtable.page2.optasigna.InteractiveChange()

thisform.pgtable.page2.optsigue.optautoma.Value = 1thisform.pgtable.page2.optsigue.optautoma.Enabled = .T.thisform.pgtable.page2.optsigue.optuniforme.Value = 0thisform.pgtable.page2.optsigue.optuniforme.Enabled = .T.

thisform.pgtable.pggeneral.opttipo.optdeshacer.Enabled = .T.thisform.pgtable.pggeneral.opttipo.optpermanente.Enabled = .T.thisform.pgtable.pggeneral.opttipo.opttemporal.Enabled = .T.

thisform.pgtable.pggeneral.opttipo.optdeshacer.Value = 0thisform.pgtable.pggeneral.opttipo.opttemporal.Value = 0thisform.pgtable.pggeneral.opttipo.optpermanente.Value = 1

thisform.pgtable.pggeneral.opttipo.InteractiveChange()

Page 288: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 99 -

thisform.pgtable.pggeneral.txtnombre.SetFocus()

ELSEthisform.Caption = 'Editar Tablespace: ' + ALLTRIM(lcntable)

ENDIF

Load

DODEFAULT()thisform.crear_cursor()PUBLIC cRuta,lifocos,lidatafilecRuta = ''lifocos = 0lidatafile = 0

buscacambios

thisform.busccamarcprin()thisform.buscacamestado()

*thisform.busca_cambiosarch()

Busca_cambiosarch

SELECT TmpCambiosSCAN

IF TmpCambios.status <> 'N'lcsql = ''SELECT TmpCambiosIF ALLTRIM(TmpCambios.nameact)<>ALLTRIM(TmpCambios.namenew)

lcsql = "ALTER DATABASE RENAME FILE '" + ALLTRIM(TmpCambios.nameact) + "'TO "

lcsql = lcsql + "'" + ALLTRIM(TmpCambios.namenew) + "';"ENDIF

Page 289: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 100 -

IF ALLTRIM(TmpCambios.estadoact)<>ALLTRIM(TmpCambios.estadonew)lcsql = lcsql + " ALTER DATABASE DATAFILE '" + ALLTRIM(TmpCambios.namenew)lcsql = lcsql + "' " + ALLTRIM(TmpCambios.estadonew) + " ;"

ENDIF

IF Tmpcambios.tamact <> TmpCambios.tamnewlcsql = lcsql + " ALTER DATABASE DATAFILE '" + ALLTRIM(TmpCambios.namenew)lcsql = lcsql + "' RESIZE " + ALLTRIM(STR(TmpCambios.tamnew,10)) +

SUBSTR(TmpCambios.pesotamnew,1,1)ELSE

IF ALLTRIM(TmpCambios.pesotamnew) <> ALLTRIM(Tmpcambios.pesotamact)lcsql = lcsql + " ALTER DATABASE DATAFILE '" +

ALLTRIM(TmpCambios.namenew)lcsql = lcsql + "' RESIZE " + ALLTRIM(STR(TmpCambios.tamnew,10)) +

SUBSTR(TmpCambios.pesotamnew,1,1) + ";"ENDIF

ENDIF

lcsql1 = ''lcsql2 = ''libandera = .f.

IF TmpCambios.autoextnew <> TmpCambios.autoextactIF ALLTRIM(TmpCambios.autoextnew) = 'NO'

lcsql1 = lcsql1 + " ALTER DATABASE DATAFILE '" +ALLTRIM(TmpCambios.namenew)

lcsql1 = lcsql1 + "' AUTOEXTEND OFF;"libandera = .t.

ELSElcsql1 = lcsql1 + " ALTER DATABASE DATAFILE '" +

ALLTRIM(TmpCambios.namenew)lcsql1 = lcsql1 + "' AUTOEXTEND ON "

ENDIFELSE

IF ALLTRIM(TmpCambios.autoextnew) = 'YES'lcsql1 = lcsql1 + " ALTER DATABASE DATAFILE '" +

ALLTRIM(TmpCambios.namenew)lcsql1 = lcsql1 + "' AUTOEXTEND ON "

ENDIFENDIF

lcsql2 = lcsql1

IF !libanderaIF TmpCambios.increnew <> TmpCambios.increact

lcsql1 = lcsql1 + " NEXT " + ALLTRIM(STR(TmpCambios.increnew,10)) +SUBSTR(TmpCambios.pesoincrenew,1,1) + " "

ELSEIF ALLTRIM(TmpCambios.pesoincrenew) <>

ALLTRIM(TmpCambios.pesoincreact)lcsql1 = lcsql1 + " NEXT " +

ALLTRIM(STR(TmpCambios.increnew,10)) + SUBSTR(TmpCambios.pesoincrenew,1,1) + " "ENDIF

ENDIF

Page 290: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 101 -

IF TmpCambios.noliminew <> TmpCambios.nolimiactIF TmpCambios.noliminew = 'NO'

IF TmpCambios.valornew <> TmpCambios.valoractlcsql1 = lcsql1 + " MAXSIZE " +

ALLTRIM(STR(TmpCambios.valornew,10)) + SUBSTR(TmpCambios.pesovalnew,1,1) + ";"ELSE

IF ALLTRIM(TmpCambios.pesovalnew) <>ALLTRIM(TmpCambios.pesovalact)

lcsql1 = lcsql1 + " MAXIZE " +ALLTRIM(STR(TmpCambios.valornew,10)) + SUBSTR(TmpCambios.pesovalnew,1,1) + ";"

ENDIFENDIF

ELSElcsql1 = lcsql1 + " MAXSIZE UNLIMITED;"

ENDIFENDIF

ENDIF

thisform.editSql.value = thisform.editSql.value + lcsql +IIF(ALLTRIM(lcsql1)<>ALLTRIM(lcsql2),lcsql1,IIF(libandera=.f.,'',lcsql1))

ENDIFENDSCAN

Busca_cambioslista

lcsql = ''thisform.editSql.Value = ''SELECT TmpFileln = RECNO('TmpFile')SELECT TmpFileSCAN

SELECT TmpRFileSEEK TmpFile.file_idIF FOUND()

IF ALLTRIM(tmprfile.nombre)<>ALLTRIM(tmpfile.nombre)lcsql = "ALTER DATABASE RENAME FILE '" +

ALLTRIM(tmprfile.ruta)+ALLTRIM(tmprfile.nombre) + "' TO '"lcsql = lcsql + ALLTRIM(tmpfile.ruta)+ALLTRIM(tmpfile.nombre) + "'; "

ENDIFthisform.editSql.Value = thisform.editSql.Value + lcsql

ENDIFENDSCAN

SELECT TmpFileGO ln

Page 291: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 102 -

Buscacamestado

cnametable = ALLTRIM(thisform.pgtable.pggeneral.txtnombre.Value)lcsql = "Selectstatus,contents,extent_management,allocation_type,segment_space_management,logging,block_size,initial_extent "lcsql = lcsql + " from dba_tablespaces where tablespace_name=?cnametable"liresult = thisform.sqlexec(lcsql,"tmp2")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

lcsql = ''SELECT tmp2GO TOPIF thisform.pgtable.pggeneral.txtnombre.Enabled = .F.

IF thisform.pgtable.pggeneral.optestado.optonline.Value = 1IF ALLTRIM(tmp2.status)=='OFFLINE'

lcsql = "Alter Tablespace " + cnametable + " OFFLINE " +ALLTRIM(thisform.pgtable.pggeneral.cmdoffline.Value) + ";"

ENDIF

IF ALLTRIM(tmp2.status)=='READ ONLY'IF thisform.pgtable.pggeneral.chkestado.Value = 0

lcsql = "ALTER TABLESPACE " + cnametable + " READ WRITE; "ENDIF

ELSEIF thisform.pgtable.pggeneral.chkestado.Value = 1

lcsql = "ALTER TABLESPACE " + cnametable + " READ ONLY; "ENDIF

ENDIFELSE

IF ALLTRIM(tmp2.status)=='OFFLINE'lcsql = "Alter Tablespace " + cnametable + " ONLINE; "

ELSEctipo = ' 'DO CASE

CASE ALLTRIM(thisform.pgtable.pggeneral.cmdoffline.Value)=='Temporal'ctipo = 'TEMPORARY'

CASE ALLTRIM(thisform.pgtable.pggeneral.cmdoffline.Value)=='Inmediato'ctipo = 'INMEDIATE'

CASE ALLTRIM(thisform.pgtable.pggeneral.cmdoffline.Value)=='ParaRecuperar'

ctipo = 'FOR RECOVER'

OTHERWISEctipo = 'NORMAL'

ENDCASE

Page 292: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 103 -

lcsql = "Alter Tablespace " + cnametable + " OFFLINE " + ctipo + ";"ENDIF

ENDIF

IF thisform.pgtable.page2.optregistro.optsi.Value = 1IF ALLTRIM(tmp2.logging)=='NOLOGGING'

lcsql = lcsql + " ALTER TABLESPACE " + cnametable + " LOGGING;"ENDIF

ELSEIF ALLTRIM(tmp2.logging)=='LOGGING'

lcsql = lcsql + " ALTER TABLESPACE " + cnametable + " NOLOGGING;"ENDIF

ENDIFENDIF

thisform.editSql.Value = ALLTRIM(thisform.editSql.Value) + lcsql

buscacamarcprin

lcsql = ''thisform.pgtable.pggeneral.grid1.Refreshlidatafile = 0IF thisform.pgtable.pggeneral.txtnombre.Enabled

lcsql = "CREATE"

DO CASECASE thisform.pgtable.pggeneral.opttipo.opttemporal.value = 1

lcsql = lcsql + " TEMPORARY"

CASE thisform.pgtable.pggeneral.opttipo.optdeshacer.Value = 1lcsql = lcsql + " UNDO"

ENDCASE

lcsql = lcsql + " TABLESPACE " + ALLTRIM(thisform.pgtable.pggeneral.txtnombre.Value)

DO CASECASE thisform.pgtable.pggeneral.opttipo.opttemporal.value = 1

lcsql = lcsql + " TEMPFILE"

CASE thisform.pgtable.pggeneral.opttipo.optpermanente.Value = 1IF thisform.pgtable.page2.optregistro.optsi.Value = 1

lcsql = lcsql + " LOGGING"ELSE

lcsql = lcsql + " NOLOGGING"ENDIF

Page 293: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 104 -

lcsql = lcsql + " DATAFILE"ENDCASE

ENDIF

SELECT TmpFilelipos = RECNO('TmpFile')

SELECT TmpFilelinum = RECCOUNT()licnt = 0SELECT TmpFileGO TOPSCAN

licnt = licnt + 1SELECT TmpRFileSEEK TmpFile.file_idIF FOUND()

IF ALLTRIM(TmpFile.nombre)<>ALLTRIM(TmpRFile.nombre)lcsql = "ALTER DATABASE RENAME FILE '" +

ALLTRIM(TmpRFile.ruta)+ALLTRIM(TmpRFIle.nombre) + "' TO "lcsql = lcsql + "'" + ALLTRIM(TmpFile.ruta)+ALLTRIM(TmpFile.nombre) + "';"

ENDIF

IF ALLTRIM(TmpFile.estadoact)<>ALLTRIM(TmpRFile.estadoact)lcsql = lcsql + " ALTER DATABASE DATAFILE '" + ALLTRIM(TmpFile.ruta) +

ALLTRIM(TmpFile.nombre)lcsql = lcsql + "' " + ALLTRIM(TmpFile.estadoact) + " ;"

ENDIF

IF TmpFile.tamanio <> TmpRFile.tamaniolcsql = lcsql + " ALTER DATABASE DATAFILE '" + ALLTRIM(TmpFile.ruta) +

ALLTRIM(TmpFile.nombre)lcsql = lcsql + "' RESIZE " + ALLTRIM(STR(TmpFile.tamanio,10)) + TmpFile.peso +

";"ELSE

IF ALLTRIM(TmpFile.peso) <> ALLTRIM(TmpRFile.peso)lcsql = lcsql + " ALTER DATABASE DATAFILE '" +

ALLTRIM(TmpFile.ruta)+ALLTRIM(TmpFile.nombre)lcsql = lcsql + "' RESIZE " +

ALLTRIM(STR(TmpFile.tamanio,10))+TmpFile.peso + ";"ENDIF

ENDIF

lcsql1 = ''lcsql2 = ''libandera = .f.IF TmpFile.autoextact <> TmpRFile.autoextact

IF ALLTRIM(TmpFile.autoextact) = 'NO'lcsql1 = lcsql1 + " ALTER DATABASE DATAFILE '" +

ALLTRIM(TmpFile.ruta) + ALLTRIM(TmpFile.nombre)lcsql1 = lcsql1 + "' AUTOEXTEND OFF;"libandera = .t.

ELSE

Page 294: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 105 -

lcsql1 = lcsql1 + " ALTER DATABASE DATAFILE '" +ALLTRIM(TmpFile.ruta) + ALLTRIM(TmpFile.nombre)

lcsql1 = lcsql1 + "' AUTOEXTEND ON "ENDIF

ELSEIF ALLTRIM(TmpFile.autoextact) = 'YES'

lcsql1 = lcsql1 + " ALTER DATABASE DATAFILE '" +ALLTRIM(TmpFile.ruta) + ALLTRIM(TmpFile.nombre)

lcsql1 = lcsql1 + "' AUTOEXTEND ON "ENDIF

ENDIF

lcsql2 = lcsql1

IF !libanderaIF TmpFile.increact <> TmpRFile.increact

lcsql1 = lcsql1 + " NEXT " + ALLTRIM(STR(TmpFile.increact,10)) +SUBSTR(TmpFile.pesoincreact,1,1) + " "

ELSEIF ALLTRIM(TmpFile.pesoincreact) <> ALLTRIM(TmpRFile.pesoincreact)

lcsql1 = lcsql1 + " NEXT " +ALLTRIM(STR(TmpRFile.increact,10)) + SUBSTR(TmpRFile.pesoincreact,1,1) + " "

ENDIFENDIFIF TmpFile.nolimiact <> TmpRFile.nolimiact

IF TmpFile.nolimiact = 'NO'IF TmpFile.valoract <> TmpRFile.valoract

lcsql1 = lcsql1 + " MAXSIZE " +ALLTRIM(STR(TmpFile.valoract,10)) + SUBSTR(TmpFile.pesovalact,1,1) + ";"

ELSEIF ALLTRIM(TmpFile.pesovalact) <>

ALLTRIM(TmpRFile.pesovalact)lcsql1 = lcsql1 + " MAXIZE " +

ALLTRIM(STR(TmpFile.valoract,10)) + SUBSTR(TmpFile.pesovalact,1,1) + ";"ENDIF

ENDIFELSE

lcsql1 = lcsql1 + " MAXSIZE UNLIMITED;"ENDIF

ELSEIF TmpFile.nolimiact = 'NO'

IF TmpFile.valoract <> TmpRFile.valoractlcsql1 = lcsql1 + " MAXSIZE " +

ALLTRIM(STR(TmpFile.valoract,10)) + SUBSTR(TmpFile.pesovalact,1,1) + ";"ELSE

IF ALLTRIM(TmpFile.pesovalact) <>ALLTRIM(TmpRFile.pesovalact)

lcsql1 = lcsql1 + " MAXIZE " +ALLTRIM(STR(TmpFile.valoract,10)) + SUBSTR(TmpFile.pesovalact,1,1) + ";"

ENDIFENDIF

ENDIFENDIF

ENDIF

Page 295: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 106 -

lcsql = lcsql + IIF(ALLTRIM(lcsql1)<>ALLTRIM(lcsql2),lcsql1,IIF(libandera=.f.,'',lcsql1))

ELSEIF thisform.pgtable.pggeneral.txtnombre.Enabled = .F.

IF LEN(ALLTRIM(TmpFile.nombre)) > 0 OR LEN(ALLTRIM(TmpFile.ruta))>0lcsql = lcsql + " ALTER TABLESPACE " +

ALLTRIM(thisform.pgtable.pggeneral.txtnombre.Value) + " ADD "lcsql = lcsql + " DATAFILE '" + ALLTRIM(TmpFile.ruta) +

ALLTRIM(TmpFile.nombre) + "' SIZE " + ALLTRIM(STR(TmpFile.tamanio,10)) + SUBSTR(TmpFile.peso,1,1)ENDIF

IF TmpFile.reutiliza = 1lcsql = lcsql + " REUSE"

ENDIFELSE

lcsql = lcsql + IIF(licnt=1,"",",") + " '" + ALLTRIM(TmpFile.ruta) +ALLTRIM(TmpFile.nombre) + "' SIZE " + ALLTRIM(STR(TmpFile.tamanio,10)) + SUBSTR(TmpFile.peso,1,1)

ENDIF

lcsql1 = ''lcsql2 = ''libandera = .f.lientre = 0

IF ALLTRIM(TmpFile.autoextact) = 'YES'lcsql1 = lcsql1 + " AUTOEXTEND ON"libandera = .t.

ENDIF

lcsql2 = lcsql1IF libandera

IF TmpFile.increact > 0lcsql1 = lcsql1 + " NEXT " + ALLTRIM(STR(TmpFile.increact,10)) +

SUBSTR(TmpFile.pesoincreact,1,1)ENDIF

IF TmpFile.nolimiact = 'NO'IF TmpFile.valoract > 0

lcsql1 = lcsql1 + " MAXSIZE " +ALLTRIM(STR(TmpFile.valoract,10)) + SUBSTR(TmpFile.pesovalact,1,1)

ENDIFELSE

lcsql1 = lcsql1 + " MAXSIZE UNLIMITED"ENDIF

lcsql = lcsql + IIF(ALLTRIM(lcsql1)<>ALLTRIM(lcsql2),lcsql1,IIF(libandera=.f.,'',lcsql1))ENDIF

IF thisform.pgtable.pggeneral.txtnombre.Enabled = .F.lcsql = lcsql + ";"

ENDIFENDIF

Page 296: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 107 -

ENDSCAN

IF thisform.pgtable.pggeneral.opttipo.optdeshacer.Value = 0IF thisform.pgtable.pggeneral.txtnombre.Enabled = .T.

lcsql = lcsql + " EXTENT MANAGEMENT LOCAL"

IF thisform.pgtable.pggeneral.optestado.EnabledIF thisform.pgtable.pggeneral.optestado.optonline.Value = 1

lcsql = lcsql + ""ELSE

lcsql = lcsql + " OFFLINE"ENDIF

ENDIF

IF thisform.pgtable.page2.optasigna.optautoma.Value = 1lcsql = lcsql + ""

ELSElcsql = lcsql + " UNIFORM"IF thisform.pgtable.page2.txttam.Value > 0

lcsql = lcsql + ' SIZE ' +ALLTRIM(STR(thisform.pgtable.page2.txttam.Value)) + SUBSTR(thisform.pgtable.page2.cmbtamanio.Value,1,1)

ENDIFENDIF

DO CASECASE thisform.pgtable.pggeneral.opttipo.optpermanente.Value = 1

lcsql = lcsql + " SEGMENT SPACE MANAGEMENT"IF thisform.pgtable.page2.optsigue.optautoma.Value = 1

lcsql = lcsql + " AUTO"ELSE

lcsql = lcsql + " MANUAL"ENDIF

ENDCASElcsql = lcsql + ";"

ENDIFENDIF

IF thisform.pgtable.pggeneral.chktipo.Value = 1lcsql = lcsql + " ALTER DATABASE DEFAULT TEMPORARY TABLESPACE " +

ALLTRIM(thisform.pgtable.pggeneral.txtnombre.Value)+";"ENDIF

IF linum > 0SELECT TmpFileGO lipos

ENDIF

thisform.editSql.Value = lcsql

Page 297: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 108 -

Crear_cursor

SELECT 0CREATE CURSOR tmpfile(;nombre c(160),;ruta c(160),;tamanio n(10),;usado n(10,6),;status c(1),;peso c(2),;file_id n(10),;tam n(10,6),;nameact c(160),;estadoact c(160),;tamact n(10),;pesotamact c(2),;autoextact c(3),;increact n(10),;pesoincreact c(2),;valoract n(10),;pesovalact c(2),;nolimiact c(2),;reutiliza n(1),;status1 c(1))

SELECT 0CREATE CURSOR TmpRFile(;nombre c(160),;ruta c(160),;tamanio n(10),;usado n(10,6),;status c(1),;peso c(2),;file_id n(10),;tam n(10,6),;nameact c(160),;estadoact c(160),;tamact n(10),;pesotamact c(2),;autoextact c(3),;increact n(10),;pesoincreact c(2),;valoract n(10),;pesovalact c(2),;nolimiact c(2),;reutiliza n(1),;status1 c(1))

SELECT TmpRFileINDEX on TmpRFile.file_id TAG llave

Page 298: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 109 -

SELECT 0CREATE CURSOR tmpcambios(;nameact c(160),;namenew c(160),;estadoact c(160),;estadonew c(160),;tamnew n(10),;pesotamnew c(2),;autoextnew c(3),;increnew n(10),;pesoincrenew c(2),;valornew n(10),;pesovalnew c(2),;tamact n(10),;pesotamact c(2),;autoextact c(3),;increact n(10),;pesoincreact c(2),;valoract n(10),;pesovalact c(2),;nolimiact c(2),;noliminew c(2),;file_id n(10),;reutiliza n(1),;status c(1))

SELECT TmpcambiosINDEX on TmpCambios.file_id TAG llave

Inf_status

LPARAMETERS ctablecnametable = ctable

lcsql = "Selectstatus,contents,extent_management,allocation_type,segment_space_management,logging,block_size,initial_extent "lcsql = lcsql + " from dba_tablespaces where tablespace_name=?cnametable"liresult = thisform.sqlexec(lcsql,"tmp2")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmp2GO TOPDO CASE

Page 299: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 110 -

CASE ALLTRIM(tmp2.status)=='ONLINE'thisform.pgtable.pggeneral.optestado.optonline.Value = 1thisform.pgtable.pggeneral.optestado.optOffline.Value = 0thisform.pgtable.pggeneral.chkestado.Value = 0thisform.pgtable.pggeneral.cmdoffline.Enabled = .F.

CASE ALLTRIM(tmp2.status)=='OFFLINE'thisform.pgtable.pggeneral.optestado.optonline.Value = 0thisform.pgtable.pggeneral.optestado.optOffline.Value = 1thisform.pgtable.pggeneral.cmdoffline.Enabled = .T.

CASE ALLTRIM(tmp2.status)=='READ ONLY'thisform.pgtable.pggeneral.optestado.optonline.Value = 1thisform.pgtable.pggeneral.optestado.optOffline.Value = 0thisform.pgtable.pggeneral.chkestado.Value = 1

ENDCASE

SELECT tmp2GO TOPDO CASE

CASE ALLTRIM(tmp2.contents)=='PERMANENT'thisform.pgtable.pggeneral.opttipo.optpermanente.Value = 1thisform.pgtable.pggeneral.opttipo.optdeshacer.Value = 0thisform.pgtable.pggeneral.opttipo.opttemporal.Value = 0

CASE ALLTRIM(tmp2.contents)=='TEMPORARY'thisform.pgtable.pggeneral.opttipo.optpermanente.Value = 0thisform.pgtable.pggeneral.opttipo.optdeshacer.Value = 0thisform.pgtable.pggeneral.opttipo.opttemporal.Value = 1

CASE ALLTRIM(tmp2.contents)=='UNDO'thisform.pgtable.pggeneral.opttipo.optpermanente.Value = 0thisform.pgtable.pggeneral.opttipo.optdeshacer.Value = 1thisform.pgtable.pggeneral.opttipo.opttemporal.Value = 0

thisform.pgtable.page2.optregistro.Enabled = .F.

ENDCASE

thisform.pgtable.pggeneral.opttipo.InteractiveChange()

SELECT tmp2GO TOPIF ALLTRIM(tmp2.extent_management)=='LOCAL'

thisform.pgtable.page2.optgestion.optlocal.Value = 1thisform.pgtable.page2.optgestion.optdiccionario.Enabled = .F.thisform.pgtable.page2.optgestion.optlocal.Enabled = .T.thisform.pgtable.page2.optgestion.optdiccionario.Value = 0

ELSEthisform.pgtable.page2.optgestion.optlocal.Value = 0thisform.pgtable.page2.optgestion.optdiccionario.Enabled = .T.thisform.pgtable.page2.optgestion.optlocal.Enabled = .F.

Page 300: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 111 -

thisform.pgtable.page2.optgestion.optdiccionario.Value = 1ENDIF

SELECT tmp2GO TOPIF ALLTRIM(tmp2.allocation_type)=='SYSTEM'

thisform.pgtable.page2.optasigna.optautoma.Value = 1thisform.pgtable.page2.optasigna.optuniforme.Value = 0

ELSEthisform.pgtable.page2.optasigna.optautoma.Value = 0thisform.pgtable.page2.optasigna.optuniforme.Value = 1

ENDIFSELECT tmp2GO TOPIF ALLTRIM(tmp2.logging)=='LOGGING'

thisform.pgtable.page2.optregistro.optsi.Value = 1thisform.pgtable.page2.optregistro.optno.Value = 0

ELSEthisform.pgtable.page2.optregistro.optsi.Value = 0thisform.pgtable.page2.optregistro.optno.Value = 1

ENDIFSELECT tmp2thisform.pgtable.page2.txtblock.Value = tmp2.block_sizethisform.pgtable.page2.txttam.Value = tmp2.initial_extent/1024thisform.pgtable.page2.cmbtamanio.ListIndex = 1

thisform.pgtable.page2.optasigna.InteractiveChange()

limpia

IF USED("TmpFile")with thisform.pgtable.pggeneral.grid1

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""

.Column3.Controlsource = ""

.Column4.Controlsource = ""

.Column5.Controlsource = ""SELECT TmpFileZAP.Recordsource = "TmpFile".Column1.Controlsource = "TmpFile.nombre".Column2.Controlsource = "TmpFile.ruta".Column3.Controlsource = "TmpFile.tamanio".Column4.ControlSource = "TmpFile.peso".column5.COntrolSource = "TmpFile.usado"

.refreshENDWITH

ENDIF*!* .Column4.ControlSource = "TmpFile.peso"*!*

Page 301: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 112 -

Llena_archivos

LPARAMETERS ctablespacectable = UPPER(ctablespace)lcsql = "Select d.file_id,d.file_name,MAX(d.bytes)/1024/1024 MB_Tamanio, "lcsql = lcsql + " ROUND((MAX(d.bytes)/1024/1024) - (SUM(decode(f.bytes, NULL,0,

f.bytes))/1024/1024),3) MB_Usados "lcsql = lcsql + " FROM DBA_FREE_SPACE f, DBA_DATA_FILES d, DBA_TABLESPACES t "lcsql = lcsql + " WHERE t.tablespace_name = d.tablespace_name AND f.tablespace_name(+) =

d.tablespace_name "lcsql = lcsql + " AND f.file_id(+) = d.file_id and RTRIM(t.tablespace_name)=RTRIM(?ctable) "lcsql = lcsql + " GROUP BY d.file_id,t.tablespace_name,t.contents,t.extent_management,d.file_name "liresult = thisform.sqlexec(lcsql,"tmp1")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

lcname = ''liindice = 0SELECT tmp1SCAN

FOR i=1 TO LEN(ALLTRIM(tmp1.file_name))IF SUBSTR(ALLTRIM(tmp1.file_name),i,1)='\'

liindice = iENDIF

ENDFOR

lcname = SUBSTR(ALLTRIM(tmp1.file_name),liindice+1,i)litam = tmp1.mb_tamanio - INT(tmp1.mb_tamanio*100)/100SELECT tmpfileAPPEND BLANKreplace tmpfile.nombre WITH lcname,;

tmpfile.ruta WITH SUBSTR(ALLTRIM(tmp1.file_name),1,liindice),;tmpfile.tamanio WITH

IIF(litam=0,tmp1.mb_tamanio,tmp1.mb_tamanio*1024),;tmpfile.usado WITH

IIF(litam=0,tmp1.mb_usados,tmp1.mb_usados*1024),;tmpfile.status WITH 'O',;tmpfile.peso WITH IIF(litam=0,'MB','KB'),;tmpfile.file_id WITH tmp1.file_id,;tmpfile.tam WITH tmp1.mb_usados

cRuta = ALLTRIM(TmpFile.ruta)

SELECT TmpFileSCATTER MEMVARSELECT TmpRFileAPPEND BLANKGATHER MEMVAR

Page 302: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 113 -

SELECT TmpRFilelipos = RECNO('TmpRFile')

thisform.llena_archivos2(ALLTRIM(TmpFile.ruta)+ALLTRIM(TmpFile.nombre),thisform.pgtable.pggeneral.txtnombre.Value,lipos,TmpFile.file_id,TmpFile.status,tmpfile.tamanio,tmpfile.peso)

ENDSCAN

SELECT TmpFileGO TOPthisform.pgtable.pggeneral.grid1.Refresh

llena_archivos2

LPARAMETERS cname,ctable,isesion,ifileid,cstatus,itamanio,cpeso

SELECT TmpRFileGO isesion

SELECT TmpFileGO isesion

i_File = ifileidlcname = cname

SELECT TmpRFilereplace TmpRFile.nameact WITH cname

SELECT TmpFilereplace TmpFile.nameact WITH cname

lcsql = " select * from v$datafile where RTRIM(name)=RTRIM(?lcname)"liresult = thisform.sqlexec(lcsql,"Tfiles")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT TfilesGO TOP

SELECT TmpRFilereplace TmpRFile.estadoact WITH ALLTRIM(Tfiles.status)

SELECT TmpFilereplace TmpFile.estadoact WITH ALLTRIM(Tfiles.status)

IF cstatus = 'N'SELECT TmpRFile

Page 303: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 114 -

replace TmpRFile.tamact WITH itamanio

SELECT TmpFilereplace TmpFile.tamact WITH itamanio

IF cpeso = 'KB'SELECT TmpRFilereplace TmpRFile.pesotamact WITH 'KB'

SELECT TmpFilereplace TmpFile.pesotamact WITH 'KB'

ELSESELECT TmpRFilereplace TmpRFile.pesotamact WITH 'MB'

SELECT TmpFilereplace TmpFile.pesotamact WITH 'MB'

ENDIFELSE

litam = Tfiles.bytes/1024/1024lipeso = litam - INT(litam*100)/100IF lipeso = 0

SELECT TmpRFilereplace TmpRFile.tamact WITH litamreplace TmpRFile.pesotamact WITH 'MB'

SELECT TmpFilereplace TmpFile.tamact WITH litamreplace TmpFile.pesotamact WITH 'MB'

ELSESELECT TmpRFilereplace TmpRFile.tamact WITH litam *1024replace TmpRFile.pesotamact WITH 'KB'

SELECT TmpFilereplace TmpFile.tamact WITH litam *1024replace TmpFile.pesotamact WITH 'KB'

ENDIFENDIF

lcsql = " select * from dba_data_files where RTRIM(file_name)=RTRIM(?lcname)"liresult = thisform.sqlexec(lcsql,"Tfiles1")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT Tfiles1

SELECT TmpRFilereplace TmpRFile.autoextact WITH Tfiles1.autoextensible

Page 304: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 115 -

SELECT TmpFilereplace TmpFile.autoextact WITH Tfiles1.autoextensible

lcsql = "select value/1024 value from v$parameter where name='db_block_size'"liresult = thisform.sqlexec(lcsql,"tmpsize")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmpsizeGO TOPlitam = (Tfiles1.increment_by * tmpsize.value)/1024lipeso = litam - INT(litam*100)/100IF lipeso=0

SELECT TmpRFilereplace TmpRFile.increact WITH (Tfiles1.increment_by * tmpsize.value)/1024replace TmpRFile.pesoincreact WITH 'MB'

SELECT TmpFilereplace TmpFile.increact WITH (Tfiles1.increment_by * tmpsize.value)/1024replace TmpFile.pesoincreact WITH 'MB'

ELSESELECT TmpRFilereplace TmpRFile.increact WITH Tfiles1.increment_by * tmpsize.valuereplace TmpRFile.pesoincreact WITH 'KB'

SELECT TmpFilereplace TmpFile.increact WITH Tfiles1.increment_by * tmpsize.valuereplace TmpFile.pesoincreact WITH 'KB'

ENDIF

SELECT Tfiles1litam = (Tfiles1.maxbytes/1024)/1024lipeso = litam - INT(litam*100)/100IF lipeso = 0 OR INT(litam) = 16383

IF INT(litam) = 16383SELECT TmpRFilereplace TmpRFile.valoract WITH INT(litam)replace TmpRFile.pesovalact WITH 'MB'replace TmpRFile.nolimiact WITH 'NO'

SELECT TmpFilereplace TmpFile.valoract WITH INT(litam)replace TmpFile.pesovalact WITH 'MB'replace TmpFile.nolimiact WITH 'NO'

ELSESELECT TmpRFilereplace TmpRFile.valoract WITH INT(litam)replace TmpRFile.pesovalact WITH 'MB'replace TmpRFile.nolimiact WITH 'NO'

Page 305: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 116 -

SELECT TmpFilereplace TmpFile.valoract WITH INT(litam)replace TmpFile.pesovalact WITH 'MB'replace TmpFile.nolimiact WITH 'NO'

ENDIFELSE

SELECT TmpRFilereplace TmpRFile.valoract WITH litam * 1024replace TmpRFile.pesovalact WITH 'KB'replace TmpRFile.nolimiact WITH 'NO'

SELECT TmpFilereplace TmpFile.valoract WITH litam * 1024replace TmpFile.pesovalact WITH 'KB'replace TmpFile.nolimiact WITH 'NO'

ENDIF

Cmdaceptar.clik

IF !EMPTY(thisform.editsql.Value)lcsql = ALLTRIM(thisform.editsql.Value)libandera = 0lcsqlT = ""FOR i=0 TO LEN(lcsql)

lcsqlT = lcsqlT + SUBSTR(lcsql,i,1)IF SUBSTR(lcsql,i,1) = ";"

liresult = thisform.sqlexec(lcsqlT,"")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsqlT)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIFlcsqlT = ""

ENDIFENDFOR

ENDIF

thisform.editsql.Value = ""thisform.Release

frmelimina.click()

lcsql = ''

lcsql = "DRop Tablespace " + elitable

Page 306: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 117 -

IF thisform.chksystem.Value = 1lcsql = lcsql + " INCLUDING CONTENTS AND DATAFILES"

ENDIF

liresult = thisform.sqlexec(lcsql,"")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

thisform.Release

manarch.click()

SELECT tmpcambiosSEEK i_FileIF FOUND()

replace tmpcambios.namenew WITH ALLTRIM(thisform.txtnombre.Value)replace tmpcambios.estadonew WITH

IIF(thisform.optestado.optonline.Value=1,'ONLINE','OFFLINE')replace tmpcambios.tamnew WITH thisform.txttam.Valuereplace tmpcambios.pesotamnew WITH thisform.cmbtamanio.Valuereplace tmpcambios.autoextnew WITH IIF(thisform.chkautoextend.Value = 1,'YES','NO')replace tmpcambios.increnew WITH thisform.txtincrementa.Valuereplace tmpcambios.pesoincrenew WITH thisform.cmbincre.Valuereplace tmpcambios.valornew WITH thisform.txtvalor.Valuereplace tmpcambios.pesovalnew WITH thisform.cmbvalor.Valuereplace tmpcambios.noliminew WITH IIF(thisform.opttam.optno.Value = 1,'SI','NO')replace tmpcambios.reutiliza WITH thisform.chkreutiliza.Value

ENDIFthisform.Release

1.10.3 Archivos de Datos

Load

DODEFAULT()

SELECT 0CREATE CURSOR TmpArchDatos(;name c(80),;tablespace c(160),;

Page 307: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 118 -

tamanio n(11,3),;usado n(11,3),;porusado n(11,3),;status n(1))

SELECT TmpArchDatosINDEX on ALLTRIM(TmpArchDatos.name) TAG llave

limpia

IF USED("TmpArchDatos")with thisform.grid1

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""

.Column4.Controlsource = ""

.Column5.Controlsource = ""

.Column6.Controlsource = ""SELECT TmpArchDatosGO TOP.Recordsource = "TmpArchDatos".Column1.Controlsource = "TmpArchDatos.name".Column2.Controlsource = "TmpArchDatos.tablespace".Column4.Controlsource = "TmpArchDatos.tamanio".Column5.Controlsource = "TmpArchDatos.usado".Column6.Controlsource = "TmpArchDatos.porusado"

.refreshENDWITH

ENDIF

Muestra

SELECT TmpArchDatosZAP

lcsql = 'Select t.tablespace_name "Tablespace", t.contents "Tipo", t.extent_management "Gestion",d.file_name, 'lcsql = lcsql + ' ROUND(MAX(d.bytes)/1024/1024,2) "MB_Tamanio", 'lcsql = lcsql + ' ROUND((MAX(d.bytes)/1024/1024) - (SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024),2)"MB_Usados" 'lcsql = lcsql + ' FROM DBA_FREE_SPACE f, DBA_DATA_FILES d, DBA_TABLESPACES t 'lcsql = lcsql + ' WHERE t.tablespace_name = d.tablespace_name AND f.tablespace_name(+) = d.tablespace_name'lcsql = lcsql + ' AND f.file_id(+) = d.file_id 'lcsql = lcsql + ' GROUP BY t.tablespace_name,t.contents,t.extent_management,d.file_name 'lcsql = lcsql + ' ORDER BY 1,3 DESC '

Page 308: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 119 -

liresult = thisform.sqlexec(lcsql,"TmpTable")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

lcsql = " select * from v$datafile "liresult = thisform.sqlexec(lcsql,"Tfil")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT TmpTableSCAN

SELECT TmpArchDatosAPPEND BLANKreplace TmpArchDatos.name WITH TmpTable.file_name,;

TmpArchDatos.tablespace WITH TmpTable.tablespace,;TmpArchDatos.tamanio WITH

IIF(ISNULL(TmpTable.MB_tamanio),0,TmpTable.MB_tamanio),;TmpArchDatos.usado WITH

IIF(ISNULL(TmpTable.MB_usados),0,TmpTable.MB_usados),;TmpArchDatos.porusado WITH

IIF(ISNULL(TmpTable.MB_usados),0,ROUND((TmpTable.MB_usados *100)/IIF(TmpTable.MB_tamanio=0,1,TmpTable.MB_tamanio),2))

SELECT TfilSCAN FOR ALLTRIM(tfil.name)==ALLTRIM(TmpArchDatos.name)

SELECT TmpArchDatosreplace TmpArchDatos.status WITH IIF(ALLTRIM(Tfil.status)=="ONLINE",1,0)

ENDSCAN

ENDSCAN

SELECT TmpArchDatosGO TOP

thisform.Grid1.SetAll("DynamicForeColor", "iif(TmpArchDatos.status=0,RGB(255,0,0),.f.)", "Column")

thisform.grid1.Refresh

ediarch.init()

LPARAMETERS cname,ctable,cstadolcname = cnamethisform.txtnombre.Value = ALLTRIM(cname)

Page 309: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 120 -

IF cstado = 'N'FOR i=1 TO thisform.cdefecto.ListCount

IF ALLTRIM(thisform.cdefecto.List(i,1))==ALLTRIM(ctable)thisform.cdefecto.ListIndex = iEXIT

ENDIFENDFORlcsql = " select * from v$datafile where RTRIM(name)=RTRIM(?lcname)"liresult = thisform.sqlexec(lcsql,"Tfiles")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT TfilesGO TOPthisform.optestado.Visible = .T.thisform.chkreutiliza.Visible = .F.litam = Tfiles.bytes/1024/1024lipeso = litam - INT(litam*100)/100thisform.txttam.Enabled = .T.thisform.cmbtamanio.Enabled = .T.IF lipeso = 0

thisform.txttam.value = litamthisform.cmbtamanio.ListIndex = 2

ELSEthisform.txttam.value = litam * 1024thisform.cmbtamanio.ListIndex = 1

ENDIF

SELECT TfilesGO TOPIF ALLTRIM(Tfiles.status)=="ONLINE"

thisform.optestado.optonline.Value = 1thisform.optestado.optOffline.Value = 0

ELSEthisform.optestado.optonline.Value = 0thisform.optestado.optOffline.Value = 1

ENDIF

lcsql = " select * from dba_data_files where RTRIM(file_name)=RTRIM(?lcname)"liresult = thisform.sqlexec(lcsql,"Tfiles1")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT Tfiles1IF Tfiles1.autoextensible='YES'

thisform.chkautoextend.Value = 1

Page 310: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 121 -

ELSEthisform.chkautoextend.Value = 0

ENDIF

lcsql = "select value/1024 value from v$parameter where name='db_block_size'"liresult = thisform.sqlexec(lcsql,"tmpsize")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmpsizelitam = (Tfiles1.increment_by * tmpsize.value)/1024lipeso = litam - INT(litam*100)/100IF lipeso=0

thisform.txtincrementa.Value = (Tfiles1.increment_by * tmpsize.value)/1024thisform.cmbincre.ListIndex = 2

ELSEthisform.txtincrementa.Value = Tfiles1.increment_by * tmpsize.valuethisform.cmbincre.ListIndex = 1

ENDIF

SELECT Tfiles1litam = (Tfiles1.maxbytes/1024)/1024lipeso = litam - INT(litam*100)/100IF lipeso = 0 OR INT(litam) = 16383

IF INT(litam) = 16383thisform.txtvalor.Value = INT(litam)thisform.cmbvalor.ListIndex = 2thisform.opttam.optno.Value = 0thisform.opttam.optval.Value = 1

ELSEthisform.txtvalor.Value = litamthisform.cmbvalor.ListIndex = 2thisform.opttam.optno.Value = 0thisform.opttam.optval.Value = 1

ENDIFELSE

thisform.txtvalor.Value = litam * 1024thisform.cmbvalor.ListIndex = 1

thisform.opttam.optno.Value = 0thisform.opttam.optval.Value = 1

ENDIF

SELECT TmpCambiosAPPEND BLANKreplace tmpcambios.nameact WITH cnamereplace tmpcambios.estadoact WITH ALLTRIM(Tfiles.status)replace tmpcambios.tamact WITH thisform.txttam.Valuereplace tmpcambios.pesotamact WITH thisform.cmbtamanio.Valuereplace tmpcambios.autoextact WITH IIF(ISNULL(Tfiles1.autoextensible),'',Tfiles1.autoextensible)

Page 311: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 122 -

replace tmpcambios.increact WITHIIF(ISNULL(thisform.txtincrementa.Value),0,thisform.txtincrementa.Value)

replace tmpcambios.pesoincreact WITH thisform.cmbincre.Valuereplace tmpcambios.valoract WITH

IIF(ISNULL(thisform.txtvalor.Value),0,thisform.txtvalor.Value)replace tmpcambios.pesovalact WITH thisform.cmbvalor.Valuereplace tmpcambios.nolimiact WITH IIF(thisform.opttam.optno.Value = 1,'SI','NO')

thisform.opttam.InteractiveChange()ELSE

thisform.Caption = "Crear Archivo de Datos"lcsql = "select value from v$parameter where RTRIM(name)='control_files'"liresult = thisform.sqlexec(lcsql,"tmpname")IF liresult < 0

men = "Error al seleccionar la ruta del tablespace - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)

ENDIF

libar = 0licom = 0SELECT tmpnameFOR i=0 TO LEN(ALLTRIM(Tmpname.value))

IF SUBSTR(ALLTRIM(tmpname.value),i,1)<>','IF SUBSTR(ALLTRIM(tmpname.value),i,1)='\'

libar = iENDIF

ELSEEXIT

ENDIFENDFOR

thisform.txtnombre.Value = UPPER(SUBSTR(tmpname.value,1,libar))thisform.cdefecto.Enabled = .T.thisform.txttam.Enabled = .T.thisform.cmbtamanio.Enabled = .T.thisform.txttam.Value = 5thisform.cmbtamanio.ListIndex = 2thisform.cmbincre.ListIndex = 1thisform.cmbvalor.ListIndex = 1thisform.optestado.Visible = .F.thisform.txtnombre.SetFocus()

ENDIF

thisform.busca_cambios()

Load

DODEFAULT()

SELECT 0

Page 312: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 123 -

CREATE CURSOR tmpcambios(;nameact c(160),;estadoact c(160),;tamact n(10),;pesotamact c(2),;autoextact c(3),;increact n(10),;pesoincreact c(2),;valoract n(10),;pesovalact c(2),;nolimiact c(2),;reutiliza n(1))

busca_cambios

lcsql = ''

IF thisform.cdefecto.Enabled = .F.SELECT TmpcambiosGO TOPIF ALLTRIM(TmpCambios.nameact)<>ALLTRIM(thisform.txtnombre.Value)

lcsql = "ALTER DATABASE RENAME FILE '" + ALLTRIM(TmpCambios.nameact) + "'TO "

lcsql = lcsql + "'" + ALLTRIM(thisform.txtnombre.Value) + "';"ENDIF

IF thisform.optestado.optonline.Value = 1IF ALLTRIM(TmpCambios.estadoact)='OFFLINE'

lcsql = lcsql + " ALTER DATABASE DATAFILE '" +ALLTRIM(thisform.txtnombre.Value)

lcsql = lcsql + "' ONLINE ;"ENDIF

ELSEIF ALLTRIM(TmpCambios.estadoact)='ONLINE'

lcsql = lcsql + " ALTER DATABASE DATAFILE '" +ALLTRIM(thisform.txtnombre.Value)

lcsql = lcsql + "' OFFLINE ;"ENDIF

ENDIF

IF Tmpcambios.tamact <> thisform.txttam.Valuelcsql = lcsql + " ALTER DATABASE DATAFILE '" +

ALLTRIM(thisform.txtnombre.Value)lcsql = lcsql + "' RESIZE " + ALLTRIM(STR(thisform.txttam.Value,10)) +

SUBSTR(thisform.cmbtamanio.Value,1,1) + ";"ELSE

IF ALLTRIM(TmpCambios.pesotamact) <> thisform.cmbtamanio.Valuelcsql = lcsql + " ALTER DATABASE DATAFILE '" +

ALLTRIM(thisform.txtnombre.Value)

Page 313: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 124 -

lcsql = lcsql + "' RESIZE " + ALLTRIM(STR(thisform.txttam.Value,10)) +SUBSTR(thisform.cmbtamanio.Value,1,1) + ";"

ENDIFENDIF

lcsql1 = ''lcsql2 = ''libandera = .f.lcautoext = IIF(thisform.chkautoextend.Value=1,"YES","NO")lbentre = .f.

IF TmpCambios.autoextact <> lcautoextIF ALLTRIM(lcautoext) = 'NO'

lcsql1 = lcsql1 + " ALTER DATABASE DATAFILE '" +ALLTRIM(thisform.txtnombre.Value)

lcsql1 = lcsql1 + "' AUTOEXTEND OFF;"libandera = .t.

ELSElcsql1 = lcsql1 + " ALTER DATABASE DATAFILE '" +

ALLTRIM(thisform.txtnombre.Value)lcsql1 = lcsql1 + "' AUTOEXTEND ON "lbentre = .t.

ENDIFELSE

IF TmpCambios.increact <> thisform.txtincrementa.Valuelcsql1 = lcsql1 + " ALTER DATABASE DATAFILE '" +

ALLTRIM(thisform.txtnombre.Value)lcsql1 = lcsql1 + "' AUTOEXTEND ON "lbentre = .t.

ENDIFENDIF

lcsql2 = lcsql1

IF !libanderaIF TmpCambios.increact <> thisform.txtincrementa.Value

lcsql1 = lcsql1 + " NEXT " +ALLTRIM(STR(thisform.txtincrementa.Value,10)) + SUBSTR(thisform.cmbincre.Value,1,1) + " "

ELSEIF ALLTRIM(TmpCambios.pesoincreact) <>

ALLTRIM(thisform.cmbincre.Value)IF LEN(lcsql2)=0

lcsql1 = lcsql1 + " ALTER DATABASE DATAFILE '" +ALLTRIM(thisform.txtnombre.Value)

lcsql1 = lcsql1 + "' AUTOEXTEND ON "ENDIFlcsql1 = lcsql1 + " NEXT " +

ALLTRIM(STR(thisform.txtincrementa.Value,10)) + SUBSTR(thisform.cmbincre.Value,1,1) + " "ENDIF

ENDIF

lcnolimi = IIF(thisform.opttam.optno.Value = 1,'SI','NO')IF TmpCambios.nolimiact <> lcnolimi

IF lcnolimi = 'NO'

Page 314: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 125 -

IF TmpCambios.valoract <> thisform.txtvalor.ValueIF LEN(lcsql2)=0

lcsql1 = lcsql1 + " ALTER DATABASEDATAFILE '" + ALLTRIM(thisform.txtnombre.Value)

lcsql1 = lcsql1 + "' AUTOEXTEND ON "ENDIF

lcsql1 = lcsql1 + " MAXSIZE " +ALLTRIM(STR(thisform.txtvalor.Value,10)) + SUBSTR(thisform.cmbvalor.Value,1,1) + ";"

ELSEIF ALLTRIM(TmpCambios.pesovalact) <>

ALLTRIM(thisform.cmbvalor.Value)IF LEN(lcsql2)=0

lcsql1 = lcsql1 + " ALTERDATABASE DATAFILE '" + ALLTRIM(thisform.txtnombre.Value)

lcsql1 = lcsql1 + "' AUTOEXTENDON "

ENDIF

lcsql1 = lcsql1 + " MAXIZE " +ALLTRIM(STR(thisform.txtvalor.Value,10)) + SUBSTR(thisform.cmbvalor.Value,1,1) + ";"

ENDIFENDIF

ELSEIF LEN(lcsql2)=0

lcsql1 = lcsql1 + " ALTER DATABASE DATAFILE '" +ALLTRIM(thisform.txtnombre.Value)

lcsql1 = lcsql1 + "' AUTOEXTEND ON "ENDIFlcsql1 = lcsql1 + " MAXSIZE UNLIMITED;"

ENDIFELSE

IF lcnolimi = 'NO'IF TmpCambios.valoract <> thisform.txtvalor.Value

IF LEN(lcsql2)=0lcsql1 = lcsql1 + " ALTER DATABASE

DATAFILE '" + ALLTRIM(thisform.txtnombre.Value)lcsql1 = lcsql1 + "' AUTOEXTEND ON "

ENDIF

lcsql1 = lcsql1 + " MAXSIZE " +ALLTRIM(STR(thisform.txtvalor.Value,10)) + SUBSTR(thisform.cmbvalor.Value,1,1) + ";"

ELSEIF ALLTRIM(TmpCambios.pesovalact) <>

ALLTRIM(thisform.cmbvalor.Value)IF LEN(lcsql2)=0

lcsql1 = lcsql1 + " ALTERDATABASE DATAFILE '" + ALLTRIM(thisform.txtnombre.Value)

lcsql1 = lcsql1 + "' AUTOEXTENDON "

ENDIF

lcsql1 = lcsql1 + " MAXIZE " +ALLTRIM(STR(thisform.txtvalor.Value,10)) + SUBSTR(thisform.cmbvalor.Value,1,1) + ";"

Page 315: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 126 -

ENDIFENDIF

ELSEIF LEN(lcsql2)=0

lcsql1 = lcsql1 + " ALTER DATABASE DATAFILE '" +ALLTRIM(thisform.txtnombre.Value)

lcsql1 = lcsql1 + "' AUTOEXTEND ON "ENDIF

lcsql1 = lcsql1 + " MAXSIZE UNLIMITED;"ENDIF

ENDIFENDIF

thisform.editSql.value = lcsql +IIF(ALLTRIM(lcsql1)<>ALLTRIM(lcsql2),lcsql1,IIF(libandera=.f.,'',lcsql1))

ELSElcsql = "ALTER TABLESPACE " + ALLTRIM(thisform.cdefecto.Value) + " ADD DATAFILE '"lcsql = lcsql + ALLTRIM(thisform.txtnombre.Value) + "'"lcsql = lcsql + " SIZE "lcsql = lcsql + ALLTRIM(STR(thisform.txttam.Value)) +

SUBSTR(thisform.cmbtamanio.Value,1,1)

IF thisform.chkreutiliza.Value = 1lcsql = lcsql + " REUSE"

ENDIF

IF thisform.chkautoextend.Value = 1lcsql = lcsql + " AUTOEXTEND ON"IF thisform.txtincrementa.Value > 0

lcsql = lcsql + " NEXT " + ALLTRIM(STR(thisform.txtincrementa.Value)) +SUBSTR(thisform.cmbincre.Value,1,1)

ENDIF

IF thisform.opttam.optno.Value = 1lcsql = lcsql + " MAXSIZE UNLIMITED"

ELSEIF thisform.txtvalor.Value >0

lcsql = lcsql + " MAXSIZE " +ALLTRIM(STR(thisform.txtvalor.Value)) + SUBSTR(thisform.cmbvalor.Value,1,1)

ENDIFENDIF

ENDIF

thisform.editSql.value = lcsql + IIF(LEN(ALLTRIM(lcsql))=0,'',';')ENDIF

Cmdaceptar.click

IF !EMPTY(thisform.editsql.Value)lcsql = ALLTRIM(thisform.editsql.Value)

Page 316: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 127 -

libandera = 0lcsqlT = ""FOR i=0 TO LEN(lcsql)

lcsqlT = lcsqlT + SUBSTR(lcsql,i,1)IF SUBSTR(lcsql,i,1) = ";"

liresult = thisform.sqlexec(lcsqlT,"")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsqlT)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIFlcsqlT = ""

ENDIFENDFOR

ENDIF

thisform.editsql.Value = ""thisform.Release

1.10.4 Segmentos de Rollback

Load

DODEFAULT()

SELECT 0CREATE CURSOR TmpSeg(;name c(80),;tablespace c(160),;extensiones n(10),;tamanio n(11,3),;status n(1))

limpia

IF USED("TmpSeg")with thisform.grid1

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""

.Column3.Controlsource = ""

.Column4.Controlsource = ""SELECT TmpSegGO TOP

Page 317: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 128 -

.Recordsource = "TmpSeg"

.Column1.Controlsource = "TmpSeg.name"

.Column2.Controlsource = "TmpSeg.tablespace"

.Column3.Controlsource = "TmpSeg.extensiones"

.Column4.Controlsource = "TmpSeg.tamanio".refresh

ENDWITHENDIF

Muestra

SELECT TmpSegZAP

lcsql = "select * from dba_rollback_segs "lcsql = lcsql + " where segment_name not like '_SYS%' "lcsql = lcsql + " order by tablespace_name,segment_name"liresult = thisform.sqlexec(lcsql,"Tms")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT TmsSCAN

SELECT TmpSegAPPEND BLANKreplace TmpSeg.name WITH Tms.segment_name,;

TmpSeg.tablespaceWITH Tms.tablespace_name,;TmpSeg.extensiones WITH Tms.min_extents,;TmpSeg.status WITH IIF(ALLTRIM(Tms.status)=='ONLINE',1,0)

lcsql = "SELECT rssize"lcsql = lcsql + " FROM v$rollstat s "lcsql = lcsql + " WHERE usn=?Tms.segment_id "liresult = thisform.sqlexec(lcsql,"Tms1")IF liresult > 0

SELECT TmpSegreplace TmpSeg.tamanio WITH ((Tms1.RsSize)/1024)/1024

ELSEthisform.log_error(lcsql)

ENDIFENDSCAN

SELECT TmsGO TOP

Page 318: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 129 -

thisform.Grid1.SetAll("DynamicForeColor","iif(TmpSeg.status=0,RGB(255,0,0),.f.)", "Column")

thisform.grid1.Refresh()

cmdEliminar.click

SELECT TmpSegvb = MESSAGEBOX("Seguro que desea eliminar el segmendo de rollback " + ALLTRIM(Tmpseg.name) +"?",32+4+256,_screen.esTANDAR.cmensistema)IF vb = 6

SELECT TmpSeglcsql = "DROP ROLLBACK SEGMENT " + ALLTRIM(TmpSeg.name)liresult = thisform.sqlexec(lcsql,"")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

thisform.limpia()thisform.muestra()

ENDIF

Edisetrol.init()

LPARAMETERS cname,ctable,cstatuslcname = cnamethisform.txtnombre.Value = ALLTRIM(cname)

IF cstatus = 'N'FOR i=1 TO thisform.cdefecto.ListCount

IF ALLTRIM(thisform.cdefecto.List(i,1))==ALLTRIM(ctable)thisform.cdefecto.ListIndex = iEXIT

ENDIFENDFOR

lcsql = "select * from dba_rollback_segs where RTRIM(segment_name)=RTRIM(?lcname)"liresult = thisform.sqlexec(lcsql,"tmp")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

Page 319: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 130 -

SELECT tmpIF ALLTRIM(tmp.owner)=="PUBLIC"

thisform.chkpublico.Value = 1ENDIF

IF ALLTRIM(tmp.status)=="ONLINE"thisform.optestado.optonline.Value = 1thisform.optestado.optoffline.Value = 0

ELSEthisform.optestado.optonline.Value = 0thisform.optestado.optoffline.Value = 1

ENDIF

litam = Tmp.initial_extent/1024/1024lipeso = litam - INT(litam*100)/100IF lipeso = 0

thisform.txttamini.Value = litamthisform.cmbtamini.ListIndex = 3

ELSElitam = Tmp.initial_extent/1024lipeso = litam - INT(litam*100)/100IF lipeso = 0

thisform.txttamini.Value = litamthisform.cmbtamini.ListIndex = 2

ELSEthisform.txttamini.value = litamthisform.cmbtamini.ListIndex = 1

ENDIFENDIF

litam = IIF(ISNULL(Tmp.next_extent),0,Tmp.next_extent)/1024/1024lipeso = litam - INT(litam*100)/100IF lipeso = 0

thisform.ttamsig.Value = litamthisform.ctamsig.ListIndex = 3

ELSElitam = IIF(ISNULL(Tmp.next_extent),0,Tmp.next_extent)/1024lipeso = litam - INT(litam*100)/100IF lipeso = 0

thisform.ttamsig.Value = litamthisform.ctamsig.ListIndex = 2

ELSEthisform.ttamsig.value = litamthisform.ctamsig.ListIndex = 1

ENDIFENDIF

lifile = tmp.segment_idlcsql = "Select optsize from v$rollstat Where usn=?lifile"liresult = thisform.sqlexec(lcsql,"Tmp2")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)

Page 320: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 131 -

MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT Tmp2GO TOPlitam = IIF(ISNULL(Tmp2.optsize),0,Tmp2.optsize)/1024/1024lipeso = litam - INT(litam*100)/100IF lipeso = 0

thisform.ttamop.Value = litamthisform.ctamop.ListIndex = 3

ELSElitam = IIF(ISNULL(Tmp2.optsize),0,Tmp2.optsize)/1024lipeso = litam - INT(litam*100)/100IF lipeso = 0

thisform.ttamop.Value = litamthisform.ctamop.ListIndex = 2

ELSEthisform.ttamop.value = litamthisform.ctamop.ListIndex = 1

ENDIFENDIF

SELECT Tmpthisform.tminext.Value = Tmp.min_extents

IF Tmp.max_extents > 0thisform.txtvalor.Value = Tmp.max_extentsthisform.opttam.optval.value = 1thisform.opttam.optno.Value = 0

ELSEthisform.opttam.optval.value = 0thisform.opttam.optno.Value = 1

ENDIF

SELECT tmpcamAPPEND BLANKreplace tmpcam.estado WITH tmp.status,;

tmpcam.siguiente WITH thisform.ttamsig.Value,;tmpcam.pesosig WITH thisform.ctamsig.Value,;tmpcam.optimo WITH thisform.ttamop.Value,;tmpcam.pesoopt WITH thisform.ctamop.Value,;tmpcam.valor WITH thisform.txtvalor.Value

thisform.opttam.InteractiveChange()thisform.busca_cambios()

ELSEthisform.Caption = "Crear Segmento de Rollback"thisform.txtnombre.Enabled = .T.thisform.cdefecto.Enabled = .T.thisform.chkpublico.Enabled = .T.thisform.txttamini.Enabled = .T.thisform.cmbtamini.Enabled = .T.thisform.tminext.Enabled = .T.

Page 321: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 132 -

thisform.opttam.optno.Value = 0thisform.opttam.optval.Value = 1thisform.txtvalor.Enabled = .T.

thisform.busca_cambios()thisform.txtnombre.SetFocus()

ENDIF

load

DODEFAULT()

SELECT 0CREATE CURSOR tmpcam(;estado c(15),;siguiente n(10),;pesosig c(2),;optimo n(10),;pesoopt c(2),;valor n(10))

busca_cambios

lcsql = ""lcsql1 = ''IF thisform.txtnombre.Enabled = .f.

lbentre = .f.

SELECT TmpcamIF tmpcam.siguiente <> thisform.ttamsig.Value

lbentre = .t.lcsql1 = lcsql1 + "NEXT " + ALLTRIM(STR(thisform.ttamsig.Value)) +

SUBSTR(thisform.ctamsig.Value,1,1)ELSE

IF tmpcam.pesosig <> thisform.ctamsig.Valuelbentre = .t.lcsql1 = lcsql1 + "NEXT " + ALLTRIM(STR(thisform.ttamsig.Value)) +

SUBSTR(thisform.ctamsig.Value,1,1)ENDIF

ENDIF

IF tmpcam.optimo <> thisform.ttamop.Valuelbentre = .t.lcsql1 = lcsql1 + " OPTIMAL " + ALLTRIM(STR(thisform.ttamop.Value)) +

SUBSTR(thisform.ctamop.Value,1,1)ELSE

IF tmpcam.pesoopt <> thisform.ctamop.Value

Page 322: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 133 -

lbentre = .t.lcsql1 = lcsql1 + " OPTIMAL " + ALLTRIM(STR(thisform.ttamop.Value)) +

SUBSTR(thisform.ctamop.Value,1,1)ENDIF

ENDIF

IF thisform.opttam.optno.Value = 1IF tmpcam.valor <> 0

lbentre = .t.lcsql1 = lcsql1 + " MAXEXTENTS UNLIMITED"

ENDIFELSE

IF tmpcam.valor <> thisform.txtvalor.Valuelbentre = .t.lcsql1 = lcsql1 + " MAXEXTENTS " + ALLTRIM(STR(thisform.txtvalor.Value))

ENDIFENDIF

IF lbentrelcsql = "ALTER ROLLBACK SEGMENT " + ALLTRIM(thisform.txtnombre.Value)+ " STORAGE ("

+ lcsql1 + ");"ENDIF

IF thisform.optestado.optonline.Value = 1IF ALLTRIM(Tmpcam.estado)=="OFFLINE"

lcsql = lcsql + "ALTER ROLLBACK SEGMENT " +ALLTRIM(thisform.txtnombre.Value) + " ONLINE;"

ENDIFELSE

IF ALLTRIM(Tmpcam.estado)=="ONLINE"lcsql = lcsql + "ALTER ROLLBACK SEGMENT " +

ALLTRIM(thisform.txtnombre.Value) + " OFFLINE;"ENDIF

ENDIF

thisform.editSql.Value = lcsqlELSE

lcsql = ""lcsql = "CREATE" + IIF(thisform.chkpublico.Value=1," PUBLIC"," ") + " ROLLBACK SEGMENT "lcsql = lcsql + ALLTRIM(thisform.txtnombre.Value)lcsql = lcsql + " TABLESPACE "lcsql = lcsql + ALLTRIM(thisform.cdefecto.Value)lcsql = lcsql + " STORAGE ("

lcsql1 = ""lbentre = .f.IF thisform.txttamini.Value > 0

lcsql1 = lcsql1 + " INITIAL " + ALLTRIM(STR(thisform.txttamini.Value)) +IIF(SUBSTR(thisform.cmbtamini.Value,1,1)='B','',SUBSTR(thisform.cmbtamini.Value,1,1))

lbentre = .t.ENDIF

IF thisform.ttamsig.Value > 0

Page 323: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 134 -

lcsql1 = lcsql1 + " NEXT " + ALLTRIM(STR(thisform.ttamsig.Value)) +IIF(SUBSTR(thisform.ctamsig.Value,1,1)='B','',SUBSTR(thisform.ctamsig.Value,1,1))

lbentre = .t.ENDIF

IF thisform.ttamop.Value > 0lcsql1 = lcsql1 + " OPTIMAL " + ALLTRIM(STR(thisform.ttamop.Value)) +

IIF(SUBSTR(thisform.ctamop.Value,1,1)='B','',SUBSTR(thisform.ctamop.Value,1,1))lbentre = .t.

ELSElcsql1 = lcsql1 + " OPTIMAL NULL"lbentre = .t.

ENDIF

IF thisform.tminext.Value > 0lcsql1 = lcsql1 + " MINEXTENTS " + ALLTRIM(STR(thisform.tminext.Value))lbentre = .t.

ENDIF

IF thisform.opttam.optno.Value = 1lcsql1 = lcsql1 + " MAXEXTENTS UNLIMITED"lbentre = .t.

ELSEIF thisform.txtvalor.Value > 0

lcsql1 = lcsql1 + " MAXEXTENTS " + ALLTRIM(STR(thisform.txtvalor.Value))lbentre = .t.

ENDIFENDIF

IF lbentrelcsql = lcsql + lcsql1 + ");"

ENDIF

IF thisform.optestado.optonline.Value = 1lcsql = lcsql + " ALTER ROLLBACK SEGMENT " + ALLTRIM(thisform.txtnombre.Value) + "

ONLINE;"ENDIF

thisform.editSql.Value = lcsqlENDIF

1.10.5 Redo Logs

load

DODEFAULT()SELECT 0CREATE CURSOR tmproll(;estado c(15),;grupo n(2),;miembrosn(3),;archivado c(3),;

Page 324: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 135 -

tamanio n(20,6),;secuencia n(10),;cambio n(10))

limpia

IF USED("TmpRoll")with thisform.grid1

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""

.Column3.Controlsource = ""

.Column4.Controlsource = ""

.Column5.Controlsource = ""

.Column6.Controlsource = ""

.Column7.Controlsource = ""SELECT TmpRollGO TOP.Recordsource = "TmpRoll".Column1.Controlsource = "TmpRoll.estado".Column2.Controlsource = "TmpRoll.grupo".Column3.Controlsource = "TmpRoll.miembros".Column4.Controlsource = "TmpRoll.archivado".Column5.Controlsource = "TmpRoll.tamanio".Column6.Controlsource = "TmpRoll.secuencia".Column7.Controlsource = "TmpRoll.cambio"

.refreshENDWITH

ENDIF

muestra

SELECT TmpRollZAP

lcsql = "select status,group# grupo,members,archived,bytes/1024 tamanio,sequence# secuencia,first_change#cambio"lcsql = lcsql + " from v$log "liresult = thisform.sqlexec(lcsql,"Tmpr")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmprSCAN

SELECT TmpRoll

Page 325: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 136 -

APPEND BLANKreplace TmpRoll.estado WITH tmpr.status,;

TmpRoll.grupo WITH tmpr.grupo,;TmpRoll.miembros WITH tmpr.members,;TmpRoll.archivado WITH tmpr.archived,;TmpRoll.tamanio WITH tmpr.tamanio,;TmpRoll.secuencia WITH tmpr.secuencia,;TmpRoll.cambio WITH tmpr.cambio

ENDSCAN

SELECT TmpRollGO TOP

thisform.grid1.Refresh()

editredlog.load()

LPARAMETERS igrupo,itamanio,cstatusligrupo = igrupothisform.limpia()

IF cstatus= 'N'thisform.txtvalor.Value = igrupothisform.txttam.Value = itamaniothisform.cmbtamanio.Value = 1lcsql = "select * from v$logfile where group#=?ligrupo "liresult = thisform.sqlexec(lcsql,"tmpg")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.estANDAR.cmensistema)RETURN

ENDIF

liindice = 1licnt = 0SELECT TmpgSCAN

FOR i=1 TO LEN(ALLTRIM(tmpg.member))IF SUBSTR(ALLTRIM(tmpg.member),i,1)='\'

liindice = iENDIF

ENDFOR

lcname = SUBSTR(ALLTRIM(tmpg.member),liindice+1,i)crutatable = SUBSTR(Tmpg.member,1,liindice)

licnt = licnt + 1SELECT TredoAPPEND BLANK

Page 326: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 137 -

replace Tredo.indice WITH ALLTRIM(STR(licnt)),;Tredo.nombre WITH ALLTRIM(lcname),;Tredo.ruta WITH SUBSTR(Tmpg.member,1,liindice),;Tredo.tipo WITH Tmpg.type,;Tredo.status WITH IIF(ISNULL(Tmpg.status),'',Tmpg.status)

SELECT TredoSCATTER MEMVARSELECT TrespAPPEND BLANKGATHER MEMVAR

ENDSCAN

SELECT TredoGO TOPthisform.grid1.Refresh()

ELSEthisform.txtvalor.Enabled = .T.thisform.txttam.Enabled = .T.thisform.cmbtamanio.Enabled = .T.

thisform.txtvalor.Value = igrupothisform.txttam.Value = 1024thisform.cmbtamanio.ListIndex = 1

licnt = 0licnt = licnt + 1

lcsql = "select * from v$logfile "liresult = thisform.sqlexec(lcsql,"tmpg")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.estANDAR.cmensistema)RETURN

ENDIF

liindice = 1licnt = 0SELECT TmpgGO TOPFOR i=1 TO LEN(ALLTRIM(tmpg.member))

IF SUBSTR(ALLTRIM(tmpg.member),i,1)='\'liindice = i

ENDIFENDFORcrutatable = SUBSTR(Tmpg.member,1,liindice)thisform.Caption = "Crear Grupo de Redo Logs"thisform.cmdagrega.Click()thisform.txtvalor.SetFocus()

ENDIF

thisform.lbltitulo.Caption = thisform.Caption

Page 327: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 138 -

load

DODEFAULT()

SELECT 0CREATE CURSOR Tredo(;indice c(2),;nombre c(50),;ruta c(80),;tipo c(20),;status c(15))INDEX on ALLTRIM(Tredo.indice) TAG indice1

SELECT 0CREATE CURSOR Tresp(;indice c(2),;nombre c(50),;ruta c(80),;tipo c(20),;status c(15))INDEX on ALLTRIM(Tresp.indice) TAG indice

PUBLIC licnt,crutatable

licnt = 0crutatable = ''

busca_cambios

lcsql = ""lcsql1 = ""IF thisform.txtvalor.Enabled = .F.

SELECT Tredolipos = RECNO('Tredo')linum = RECCOUNT()

SELECT TredoGO TOPSCAN

SELECT TrespGO TOPSEEK ALLTRIM(Tredo.indice)IF !FOUND()

lcsql = lcsql + "ALTER DATABASE ADD LOGFILE MEMBER '" +ALLTRIM(Tredo.ruta) + ALLTRIM(Tredo.nombre) + "'"

lcsql = lcsql + " TO GROUP " + ALLTRIM(STR(thisform.txtvalor.Value)) + "; "

Page 328: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 139 -

ENDIFENDSCAN

SELECT TrespGO TOPSCAN

SELECT TredoGO TOPSEEK ALLTRIM(Tresp.indice)IF FOUND()

IF ALLTRIM(Tredo.nombre)<>ALLTRIM(Tresp.nombre) ORALLTRIM(Tredo.ruta)<>ALLTRIM(Tresp.ruta)

lcsql = lcsql + " ALTER DATABASE RENAME FILE '" +ALLTRIM(Tresp.ruta) + ALLTRIM(Tresp.nombre)

lcsql = lcsql + "' TO '" + ALLTRIM(Tredo.ruta) + ALLTRIM(Tredo.nombre) +"'; "

ENDIFELSE

lcsql = lcsql + "ALTER DATABASE DROP LOGFILE MEMBER '" +ALLTRIM(Tresp.ruta) + ALLTRIM(Tresp.nombre) + "'; "

ENDIFENDSCAN

IF linum > 0SELECT TredoGO lipos

ENDIF

ELSElcsql = ""lcsql = "ALTER DATABASE ADD LOGFILE GROUP " + ALLTRIM(STR(thisform.txtvalor.Value)) + " ("SELECT Tredolipos = RECNO('Tredo')linum = RECCOUNT()lcsql1 = ""SELECT TredoGO TOPSCAN

IF LEN(ALLTRIM(Tredo.ruta))>0 OR LEN(ALLTRIM(Tredo.nombre))>0IF LEN(ALLTRIM(lcsql1))>0

lcsql1 = lcsql1 + ","ENDIFlcsql1 = lcsql1 + "'" + ALLTRIM(Tredo.ruta) + ALLTRIM(Tredo.nombre) + "'"

ENDIFENDSCAN

lcsql = lcsql + lcsql1 + ") SIZE " + ALLTRIM(STR(thisform.txttam.Value)) +SUBSTR(thisform.cmbtamanio.Value,1,1) + ";"

IF linum > 0SELECT TredoGO lipos

ENDIF

Page 329: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 140 -

ENDIFthisform.editSql.Value = lcsql

limpia

WITH thisform.grid1.Recordsource = "".Column1.Controlsource = "".Column2.Controlsource = ""SELECT TredoZAP.Recordsource = "Tredo".Column1.Controlsource = "Tredo.nombre".Column2.Controlsource = "Tredo.ruta"

.refreshENDWITH

Informe de Archive Logs

Load

DODEFAULT()

SELECT 0CREATE CURSOR Tmpinfarch(;nombre c(100),;secuencia n(10),;thread n(10),;copias n(10),;cambio n(10),;fecprimer datetime,;fecarch datetime)

Limpia

WITH thisform.grid1.Recordsource = "".Column1.Controlsource = "".Column2.Controlsource = "".Column3.Controlsource = ""

Page 330: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 141 -

.Column4.Controlsource = ""

.Column5.Controlsource = ""

.Column6.Controlsource = ""

.Column7.Controlsource = ""SELECT TmpinfarchGO TOP.Recordsource = "Tmpinfarch".Column1.Controlsource = "Tmpinfarch.nombre".Column2.Controlsource = "Tmpinfarch.secuencia".Column3.Controlsource = "Tmpinfarch.thread".Column4.Controlsource = "Tmpinfarch.copias".Column5.Controlsource = "Tmpinfarch.cambio".Column6.Controlsource = "Tmpinfarch.fecprimer".Column7.Controlsource = "Tmpinfarch.fecarch"

.refreshENDWITH

muestra

SELECT TmpInfarchZAP

lcsql = "Select name,sequence# sequence,thread# thread,backup_count,first_change#first_change,first_time,completion_time from v$archived_log"liresult = thisform.sqlexec(lcsql,"tmp")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmpSCAN

SELECT TmpInfarchAPPEND BLANKreplace TmpInfarch.nombre WITH tmp.name,;

TmpInfarch.secuencia WITH tmp.sequence,;TmpInfarch.thread WITH tmp.thread,;TmpInfarch.copias WITH tmp.backup_count,;TmpInfarch.cambio WITH tmp.first_change,;TmpInfarch.fecprimer WITH tmp.first_time,;TmpInfarch.fecarch WITH tmp.completion_time

ENDSCAN

SELECT TmpInfarchGO TOP

thisform.grid1.Refresh()

Page 331: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 142 -

editarchlog.init()

LPARAMETERS cname

lcname = cnamelcsql = "Select name,sequence# secuencia,blocks,block_size,completion_time,first_change#primero,first_time,next_change# ultimo,next_time "lcsql = lcsql + " from v$archived_log where RTRIM(name)=RTRIM(?lcname) "liresult = thisform.sqlexec(lcsql,"Tmp1")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT Tmp1GO TOPthisform.lblname.Caption = ALLTRIM(Tmp1.name)thisform.tsecuencia.Value = tmp1.secuenciathisform.ttamanio.Value = (tmp1.blocks*tmp1.block_size)/1024thisform.tfecarch.Value = tmp1.completion_timethisform.tpricambio.Value = tmp1.primerothisform.tfecpricambio.Value = tmp1.first_timethisform.tultcambio.Value = tmp1.ultimothisform.tfecultcambio.Value = tmp1.next_time

1.11 Modulo de Recursos

1.11.1 Mantenimiento de Recursos

Init

thisform.limpia()

IF ALLTRIM(_screen.esTANDAR.cprivilegio)=="SYSDBA"thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.Enabled= .T.thisform.pgrecursos.pgrecuperacion.archivadoAutomatico.Enabled= .T.thisform.pgrecursos.pgrecuperacion.modoArchivelog.Enabled = .T.thisform.pgrecursos.pgrecuperacion.nombreArchivo.Enabled = .F.thisform.pgrecursos.pgrecuperacion.grid3.Enabled = .F.

ELSEthisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.Enabled= .F.thisform.pgrecursos.pgrecuperacion.archivadoAutomatico.Enabled= .F.thisform.pgrecursos.pgrecuperacion.modoArchivelog.Enabled = .F.

Page 332: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 143 -

thisform.pgrecursos.pgrecuperacion.nombreArchivo.Enabled = .F.thisform.pgrecursos.pgrecuperacion.grid3.Enabled = .F.

ENDIF

** Mostrar la hora de inicio del Equipothisform.cargarcpugeneral()

** Mostrar información de la instancia y la Base de Datosthisform.cargainstanciageneral()

**Mostrar el Estado de la Instanciathisform.estado_instance()

**Mostrar Memoria SGAthisform.memoria_sga ()

** Mostrar Memoria PGAthisform.memoriapga()

**Mostrar Recuperación de la Instanciathisform.recuperacion_instancia ()

thisform.pgrecursos.pgrecuperacion.modoArchivelog.InteractiveChange()

Load

DODEFAULT()

PUBLIC lcinstancia,lcoptionlcinstancia = ''lcoption = 0

SELECT 0CREATE CURSOR tmpUbicacionArchivelog(;DESTINATION c(254),;STATUS c(254),;dest_name c(20))

activa

**Desabilita opciones de pestaña de General Instancia

thisform.pgrecursos.pggeneralinstancia.command2.Enabled= .T.thisform.pgrecursos.pggeneralinstancia.label1.Visible= .T.thisform.pgrecursos.pggeneralinstancia.label2.Visible= .T.thisform.pgrecursos.pggeneralinstancia.label3.Visible= .T.

Page 333: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 144 -

thisform.pgrecursos.pggeneralinstancia.label4.Visible= .T.thisform.pgrecursos.pggeneralinstancia.label5.Visible= .T.thisform.pgrecursos.pggeneralinstancia.label6.Visible= .T.thisform.pgrecursos.pggeneralinstancia.label7.Visible= .T.thisform.pgrecursos.pggeneralinstancia.label8.Visible= .T.thisform.pgrecursos.pggeneralinstancia.label9.Visible= .T.thisform.pgrecursos.pggeneralinstancia.text10.Visible= .T.thisform.pgrecursos.pggeneralinstancia.text11.Visible= .T.thisform.pgrecursos.pggeneralinstancia.text12.Visible= .T.thisform.pgrecursos.pggeneralinstancia.text13.Visible= .T.thisform.pgrecursos.pggeneralinstancia.text14.Visible= .T.thisform.pgrecursos.pggeneralinstancia.text15.Visible= .T.thisform.pgrecursos.pggeneralinstancia.text16.Visible= .T.thisform.pgrecursos.pggeneralinstancia.cmodorestringido.Visible= .T.thisform.pgrecursos.pggeneralinstancia.cmodolectura.Visible= .T.thisform.pgrecursos.pggeneralinstancia.label_oracle.Visible= .F.

** Desabilita opciones de pestaña de Memoria SGA, PGAthisform.pgrecursos.pgmemoria.shape1.Visible= .T.thisform.pgrecursos.pgmemoria.shape2.Visible= .T.thisform.pgrecursos.pgmemoria.shape3.Visible= .T.thisform.pgrecursos.pgmemoria.shape4.Visible= .T.thisform.pgrecursos.pgmemoria.label1.Visible= .T.thisform.pgrecursos.pgmemoria.label2.Visible= .T.thisform.pgrecursos.pgmemoria.label3.Visible= .T.thisform.pgrecursos.pgmemoria.label4.Visible= .T.thisform.pgrecursos.pgmemoria.label5.Visible= .T.thisform.pgrecursos.pgmemoria.label6.Visible= .T.thisform.pgrecursos.pgmemoria.label7.Visible= .T.thisform.pgrecursos.pgmemoria.label8.Visible= .T.thisform.pgrecursos.pgmemoria.label9.Visible= .T.thisform.pgrecursos.pgmemoria.label10.Visible= .T.thisform.pgrecursos.pgmemoria.label11.Visible= .T.thisform.pgrecursos.pgmemoria.label12.Visible= .T.thisform.pgrecursos.pgmemoria.label13.Visible= .T.thisform.pgrecursos.pgmemoria.label14.Visible= .T.thisform.pgrecursos.pgmemoria.label15.Visible= .T.thisform.pgrecursos.pgmemoria.image3.Visible = .T.thisform.pgrecursos.pgmemoria.conjuntoCompartido.Visible= .T.thisform.pgrecursos.pgmemoria.cacheBuffers.Visible= .T.thisform.pgrecursos.pgmemoria.conjuntoGrande.Visible= .T.thisform.pgrecursos.pgmemoria.conjuntoJava.Visible= .T.thisform.pgrecursos.pgmemoria.cconjuntoCompartido.Visible= .T.thisform.pgrecursos.pgmemoria.ccacheBuffers.Visible= .T.thisform.pgrecursos.pgmemoria.CconjuntoGrande.Visible= .T.thisform.pgrecursos.pgmemoria.cconjuntoJava.Visible= .T.thisform.pgrecursos.pgmemoria.sGAtotal.Visible= .T.thisform.pgrecursos.pgmemoria.tamañoMaximoSGA.Visible= .T.thisform.pgrecursos.pgmemoria.destinoPga.Visible= .T.thisform.pgrecursos.pgmemoria.pgaActual.Visible= .T.thisform.pgrecursos.pgmemoria.maximoPga.Visible= .T.thisform.pgrecursos.pgmemoria.porcentajesAciertos.Visible= .T.thisform.pgrecursos.pgmemoria.cdestinoPGA.Visible= .T.thisform.pgrecursos.pgmemoria.textoGeneral.Visible= .T.

Page 334: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 145 -

thisform.pgrecursos.pgmemoria.label_oracle1.Visible= .F.thisform.pgrecursos.pgmemoria.label_oracle2.Visible= .F.

** Desabilita opciones de Pestaña de Recuperaciónthisform.pgrecursos.pgrecuperacion.label3.Visible= .T.thisform.pgrecursos.pgrecuperacion.label4.Visible= .T.thisform.pgrecursos.pgrecuperacion.label5.Visible= .T.thisform.pgrecursos.pgrecuperacion.label6.Visible= .T.thisform.pgrecursos.pgrecuperacion.label7.Visible= .T.thisform.pgrecursos.pgrecuperacion.tiempoMedioRecuperación.Visible= .T.thisform.pgrecursos.pgrecuperacion.textoGeneralRecup.Visible= .T.thisform.pgrecursos.pgrecuperacion.tiempoRecuperacion.Visible= .T.thisform.pgrecursos.pgrecuperacion.nombreArchivo.Visible= .F.thisform.pgrecursos.pgrecuperacion.cTiempoMedioRecuperacion.Visible= .T.thisform.pgrecursos.pgrecuperacion.modoArchivelog.Visible= .T.thisform.pgrecursos.pgrecuperacion.archivadoAutomatico.Visible= .T.thisform.pgrecursos.pgrecuperacion.grid3.Visible= .T.thisform.pgrecursos.pgrecuperacion.image3.Visible= .T.thisform.pgrecursos.pgrecuperacion.pageframe1.Visible= .T.thisform.pgrecursos.pgrecuperacion.pageframe2.Visible= .T.thisform.pgrecursos.pgrecuperacion.label_oracle3.Visible= .F.thisform.cmdAceptar.Enabled = .T.lcinstancia="OPEN"

archive_automatico

liaut = IIF(ALLTRIM(thisform.pgrecursos.pgrecuperacion.tarcaut.Value)=='SI',1,0)IF liaut <> thisform.pgrecursos.pgrecuperacion.archivadoAutomatico.Value

IF thisform.pgrecursos.pgrecuperacion.archivadoAutomatico.Value = 1lcarch = SYS(5) + '\' + _screen.esTANDAR.crutatxt + 'archive.bat'IF FILE("&lcarch")

DELETE FILE ("&lcarch")ENDIFcprivilegio = ''

IF ALLTRIM(_screen.esTANDAR.cprivilegio)=='Normal'cprivilegio = ' '

ELSEcprivilegio = ' as ' + ALLTRIM(_screen.esTANDAR.cprivilegio)

ENDIF

arch = fcreate("&lcarch")FPUTS(arch,"@echo off")FPUTS(arch,"set oracle_sid="+_screen.esTANDAR.cdatabase)FPUTS(arch, "echo set echo on > %0.tmp")FPUTS(arch,"echo connect " + ALLTRIM(_screen.esTANDAR.cusuario) + '/' +

ALLTRIM(_screen.esTANDAR.cclave) + cprivilegio + "; >> %0.tmp")FPUTS(arch,"echo shutdown immediate; >> %0.tmp")FPUTS(arch,"echo startup mount; >> %0.tmp")FPUTS(arch,"echo alter database open; >> %0.tmp")FPUTS(arch,"echo alter system archive log start; >> %0.tmp")FPUTS(arch,"echo exit; >> %0.tmp")

Page 335: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 146 -

FPUTS(arch,"echo pause >> %0.tmp")FPUTS(arch,"sqlplus /nolog @%0.tmp")FPUTS(arch,"del %0.tmp")fclose(arch)RUN "&lcarch"

ELSElcarch = SYS(5) + '\' + _screen.esTANDAR.crutatxt + 'archive.bat'IF FILE("&lcarch")

DELETE FILE ("&lcarch")ENDIFcprivilegio = ''

IF ALLTRIM(_screen.esTANDAR.cprivilegio)=='Normal'cprivilegio = ' '

ELSEcprivilegio = ' as ' + ALLTRIM(_screen.esTANDAR.cprivilegio)

ENDIF

arch = fcreate("&lcarch")FPUTS(arch,"@echo off")FPUTS(arch,"set oracle_sid="+_screen.esTANDAR.cdatabase)FPUTS(arch, "echo set echo on > %0.tmp")FPUTS(arch,"echo connect " + ALLTRIM(_screen.esTANDAR.cusuario) + '/' +

ALLTRIM(_screen.esTANDAR.cclave) + cprivilegio + "; >> %0.tmp")FPUTS(arch,"echo shutdown immediate; >> %0.tmp")FPUTS(arch,"echo startup mount; >> %0.tmp")FPUTS(arch,"echo alter database open; >> %0.tmp")FPUTS(arch,"echo alter system archive log stop; >> %0.tmp")FPUTS(arch,"echo exit; >> %0.tmp")FPUTS(arch,"echo pause >> %0.tmp")FPUTS(arch,"sqlplus /nolog @%0.tmp")FPUTS(arch,"del %0.tmp")fclose(arch)RUN "&lcarch"

ENDIFENDIF

cargainstanciageneral

lcsql = "select a.host_name, a.version, instance_name,to_char(a.startup_time,'dd-mm-yyyyhh:mi:ss')startup_time, "

lcsql = lcsql + " b.name, b.log_mode, a.logins, b.open_mode from v$instance a, v$database b "liresult = thisform.sqlexec(lcsql,"tmpresul")IF liresult < 0

**Desabilita opciones de pestaña de General Instancia

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optcerrada.Value = 1thisform.pgrecursos.pggeneralinstancia.command2.Enabled= .F.thisform.pgrecursos.pggeneralinstancia.label1.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label2.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label3.Visible= .F.

Page 336: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 147 -

thisform.pgrecursos.pggeneralinstancia.label4.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label5.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label6.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label7.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label8.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label9.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text10.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text11.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text12.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text13.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text14.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text15.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text16.Visible= .F.thisform.pgrecursos.pggeneralinstancia.cmodorestringido.Visible= .F.thisform.pgrecursos.pggeneralinstancia.cmodolectura.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label_oracle.Visible= .T.thisform.log_error(lcsql)

ELSElcsql= "select value from v$parameter where num=75"liresult= thisform.sqlexec(lcsql,"tmpresul2")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ELSESELECT tmpresulthisform.pgrecursos.pggeneralinstancia.text10.Value =

ALLTRIM(tmpresul.host_name)thisform.pgrecursos.pggeneralinstancia.text11.Value =ALLTRIM(tmpresul.name)thisform.pgrecursos.pggeneralinstancia.text12.Value = "Oracle9i Enterprise Edition

Release " + ALLTRIM(tmpresul.version)thisform.pgrecursos.pggeneralinstancia.text13.Value =

ALLTRIM(tmpresul.instance_name)thisform.pgrecursos.pggeneralinstancia.text14.Value =

ALLTRIM(tmpresul.startup_time)thisform.pgrecursos.pggeneralinstancia.text15.Value = ALLTRIM(tmpresul.log_mode)thisform.pgrecursos.pggeneralinstancia.text16.Value =ALLTRIM(tmpresul2.value)

DO CASECASE ALLTRIM(tmpresul.logins)=="ALLOWED"

thisform.pgrecursos.pggeneralinstancia.Cmodorestringido.ListIndex = 2OTHERWISE

thisform.pgrecursos.pggeneralinstancia.cmodorestringido.ListIndex = 1ENDCASE

DO CASECASE ALLTRIM(tmpresul.open_mode)=="READ WRITE"

thisform.pgrecursos.pggeneralinstancia.Cmodolectura.ListIndex =2

thisform.pgrecursos.pggeneralinstancia.Cmodolectura.Enabled=.F.

Page 337: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 148 -

OTHERWISEthisform.pgrecursos.pggeneralinstancia.Cmodolectura.ListIndex =

1thisform.pgrecursos.pggeneralinstancia.Cmodolectura.Enabled=

.F.ENDCASE

ENDIFENDIF

cargarcpugeneral

Local gnFileHandle,nSize,cStringWAIT WINDOW "Cargando Informacion del Equipo" NOWAIT

contador = 0coperacion = "Run (systeminfo >" + SYS(5) + _screen.estANDAR.crutatxt +

"informacioncpu.txt)"&coperacion

WAIT CLEAR

lcdato = SYS(5)lhFile=FOPEN(SYS(5) + _screen.estANDAR.crutatxt + "informacioncpu.txt")IF lhFile>0

DO WHILE NOT FEOF(lhFile)lsBuffer=FGETS(lhFile)DO CASE

CASE LIKE("*Tiempo de arranque del sistema*",lsBuffer) ORLIKE("*System Up Time*",lsBuffer)

IF LIKE("*System Up Time*",lsBuffer)thisform.pgrecursos.pggeneralcpu.text1.Value =

ALLTRIM(SUBSTR(lsBuffer,16,100))ELSE

thisform.pgrecursos.pggeneralcpu.text1.Value =ALLTRIM(SUBSTR(lsBuffer,32,100))

ENDIF

CASE LIKE("*Nombre de host:*",lsBuffer) OR LIKE("*Host Name:*",lsBuffer)IF LIKE("*Host Name:*",lsBuffer)

thisform.pgrecursos.pggeneralcpu.text2.Value =ALLTRIM(SUBSTR(lsBuffer,11,100))

ELSEthisform.pgrecursos.pggeneralcpu.text2.Value =

ALLTRIM(SUBSTR(lsBuffer,16,100))ENDIF

CASE LIKE("*Nombre del sistema operativo:*",lsBuffer) OR LIKE("*OSName:*",lsBuffer)

IF LIKE("*OS Name:*",lsBuffer)thisform.pgrecursos.pggeneralcpu.text4.Value =

ALLTRIM(SUBSTR(lsBuffer,9,100))ELSE

thisform.pgrecursos.pggeneralcpu.text4.Value =ALLTRIM(SUBSTR(lsBuffer,30,100))

Page 338: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 149 -

ENDIF

CASE LIKE("*Procesador(es):*",lsBuffer) ORLIKE("*Processor(s):*",lsBuffer)

IF LIKE("*Processors(s):*",lsBuffer)thisform.pgrecursos.pggeneralcpu.text6.Value =

ALLTRIM(SUBSTR(lsBuffer,15,100))ELSE

thisform.pgrecursos.pggeneralcpu.text6.Value =ALLTRIM(SUBSTR(lsBuffer,16,100))

ENDIF

CASE LIKE("*Cantidad total de memoria f*",lsBuffer) OR LIKE("*TotalPhysical Memory:*",lsBuffer)

IF LIKE("*Total Physical Memory:*",lsBuffer)thisform.pgrecursos.pggeneralcpu.text7.Value =

ALLTRIM(SUBSTR(lsBuffer,23,100))ELSE

thisform.pgrecursos.pggeneralcpu.text7.Value =ALLTRIM(SUBSTR(lsBuffer,34,100))

ENDIFENDCASE

ENDDOENDIFFCLOSE(lhFile)

**Mostrar Dirección IPlowinsock= CREATEOBJECT("mswinsock.winsock.1")direccion= lowinsock.LocalIPTHISFORM.PGrecursos.PGgeneralcpu.Text5.Value= direccion

*** Mostrar espacio Libre en Disco*!* SET DEFAULT TO z:\espacio1= VAL(SYS(2020))/1024/1024/1024thisform.pgrecursos.pggeneralcpu.text9.Value =espacio1

** Mostrar el tamanio total del Discoobj = GETOBJECT("winmgmts:\\")cCad = "Select * from Win32_LogicalDisk"oCapacity = obj.ExecQuery(cCad)FOR EACH Disco IN oCapacity

IF !ISNULL(Disco.size) AND ALLTRIM(Disco.name)==SYS(5)thisform.pgrecursos.pggeneralcpu.text8.Value = VAL(disco.size)/1024/1024/1024

ENDIFNEXT

Cierra_base

lcarch = SYS(5) + '\' + _screen.esTANDAR.crutatxt + 'baja.bat'IF FILE("&lcarch")

DELETE FILE ("&lcarch")ENDIF

Page 339: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 150 -

cprivilegio = ''IF ALLTRIM(_screen.esTANDAR.cprivilegio)=='Normal'

cprivilegio = ' 'ELSE

cprivilegio = ' as ' + ALLTRIM(_screen.esTANDAR.cprivilegio)ENDIF

arch = fcreate("&lcarch")FPUTS(arch,"@echo off")FPUTS(arch,"set oracle_sid="+_screen.esTANDAR.cdatabase)FPUTS(arch, "echo set echo on > %0.tmp")FPUTS(arch,"echo connect " + ALLTRIM(_screen.esTANDAR.cusuario) + '/' +ALLTRIM(_screen.esTANDAR.cclave) + cprivilegio + "; >> %0.tmp")FPUTS(arch,"echo shutdown immediate; >> %0.tmp")FPUTS(arch,"echo exit; >> %0.tmp")FPUTS(arch,"echo pause >> %0.tmp")FPUTS(arch,"sqlplus /nolog @%0.tmp")FPUTS(arch,"del %0.tmp")fclose(arch)

RUN "&lcarch"

Conecta_new

ln = SQLSETPROP(0,"DispLogin",3)liconex = SQLSTRINGCONNECT(_screen.esTANDAR.cstringconnect)IF liconex < 0

men = "No se pudo conectar al servidor - " + MESSAGE()IF LIKE('*ORA-01034*',men)

MESSAGEBOX("No se encuentra conectado a Oracle",16,_screen.estandar.cmensistema)ELSE

MESSAGEBOX(men,16,_screen.estandar.cmensistema)ENDIF_screen.estandar.iconectada = 0this.liconexion = -1RETURN

ENDIF

IF liconex > 0this.liconexion = liconex_screen.estandar.iconectada = 1

ELSEthis.liconex = -1_screen.estandar.iconectada = 0

ENDIF

estadoinstance

Page 340: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 151 -

lcsql = "select status,database_status from v$instance"liresult = thisform.sqlexec(lcsql,"tmpresul")IF liresult < 0

men = MESSAGE()thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optcerrada.Value = 1thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optabierto.Value = 0thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optiniciado.Value= 0thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optMontado.Value = 0thisform.pgrecursos.pggeneralcpu.text3.value= "INACTIVO"thisform.log_error(lcsql)RETURN

ELSElcinstancia = ALLTRIM(tmpresul.status)thisform.pgrecursos.pggeneralcpu.text3.value= tmpresul.database_statusDO CASE

CASE ALLTRIM(tmpresul.status)=="OPEN"

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optcerrada.Value = 0

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optabierto.Value = 1

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optiniciado.Value= 0

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optMontado.Value = 0

lcoption= 1

CASE ALLTRIM (tmpresul.status)="MOUNTED"

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optcerrada.Value = 0

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optabierto.Value = 0

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optiniciado.Value= 0

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optMontado.Value = 1

lcoption= 2CASE ALLTRIM (tmpresul.status)="STARTED"

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optcerrada.Value = 0

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optabierto.Value = 0

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optiniciado.Value= 1

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optMontado.Value = 0

lcoption= 3OTHERWISE

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optcerrada.Value = 1

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optabierto.Value = 0

Page 341: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 152 -

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optiniciado.Value= 0

thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.optMontado.Value = 0lcoption= 4

ENDCASEENDIF

Inactiva

**Desabilita opciones de pestaña de General Instancia

thisform.pgrecursos.pggeneralinstancia.command2.Enabled= .F.thisform.pgrecursos.pggeneralinstancia.label1.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label2.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label3.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label4.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label5.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label6.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label7.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label8.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label9.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text10.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text11.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text12.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text13.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text14.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text15.Visible= .F.thisform.pgrecursos.pggeneralinstancia.text16.Visible= .F.thisform.pgrecursos.pggeneralinstancia.cmodorestringido.Visible= .F.thisform.pgrecursos.pggeneralinstancia.cmodolectura.Visible= .F.thisform.pgrecursos.pggeneralinstancia.label_oracle.Visible= .T.

** Desabilita opciones de pestaña de Memoria SGA, PGAthisform.pgrecursos.pgmemoria.shape1.Visible= .F.thisform.pgrecursos.pgmemoria.shape2.Visible= .F.thisform.pgrecursos.pgmemoria.shape3.Visible= .F.thisform.pgrecursos.pgmemoria.shape4.Visible= .F.thisform.pgrecursos.pgmemoria.label1.Visible= .F.thisform.pgrecursos.pgmemoria.label2.Visible= .F.thisform.pgrecursos.pgmemoria.label3.Visible= .F.thisform.pgrecursos.pgmemoria.label4.Visible= .F.thisform.pgrecursos.pgmemoria.label5.Visible= .F.thisform.pgrecursos.pgmemoria.label6.Visible= .F.thisform.pgrecursos.pgmemoria.label7.Visible= .F.thisform.pgrecursos.pgmemoria.label8.Visible= .F.thisform.pgrecursos.pgmemoria.label9.Visible= .F.thisform.pgrecursos.pgmemoria.label10.Visible= .F.thisform.pgrecursos.pgmemoria.label11.Visible= .F.thisform.pgrecursos.pgmemoria.label12.Visible= .F.thisform.pgrecursos.pgmemoria.label13.Visible= .F.thisform.pgrecursos.pgmemoria.label14.Visible= .F.

Page 342: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 153 -

thisform.pgrecursos.pgmemoria.label15.Visible= .F.thisform.pgrecursos.pgmemoria.image3.Visible = .F.thisform.pgrecursos.pgmemoria.conjuntoCompartido.Visible= .F.thisform.pgrecursos.pgmemoria.cacheBuffers.Visible= .F.thisform.pgrecursos.pgmemoria.conjuntoGrande.Visible= .F.thisform.pgrecursos.pgmemoria.conjuntoJava.Visible= .F.thisform.pgrecursos.pgmemoria.cconjuntoCompartido.Visible= .F.thisform.pgrecursos.pgmemoria.ccacheBuffers.Visible= .F.thisform.pgrecursos.pgmemoria.CconjuntoGrande.Visible= .F.thisform.pgrecursos.pgmemoria.cconjuntoJava.Visible= .F.thisform.pgrecursos.pgmemoria.sGAtotal.Visible= .F.thisform.pgrecursos.pgmemoria.tamañoMaximoSGA.Visible= .F.thisform.pgrecursos.pgmemoria.destinoPga.Visible= .F.thisform.pgrecursos.pgmemoria.pgaActual.Visible= .F.thisform.pgrecursos.pgmemoria.maximoPga.Visible= .F.thisform.pgrecursos.pgmemoria.porcentajesAciertos.Visible= .F.thisform.pgrecursos.pgmemoria.cdestinoPGA.Visible= .F.thisform.pgrecursos.pgmemoria.textoGeneral.Visible= .F.thisform.pgrecursos.pgmemoria.label_oracle1.Visible= .T.thisform.pgrecursos.pgmemoria.label_oracle2.Visible= .T.

** Desabilita opciones de Pestaña de Recuperación

thisform.pgrecursos.pgrecuperacion.label3.Visible= .F.thisform.pgrecursos.pgrecuperacion.label4.Visible= .F.thisform.pgrecursos.pgrecuperacion.label5.Visible= .F.thisform.pgrecursos.pgrecuperacion.label6.Visible= .F.thisform.pgrecursos.pgrecuperacion.label7.Visible= .F.thisform.pgrecursos.pgrecuperacion.tiempoMedioRecuperación.Visible= .F.thisform.pgrecursos.pgrecuperacion.textoGeneralRecup.Visible= .F.thisform.pgrecursos.pgrecuperacion.tiempoRecuperacion.Visible= .F.thisform.pgrecursos.pgrecuperacion.nombreArchivo.Visible= .F.thisform.pgrecursos.pgrecuperacion.cTiempoMedioRecuperacion.Visible= .F.thisform.pgrecursos.pgrecuperacion.modoArchivelog.Visible= .F.thisform.pgrecursos.pgrecuperacion.archivadoAutomatico.Visible= .F.thisform.pgrecursos.pgrecuperacion.grid3.Visible= .F.thisform.pgrecursos.pgrecuperacion.image3.Visible= .F.thisform.pgrecursos.pgrecuperacion.pageframe1.Visible= .F.thisform.pgrecursos.pgrecuperacion.pageframe2.Visible= .F.thisform.pgrecursos.pgrecuperacion.label_oracle3.Visible= .T.lcinstancia="STOP"

limpia

WITH thisform.pgrecursos.pgrecuperacion.grid3.Recordsource = "".Column1.Controlsource = "".Column2.Controlsource = ""SELECT tmpUbicacionArchivelogZAP.Recordsource = "tmpUbicacionArchivelog".Column1.Controlsource = "tmpUbicacionArchivelog.DESTINATION"

Page 343: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 154 -

.Column2.Controlsource = "tmpUbicacionArchivelog.STATUS"

.refreshENDWITH

Memoria_sga

lcsql = "select value, name from v$parameter where name in('shared_pool_size', 'db_cache_size', 'large_pool_size','java_pool_size', 'log_buffer', 'sga_max_size')"liresult = thisform.sqlexec(lcsql,"tmpresulSGA")IF liresult < 0

** Desabilita opciones de pestaña de Memoria SGAthisform.pgrecursos.pgmemoria.shape1.Visible= .F.thisform.pgrecursos.pgmemoria.shape2.Visible= .F.thisform.pgrecursos.pgmemoria.shape3.Visible= .F.thisform.pgrecursos.pgmemoria.shape4.Visible= .F.thisform.pgrecursos.pgmemoria.label1.Visible= .F.thisform.pgrecursos.pgmemoria.label2.Visible= .F.thisform.pgrecursos.pgmemoria.label3.Visible= .F.thisform.pgrecursos.pgmemoria.label4.Visible= .F.thisform.pgrecursos.pgmemoria.label5.Visible= .F.thisform.pgrecursos.pgmemoria.label6.Visible= .F.thisform.pgrecursos.pgmemoria.label7.Visible= .F.thisform.pgrecursos.pgmemoria.label8.Visible= .F.thisform.pgrecursos.pgmemoria.conjuntoCompartido.Visible= .F.thisform.pgrecursos.pgmemoria.cacheBuffers.Visible= .F.thisform.pgrecursos.pgmemoria.conjuntoGrande.Visible= .F.thisform.pgrecursos.pgmemoria.conjuntoJava.Visible= .F.thisform.pgrecursos.pgmemoria.cconjuntoCompartido.Visible= .F.thisform.pgrecursos.pgmemoria.ccacheBuffers.Visible= .F.thisform.pgrecursos.pgmemoria.CconjuntoGrande.Visible= .F.thisform.pgrecursos.pgmemoria.cconjuntoJava.Visible= .F.thisform.pgrecursos.pgmemoria.sGAtotal.Visible= .F.thisform.pgrecursos.pgmemoria.tamañoMaximoSGA.Visible= .F.thisform.pgrecursos.pgmemoria.label_oracle1.Visible= .T.thisform.log_error(lcsql)RETURN

ELSESELECT tmpresulSGASCAN

DO CASECASE ALLTRIM(tmpresulSGA.name)=="shared_pool_size"

thisform.pgrecursos.pgmemoria.conjuntoCompartido.Value=ROUND((VAL(ALLTRIM(tmpresulSGA.value))/1024/1024),0)

thisform.pgrecursos.pgmemoria.CconjuntoCompartido.ListIndex= 1shared_pool=VAL(ALLTRIM(tmpresulSGA.value))

CASE ALLTRIM(tmpresulSGA.name)=="db_cache_size"thisform.pgrecursos.pgmemoria.cacheBuffers.Value =

ROUND((VAL(ALLTRIM(tmpresulSGA.value))/1024/1024),0)

Page 344: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 155 -

thisform.pgrecursos.pgmemoria.ccacheBuffers.ListIndex= 1cache=VAL(ALLTRIM(tmpresulSGA.value))

CASE ALLTRIM(tmpresulSGA.name)=="large_pool_size"thisform.pgrecursos.pgmemoria.conjuntoGrande.Value

=ROUND((VAL(ALLTRIM(tmpresulSGA.value))/1024/1024),0)thisform.pgrecursos.pgmemoria.cconjuntoGrande.ListIndex= 1large=VAL(ALLTRIM(tmpresulSGA.value))

CASE ALLTRIM(tmpresulSGA.name)=="java_pool_size"thisform.pgrecursos.pgmemoria.conjuntoJava.Value

=ROUND((VAL(ALLTRIM(tmpresulSGA.value))/1024/1024),0)thisform.pgrecursos.pgmemoria.cconjuntoJava.ListIndex = 1java=VAL(ALLTRIM(tmpresulSGA.value))

CASE ALLTRIM(tmpresulSGA.name)=="log_buffer"logbuffer=VAL( ALLTRIM(tmpresulSGA.value))

CASE ALLTRIM(tmpresulSGA.name)=="sga_max_size"tamañomaximo=VAL( ALLTRIM(tmpresulSGA.value))

ENDCASEENDSCAN

ENDIF

*** SEGUNDO CURSOR TAMAÑO FIJO DE LA SGAlcsql2 = "select sum(decode(name,'fixed_sga',bytes))valor from v$sgastat"liresult2 = thisform.sqlexec(lcsql2,"tmpresulSGA2")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)RETURN

ELSESELECT tmpresulSGA2SCAN

tamañofijo= (tmpresulSGA2.valor)ENDSCAN

***Calculo del SGA TOTALthisform.pgrecursos.pgmemoria.sGAtotal.Value= ROUND(((shared_pool + cache + large + java

+ logbuffer + tamañofijo)/1024)/1024, 3)

*** Calculo del tamaño máximo SGAthisform.pgrecursos.pgmemoria.tamañoMaximoSGA.Value=

ROUND(((tamañomaximo)/1024/1024),3 )ENDIF

memoriapga

Page 345: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 156 -

lcsql = "select value,name from v$pgastat where name in('aggregate PGA target parameter','total PGAallocated','maximum PGA allocated','cache hit percentage')"liresult = thisform.sqlexec(lcsql,"tmpresulPGA")IF liresult < 0

** Desabilita opciones de pestaña de Memoria PGAthisform.pgrecursos.pgmemoria.label9.Visible= .F.thisform.pgrecursos.pgmemoria.label10.Visible= .F.thisform.pgrecursos.pgmemoria.label11.Visible= .F.thisform.pgrecursos.pgmemoria.label12.Visible= .F.thisform.pgrecursos.pgmemoria.label13.Visible= .F.thisform.pgrecursos.pgmemoria.label14.Visible= .F.thisform.pgrecursos.pgmemoria.label15.Visible= .F.thisform.pgrecursos.pgmemoria.image3.Visible = .F.thisform.pgrecursos.pgmemoria.destinoPga.Visible= .F.thisform.pgrecursos.pgmemoria.pgaActual.Visible= .F.thisform.pgrecursos.pgmemoria.maximoPga.Visible= .F.thisform.pgrecursos.pgmemoria.porcentajesAciertos.Visible= .F.thisform.pgrecursos.pgmemoria.cdestinoPGA.Visible= .F.thisform.pgrecursos.pgmemoria.textoGeneral.Visible= .F.thisform.pgrecursos.pgmemoria.label_oracle2.Visible= .T.thisform.log_error(lcsql)RETURN

ELSESELECT tmpresulPGASCAN

DO caseCASE ALLTRIM(tmpresulPGA.name)=="aggregate PGA target parameter"

thisform.pgrecursos.pgmemoria.destinoPga.Value=ROUND(VAL(STR(tmpresulPGA.value,8,6))/1024/1024,0)

thisform.pgrecursos.pgmemoria.cdestinoPGA.ListIndex = 1

CASE ALLTRIM(tmpresulPGA.name)=="total PGA allocated"thisform.pgrecursos.pgmemoria.pgaActual.Value=

ROUND(VAL(STR(tmpresulPGA.value,8,6))/1024,0)

CASE ALLTRIM(tmpresulPGA.name)=="maximum PGA allocated"

thisform.pgrecursos.pgmemoria.maximoPga.Value=ROUND(VAL(STR(tmpresulPGA.value,8,6))/1024,0)

CASE ALLTRIM(tmpresulPGA.name)=="cache hit percentage"

thisform.pgrecursos.pgmemoria.porcentajesAciertos.Value=ROUND(VAL(STR(tmpresulPGA.value,8,6)),0)

ENDCASE

THISFORM.PGrecursos.PGmemoria.TextoGeneral.Value ="La suma de SGA y PGAdebe ser menor que el total de memoria del sistema menos la memoria que necesita el sistema operativo y el restode aplicaciones"

ENDSCANENDIF

Page 346: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 157 -

Modoarchive

lcarch = SYS(5) + '\' + _screen.esTANDAR.crutatxt + 'archive.bat'IF FILE("&lcarch")

DELETE FILE ("&lcarch")ENDIFcprivilegio = ''

IF ALLTRIM(_screen.esTANDAR.cprivilegio)=='Normal'cprivilegio = ' '

ELSEcprivilegio = ' as ' + ALLTRIM(_screen.esTANDAR.cprivilegio)

ENDIF

arch = fcreate("&lcarch")FPUTS(arch,"@echo off")FPUTS(arch,"set oracle_sid="+_screen.esTANDAR.cdatabase)FPUTS(arch, "echo set echo on > %0.tmp")FPUTS(arch,"echo connect " + ALLTRIM(_screen.esTANDAR.cusuario) + '/' +

ALLTRIM(_screen.esTANDAR.cclave) + cprivilegio + "; >> %0.tmp")FPUTS(arch,"echo shutdown immediate; >> %0.tmp")FPUTS(arch,"echo startup mount; >> %0.tmp")FPUTS(arch,"echo alter database archivelog; >> %0.tmp")FPUTS(arch,"echo alter database open; >> %0.tmp")FPUTS(arch,"echo exit; >> %0.tmp")FPUTS(arch,"echo pause >> %0.tmp")FPUTS(arch,"sqlplus /nolog @%0.tmp")FPUTS(arch,"del %0.tmp")fclose(arch)RUN "&lcarch"

modonoarchive

lcarch = SYS(5) + '\' + _screen.esTANDAR.crutatxt + 'archive.bat'IF FILE("&lcarch")

DELETE FILE ("&lcarch")ENDIFcprivilegio = ''

IF ALLTRIM(_screen.esTANDAR.cprivilegio)=='Normal'cprivilegio = ' '

ELSEcprivilegio = ' as ' + ALLTRIM(_screen.esTANDAR.cprivilegio)

ENDIF

arch = fcreate("&lcarch")FPUTS(arch,"@echo off")FPUTS(arch,"set oracle_sid="+_screen.esTANDAR.cdatabase)FPUTS(arch, "echo set echo on > %0.tmp")

Page 347: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 158 -

FPUTS(arch,"echo connect " + ALLTRIM(_screen.esTANDAR.cusuario) + '/' +ALLTRIM(_screen.esTANDAR.cclave) + cprivilegio + "; >> %0.tmp")FPUTS(arch,"echo shutdown immediate; >> %0.tmp")FPUTS(arch,"echo startup mount; >> %0.tmp")FPUTS(arch,"echo alter database noarchivelog; >> %0.tmp")FPUTS(arch,"echo alter database open; >> %0.tmp")FPUTS(arch,"echo exit; >> %0.tmp")FPUTS(arch,"echo pause >> %0.tmp")FPUTS(arch,"sqlplus /nolog @%0.tmp")FPUTS(arch,"del %0.tmp")fclose(arch)RUN "&lcarch"

Muestra_datos

thisform.limpia()thisform.conecta_new()** Mostrar la hora de inicio del Equipothisform.cargarcpugeneral()

IF ALLTRIM(_screen.esTANDAR.cprivilegio)=="SYSDBA"thisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.Enabled= .T.thisform.pgrecursos.pgrecuperacion.archivadoAutomatico.Enabled= .T.thisform.pgrecursos.pgrecuperacion.modoArchivelog.Enabled = .T.thisform.pgrecursos.pgrecuperacion.nombreArchivo.Enabled = .F.thisform.pgrecursos.pgrecuperacion.grid3.Enabled = .F.

ELSEthisform.pgrecursos.pggeneralinstancia.pageframe1.page1.optinstancia.Enabled= .F.thisform.pgrecursos.pgrecuperacion.archivadoAutomatico.Enabled= .F.thisform.pgrecursos.pgrecuperacion.modoArchivelog.Enabled = .F.thisform.pgrecursos.pgrecuperacion.nombreArchivo.Enabled = .F.thisform.pgrecursos.pgrecuperacion.grid3.Enabled = .F.

ENDIF

** Mostrar información de la instancia y la Base de Datosthisform.cargainstanciageneral()

**Mostrar el Estado de la Instanciathisform.estado_instance()

**Mostrar Memoria SGAthisform.memoria_sga ()

** Mostrar Memoria PGAthisform.memoriapga()

Page 348: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 159 -

**Mostrar Recuperación de la Instanciathisform.recuperacion_instancia ()

recuperacion_instancia

lcsql = "select name, value from v$parameter where name in('fast_start_mttr_target','log_archive_format','standby_archive_dest')"liresult = thisform.sqlexec(lcsql,"tmpresulrecuperacion")lcsql = "select a.log_mode, b.archiver from v$database a, v$instance b"liresult = thisform.sqlexec(lcsql,"tmpresulrecuperacionModo")IF liresult < 0

** Desabilita opciones de Pestaña de Recuperación

thisform.pgrecursos.pgrecuperacion.label3.Visible= .F.thisform.pgrecursos.pgrecuperacion.label4.Visible= .F.thisform.pgrecursos.pgrecuperacion.label5.Visible= .F.thisform.pgrecursos.pgrecuperacion.label6.Visible= .F.thisform.pgrecursos.pgrecuperacion.label7.Visible= .F.thisform.pgrecursos.pgrecuperacion.tiempoMedioRecuperación.Visible= .F.thisform.pgrecursos.pgrecuperacion.textoGeneralRecup.Visible= .F.thisform.pgrecursos.pgrecuperacion.tiempoRecuperacion.Visible= .F.thisform.pgrecursos.pgrecuperacion.nombreArchivo.Visible= .F.thisform.pgrecursos.pgrecuperacion.cTiempoMedioRecuperacion.Visible= .F.thisform.pgrecursos.pgrecuperacion.modoArchivelog.Visible= .F.thisform.pgrecursos.pgrecuperacion.archivadoAutomatico.Visible= .F.thisform.pgrecursos.pgrecuperacion.grid3.Visible= .F.thisform.pgrecursos.pgrecuperacion.image3.Visible= .F.thisform.pgrecursos.pgrecuperacion.pageframe1.Visible= .F.thisform.pgrecursos.pgrecuperacion.pageframe2.Visible= .F.thisform.pgrecursos.pgrecuperacion.label_oracle3.Visible= .T.thisform.log_error(lcsql)RETURN

ELSESELECT tmpresulrecuperacionSCAN

DO CASECASE ALLTRIM(tmpresulrecuperacion.name)=="fast_start_mttr_target"

thisform.pgrecursos.pgrecuperacion.tiempoMedioRecuperación.Value =ROUND((VAL(ALLTRIM(tmpresulrecuperacion.value))/60),0)

thisform.pgrecursos.pgrecuperacion.cTiempoMedioRecuperacion.ListIndex=1

CASE ALLTRIM(tmpresulrecuperacion.name)=="log_archive_format"thisform.pgrecursos.pgrecuperacion.nombreArchivo.Value=

ALLTRIM(tmpresulrecuperacion.value)thisform.pgrecursos.pgrecuperacion.tname.Value =

ALLTRIM(tmpresulrecuperacion.value)ENDCASE

ENDSCAN

Page 349: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 160 -

THISFORM.PGrecursos.pgrecuperacion.textoGeneralRecup.Value ="En modo Archive Log, se puedenrealizar copias de seguridad con la base de datos activa " + "y las ultimas recuperaciones, pero debe proporcionarespacio para los logs. Si cambia " + "el modo al modo Archive Log, debería realizar una copias de seguridadinmediatamente. " + "En modo No Archive Log, sólo se pueden realizar copias de seguridad en frio y se pueden " +"perder los datos en caso de corrupción de la base de datos."

SELECT tmpresulrecuperacionModoDO CASE

CASE ALLTRIM(tmpresulrecuperacionModo.log_mode)=="ARCHIVELOG"thisform.PGrecursos.PGrecuperacion.ModoArchivelog.Value= 1thisform.pgrecursos.pgrecuperacion.label6.Visible= .F.IF tmpresulrecuperacionModo.archiver=="STARTED"

thisform.pgrecursos.pgrecuperacion.archivadoAutomatico.Value=1thisform.pgrecursos.pgrecuperacion.tarcaut.Value = 'SI'

ELSEthisform.pgrecursos.pgrecuperacion.archivadoAutomatico.Value=0thisform.pgrecursos.pgrecuperacion.tarcaut.Value = 'NO'

ENDIFCASE ALLTRIM(tmpresulrecuperacionModo.log_mode)=="NOARCHIVELOG"

thisform.pgrecursos.pgrecuperacion.modoArchivelog.Value= 0thisform.pgrecursos.pgrecuperacion.archivadoAutomatico.Value = 1thisform.pgrecursos.pgrecuperacion.tarcaut.Value = 'SI'thisform.pgrecursos.pgrecuperacion.archivadoAutomatico.Enabled = .F.thisform.pgrecursos.pgrecuperacion.label3.Visible= .F.thisform.pgrecursos.pgrecuperacion.nombreArchivo.Enabled= .F.

ENDCASEENDIF

**Mostrar ubicaciones de los Archive Loglcsql= "select NVL(DEST_NAME,' ') dest_name,case STATUS when 'INACTIVE' then ' ' else STATUS end

STATUS,nvl(DESTINATION,' ') DESTINATION from v$archive_dest"liresult = thisform.sqlexec(lcsql,"tmpUbicacionArchivelog1")IF liresult < 0

men = "Error al buscar Ubicación de Archive Log - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

thisform.limpia()

SELECT tmpUbicacionArchivelog1GO TOPSCAN

IF LEN(ALLTRIM(tmpUbicacionArchivelog1.destination))>0SELECT tmpUbicacionArchivelogAPPEND BLANKreplace tmpUbicacionArchivelog.destination WITH

ALLTRIM(tmpUbicacionArchivelog1.destination)replace tmpUbicacionArchivelog.status WITH

ALLTRIM(tmpUbicacionArchivelog1.status)replace tmpUbicacionArchivelog.dest_name WITH

ALLTRIM(tmpUbicacionArchivelog1.dest_name)

Page 350: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 161 -

ENDIFENDSCAN

SELECT tmpUbicacionArchivelogGO TOPthisform.pgrecursos.pgrecuperacion.grid3.Refresh()

thisform.PGrecursos.PGrecuperacion.ModoArchivelog.InteractiveChange()

Sube_base

lcarch = SYS(5) + '\' + _screen.esTANDAR.crutatxt + 'sube.bat'IF FILE("&lcarch")

DELETE FILE ("&lcarch")ENDIF

cprivilegio = ''IF ALLTRIM(_screen.esTANDAR.cprivilegio)=='Normal'

cprivilegio = ' 'ELSE

cprivilegio = ' as ' + ALLTRIM(_screen.esTANDAR.cprivilegio)ENDIF

arch = fcreate("&lcarch")FPUTS(arch,"@echo off")FPUTS(arch,"set oracle_sid="+_screen.esTANDAR.cdatabase)FPUTS(arch, "echo set echo on > %0.tmp")FPUTS(arch,"echo connect " + ALLTRIM(_screen.esTANDAR.cusuario) + '/' +ALLTRIM(_screen.esTANDAR.cclave) + cprivilegio + "; >> %0.tmp")FPUTS(arch,"echo startup; >> %0.tmp")FPUTS(arch,"echo exit; >> %0.tmp")FPUTS(arch,"echo pause >> %0.tmp")FPUTS(arch,"sqlplus /nolog @%0.tmp")FPUTS(arch,"del %0.tmp")FCLOSE(arch)RUN "&lcarch"

Dtos_parametros.init

IF USED("tmprecursoPar")with thisform.grid1

.Recordsource = ""

.Column1.Controlsource = ""

.Column4.Controlsource = ""

.Column3.Controlsource = ""

.Column2.Controlsource = ""

.Column5.Controlsource = ""SELECT tmprecursoParGO TOP.Recordsource = "tmprecursoPar"

Page 351: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 162 -

.Column1.Controlsource = "tmprecursoPar.name"

.Column4.Controlsource = "tmprecursoPar.value"

.Column3.Controlsource = "tmprecursoPar.ISDEFAULT"

.Column2.Controlsource = "tmprecursoPar.ISSYS_MODIFIABLE"

.Column5.Controlsource = "tmprecursoPar.DESCRIPTION"

.refreshENDWITH

thisform.textoGeneralParametros.Value= "Los parametros en ejecución son parametros activos para esta Base deDatos"

ENDIF

load

DODEFAULT()

lcsql = "select name, nvl(value, ' ') value, case ISDEFAULT when 'TRUE' then 1 else 0 end ISDEFAULT, "lcsql = lcsql + "case ISSYS_MODIFIABLE when 'FALSE' then 0 else 1 end ISSYS_MODIFIABLE, DESCRIPTIONfrom v$parameter "lcsql = lcsql + " order by name "liresult = thisform.sqlexec(lcsql,"tmprecursoPar")IF liresult < 0

men = "Error al buscar los Roles - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)thisform.Release

ENDIF

1.11.2 Informe de Sesiones

Init

IF USED("Tmpsesiones")with thisform.grid1

.Recordsource = ""

.Column1.Controlsource = ""

.Column2.Controlsource = ""

.Column3.Controlsource = ""

.Column4.Controlsource = ""

.Column5.Controlsource = ""

.Column6.Controlsource = ""

.Column7.Controlsource = ""

.Column8.Controlsource = ""

.Column9.Controlsource = ""

.Column10.Controlsource = ""

.Column11.Controlsource = ""

Page 352: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 163 -

.Column12.Controlsource = ""SELECT TmpsesionesGO TOP.Recordsource = "Tmpsesiones".Column1.Controlsource = "Tmpsesiones.sid".Column2.Controlsource = "tmpsesiones.value2".Column3.Controlsource = "tmpsesiones.value3".Column4.Controlsource = "tmpsesiones.value4".Column5.Controlsource = "tmpsesiones.value5".Column6.Controlsource = "tmpsesiones.value6".Column7.Controlsource = "Tmpsesiones.status".Column8.Controlsource = "Tmpsesiones.username".Column9.Controlsource = "Tmpsesiones.osuser".Column10.Controlsource = "Tmpsesiones.spid".Column11.Controlsource = "Tmpsesiones.machine".Column12.Controlsource = "Tmpsesiones.program".refresh

ENDWITH

SELECT Tmpsesioneslinum = RECCOUNT()IF linum > 0

thisform.lblsesiones.Caption = ALLTRIM(STR(linum,10)) + " Sesiones"ENDIF

ENDIF

thisform.csesiones.ListIndex = 1thisform.csesiones.InteractiveChange()

Load

DODEFAULT()lcsql = "SELECT NVL(s.username, '(oracle)') AS username,s.osuser,s.sid,s.sid value2, s.sid value3, s.sid value4,s.sid value5, s.sid value6, p.spid,s.status,s.machine,s.program FROM "lcsql= lcsql + "v$session s, v$process p WHERE s.paddr = p.addr ORDER BY s.username, s.osuser"liresult = thisform.sqlexec(lcsql,"tmpsesiones")IF liresult < 0

men = "Error al buscar las Sesiones - " + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)thisform.Release

ENDIF

SELECT tmpsesionesINDEX on tmpsesiones.sid TAG llave

** Para ver CPU en las sesiones

Page 353: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 164 -

lcsql2= "select s.value,s.sid from v$sesstat s, v$statname n where n.name='CPU used by this session' andn.statistic#=s.statistic#"liresult2 = thisform.sqlexec(lcsql2,"tmpsesiones2")IF liresult < 0

men = "Error al buscar las Sesiones2 - " + MESSAGE()thisform.log_error(lcsql2)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)thisform.Release

ENDIF

SELECT tmpsesiones2SCAN

SELECT tmpsesionesSEEK tmpsesiones2.sidIF FOUND()

SELECT tmpsesionesreplace tmpsesiones.value2 WITH tmpsesiones2.value

ELSESELECT tmpsesionesreplace tmpsesiones.value2 WITH 0

ENDIFENDSCAN

** Memoria PGA en las sesioneslcsql3="select s.value, s.sid from v$sesstat s, v$statname n, v$session se where n.name='session pga memory' andn.statistic#=s.statistic# and s.sid=se.sid"liresult3= thisform.sqlexec(lcsql3,"tmpsesiones3")IF liresult < 0

men = "Error al buscar las Sesiones3 - " + MESSAGE()thisform.log_error(lcsql3)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)thisform.Release

ENDIF

SELECT tmpsesiones3SCAN

SELECT tmpsesionesSEEK tmpsesiones3.sidIF FOUND()

SELECT tmpsesionesreplace tmpsesiones.value3 WITH tmpsesiones3.value

ELSESELECT tmpsesionesreplace tmpsesiones.value3 WITH 0

ENDIFENDSCAN

** Entrada y Salida de Lectura Fisicalcsql4="select s.value, s.sid from v$sesstat s, v$statname n where n.name='physical reads' andn.statistic#=s.statistic#"liresult4= thisform.sqlexec(lcsql4,"tmpsesiones4")IF liresult < 0

men = "Error al buscar las Sesiones4 - " + MESSAGE()thisform.log_error(lcsql4)

Page 354: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 165 -

MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)thisform.Release

ENDIF

SELECT tmpsesiones4SCAN

SELECT tmpsesionesSEEK tmpsesiones4.sidIF FOUND()

SELECT tmpsesionesreplace tmpsesiones.value4 WITH tmpsesiones4.value

ELSESELECT tmpsesionesreplace tmpsesiones.value4 WITH 0

ENDIFENDSCAN

**Lectura Lògicalcsql5="select s.value, s.sid from v$sesstat s, v$statname n where n.name='session logical reads' andn.statistic#=s.statistic#"liresult5= thisform.sqlexec(lcsql5,"tmpsesiones5")IF liresult < 0

men = "Error al buscar las Sesiones5 - " + MESSAGE()thisform.log_error(lcsql5)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)thisform.Release

ENDIF

SELECT tmpsesiones5SCAN

SELECT tmpsesionesSEEK tmpsesiones5.sidIF FOUND()

SELECT tmpsesionesreplace tmpsesiones.value5 WITH tmpsesiones5.value

ELSESELECT tmpsesionesreplace tmpsesiones.value5 WITH 0

ENDIFENDSCAN

**Hard Parse (Analiza dificilmente)lcsql6="select s.value, s.sid from v$sesstat s, v$statname n where n.name='parse count (hard)' andn.statistic#=s.statistic#"liresult6= thisform.sqlexec(lcsql6,"tmpsesiones6")IF liresult < 0

men = "Error al buscar las Sesiones6 - " + MESSAGE()thisform.log_error(lcsql6)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)thisform.Release

ENDIF

SELECT tmpsesiones6

Page 355: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 166 -

SCANSELECT tmpsesionesSEEK tmpsesiones6.sidIF FOUND()

SELECT tmpsesionesreplace tmpsesiones.value6 WITH tmpsesiones6.value

ELSESELECT tmpsesionesreplace tmpsesiones.value6 WITH 0

ENDIFENDSCAN

1.12 Modulo de eventos, errores y notificaciones

1.12.1 Configuración de Parámetros y Notificaciones

Manmetnot.init

lcsql = "Select NVL(password,'nada') password,dirremitente,smtp,puerto,NVL(dirsaliente,'@') dirsaliente,envia from "+ _screen.esTANDAR.cusubd + ".parametros"lcsql = lcsql + " where tipo='E' "liresult = thisform.sqlexec(lcsql,"tmp1")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmp1GO TOPthisform.tclave.Value = _screen.estandar.desencriptador(ALLTRIM(tmp1.password))thisform.tdirremi.Value = ALLTRIM(tmp1.dirremitente)thisform.tserv.Value = ALLTRIM(tmp1.smtp)thisform.tpuerto.Value = tmp1.puertothisform.chkenvio.Value = IIF(tmp1.envia='S',1,0)

lcmail = ''FOR i=0 TO LEN(tmp1.dirsaliente)

IF SUBSTR(tmp1.dirsaliente,i,1) = ";"SELECT TmpmailAPPEND BLANKreplace Tmpmail.nombre WITH ALLTRIM(lcmail)

lcmail = ''ELSE

lcmail = lcmail + SUBSTR(tmp1.dirsaliente,i,1)ENDIF

ENDFOR

Page 356: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 167 -

lcsql = "Select NVL(dirsaliente,' ') dirsaliente,dirremitente,password from " + _screen.esTANDAR.cusubd +".parametros"lcsql = lcsql + " where tipo='C' "liresult = thisform.sqlexec(lcsql,"tmp1")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmp1GO TOPSELECT TmpmailGO TOPthisform.tsms.Value = ALLTRIM(tmp1.dirremitente)thisform.tcvlsms.Value = _screen.esTANDAR.desencriptador(ALLTRIM(tmp1.password))lccel = ''FOR i=0 TO LEN(tmp1.dirsaliente)

IF SUBSTR(tmp1.dirsaliente,i,1) = ";"SELECT Tmpmailreplace Tmpmail.celular WITH SUBSTR(ALLTRIM(lccel),2,LEN(lccel))replace Tmpmail.proveedor WITH IIF(SUBSTR(lccel,1,1)='P','PORTA','MOVISTAR')

SELECT tmpmailSKIPlccel = ''

ELSElccel = lccel + SUBSTR(tmp1.dirsaliente,i,1)

ENDIFENDFOR

SELECT tmpmailGO TOPthisform.grid1.Refresh()

IF _screen.esTANDAR.cprivilegio<>"SYSDBA"thisform.SetAll('Enabled',.f.)MESSAGEBOX("Privilegios Insuficientes",48,_screen.esTANDAR.cmensistema)

ENDIF

Page 357: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 168 -

Manmetnot.load

DODEFAULT()

CREATE CURSOR tmpmail(;nombre c(150),;proveedor c(20),;celular c(15))

Manmetnot.limpia

WITH thisform.grid1.Recordsource = "".Column1.Controlsource = "".Column2.Controlsource = "".Column3.Controlsource = ""SELECT TmpmailGO TOP.Recordsource = "Tmpmail".Column1.Controlsource = "Tmpmail.nombre".Column2.Controlsource = "Tmpmail.proveedor".Column3.Controlsource = "Tmpmail.celular"

.refreshENDWITH

Manmetnot.mail

TRYsmtp = ALLTRIM(thisform.tserv.Value)puerto = thisform.tpuerto.Valuelcfrom = ALLTRIM(thisform.tdirremi.Value)clave = ALLTRIM(thisform.tclave.Value)

LOCAL lcSchema, loConfig, loMsg, loError, lcErrlcErr = ""lcSchema = "http://schemas.microsoft.com/cdo/configuration/"loConfig = CREATEOBJECT("CDO.Configuration")WITH loConfig.FIELDS

.ITEM(lcSchema + "smtpserver") = "&smtp"

.ITEM(lcSchema + "smtpserverport") = puerto

.ITEM(lcSchema + "sendusing") = 2

.ITEM(lcSchema + "smtpauthenticate") = .T.

.ITEM(lcSchema + "smtpusessl") = .T.

.ITEM(lcSchema + "sendusername") = "&lcfrom"

.ITEM(lcSchema + "sendpassword") = "&clave"

.UPDATEENDWITH

Page 358: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 169 -

lcmail = ''SELECT tmpmailSCAN

IF LEN(tmpmail.nombre)>0IF EMPTY(lcmail)

lcmail = ALLTRIM(tmpmail.nombre) + ";"ELSE

lcmail = lcmail + ALLTRIM(tmpmail.nombre) + ";"ENDIF

ENDIFENDSCAN

lcmail = SUBSTR(lcmail,1,LEN(ALLTRIM(lcmail))-1)loMsg = CREATEOBJECT ("CDO.Message")WITH loMsg

.Configuration = loConfig

.FROM = "&lcfrom"

.TO = "&lcmail"

.Subject = "Prueba desde Sistema DBMS - FOX"

.TextBody = "Este es un mensaje de prueba desde el Sistema " + ;"DBMS - FOX, para la notificacion de alertas."

.Send()ENDWITH

CATCH TO loErrorlcErr = [Error: ] + STR(loError.ERRORNO) + CHR(13) + ;

[Linea: ] + STR(loError.LINENO) + CHR(13) + ;[Mensaje: ] + loError.MESSAGE

FINALLYRELEASE loConfig, loMsgSTORE .NULL. TO loConfig, loMsgIF EMPTY(lcErr)

MESSAGEBOX("El mail se envió con éxito", 64, _screen.esTANDAR.cmensistema)ELSE

MESSAGEBOX(lcErr, 16 , _screen.esTANDAR.cmensistema)ENDIF

ENDTRY

Manmentnot.sms

TRYsmtp = ALLTRIM(thisform.tserv.Value)puerto = thisform.tpuerto.Valuelcfrom = ALLTRIM(thisform.tdirremi.Value)clave = ALLTRIM(thisform.tclave.Value)

LOCAL lcSchema, loConfig, loMsg, loError, lcErrlcErr = ""lcSchema = "http://schemas.microsoft.com/cdo/configuration/"loConfig = CREATEOBJECT("CDO.Configuration")WITH loConfig.FIELDS

.ITEM(lcSchema + "smtpserver") = "&smtp"

.ITEM(lcSchema + "smtpserverport") = puerto

Page 359: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 170 -

.ITEM(lcSchema + "sendusing") = 2

.ITEM(lcSchema + "smtpauthenticate") = .T.

.ITEM(lcSchema + "smtpusessl") = .T.

.ITEM(lcSchema + "sendusername") = "&lcfrom"

.ITEM(lcSchema + "sendpassword") = "&clave"

.UPDATEENDWITH

lcmail = ''lccel =''SELECT tmpmailSCAN

IF LEN(tmpmail.celular)>0DO CASE

CASE ALLTRIM(tmpmail.proveedor)=='PORTA'IF LEN(tmpmail.celular) > 0

IF SUBSTR(tmpmail.celular,1,3)='090'lcdato =

ALLTRIM(SUBSTR(tmpmail.celular,2,LEN(tmpmail.celular)))lccel = lcdato +

IIF(LEN(ALLTRIM(lcdato))>0,'@portafree.com','')ELSE

lcdato =ALLTRIM(SUBSTR(tmpmail.celular,3,LEN(tmpmail.celular)))

lccel = lcdato +IIF(LEN(ALLTRIM(lcdato))>0,'@portafree.com','')

ENDIFENDIF

CASE ALLTRIM(tmpmail.proveedor)=='MOVISTAR'IF LEN(tmpmail.celular) > 0

lcdato =ALLTRIM(SUBSTR(tmpmail.celular,2,LEN(tmpmail.celular)))

lccel = lcdato +IIF(LEN(ALLTRIM(lcdato))>0,'@im.movistar.com.ec','')

ENDIFENDCASE

IF EMPTY(lcmail)lcmail = ALLTRIM(lccel) + IIF(LEN(ALLTRIM(lccel))>0,";",'')

ELSElcmail = lcmail + ALLTRIM(lccel) + IIF(LEN(ALLTRIM(lccel))>0,";",'')

ENDIFENDIF

ENDSCAN

lcmail = SUBSTR(lcmail,1,LEN(ALLTRIM(lcmail))-1)loMsg = CREATEOBJECT ("CDO.Message")WITH loMsg

.Configuration = loConfig

.FROM = "&lcfrom"

.TO = "&lcmail"

.Subject = "Prueba desde Sistema DBMS - FOX"

Page 360: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 171 -

.TextBody = "Este es un mensaje de prueba desde el Sistema " + ;"DBMS - FOX."

.Send()ENDWITH

CATCH TO loErrorlcErr = [Error: ] + STR(loError.ERRORNO) + CHR(13) + ;

[Linea: ] + STR(loError.LINENO) + CHR(13) + ;[Mensaje: ] + loError.MESSAGE

FINALLYRELEASE loConfig, loMsgSTORE .NULL. TO loConfig, loMsgIF EMPTY(lcErr)

MESSAGEBOX("El SMS se envió con éxito", 64, _screen.esTANDAR.cmensistema)ELSE

MESSAGEBOX(lcErr, 16 , _screen.esTANDAR.cmensistema)ENDIF

ENDTRY

Cmdagrega.clickSELECT TmpmailAPPEND BLANKthisform.grid1.column2.cmdproveedor.ListIndex = 1SELECT TmpmailGO BOTTOM

thisform.grid1.Refreshthisform.grid1.column1.text1.SetFocus()

cmdeliminar.click

SELECT tmpmailDELETE

SELECT tmpmailGO TOPthisform.grid1.Refresh

cmd_probar_servicio.click

SELECT tmpmaillinum = RECCOUNT()IF linum > 0

thisform.mail()thisform.sms()

ELSE

Page 361: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 172 -

MESSAGEBOX("Debe Ingresar la direccion del Correo Saliente",48,_screen.estandar.cmensistema)ENDIF

Cmdgrabar.click

lcsql = "Select * from " + _screen.esTANDAR.cusubd + ".parametros"liresult = thisform.sqlexec(lcsql,"tmp2")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

lcmail = ''lccel = ''SELECT tmpmailSCAN

IF LEN(tmpmail.nombre)>0IF EMPTY(lcmail)

lcmail = ALLTRIM(tmpmail.nombre) + ";"ELSE

lcmail = lcmail + ALLTRIM(tmpmail.nombre) + ";"ENDIF

ENDIF

IF EMPTY(lccel)lccel = SUBSTR(tmpmail.proveedor,1,1) + ALLTRIM(tmpmail.celular) + ";"

ELSE

lccel = lccel + SUBSTR(tmpmail.proveedor,1,1) + ALLTRIM(tmpmail.celular) + ";"ENDIF

ENDSCANlcclave = _screen.esTANDAR.encriptador(ALLTRIM(thisform.tclave.Value))SELECT tmp2linum = RECCOUNT()IF linum > 0

lcenvia = IIF(thisform.chkenvio.Value=1,'S','N')

lcsql = "Update " + _screen.esTANDAR.cusubd + ".parametros "lcsql = lcsql + " set "lcsql = lcsql + " dirremitente='" + ALLTRIM(thisform.tdirremi.Value) + "',"lcsql = lcsql + " dirsaliente='" + lcmail + "',"lcsql = lcsql + " smtp=TRIM(?thisform.tserv.value),"lcsql = lcsql + " password=TRIM(?lcclave),"lcsql = lcsql + " puerto=?thisform.tpuerto.value, "lcsql = lcsql + " envia=?lcenvia "lcsql = lcsql + " where tipo='E' "liresult = thisform.sqlexec(lcsql,"")IF liresult < 0

Page 362: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 173 -

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

lcsql = "Update " + _screen.esTANDAR.cusubd + ".parametros "lcsql = lcsql + " set "lcsql = lcsql + " dirsaliente='" + lccel + "',"lcsql = lcsql + " envia=?lcenvia "lcsql = lcsql + " where tipo='C' "liresult = thisform.sqlexec(lcsql,"")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

ELSElcenvia = IIF(thisform.chkenvio.Value=1,'S','N')lcsql = "insert into " + _screen.esTANDAR.cusubd + ".parametros"lcsql = lcsql + "(dirremitente,dirsaliente,smtp,puerto,password,tipo,envia) "lcsql = lcsql + " values("lcsql = lcsql + "'" + ALLTRIM(thisform.tdirremi.Value) + "',"lcsql = lcsql + "'" + lcmail +

"',TRIM(?thisform.tserv.value),?thisform.tpuerto.value,TRIM(?lcclave),'E',?lcenvia)"liresult = thisform.sqlexec(lcsql,"")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIFENDIF

MESSAGEBOX("Cambio realizado con exito",64,_screen.esTANDAR.cmensistema)

1.12.2 Reporte de Eventos

Infalerta.init

thisform.pgevento.pgtran.tdesde.Value = DATE()thisform.pgevento.pgtran.thasta.Value = DATE()

thisform.limpia()

Page 363: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 174 -

thisform.pgevento.pgtran.cmdbuscar.Click()

infalerta.load

DODEFAULT()

SELECT 0CREATE CURSOR tmp1(;fecha datetime,;maquina c(30),;modulo c(254),;instruccion c(254))

SELECT 0CREATE CURSOR tmp2(;indice n(10),;metrica c(200),;operador c(20),;instruccion c(30),;ult_evaluacion c(20),;fec_ocurrencia c(20),;tipo c(254),;notificado c(1),;fec_notificado c(20))INDEX on tmp2.indice TAG llave

Infalerta.carga_metricas

lcusubd = _screen.esTANDAR.cusubdlcsql = " Select indice,metrica,operador,tipo,to_char(ult_ejec,'dd/mm/yyyy hh:mi:ss') ult_ejec "lcsql = lcsql + " from " + lcusubd + ".metrica where ejecuta='S' "lcsql = lcsql + " order by indice "liresult = thisform.sqlexec(lcsql,"tmpmet")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmpmetSCAN

SELECT tmp2APPEND BLANKreplace tmp2.indice WITH tmpmet.indice,;

tmp2.metrica WITH tmpmet.metrica,;tmp2.operador WITH tmpmet.operador,;tmp2.instruccion WITH IIF(tmpmet.tipo='S','Query','Procedure'),;

Page 364: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 175 -

tmp2.ult_evaluacionWITH tmpmet.ult_ejecENDSCAN

lcsql = "select indice_met,tipo_umbral,NVL(comentario,' ') comentario,NVL(operador,' ') operador,NVL(limitante,' ')limitante,to_char(fecha,'dd/mm/yyyy hh:mi:ss') fecha1, "lcsql = lcsql + " notificado,NVL(to_char(fec_notifica,'dd/mm/yyyy hh:mi:ss'),' ') fec_notificado "lcsql = lcsql + " from " + lcusubdlcsql = lcsql + ".detalle_metrica order by indice_met"liresult = thisform.sqlexec(lcsql,"tmpmet")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmpmetSCAN

SELECT tmp2SEEK tmpmet.indice_metIF FOUND()

SELECT tmp2replace tmp2.fec_ocurrencia WITH tmpmet.fecha1,;

tmp2.tipo WITHIIF(tmpmet.tipo_umbral='C',"Critico - ","Advertencia - ") + ALLTRIM(tmpmet.comentario) + ' ' +ALLTRIM(tmpmet.operador) + ' ' + ALLTRIM(tmpmet.limitante),;

tmp2.notificado WITHIIF(tmpmet.notificado='S','S','N'),;

tmp2.fec_notificado WITH tmpmet.fec_notificadoENDIF

ENDSCAN

SELECT tmp2GO TOPthisform.pgevento.pgmetricas.grid1.Refresh()

infalerta.limpia

WITH thisform.pgevento.pgtran.grid1.Recordsource = "".Column1.Controlsource = "".Column2.Controlsource = "".Column3.Controlsource = "".Column4.Controlsource = ""SELECT Tmp1ZAP.Recordsource = "Tmp1"

Page 365: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 176 -

.Column1.Controlsource = "Tmp1.fecha"

.Column2.Controlsource = "Tmp1.maquina"

.Column3.Controlsource = "Tmp1.modulo"

.Column4.Controlsource = "Tmp1.instruccion".refresh

ENDWITH

WITH thisform.pgevento.pgmetricas.grid1.Recordsource = "".Column1.Controlsource = "".Column2.Controlsource = "".Column3.Controlsource = "".Column4.Controlsource = "".Column5.Controlsource = "".Column6.Controlsource = "".Column7.Controlsource = "".Column8.Controlsource = ""SELECT Tmp2ZAP.Recordsource = "Tmp2".Column1.Controlsource = "Tmp2.metrica".Column2.Controlsource = "Tmp2.operador".Column3.Controlsource = "Tmp2.instruccion".Column4.Controlsource = "Tmp2.ult_evaluacion".Column5.Controlsource = "tmp2.fec_ocurrencia".Column6.Controlsource = "tmp2.tipo".Column7.Controlsource = "tmp2.notificado".Column8.Controlsource = "tmp2.fec_notificado"

.refreshENDWITH

Infalerta.reporte

LPARAMETERS p_tiporeporte

*p_tiporeporte = 1 Pantalla*p_tiporeporte = 2 Impresora*p_tiporeporte = 3 Excel

WITH thisform.pgevento.pgtran.tdesde.setfocusc_rango_fecha = 'Desde: ' + DTOC(.tdesde.value)+ ' Hasta: '+ dtoc(.thasta.value)c_rango_usuario = 'De: ' + ALLTRIM(.tuser.value)

SELECT tmp1COUNT TO nregIF nreg >0

SELECT tmp1GO TOPDO case

CASE p_tiporeporte = 1

Page 366: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 177 -

REPORT FORM _screen.estandar.crutafte + 'infalerta\inflogtran'NOCONSOLE preview

CASE p_tiporeporte = 2WAIT WINDOW 'Exportando los datos a Microsft Excel...espere

por favor' NOWAIT noclearthis.exportar('tmp1','Audt','Reporte de Transacciones del

Sistema',c_rango_fecha,c_rango_usuario)WAIT clear

ENDCASE

ENDIFENDWITH

Cmdbuscar.clickthisform.limpia()

DO CASECASE thisform.pgevento.pgtran.tdesde.Value > thisform.pgevento.pgtran.thasta.Value

men = "No puede ingresar una fecha de inicio mayor a la del fin"MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)thisform.pgevento.pgtran.tdesde.SetFocus()RETURN

ENDCASE

lcfechad = thisform.pgevento.pgtran.tdesde.Valuelcfechah = thisform.pgevento.pgtran.thasta.Valuelcuser = thisform.pgevento.pgtran.tuser.ValueIF LEN(ALLTRIM(thisform.pgevento.pgtran.tuser.Value))>0

lccriterio = " and UPPER(TRIM(operador))=UPPER('" + ALLTRIM(lcuser) + "')"ELSE

lcCriterio = ' 'ENDIFlcbase = _screen.esTANDAR.cdatabaselcsql = "Select * from " + _screen.esTANDAR.cusubd + ".logdbms "lcsql = lcsql + " Where to_char(fecha,'dd/mm/yyyy')>='" + DTOC(lcfechad) + "' and to_char(fecha,'dd/mm/yyyy')<='" +DTOC(lcfechah) + "' "lcsql = lcsql + " and tipo='1' and UPPER(sid)=UPPER('&lcbase')" + lccriteriolcsql = lcsql + " order by fecha "liresult = thisform.sqlexec(lcsql,"tmp")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,15,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmplinum = RECCOUNT()IF linum > 0

SELECT tmpSCAN

Page 367: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 178 -

SELECT tmp1APPEND BLANKREPLACE tmp1.fecha WITH tmp.fecha,;

tmp1.maquina WITH tmp.maquina,;tmp1.modulo WITH tmp.modulo,;tmp1.instruccion WITH tmp.sentencia

ENDSCANELSE

men = "No existe informacion con ese criterio"MESSAGEBOX(men,64,_screen.esTANDAR.cmensistema)

ENDIF

SELECT tmp1GO TOPthisform.pgevento.pgtran.grid1.Refresh()

thisform.carga_metricas()

histmetricas.init

LPARAMETERS imetrica,cmetricalimetrica = imetricalcmetrica = cmetricalcusubd = _screen.esTANDAR.cusubd

thisform.limpia()thisform.lbltitulo.Caption = thisform.lbltitulo.Caption + lcmetricathisform.Caption = thisform.lbltitulo.Caption

lcsql = "Select to_char(fecha,'dd/mm/yyyy hh:mi:ss') fecha,tipo_umbral,NVL(operador,' ') operador, "lcsql = lcsql + " NVL(limitante,' ') limitante,NVL(valor,0) valor,NVL(comentario,' ') comentario,NVL(notificado,'')notificado, "lcsql = lcsql + " NVL(to_char(fec_notifica,'dd/mm/yyyy hh:mi:ss'),' ') fec_notifica"lcsql = lcsql + " from " + lcusubd + ".detalle_metrica "lcsql = lcsql + " where indice_met=?limetrica "lcsql = lcsql + " order by fecha "liresult = thisform.sqlexec(lcsql,"tmphist")IF liresult< 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmphistSCAN

SELECT tmphAPPEND BLANKreplace tmph.fecha WITH tmphist.fecha,;

Page 368: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 179 -

tmph.status WITHIIF(tmphist.tipo_umbral='C','Critico','Advertencia'),;

tmph.operador WITH tmphist.operador,;tmph.limitante WITH tmphist.limitante,;tmph.valor WITH tmphist.valor,;tmph.comentario WITH tmphist.comentario,;tmph.notificado WITH IIF(tmphist.notificado='S','S','N'),;tmph.fec_notificado WITH tmphist.fec_notifica

ENDSCAN

SELECT tmphGO TOPthisform.grid1.Refresh()

histmetricas.load

DODEFAULT()

SELECT 0CREATE CURSOR tmph(;fecha c(20),;status c(15),;operador c(15),;limitante c(15),;valor n(10),;comentario c(254),;notificado c(1),;fec_notificado c(20))

histmetricas.limpia

WITH thisform.grid1.Recordsource = "".Column1.Controlsource = "".Column2.Controlsource = "".Column3.Controlsource = "".Column4.Controlsource = "".Column5.Controlsource = "".Column6.Controlsource = "".Column7.Controlsource = "".Column8.Controlsource = ""SELECT TmphZAP.Recordsource = "Tmph".Column1.Controlsource = "Tmph.fecha".Column2.Controlsource = "Tmph.status".Column3.Controlsource = "Tmph.operador".Column4.Controlsource = "Tmph.limitante".Column5.Controlsource = "tmph.valor".Column6.Controlsource = "tmph.comentario"

Page 369: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 180 -

.Column7.Controlsource = "tmph.notificado"

.Column8.Controlsource = "tmph.fec_notificado".refresh

ENDWITH

Cmdexcel.click

WITH thisformc_rango_usuario = thisform.Caption

SELECT tmphCOUNT TO nregIF nreg >0

SELECT tmphGO TOPWAIT WINDOW 'Exportando los datos a Microsft Excel...espere por favor' NOWAIT

noclearthisform.exportar('tmph','Audt','Metricas',' ',c_rango_usuario)

WAIT clearENDIF

ENDWITH

1.12.3 Informe de Errores

Inferror.init

thisform.pgevento.pgtran.tdesde.Value = DATE()thisform.pgevento.pgtran.thasta.Value = DATE()

thisform.limpia()thisform.pgevento.pgtran.cmdbuscar.Click()thisform.pgevento.pgmetricas.Caption = "alert_" + ALLTRIM(_screen.esTANDAR.cdatabase) + ".log"

thisform.lee_archivo()

inferror.load

DODEFAULT()

Page 370: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 181 -

SELECT 0CREATE CURSOR tmp1(;fecha datetime,;maquina c(30),;modulo c(254),;instruccion c(254))

SELECT 0CREATE CURSOR tmp2(;indice n(10),;metrica c(200),;operador c(20),;instruccion c(30),;ult_evaluacion c(20),;fec_ocurrencia c(20),;tipo c(254),;notificado c(1),;fec_notificado c(20))INDEX on tmp2.indice TAG llave

Inferror.carga_metricas

lcusubd = _screen.esTANDAR.cusubdlcsql = " Select indice,metrica,operador,tipo,to_char(ult_ejec,'dd/mm/yyyy hh:mm:ss') ult_ejec "lcsql = lcsql + " from " + lcusubd + ".metrica where ejecuta='S' "lcsql = lcsql + " order by indice "liresult = thisform.sqlexec(lcsql,"tmpmet")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmpmetSCAN

SELECT tmp2APPEND BLANKreplace tmp2.indice WITH tmpmet.indice,;

tmp2.metrica WITH tmpmet.metrica,;tmp2.operador WITH tmpmet.operador,;tmp2.instruccion WITH IIF(tmpmet.tipo='S','Query','Procedure'),;tmp2.ult_evaluacionWITH tmpmet.ult_ejec

ENDSCAN

lcsql = "select indice_met,tipo_umbral,NVL(comentario,' ') comentario,NVL(operador,' ') operador,NVL(limitante,' ')limitante,to_char(fecha,'dd/mm/yyyy hh:mm:ss') fecha1, "lcsql = lcsql + " notificado,NVL(to_char(fec_notifica,'dd/mm/yyyy hh:mm:ss'),' ') fec_notificado "lcsql = lcsql + " from " + lcusubdlcsql = lcsql + ".detalle_metrica order by indice_met"

Page 371: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 182 -

liresult = thisform.sqlexec(lcsql,"tmpmet")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIF

SELECT tmpmetSCAN

SELECT tmp2SEEK tmpmet.indice_metIF FOUND()

SELECT tmp2replace tmp2.fec_ocurrencia WITH tmpmet.fecha1,;

tmp2.tipo WITHIIF(tmpmet.tipo_umbral='C',"Critico - ","Advertencia - ") + ALLTRIM(tmpmet.comentario) + ' ' +ALLTRIM(tmpmet.operador) + ' ' + ALLTRIM(tmpmet.limitante),;

tmp2.notificado WITHIIF(tmpmet.notificado='S','S','N'),;

tmp2.fec_notificado WITH tmpmet.fec_notificadoENDIF

ENDSCAN

SELECT tmp2GO TOPthisform.pgevento.pgmetricas.grid1.Refresh()

inferior.lee_archivo

lcsql = "select value from v$parameter where rtrim(name)='background_dump_dest'"liresult = thisform.sqlexec(lcsql,"tmpar")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)RETURN

ENDIFSELECT tmparlcnamearch = ALLTRIM(tmpar.value) + '\alert_' + _screen.esTANDAR.cdatabase + '.log'lhFile=FOPEN("&lcnamearch",0)nSize = FSEEK(lhFile, 0, 2)WAIT WINDOW "Cargando Informacion del Arhivo Log!" NOWAIT

= FSEEK(lhFile, 0, 0) && Move pointer to BOFthisform.pgevento.pgmetricas.olealert.text = FREAD(lhFile, nSize)

WAIT CLEARFCLOSE(lhFile)

Page 372: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 183 -

Inferror.limpia

WITH thisform.pgevento.pgtran.grid1.Recordsource = "".Column1.Controlsource = "".Column2.Controlsource = "".Column3.Controlsource = "".Column4.Controlsource = ""SELECT Tmp1ZAP.Recordsource = "Tmp1".Column1.Controlsource = "Tmp1.fecha".Column2.Controlsource = "Tmp1.maquina".Column3.Controlsource = "Tmp1.modulo".Column4.Controlsource = "Tmp1.instruccion"

.refreshENDWITH

Inferior.reporte

LPARAMETERS p_tiporeporte

*p_tiporeporte = 1 Pantalla*p_tiporeporte = 2 Impresora*p_tiporeporte = 3 Excel

WITH thisform.pgevento.pgtran.tdesde.setfocusc_rango_fecha = 'Desde: ' + DTOC(.tdesde.value)+ ' Hasta: '+ dtoc(.thasta.value)c_rango_usuario = 'De: ' + ALLTRIM(.tuser.value)

SELECT tmp1COUNT TO nregIF nreg >0

SELECT tmp1GO TOPDO case

CASE p_tiporeporte = 1REPORT FORM _screen.estandar.crutafte + 'inferror\inferror'

NOCONSOLE previewCASE p_tiporeporte = 2

WAIT WINDOW 'Exportando los datos a Microsft Excel...esperepor favor' NOWAIT noclear

this.exportar('tmp1','Audt','Reporte de Transacciones delSistema',c_rango_fecha,c_rango_usuario)

WAIT clearENDCASE

Page 373: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 184 -

ENDIFENDWITH

Cmdbuscar.click

thisform.limpia()

DO CASECASE thisform.pgevento.pgtran.tdesde.Value > thisform.pgevento.pgtran.thasta.Value

men = "No puede ingresar una fecha de inicio mayor a la del fin"MESSAGEBOX(men,16,_screen.esTANDAR.cmensistema)thisform.pgevento.pgtran.tdesde.SetFocus()RETURN

ENDCASElcfechad = thisform.pgevento.pgtran.tdesde.Valuelcfechah = thisform.pgevento.pgtran.thasta.Valuelcuser = thisform.pgevento.pgtran.tuser.ValueIF LEN(ALLTRIM(thisform.pgevento.pgtran.tuser.Value))>0

lccriterio = " and UPPER(TRIM(operador))=UPPER('" + ALLTRIM(lcuser) + "')"ELSE

lcCriterio = ' 'ENDIFlcbase = _screen.esTANDAR.cdatabaselcsql = "Select * from " + _screen.esTANDAR.cusubd + ".logdbms "lcsql = lcsql + " Where to_char(fecha,'dd/mm/yyyy')>='" + DTOC(lcfechad) + "' and to_char(fecha,'dd/mm/yyyy')<='" +DTOC(lcfechah) + "' "lcsql = lcsql + " and tipo='2' and UPPER(sid)=UPPER('&lcbase')" + lccriteriolcsql = lcsql + " order by fecha "liresult = thisform.sqlexec(lcsql,"tmp")IF liresult < 0

men = MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,15,_screen.esTANDAR.cmensistema)RETURN

ENDIFSELECT tmplinum = RECCOUNT()IF linum > 0

SELECT tmpSCAN

SELECT tmp1APPEND BLANKREPLACE tmp1.fecha WITH tmp.fecha,;

tmp1.maquina WITH tmp.maquina,;tmp1.modulo WITH tmp.modulo,;tmp1.instruccion WITH IIF(ISNULL(tmp.sentencia),'

',ALLTRIM(tmp.sentencia))ENDSCAN

Page 374: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 185 -

ELSEmen = "No existe informacion con ese criterio"MESSAGEBOX(men,64,_screen.esTANDAR.cmensistema)

ENDIFSELECT tmp1GO TOPthisform.pgevento.pgtran.grid1.Refresh()

Cmdguardar.click

IF LEN(ALLTRIM(thisform.pgevento.pgmetricas.truta.Value))> 0 ANDLEN(ALLTRIM(thisform.pgevento.pgmetricas.tnombre.Value))>0

WAIT WINDOW "Guardando la Información..... espere por favor" NOWAITlcarc = ALLTRIM(thisform.pgevento.pgmetricas.truta.Value) +

ALLTRIM(thisform.pgevento.pgmetricas.tnombre.Value)IF FILE("&lcarc")

DELETE FILE ("&lcarc")ENDIF

arch = fcreate("&lcarc")FPUTS(arch,thisform.pgevento.pgmetricas.olealert.text)FCLOSE(arch)

WAIT CLEARMESSAGEBOX("Generación Correcta",64,_screen.esTANDAR.cmensistema)this.Enabled = .F.thisform.pgevento.pgmetricas.truta.Value = ''thisform.pgevento.pgmetricas.tnombre.Value = ''

ELSEMESSAGEBOX("Debe ingresar los datos de ruta y

nombre",16,_screen.esTANDAR.cmensistema)ENDIF

1.12.4 Políticas violadas

Manpoliticashistorial.init

IF thisform.obtener_datos() < 1 thenRETURN

ENDIFthisform.llenar_datos()

Page 375: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 186 -

Manpoliticashistorial.llenar_datos

SELECT c_polivioladasWITH this.grid_polivioladas as Grid

.ColumnCount=6

.RecordSource='c_polivioladas'WITH .Columns(1) as Column

.Header1.Caption="ID"

.ControlSource="c_polivioladas.NUM"

.Width=40

.InputMask="99"

.Alignment= 2

.ReadOnly= .T.ENDWITHWITH .Columns(2) as Column

.header1.Caption="Politica"

.ControlSource='c_polivioladas.nombre_politica'

.Width=340

.ReadOnly= .T.ENDWITHWITH .Columns(3) as Column

.header1.caption="Estado"

.ControlSource='c_polivioladas.LESTADO'

.Width=50

.Alignment= 2

.Sparse= .F.

.ReadOnly= .T.ENDWITHWITH .Columns(4) as Column

.header1.caption="Fecha"

.ControlSource='c_polivioladas.FECHA'

.Width=130

.ReadOnly= .T.ENDWITHWITH .Columns(5) as Column

.header1.caption="Comentario"

.ControlSource='c_polivioladas.COMENTARIO'

.Width=350

.ReadOnly= .T.ENDWITHWITH .Columns(6) as Column

.header1.caption="Fecha Modificación"

.TEXT1.NULLDISPLAY=" "

.ControlSource='c_polivioladas.FECHA_MODIFICA'

.Width=138

.ReadOnly=.T.

.Sparse= .F.ENDWITH

ENDWITH

Page 376: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 187 -

Manpoliticashistorial.obtener_datos

**CONSULTA DE POLITICAS VIOLADAS

lcsql = "SELECT A.ID_POLITICA NUM, B.NOMBRE_POLITICA NOMBRE_POLITICA, A.ESTADO ESTADO, "lcsql = lcsql + " A.FECHA FECHA, A.COMENTARIO COMENTARIO ,A.FECHA_MODIFICA FECHA_MODIFICA "lcsql = lcsql + " FROM " + _screen.esTANDAR.cusubd + ".poli_violadas A, " + _screen.esTANDAR.cusubd +".politicas B WHERE A.ID_POLITICA=B.NUM "RESULT=THISFORM.SQLexec(lcSql,"c_polivioladas")IF RESULT < 0

men = "Error al buscar politicas violadas:" + MESSAGE()thisform.log_error(lcsql)MESSAGEBOX(men,16,_screen.ESTANDAR.cmensistema)RETURN

ENDIF

SELECT C.*, IIF(ESTADO="A",.T.,.F.) LESTADO FROM c_polivioladas C INTO CURSOR c_polivioladasREADWRITE

RETURN 1

1.13 Módulo Terminal

1.13.1 Consola Sqlplus

init

IF _screen.esTANDAR.cprivilegio<>"SYSDBA"thisform.SetAll('Enabled',.f.)MESSAGEBOX("Privilegios Insuficientes",48,_screen.esTANDAR.cmensistema)

ENDIF

Crear_batlcsql = " "

cprivilegio = " "IF UPPER(ALLTRIM(_screen.esTANDAR.cprivilegio))<>'NORMAL'

cprivilegio = " as " + _screen.esTANDAR.cprivilegioENDIF

lcarchivo = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) +ALLTRIM(_screen.esTANDAR.cdatabase)+ "CMD.txt"

Page 377: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 188 -

lcarchivobat = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) + DTOC(DATE(),1) +ALLTRIM(_screen.esTANDAR.cdatabase) + ".bat"

IF FILE("&lcarchivobat")DELETE FILE ("&lcarchivobat")

ENDIF

IF FILE("&lcarchivo")DELETE FILE ("&lcarchivo")

ENDIF

lcsql1 = ""arch = fcreate("&lcarchivobat")FPUTS(arch,"@echo off")FPUTS(arch,"Set ORACLE_SID=" + ALLTRIM(_screen.esTANDAR.cdatabase))FPUTS(arch,"echo set echo on > %0.tmp")FPUTS(arch,"echo connect " +

ALLTRIM(_screen.esTANDAR.cusuario)+"/"+ALLTRIM(_screen.esTANDAR.cclave) + cprivilegio + "; >> %0.tmp")FPUTS(arch,"echo spool " + lcarchivo + "; >> %0.tmp")

lcsql = "echo "FOR I=0 TO LEN(thisform.editsql.Value)

IF SUBSTR(ALLTRIM(thisform.editsql.Value),i,1)=';'lcsql = lcsql + "; >> %0.tmp"FPUTS(arch,lcsql)IF i <> LEN(thisform.editsql.Value)

lcsql = "echo "ENDIF

ELSElc = SUBSTR(ALLTRIM(thisform.editsql.Value),i,1)IF ASC(lc) <> 13 and ASC(lc)<>10

lcsql = lcsql + SUBSTR(ALLTRIM(thisform.editsql.Value),i,1)ENDIF

ENDIFENDFOR

FPUTS(arch,"echo SPOOL OFF; >>%0.tmp")FPUTS(arch,"echo exit; >>%0.tmp")FPUTS(arch,"sqlplus /nolog @%0.tmp")FPUTS(arch,"del %0.tmp")FCLOSE(arch)lc = "RUN " + lcarchivobat

WAIT WINDOW "Procesando Informacion.... espere por favor" NOWAITRUN &lcarchivobat

WAIT CLEAR

Mostrar_datos

lcarchivo = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) +ALLTRIM(_screen.esTANDAR.cdatabase)+ "CMD.txt"

lcdato = lcarchivolhFile=FOPEN(lcdato)

Page 378: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 189 -

thisform.editsql.Value = STR(lhFile)IF lhFile>0

thisform.editsql.Value = ""DO WHILE NOT FEOF(lhFile)

lsBuffer=FGETS(lhFile)thisform.editsql.Value = thisform.editsql.Value + CHR(13) + ALLTRIM(lsBuffer)

ENDDOthisform.editsql.ReadOnly = .T.thisform.cmdejecuta.Enabled = .F.

ENDIFFCLOSE(lhFile)

Valida_sql

lcsql = ''FOR I=0 TO LEN(thisform.editsql.Value)

IF SUBSTR(ALLTRIM(thisform.editsql.Value),i,1)=';'IF LIKE('*SHUTDOWN*',UPPER(lcsql)) OR LIKE('*MOUNT*',UPPER(lcsql)) OR

LIKE('*NOMOUNT*',UPPER(lcsql))MESSAGEBOX("Operacion Invalida",48,_screen.estandar.cmensistema)RETURN .t.

ENDIFlcsql = ""

ELSElc = SUBSTR(ALLTRIM(thisform.editsql.Value),i,1)IF ASC(lc) <> 13 and ASC(lc)<>10

lcsql = lcsql + SUBSTR(ALLTRIM(thisform.editsql.Value),i,1)ENDIF

ENDIFENDFOR

RETURN .f.

Cmdejecuta.click

IF LEN(ALLTRIM(thisform.editsql.Value)) > 0IF !thisform.valida_sql()

thisform.crear_bat()thisform.cmdmostrar.Enabled = .T.thisform.cmdejecuta.Enabled = .F.thisform.cmdmostrar.Click()

ENDIFELSE

men = "Debe ingresar las instrucciones"MESSAGEBOX(men,64,_screen.esTANDAR.cmensistema)

ENDIF

Page 379: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 190 -

1.13.2 Schema Rman

initthisform.crear_funcion()thisform.crear_bat()thisform.carga_informacion()

carga_informacion

lcnamearch = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) + ALLTRIM(_screen.esTANDAR.cdatabase)+"Rschema.txt"

lhFile=FOPEN("&lcnamearch",0)nSize = FSEEK(lhFile, 0, 2)WAIT WINDOW "Cargando Informacion del Schema!" NOWAIT

= FSEEK(lhFile, 0, 0) && Move pointer to BOFthisform.olealert.text = FREAD(lhFile, nSize)

WAIT CLEARFCLOSE(lhFile)

Crear_bat

lcarc = SYS(5) + '\DBMS-FOX\RMAN\Rschema.txt'lcarchivo = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) +

ALLTRIM(_screen.esTANDAR.cdatabase)+ "Rschema.txt"lcarchivobat = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) +

ALLTRIM(_screen.esTANDAR.cdatabase) + "Rschema.bat"

IF FILE("&lcarchivobat")DELETE FILE ("&lcarchivobat")

ENDIF

IF FILE("&lcarchivo")DELETE FILE ("&lcarchivo")

ENDIF

lcsql1 = ""arch = fcreate("&lcarchivobat")FPUTS(arch,"@echo off")FPUTS(arch,"Set ORACLE_SID=" + ALLTRIM(_screen.esTANDAR.cdatabase))FPUTS(arch,"Rman Target / cmdfile='"+lcarc+ "' log='"+lcarchivo+"'")FCLOSE(arch)

WAIT WINDOW "Consultando Informacion.... espere por favor" NOWAITRUN &lcarchivobat

WAIT CLEAR

Page 380: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 191 -

Crear_funcion

lcarc = SYS(5) + '\DBMS-FOX\RMAN\Rschema.txt'IF FILE("&lcarc")

DELETE FILE ("&lcarc")ENDIF

arch = fcreate("&lcarc")IF arch > 0

FPUTS(arch,"Report Schema;")FFLUSH(arch)

ENDIF

FCLOSE(arch)

1.13.3 Listado de Backup

Init

thisform.crear_funcion()thisform.crear_bat()thisform.cargar_informacion()

Cargar información

**List Backuplcnamearch = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) + ALLTRIM(_screen.esTANDAR.cdatabase)+"RListB.txt"

lhFile=FOPEN("&lcnamearch",0)nSize = FSEEK(lhFile, 0, 2)WAIT WINDOW "Cargando Informacion del Schema!" NOWAIT

= FSEEK(lhFile, 0, 0) && Move pointer to BOFthisform.pg.list.olealert.text = FREAD(lhFile, nSize)

WAIT CLEARFCLOSE(lhFile)

**Report Need Backuplcnamearch = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) + ALLTRIM(_screen.esTANDAR.cdatabase)+"RNeedB.txt"

lhFile=FOPEN("&lcnamearch",0)nSize = FSEEK(lhFile, 0, 2)WAIT WINDOW "Cargando Informacion del Schema!" NOWAIT

= FSEEK(lhFile, 0, 0) && Move pointer to BOFthisform.pg.rpt.olealert.text = FREAD(lhFile, nSize)

WAIT CLEARFCLOSE(lhFile)

Page 381: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 192 -

Crear_bat

**Listado de Backuplcarc = SYS(5) + '\DBMS-FOX\RMAN\RListB.txt'lcarchivo = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) +

ALLTRIM(_screen.esTANDAR.cdatabase)+ "RListB.txt"lcarchivobat = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) +

ALLTRIM(_screen.esTANDAR.cdatabase) + "RListB.bat"

IF FILE("&lcarchivobat")DELETE FILE ("&lcarchivobat")

ENDIF

IF FILE("&lcarchivo")DELETE FILE ("&lcarchivo")

ENDIF

lcsql1 = ""arch = fcreate("&lcarchivobat")FPUTS(arch,"@echo off")FPUTS(arch,"Set ORACLE_SID=" + ALLTRIM(_screen.esTANDAR.cdatabase))FPUTS(arch,"Rman Target / cmdfile='"+lcarc+ "' log='"+lcarchivo+"'")FCLOSE(arch)

WAIT WINDOW "Consultando Informacion del Listado del Backup.... espere por favor" NOWAITRUN &lcarchivobat

WAIT CLEAR

**Report Need Backuplcarc = SYS(5) + '\DBMS-FOX\RMAN\RNeedB.txt'lcarchivo = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) +

ALLTRIM(_screen.esTANDAR.cdatabase)+ "RNeedB.txt"lcarchivobat = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) +

ALLTRIM(_screen.esTANDAR.cdatabase) + "RNeedB.bat"

IF FILE("&lcarchivobat")DELETE FILE ("&lcarchivobat")

ENDIF

IF FILE("&lcarchivo")DELETE FILE ("&lcarchivo")

ENDIF

lcsql1 = ""arch = fcreate("&lcarchivobat")FPUTS(arch,"@echo off")FPUTS(arch,"Set ORACLE_SID=" + ALLTRIM(_screen.esTANDAR.cdatabase))FPUTS(arch,"Rman Target / cmdfile='"+lcarc+ "' log='"+lcarchivo+"'")FCLOSE(arch)

WAIT WINDOW "Consultando Informacion de Report Need Backup.... espere por favor" NOWAITRUN &lcarchivobat

Page 382: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 193 -

WAIT CLEAR

Crear_funcion

** Listado de los Backuplcarc = SYS(5) + '\DBMS-FOX\RMAN\RListB.txt'IF FILE("&lcarc")

DELETE FILE ("&lcarc")ENDIF

arch = fcreate("&lcarc")IF arch > 0

FPUTS(arch,"List Backup of Database;")FFLUSH(arch)

ENDIF

FCLOSE(arch)

** Report Need BAckuplcarc = SYS(5) + '\DBMS-FOX\RMAN\RNeedB.txt'IF FILE("&lcarc")

DELETE FILE ("&lcarc")ENDIF

arch = fcreate("&lcarc")IF arch > 0

FPUTS(arch,"Report Need Backup;")FFLUSH(arch)

ENDIF

FCLOSE(arch)

1.13.4 Rman Backup

Cargar_informacion

lcnamearch = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) + ALLTRIM(_screen.esTANDAR.cdatabase)+"RBackup.txt"

lhFile=FOPEN("&lcnamearch",0)nSize = FSEEK(lhFile, 0, 2)WAIT WINDOW "Cargando Informacion del Schema!" NOWAIT

= FSEEK(lhFile, 0, 0) && Move pointer to BOF

Page 383: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 194 -

thisform.olealert.text = FREAD(lhFile, nSize)WAIT CLEARFCLOSE(lhFile)

MESSAGEBOX("Proceso exitoso...",64,_screen.esTANDAR.cmensistema)

Crear_bat

lcarc = SYS(5) + '\DBMS-FOX\RMAN\RBackup.txt'lcarchivo = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) +

ALLTRIM(_screen.esTANDAR.cdatabase)+ "RBackup.txt"lcarchivobat = SYS(5) + ALLTRIM(_screen.esTANDAR.crutatxt) +

ALLTRIM(_screen.esTANDAR.cdatabase) + "RBackup.bat"

IF FILE("&lcarchivobat")DELETE FILE ("&lcarchivobat")

ENDIF

IF FILE("&lcarchivo")DELETE FILE ("&lcarchivo")

ENDIFlcsql1 = ""arch = fcreate("&lcarchivobat")FPUTS(arch,"@echo off")FPUTS(arch,"Set ORACLE_SID=" + ALLTRIM(_screen.esTANDAR.cdatabase))FPUTS(arch,"Rman Target / cmdfile='"+lcarc+ "' log='"+lcarchivo+"'")FCLOSE(arch)

WAIT WINDOW "Procesando.... espere por favor" NOWAITRUN &lcarchivobat

WAIT CLEARCrear_funcion

lcarc = SYS(5) + '\DBMS-FOX\RMAN\RBackup.txt'IF FILE("&lcarc")

DELETE FILE ("&lcarc")ENDIF

arch = fcreate("&lcarc")IF arch > 0

FPUTS(arch,"Backup Format '" + thisform.truta.Value + "' Database filesperset 3;")FFLUSH(arch)

ENDIF

FCLOSE(arch)

Cmdguardar.click()

Page 384: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 195 -

IF LEN(ALLTRIM(thisform.truta2.Value))> 0 AND LEN(ALLTRIM(thisform.tnombre.Value))>0WAIT WINDOW "Guardando la Información..... espere por favor" NOWAIT

lcarc = ALLTRIM(thisform.truta2.Value) + ALLTRIM(thisform.tnombre.Value)IF FILE("&lcarc")

DELETE FILE ("&lcarc")ENDIF

arch = fcreate("&lcarc")FPUTS(arch,thisform.olealert.text)FCLOSE(arch)

WAIT CLEARMESSAGEBOX("Generación Correcta",64,_screen.esTANDAR.cmensistema)this.Enabled = .F.thisform.truta2.Value = ''thisform.tnombre.Value = ''

ELSEMESSAGEBOX("Debe ingresar los datos de ruta y

nombre",16,_screen.esTANDAR.cmensistema)ENDIF

Page 385: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

CAPITULO 2

MANUAL DE USUARIO

2.1 Introducción

Un administrador de Base de Datos, siempre busca un aplicativo el cual le

proporcione todas las funciones necesarias para llevar un buen control en la

administración de la base datos, que sea amigable, fácil de manejar y sobre

todo dinámico en el acceso a diferentes pantallas para poder visualizar

diferentes tipos de información al mismo tiempo, esto va a ayudar mucho al

administrador a llevar un control de todos los módulos.

Page 386: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 161 -

2.2 Especificaciones del sistema DBMS-FOX

2.2.1 Pantalla Principal

La siguiente interfaz contendrá el diseño de la página principal del

aplicativo en la cual consta de 3 regiones como son:

Barra de Titulo (1)

Explorador de Módulos (2)

Área de Presentación (3)

Barra de Titulo.- Es donde se muestra el titulo de nuestro sistema,

además de esto a lado del mismo, se muestra el nombre de la Base

de datos a la cual estamos conectados.

Explorador de Módulos.- En esta sección se muestra a nivel de

explorador, todas las opciones (módulos) del sistema a las cuales el

DBA tiene acceso para poder administrar la base de Datos. Cada una

de estas opciones contiene subdivisiones en las cuales se especifica

las diferentes aplicaciones de cada uno de ellos.

Área de Presentación.- En esta sección se muestra todas las

pantallas, a las cuales accedemos a través del explorador de módulos.

Aquí podremos presentar desde una hasta muchas pantallas al mismo

tiempo, ya que esta área tiene la característica de ser una interfaz

Page 387: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 162 -

multiventanas, la cual va a facilitar a la administración del DBA en la

observación de diferente tipo de información

FIGURA 2.1 – Pantalla Principal

Page 388: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 163 -

La siguientes interfaces contendrá el diseño de acceso a la base de

datos así como también el diseño de los diferentes módulos que

forman parte del sistema.

2.2.2 Acceso al Sistema

El Administrador accederá al Sistema a través de una pequeña

pantalla en la cual tendrá que especificar los siguientes campos:

Servidor : IP del servidor

Usuario: Nombre del Usuario

Clave: Clave del usuario

SID: Nombre de la Base de Datos

Conectar como: Privilegio de Conexión

El sistema validará el ingreso de los datos, al momento de digitarlos

correctamente iniciara la sesión.

Page 389: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 164 -

Figura 2.2 – Formulario de Acceso al sistema

2.2.3 Modulo de Seguridades

A través de este modulo se podrán visualizar tres tipos de pantalla en la cual

se llevara un control a través de mantenimientos a los usuarios, roles y

perfiles. Este mantenimiento permitirá crear, editar y eliminar información.

2.2.3.1 Usuario.- En esta opción tendremos una pantalla principal,

donde se mostraran todos los usuarios que existen en la Base de

Datos con su respectivo resumen de información además también

permitirá crearlos o eliminarlos. A través de esta pantalla tendremos

acceso a cada uno de los formularios de los mismos. Este formulario

contara con seis pestañas, cada una tendrá diferente tipo de

información asociada a un usuario. en el cual se podrá realizar tareas

Page 390: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 165 -

de visualización, edición y llevar un óptimo mantenimiento.

Administración de Usuarios

FIGURA 2.3 – Pantalla Principal - Usuarios

Botón Crear (1)

Levanta otro formulario llamado creación de usuarios, para llenar

los respectivos datos del usuario a crear.

Botón Eliminar (2)

Procede a eliminar si se selecciona un usuario, y a la vez actualiza

la pantalla de administración de usuarios.

Page 391: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 166 -

Botón Salir (3)

Procede a salir de la pantalla sin cambios algunos

Doble Click (4)

Levanta otro formulario llamado editar usuario. Donde podemos

modificar los parámetros del usuario

Editar General de Usuario

FIGURA 2.4 – Pantalla de Creación y edición de usuario

Opción (1)

Esta opción representa los permisos que pueden asignar a un

Page 392: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 167 -

usuario

Botón Aceptar (2)

Este botón guarda los cambios que realizaron dentro del formulario

de las opciones 5-6-7

Botón Cancelar (3)

Permite cerrar el formulario sin guardar ningún cambio en el

formulario

Botón Mostrar (4)

Muestra la sentencias sql de los cambios que se esta realizando

en el formulario de manera dinámica y modifica el nombre del

combo para ocultar la pantalla

FIGURA 2.5 –Muestra los cambios en sentencias sql

Opcion (5)

Presentación de los datos del usuario

Opcion (6)

A que tablespace fue asignado el usuario

Page 393: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 168 -

Opcion (7)

Presenta el estado del usuario como bloqueado y desbloqueado

Editar Rol de Usuario

Figura 2.6 - Pantalla Roles – Usuarios

Opcion (1)

Asigna roles disponibles al usuario

Opcion (2)

Quita roles otorgados a los usuarios

Page 394: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 169 -

Opcion (3)

Muestra los roles disponibles

Opcion (4)

Muestra los roles otorgados, donde podemos escoger la opción de

asignar este rol.

Editar Sistema de Usuario

Figura 2.7 Pantalla de Privilegios – Usuarios

Opcion (1)

Asigna privilegios disponibles al usuario

Opcion (2)

Quita privilegios otorgados a los usuarios

Page 395: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 170 -

Opcion (3)

Muestra los privilegios disponibles

Opcion (4)

Muestra los privilegios otorgados, donde podemos escoger la

opción de asignar estos privilegios

Editar Sistema de Usuario

Figura 2.8 Pantalla de Objetos del Usuarios

Opcion (1)

Asigna privilegios disponibles de los objetos al usuario

Opcion (2)

Quita privilegios disponibles de los objetos al usuario

Page 396: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 171 -

Opcion (3)

Muestra los privilegios disponibles de los objetos

Opcion (4)

Muestra los privilegios otorgados de los objetos, donde podemos

escoger la opción de asignar estos privilegios

Opcion (5)

Muestra los objetos de los usuarios

Editar Cuota de Usuario

Figura 2.9 Pantalla de Cuota – Usuarios

Page 397: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 172 -

Opcion (1)

Presenta los tablespace, y su tamaño de la cuota

Opcion (2)

Se presentan 3 opciones de chequear, donde ponemos el estado

el tamaño de la cuota del tablespace

Editar Grupo de Consumidores de Usuario

Figura 2.10 Pantalla de Grupos de Consumidores – Usuarios

Page 398: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 173 -

Opcion (1)

Agrega un grupo de consumidores al usuario

Opcion (2)

Quita un grupo de consumidores al usuario

Opcion (3)

Presenta los grupos de consumidores disponibles

Opcion (4)

Muestra los grupos de consumidores otorgados de los objetos,

donde podemos escoger la opción de asignar estos grupos de

consumidores

2.2.3.2 Roles.- En esta opción tendremos una pantalla principal,

donde se mostraran todos los roles que existen en la Base de Datos

con su respectivo resumen de información además también permitirá

crearlos o eliminarlos. A través de esta pantalla tendremos acceso a

cada uno de los formularios de cada uno de los roles. Este formulario

contara con cinco pestañas, cada una tendrá diferente tipo de

información asociada a un rol en el cual se podrá realizar tareas de

visualización o edición, a través del cual nos permitirá llevar un

óptimo mantenimiento.

Page 399: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 174 -

Información General de Roles

Figura 2.11 Pantalla General – Roles

Opcion (1)

Presenta el nombre del rol y sus diferentes Tipos de autentificación

Botón Aceptar (2)

Este botón guarda los cambios que realizaron dentro del formulario

de las opciones 1 y 5

Botón Cancelar (3)

Permite cerrar el formulario sin guardar ningún cambio en el

Page 400: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 175 -

formulario

Botón Mostrar (4)

Muestra la sentencias sql de los cambios que se esta realizando

en el formulario de manera dinámica y modifica el nombre del

combo para ocultar la pantalla

Opcion (5)

Esta opción representa los permisos que pueden asignar de un rol

a un usuario

Rol de Roles

Figura 2.12 Pantalla Rol – Roles

Page 401: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 176 -

Opcion (1)

Agrega roles disponibles al rol

Opción (2)

Quita roles otorgados al rol

Opción (3)

Presenta roles disponibles que se pueden asignar o quitar al rol

Opción (4)

Presenta roles otorgados que se pueden asignar o quitar al rol

Sistema de Rol

Figura 2.13 Pantalla Sistema – Roles

Page 402: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 177 -

Opcion (1)

Agrega privilegios disponibles al rol

Opción (2)

Quita privilegios otorgados al rol

Opción (3)

Presenta privilegios disponibles que se pueden asignar o quitar al

rol

Opción (4)

Presenta privilegios otorgados que se pueden asignar o quitar al rol

Objeto de Rol

Page 403: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 178 -

Figura 2.14 Pantalla Objeto – Roles

Opcion (1)

Agrega privilegios disponibles del objeto al rol

Opción (2)

Quita privilegios disponibles del objeto otorgados al rol

Opción (3)

Presenta privilegios disponibles del objeto que se pueden asignar o

quitar al rol

Page 404: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 179 -

Opción (4)

Presenta privilegios disponibles del objeto otorgados que se

pueden asignar o quitar al rol

Grupo de consumidores rol

Figura 2.15 Pantalla Grupo de Consumidores – Roles

Opcion (1)

Agrega grupo de consumidores disponibles del objeto al rol

Opción (2)

Quita grupo de consumidores disponibles del objeto otorgados al

Rol

Page 405: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 180 -

Opción (3)

Presenta grupo de consumidores disponibles del objeto que se

pueden asignar o quitar al rol

Opción (4)

Presenta grupo de consumidores disponibles del objeto otorgados

que se pueden asignar o quitar al rol

2.2.3.3 Perfiles.- En esta opción tendremos una pantalla principal,

donde se mostraran todos los perfiles que existen en la Base de

Datos con su respectivo resumen de información, además también

permitirá crearlos o eliminarlos. A través de esta pantalla tendremos

acceso a cada uno de los formularios de los mismos. Este formulario

contara con dos pestañas, cada una tendrá diferente tipo de

información asociada a un perfil en el cual se podrá realizar tareas

de visualización o edición a cada una de sus propiedades, a través

del cual nos permitirá llevar un óptimo mantenimiento.

Page 406: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 181 -

Figura 2.16 Pantalla Administración de Perfiles – General

Botón Aceptar (1)

Este botón guarda los cambios que realizaron dentro de esta

pantalla de las opciones 4 y 5

Botón Cancelar (2)

Permite cerrar la pantalla sin guardar ningún cambio en esta forma

Botón Mostrar (3)

Muestra la sentencias sql de los cambios que se esta realizando

en el formulario de manera dinámica y modifica el nombre del

combo para ocultar la pantalla

Page 407: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 182 -

Opción (4)

Estos campos determinan la cantidad de tiempo asignado a la CPU

por sesión, CPU por llamada, el tiempo de conexión y el tiempo de

inactividad para este perfil.

Opción (5)

Estos campos determinan los servicios de base de datos

asignados a este perfil

Figura 2.17 Pantalla Administración de Perfiles – Contraseña

Opción (1)

Vencer en: Limita el número de días que vence la contraseña.

Page 408: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 183 -

Bloquear: Limita el número de días durante los que se puede

cambiar una contraseña después de la primera conexión correcta

tras el vencimiento de una contraseña.

Opción (2)

Mantener: Especifica el número de veces que se debe cambiar una

contraseña antes de que se pueda volver a utilizar.

Mantener durante: Limita el número de días antes de que se pueda

volver a utilizar una contraseña después de que haya vencido.

Opción (3)

Permite que se utilice la rutina PL/SQL para la verificación de

contraseña cuando los usuarios a los que se les asigna este perfil

se conectan a una base de datos.

Opción (4)

Bloquear después: Limita el número de intentos de conexión

fallidos permitido antes de que se bloquee el acceso a un usuario

de la cuenta.

Bloquear durante: Especifica el número de días que la cuenta está

bloqueada después de fallar el número especificado de intentos de

conexión.

Page 409: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 184 -

2.2.4 Modulo Biblioteca de Servicios

Este modulo esta conformado por dos opciones. Las cuales permitirán llevar

un control del Listener.

2.2.4.1 Programar Inspección del Listener.- Permite tener una

programación en minutos o en horas del tiempo que va censar

Figura 2.18 – Pantalla Programar Inspección - Listener

Botón Guardar (1)

Crea una tarea de Windows para el censo del estado del listener

para crear el grafico en el formulario del listener

Botón Eliminar (2)

Elimina la tarea programada de Windows

Page 410: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 185 -

Botón Salir (3)

Cierra la ventana de tareas programadas

2.2.4.2 Listener.- Esta opción muestra un formulario con dos

pestañas, en el cual se detalla información general del listener,

como su estado, la disponibilidad, además permite levantar, bajar y

darle un mantenimiento a los parámetros del listener.

Figura 2.19 Formulario Estado - Listener

Muestra la disponibilidad del listener gráficamente dependiendo de

la programación que se le haya hecho en la cesada del estado del

listener.

Page 411: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 186 -

Figura 2.20 Formulario Disponibilidad - Listener

En este formulario se puede configurar los parámetros de

ubicación del listener, se tiene acceso a este formulario dando clic

en el botón Parámetros

Figura 2.21 Formulario Parámetros Ubicación – Listener

Page 412: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 187 -

Figura 2.22 Formulario Parámetros Contraseña - Listener

Opción (1)

Registro:La actividad de servicio y las estadísticas se escriben en

un archivo log. El archivo log, mediante la pila de errores, muestra

el estado del software a varios niveles.

Rastreo: Utilidad que escribe información detallada sobre una

operación en un archivo de salida. La utilidad de rastreo genera

una secuencia detallada de sentencias que describen los eventos

de una operación al ejecutarse.

1

Page 413: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 188 -

2.2.5 Modulo de Métricas de Rendimiento

A través de este modulo se podrán visualizar todas las métricas que

se han creado con sus respectivo operador, umbral de advertencia y

umbral critico. Además nos permite crear una métrica a través del

botón crear.

Figura 2.23 Formulario Principal - Métricas

El siguiente formulario podemos crear una métrica en el cual se debe

de especificar los umbrales limites y la sentencia a ejecutarse para el

funcionamiento de la métrica. Para tener acceso a esta pantalla se

debe dar un clic en el botón de crear

Page 414: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 189 -

Figura – 2.24 Formulario de Creación – Métricas

2.2.6 Modulo Definición de Políticas

Este modulo permite visualizar todas las políticas creadas para

nuestro sistema, el DBA podrá activar o desactivar políticas para

especificar que políticas quiere que se analice a la hora de obtener un

reporte de políticas violadas. Para visualizar el reporte Ver figura 2.18

Figura 2.25 Formulario principal – Políticas

Page 415: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 190 -

2.2.7 Modulo de Almacenamiento

A través de este modulo se podrán visualizar seis tipos de opciones en

la cual se realizaran tareas administrativas asociadas a la gestión de

almacenamiento de la base de datos, esto se llevara a cabo a través

de mantenimientos a los Archivos de Control, Tablespace, Archivos

de Datos, Segmentos de Rollbak, Grupos de Redo Logs y Archive

Log. Estos mantenimientos permitirán crear, editar y eliminar

información.

2.2.7.1 Archivo de Control.- En esta opción nos mostrara un

formulario el cual contara con tres pestañas, cada una tendrá

diferente tipo de información asociado al archivo de datos, además

tendrá un botón el cual nos permitirá realizar una copia de

seguridad al Archivo de Control.

En la siguiente pantalla se muestra los nombres de los controlfiles

y el directorio en donde esta ubicado cada uno.

Page 416: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 191 -

Figura 2.26– Formulario General – Archivo de Control

Muestra información avanzada referente a los Archivos de Control

Figura 2.27 Formulario Avanzado – Archivo de Control

Permite visualizar la información general sobre la sección de

registros del Archivo de control

Page 417: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 192 -

Figura 2.28 Formulario Sección de Registros – Archivo de

Control

2.2.7.2 Tablespace.- En esta opción nos mostrara una pantalla

en el cual se detalla todos los tablespace creados en la base de

datos con su respectivo resumen de información, también se podrá

eliminar y crear tablespace. A través de esta pantalla tendremos

acceso a cada uno de los formularios de los mismos. Este

formulario contara con dos pestañas, cada una tendrá diferente tipo

de información asociada al tablespace en el cual se podrá realizar

tareas de visualización o edición, a través del cual nos permitirá

llevar un óptimo mantenimiento.

Page 418: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 193 -

Figura 2.29 – Formulario Principal - Tablespace

En esta pantalla podremos visualizar o editar toda la información

general del tablespace existentes o crear uno nuevo si se

selecciona el botón de Crear que se encuentra en la Figura 2.22.

Se podrá observar información del mismo, como el nombre del

archivo, directorio de archivo, tamaño, el almacenamiento y el

tamaño máximo.

Page 419: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 194 -

Figura – 2.30 Formulario General - Tablespace

Muestra información acerca de los métodos de gestión de espacio

que están asignados al tablespace. Esta información se la puede

manipular a la hora de crear un nuevo tablespace

Figura–2.31 Formulario Almacenamiento - Tablespace

Page 420: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 195 -

2.2.7.3 Archivo de Datos.- En esta opción nos mostrara una

pantalla en el cual se detalla todos los Archivos de datos creados

en la base de datos con su respectivo resumen de información,

además también permitirá crearlos. A través de esta pantalla

tendremos acceso a cada uno de los formularios de los mismos

que tendrá información general y de almacenamiento asociado al

Archivo de datos, en el cual se podrá realizar tareas de

visualización o edición que nos permitirá llevar un óptimo

mantenimiento.

Figura 2.32 – Pantalla Principal – Archivo de Datos

En la siguiente pantalla podremos visualizar o editar los

parámetros de los archivos de datos existentes, o crear un nuevo

si esta seleccionado el botón de crear que se encuentra en la

Page 421: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 196 -

figura 3.35. La información que muestra en esta pantalla es de tipo

general y de almacenamiento en donde se puede ver el nombre del

archivo de datos, el tablespace donde esta creado, el estado, el

tamaño y la opción de almacenamiento.

Figura 2.33 – Formulario General – Archivo de Datos

2.2.7.4 Segmentos de Rollbak.- En esta opción nos mostrara una

pantalla en el cual se detalla todos los Segmentos Rollbak creados

en la base de datos con su respectivo resumen de información,

además también permitirá crearlos y eliminarlos . A través de esta

Page 422: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 197 -

pantalla tendremos acceso a cada uno de los formularios de los

mismos que tendrá información general y de almacenamiento

asociado al Segmento Rollbak, en el cual se podrá realizar tareas

de visualización o edición que nos permitirá llevar un óptimo

mantenimiento.

Figura 2.34 – Pantalla Principal – Segmentos de Rollback

En esta pantalla podremos visualizar o editar la información de los

Segmentos Rollback existentes, o crear un nuevo si esta

seleccionado el botón de crear que se encuentra en la figura 2.27.

La información que muestra en esta pantalla es de tipo general y

de almacenamiento en donde se puede ver el nombre del

Segmento Rollback, el tablespace donde esta creado, el estado, y

Page 423: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 198 -

las características de almacenamiento donde se detalla diferente

tipos de tamaños.

Figura 2.35 – Formulario General - Segmentos Rollback

2.2.7.5 Grupo de Redo Logs.- En esta opción nos mostrara una

pantalla en el cual se detalla todos los Grupos de Redo Logs

creados en la base de datos con su respectivo resumen de

información, además también permitirá crearlos y eliminarlos. A

través de esta pantalla tendremos acceso a cada uno de los

formularios de los mismos que tendrá información general

asociado al Grupo de Redo Logs en el cual se podrá realizar

Page 424: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 199 -

tareas de visualización o edición que nos permitirá llevar un

óptimo mantenimiento.

Figura 2.36 – Pantalla Principal – Grupo de Redo Logs

En la siguiente pantalla podremos visualizar o editar los

parámetros de los Grupos de Redo Logs existentes, o crear un

nuevo si esta seleccionado el botón de crear. La información que

muestra en esta pantalla es de tipo general en donde se puede ver

el número de Grupo de Redo Logs, el tamaño, los nombres de los

miembros actuales que pertenecen al grupo y el directorio de

ubicación. Además este formulario permite agregar mas miembros

al grupo de Redo Log a través del botón Agregar.

Page 425: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 200 -

Figura 2.37 – Formulario General – Grupo de Redo Logs

2.2.7.6 Archive Logs.- En esta opción nos mostrara una pantalla

en el cual se detalla la secuencia de los Archive Logs que se han

hecho a la base de datos con su respectivo resumen de

información. A través de esta pantalla tendremos acceso a cada

uno de los formularios de los mismos en donde se podrá visualizar

información general asociado al Archive Logs.

Page 426: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 201 -

Figura 2.38 – Pantalla Principal Archive Logs

La información que muestra en esta pantalla es de tipo general en

donde se puede ver el directorio del archive Logs, nombre,

secuencia, tamaño, hora de archivado, primer cambio y segundo

cambio.

Figura 2.39 – Formulario General – Archive Logs

Page 427: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 202 -

2.2.8 Modulo de Recursos

En este modulo se podrán visualizar dos tipos de opciones en la cual

no permitirá monitorear información referente al CPU, Instancia,

Base de Datos, memoria y sesiones.

2.2.8.1 Configuración.- En esta opción nos mostrara un

formulario el cual contara con cuatro pestañas, cada una tendrá

diferente tipo de información asociado al monitoreo de recursos.

La siguiente pantalla muestra información general correspondiente

al HOST, como es su estado, nombre del equipo, sistema

operativo, dirección IP, número de cpu, tamaño de la memoria,

capacidad de disco.

Figura 2.40 – Formulario General del Host - Recursos

Page 428: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 203 -

Muestra información referente al estado de la Instancia, los

parámetros de inicialización, información general de la instancia y

la base de Datos. Además esta pantalla nos permite bajar y subir

la base de datos.

Figura 2.41 Formulario General Instancia- Recursos

En la siguiente pantalla nos permite tener un monitoreo de todos

los parámetros de la memoria tanto de la SGA y de la PGA.

Figura 2.42 Formulario Memoria - Recursos

Page 429: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 204 -

La siguiente pantalla nos permite tener un monitoreo del Tiempo de

recuperación de fallo de la Instancia, Recuperación de medio físico

donde se muestra el estado actual del archivado de Redo Log,

especifica el destino en el que se deben crear los archivos archive

Log, además esta pantalla nos permite poner en estado Archive

Log a la Base de Datos

Figura – 2.43 Formulario Recuperación – Recursos

2.2.8.2 Sesiones.- En esta opción nos mostrara una pantalla en

la cual se detalla un informe de todas las secciones principales

activas e inactivas que hay en la base de datos ayudando al DBA a

tener una visión general por medio de la estadística de la actividad

de cada sesión y así poder identificar los cuellos de botella de

rendimiento de la base de datos.

Page 430: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 205 -

Figura 2.44– Formulario Informe de Sesiones - Recursos

2.2.9 Modulo de Eventos, Errores y Notificaciones

A través de este modulo se podrán visualizar cuatro tipos de opciones

en la cual se realizaran tareas de configuración de notificaciones para

que el DBA reciba notificaciones de alerta por medio del correo, se

mostrara reportes de todos los eventos ocurridos, errores de métricas

y políticas violadas.

2.2.9.1 Configurar Parámetros- Esta opción nos va a mostrar

una pantalla en la cual se definen los métodos de notificación para

ellos se especifica la dirección del servidor de Correo, del remitente

y de los destinatarios. Los destinatarios van a hacer a las personas

a quienes les va a llegar la notificación

Page 431: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 206 -

Figura 2.45 – Formulario Configurar Parámetros –

Notificaciones

2.2.9.2 Reporte de Eventos.- Esta opción nos va a mostrar una

pantalla la cual esta conformada por dos pestañas.

En la primera pestaña se mostrara todas las transacciones que se

han hecho en cada uno de los módulos del sistema, se especificara

la fecha, la hora, la maquina desde donde se hizo la transacción, el

módulos en que se realizo la transacción y el tipo de sentencia que

se ejecuto. Además en esta pantalla se podrán tener una

búsqueda de eventos por usuario y sacar reportes tipo Pantalla y

Excel.

.

Page 432: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 207 -

Figura 2.46– Formulario Transacciones del Sistema – Eventos

Al dar un clic en el botón Pantalla que se muestra en la figura 2.39

nos mostrara el siguiente reporte.

Figura 2.47– Reporte Transacciones del Sistema – Eventos

Al dar un clic en el botón Excel que se muestra en la figura 3.49

nos mostrara el siguiente reporte.

Page 433: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 208 -

Figura 2.48– Reporte en Excel Transacciones del Sistema –

Eventos

En la segunda pestaña se mostrara el listado de las métricas

donde se especifica los criterios con los cuales fueron creadas,

además se muestra la fecha y la hora de la ultima evaluación de la

métrica, fecha de la alerta, tipo de advertencia, el campo de

notificación donde indica si se ha enviado la alerta y la fecha de

cuando se envió la notificación..

Figura 2.49– Formulario Ejecución de Métricas – Eventos

Page 434: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 209 -

Al dar doble clic en cada una de las métricas que se muestra en la

Figura 2.42 se mostrara un formulario en donde se detalla un

historial de todas las veces en que la métrica ha pasado sus

limitantes.

Figura 2.50 – Formulario Historial de Métricas – Eventos.

Al hacer clic en el botón que dice Excel que se muestra en la

Figura 2.43 se mostrara el informe del historial en un

documentos.exe como se puede apreciar en la Figura 3.54.

Page 435: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 210 -

Figura 2.51– Reporte Historial de Métricas – Eventos

2.2.9.3 Reporte de Errores.- Esta opción nos va a mostrar una

pantalla la cual esta conformada por dos pestañas.

En la primera pestaña muestra el detalle de todos los errores que

han ocurridos en las transacciones que se han hecho en cada

modulo, se especificara la fecha, la hora, la maquina desde donde

se hizo la transacción, el módulos en que se realizo la transacción

y el tipo de sentencia que se ejecuto. Además en esta pantalla se

podrán tener una búsqueda de errores por usuario y sacar reportes

tipo Pantalla y Excel.

Page 436: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 211 -

Figura 2.52 – Formulario Transacciones del Sistema – Errores

Al dar un clic en el botón Pantalla que se muestra en la figura 2.45

nos mostrara un reporte de los errores de las transacciones.

Figura 2.53 – Reporte Transacciones del Sistema – Errores

Al dar un clic en el botón Excel que se muestra en la figura 3.55

nos mostrara un reporte de los errores de las transacciones en un

documento en Excel.

Page 437: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 212 -

Figura 2.54 – Reporte en Excel Transacciones del Sistema –

Errores

En la segunda pestaña se mostrara el contenido del archivo de la

alerta. Esta pantalla también ofrece una opción para guardar el

archivo en la cual se debe especificar la ruta de la ubicación y el

nombre.

Figura 2.55 – Formulario Contenido de Alerta – Errores

Page 438: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 213 -

2.2.9.4 Políticas Violadas.- Esta opción nos mostrara un

formulario en la cual se detallan todas las políticas que han sido

violadas, el estado, la hora y fecha en que ocurrió, y la fecha de

modificación que es la fecha en que se corrigió la política.

Figura 2.56 – Formulario Historial – Políticas Violadas

2.2.10 Modulo Terminal

2.2.10.1 Consola Plus

A través de este modulo se podrán visualizar una consola en la cual

se podrá ejecutar comando SQL, también se podrá especificar una

ruta para guardar todos los script que ejecutemos en la consola.

Existe la opción Nuevo donde limpiamos la pantalla y ejecutamos

nuevamente, se puede colocar en la consola 2 sentencias SQL y

ejecutarlas a la vez.

Page 439: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 214 -

Figura 2.57– Formulario de la Consola – Terminal

2.2.10.2 Schema Rman

Muestra la información del estado, lugar y tamaño de todos los

tablespace. Que para un administrador de base de datos es

importante saber para un respaldo previo de los mismos.

Page 440: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 215 -

Figura 2.58 – Formulario Report Schema – Terminal

2.2.10.3 Listado Rman

Muestra el listado de los tablespace que son respaldados y los que

necesitan ser respaldados, ademas muestra la pantalla dos pestañas

en la que detalla lo antes expuesto.

En el List Backup: Presenta si fueron respaldados o no los

tablespace, donde el aplicativo le permite guardar el listado

de list backup a un archivo en la ruta que especifique el

usuario y guarda el archivo pulsando botón guardar.

En el Report need backup: Presenta los tablespace que

Page 441: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 216 -

necesitan ser respaldados, también el aplicativo le permite

guardar el listado de Report need backup a un archivo en la

ruta que especifique el usuario y guarda el archivo pulsando

el botón guardar.

Figura 2.59– Formulario List backup – Terminal

Page 442: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 217 -

Figura 2.60 – Formulario de la Consola – Terminal

2.2.10.4 Backup Database

Esta forma realiza un respaldo de la base de datos en la ruta que

disponga el usuario, tomando en cuenta el tamaño de los mismos.

El respaldo de la base de datos en rman que contiene todos los

datafile, siempre y cuando se encuentre la base en modo archive.

Como también nos da la herramienta, poder guardar el log del backup

en un archivo en la ruta que disponga el sysdba.

Page 443: UNIVERSIDAD DE GUAYAQUIL - repositorio.ug.edu.ecrepositorio.ug.edu.ec/bitstream/redug/12065/1/B... · 3.1.3.7 Modulo de Recursos 120 3.1.3.8 Modulo Eventos, Errores y Notificaciones

- 218 -

Figura 2.61 – Formulario de la Consola – Terminal