lunes, 25 de febrero de 2013

Paquetería Oracle

En los paquetes que debemos tener en cuenta a la hora de realizar un proyecto en oracle es necesario tener en cuenta que no siempre debemos de tener tablas llenas de pequeños campos o funciones o procedimientos con variables pequeñas, por lo que el manejo de paquetes que son los módulos de Oracle podemos guardarlos, depurarlos y ejecutarlos.

En el DML se encuentra:


Select
Insert
Update
Delete
Selección de consultas  a la base de datos.
Inserción de datos a la base de datos.
Actualización de datos en la base de datos.
Borrado de datos en la base de datos.

En un proyecto se crean 4 paquetes importantes como lo son:

Encapsulados
Utility
Kernel
Operativas
Aquí van los insert, update y delete que se deben de manejar en los paquetes de base de datos.
Misceláneos: Vela  por tareas de salida y mantenimiento.
Variables pequeñas que no necesitan una tabla pero no queremos quemarlos ni apártalos del  proyecto.
Crea los paquetes necesarios en el resto de  funciones del proyecto a realizar.

Tablas que debemos de utilizar en paquetes Oracle:

Parámetros
Maestros
Operativas
Se muestra por medio de Oracle como:

select * from v$system_parameter;

Creamos un nuevo bloque de datos (detalle) asociado al bloque de datos seleccionado (Persona - Maestro).
De manejo operativo dentro de los paquetes.

Grupodivisoft.com

viernes, 22 de febrero de 2013

Contextos de Oracle


Función SYS_CONTEXT
Devuelve información de la sesión actual del usuario.
SYS_CONTEXT (namespace,param,[length])

Valores de parámetro:

ACTION:
Devuelve la posición en el módulo
AUDITED_CURSORID:
Devuelve el ID del cursor que ha lanzado la auditoría
AUTHENTICATED_IDENTITY:
Devuelve la identidad usada en la autentificación.
AUTHENTICATION_DATA:
Datos de autentificación
AUTHENTICATION_METHOD:  
Devuelve el método de autentificación
AUTHENTICATION_TYPE:
Devuelve como se ha autentificado el usuario. Puede tener uno de estos valores: Database, OS, Network, o Proxy
BG_JOB_ID:
Si la sesión se ha establecido desde un proceso background de oracle, este parámetro devuelve el Job ID. En otro caso devuelve NULL.
CLIENT_IDENTIFIER:
Devuelve el identificador de cliente (global Contexto)
CLIENT_INFO:
Devuelve la información cargada mediante el paquete DBMS_APPLICATION_INFO
CURRENT_BIND:
Bind variables para auditoría
CURRENT_SCHEMA:
Devuelve el esquema por defecto usado en el actual esquema
CURRENT_SCHEMAID:
Devuelve el identificador esquema por defecto usado en el actual esquema
CURRENT_SQL:
Devuelve la SQL que ha lanzado el evento de auditoría
CURRENT_SQL_LENGTH:
Devuelve la longitud de la SQL que ha lanzado el evento de auditoría
CURRENT_USER:
Nombre del usuario actual
CURRENT_USERID:
Identificador del usuario actual
DB_DOMAIN:
Dominio de la base de datos del parámetro de inicialización DB_DOMAIN
DB_NAME:
Nombre de la base de datos del parámetro de inicialización DB_NAME
DB_UNIQUE_NAME:
Nombre de la base de datos del parámetro de inicialización DB_UNIQUE_NAME
ENTRYID:
 Identificador del la entrada de auditoría disponible
ENTERPRISE_IDENTITY:
Identidad de la empresa
EXTERNAL_NAME:          
Nombre externo del usuario de la base de datos
FG_JOB_ID:
Si la sesión se ha establecido desde un proceso foreground de oracle, este parámetro devuelve el Job ID. En otro caso devuelve NULL.
GLOBAL_CONTEXT_MEMORY:
El número usado en el System Global Área para acceder al contexto
GLOBAL_UID:
Identificador global de usuario del Oracle Internet Directory. Devuelve NULL: para todas las demás entradas.
HOST:           
Nombre de la máquina desde la que se ha conectado el cliente.
IDENTIFICATION_TYPE:
Devuelve el modo en que ha creado el esquema de usuario.
INSTANCE:
Identificador de la instancia actual
INSTANCE_NAME:
Nombre de la instancia actual
IP_ADDRESS:
Dirección IP de la máquina desde la que está conectado el cliente actual.
ISDBA:
Devuelve TRUE si el usuario tiene privilegios de DBA si no devuelve FALSE.
LANG:           
La abreviatura ISO del lenguaje
LANGUAGE:
El leguaje, territorio y conjunto de caracteres de la sesión. El formato es el siguiente: language_territory.characterset
MODULE:
Devuelve el nombre de aplicación establecido mediante el paquete DBMS_APPLICATION_INFO o OCI.
NETWORK_PROTOCOL:
Protocolo de red usado
NLS_CALENDAR:
El calendario usado en el calendar de la sesión corriente
NLS_CURRENCY:
Moneda de la sesión actual.
NLS_DATE_FORMAT:
Formato de fecha de la sesión actual.
NLS_DATE_LANGUAGE:
Lenguaje usado para la fechas.
NLS_SORT:
Lenguaje de ordenación.
NLS_TERRITORY:
Territorio de la sesión actual.
OS_USER:
 Usuario del sistema operativo.
POLICY_INVOKER:
Invocador de la política de seguridad a nivel de fila.
PROXY_ENTERPRISE_IDENTITY: Directory.
DN del Oracle Internet
PROXY_GLOBAL_UID:
Identificador de usuario global de Oracle Internet Directory for enterprise.
PROXY_USER:
Nombre de usuario detrás de SESSION_USER
PROXY_USERID:
Identificador de usuario detrás de SESSION_USER
SERVER_HOST:
 Nombre del servidor donde se está ejecutando la instancia de la base de datos.
SERVICE_NAME:
Nombre del servicio donde está conectada la sesión.
SESSION_USER:
 Nombre del usuario de la base de datos con el que está conectada la sesión.
SESSION_USERID:
Identificador del usuario de la base de datos con el que está conectada la sesión.
SESSIONID:
Identificador de la sesión
SID:
Número de sesión
STATEMENTID:
El identificador de auditoría de sentencia
TERMINAL:
Nombre del terminal

Por ejemplo:
select sys_context('USERENV', 'DB_NAME') from dual;
Devuelve: mydatabase


http://ora.u440.com/sistema/sys_context.html

jueves, 14 de febrero de 2013

ORACLE: Backup y Recuperación (Recovery)


Para conseguir un funcionamiento seguro de la BD y una pronta recuperación ante fallos se necesita planear una estrategia de copias de seguridad, backup, y de recuperación, recovery, ya que de nada sirve pensar que estamos a salvo de tales circunstancias, y que eso no me puede pasar a mí. Y el primer paso a dar es definir las características fundamentales de la implantación, porque mal vamos a conseguir unos objetivos si se desconocen o están indefinidos. El segundo paso es establecer unos planes de copias de seguridad y recuperación que nos permitan asegurar los objetivos.

1 Introducción al Backup y a la Recuperación

Planear y comprobar los procedimientos de backup del sistema es la única garantía que existe contra fallos del sistema, del SO, del software o cualquier otro tipo de circunstancias.
Las causas de error en una sistema de BD pueden agruparse en las siguientes categorías:
  • Físicas
    • son causadas por fallos del hardware, como por ejemplo del disco o de la CPU.
  • de Diseño
    • son agujeros en el software, ya sea en el SO o en el SGBD.
  • de Funcionamiento
    • son causadas por la intervención humana, debidos a fallos del DBA, configuraciones inapropiadas o mal planteamiento de los procedimientos de backup.
  • del entorno
    • como por ejemplo desastres naturales, fallos de corriente, temperatura excesiva.
De entre todas estas posibilidades, el DBA sólo puede influir y prever los errores de funcionamiento, ya que el resto habitualmente no está dentro de sus responsabilidades y capacidades.
Dada la complejidad de los sistemas actuales y las necesidades cada vez más críticas en la disponibilidad de los sistemas, donde una BD caida puede causar pérdidas millonarias, puede ser interesante considerar los mecanismos de protección hardware y de redundancia que la tecnología nos proporciona:
  • UPS o fuentes de corriente ininterrumpida,
  • espejado de disco, o tecnología RAID,
  • Componentes duplicados,
  • Sistemas redundantes.
Una de las más importantes decisiones que un DBA debe tomar es decidir si arrancar la BD en modo ARCHIVELOG o no. Esta decisión tiene sus ventajas e inconvenientes:
  • Ventajas:
    • Aunque se pierdan los ficheros de datos, siempre se puede recuperar la BD con una copia antigua de los ficheros de datos y los ficheros de redo log archivados.
    • Es posible realizar backups en caliente.
  • Inconvenientes:
    • Se necesitará más espacio en disco.
    • El trabajo del DBA se incrementa al tener que determinar el destino del archivado de los redo log.

1.1 Presentación del Backup
Los backups se pueden clasificar en físicos y lógicos. Los físicos se realizan cuando se copian los ficheros que soportan la BD. Entre estos se encuentran los backups del SO, los backups en frío y los backups en caliente.
Los backups lógicos sólo extraen los datos de las tablas utilizando comandos SQL y se realizan con la utilidad export/import.
Backups del SO
    Este tipo de backup es el más sencillo de ejecutar, aunque consume mucho tiempo y hace inaccesible al sistema mientras se lleva a cabo. Aprovecha el backup del SO para almacenar también todos los ficheros de la BD. Los pasos de este tipo de backup son los siguientes:
    1. Parar la BD y el SO
    2. Arrancar en modo superusuario.
    3. Realizar copia de todos los ficheros del sistema de ficheros
    4. Arrancar el sistema en modo normal y luego la BD.
Backups de la BD en Frio
    Los backups en frio implican parar la BD en modo normal y copiar todos los ficheros sobre los que se asienta. Antes de parar la BD hay que parar también todos las aplicaciones que estén trabajando con la BD. Una vez realizada la copia de los ficheros, la BD se puede volver a arrancar.
Backups de la BD en Caliente
    El backup en caliente se realiza mientras la BD está abierta y funcionando en modo ARCHIVELOG. Habrá que tener cuidado de realizarlo cuando la carga de la BD sea pequeña. Este tipo de backup consiste en copiar todos los ficheros correspondientes a un tablespace determinado, los ficheros redo log archivados y los ficheros de control. Esto para cada tablespace de la BD.
Backups Lógicos con Export/Import
    Estas utilidades permiten al DBA hacer copias de determinados objetos de la BD, así como restaurarlos o moverlos de una BD a otra. Estas herramientas utilizan comandos del SQL para obtener el contenido de los objetos y escribirlos en/leerlos de ficheros
Una vez que se ha planeado una estrategia de backup y se ha probado, conviene automatizarla para facilitar así su cumplimiento.

1.2 Presentación de la Recuperación
Oracle proporciona diferentes modos de recuperar un fallo en la BD, y es importante que el DBA conozca como funciona cada uno de ellos para determinar cuándo ha de ser utilizado.
Una de las mayores responsabilidades del DBA consiste en tener la BD a punto, y prepararla ante la posibilidad de que se produzca un fallo. Así, ante un fallo el DBA podrá recuperar la BD en el menor tiempo posible. Los procesos de recuperación dependen del tipo de error y de las estructuras afectadas.
Así, los tipos de error que se pueden producir son:
Errores de Usuario
    Como por ejemplo un usuario borrando una fila o eliminando una tabla. Estos errores se solucionan importando una tabla de una copia lógica anterior. Si no se dispone de la copia lógica, se puede recuperar la BD en una instancia auxiliar, exportar la tabla en cuestión de la instancia auxiliar e importarla en la instancia operativa.
Fallos de Sentencias
    Se definen como la imposibilidad del SGBD Oracle de ejecutar alguna sentencia SQL. Un ejemplo de esto se produce cuando se intenta una selección de una tabla que no existe. Estos fallos se recuperan automáticamente mediante un rollback de la transacción que contenía la sentencia fallida. El usuario necesitará volver a ejecutar otra vez la transacción cuando se haya solucionado la causa del problema.
Fallos de Procesos
    Es una terminación anormal de un proceso. Si el proceso era un proceso de usuario, del servidor o de una aplicación el PMON efectuará la recuperación del proceso. Si el proceso era alguno de los de background, la instancia debe de ser parada y arrancada de nuevo, proceso durante el cual se recupera la caida efectuando un roll forward y un rollback de las transacciones no confirmadas.
Fallos de la Red
    Algunas veces los fallos en la red producen fallos de proceso, que son tratados por el PMON. Si en el error de red se ve envuelta una transacción distribuida, una vez que se reestablece la conexión, el proceso RECO resuelve los conflictos automáticamente.
Fallos de Instancia
    Pueden deberse a fallos físicos o de diseño del software que hacen que algún proceso background caiga y la instancia con él. La recuperación es automática cuando se levanta la BD, tomandose más o menos tiempo en la recuperación.
Fallos del Sistema
    Son los fallos más peligrosos, no sólo porque se pueden perder datos, sino porque se tarda más tiempo en recuperar que los otros fallos. Además se depende mucho de la experiencia del DBA para levantar la BD rápidamente y sin pédida (o casi) de datos.
Existen tres tipos de recuperación en Oracle: a nivel de bloque, de thread y física.
Recuperación de bloques
    Es el mecanismo de recuperación más simple, y se realiza automáticamente. Se produce cuando un proceso muere justo cuando está cambiando un bloque, y se utilizan los registros redo log en línea para reconstruir el bloque y escribirlo en disco.
Recuperación de threads
    Se realiza automáticamente cuando Oracle descubre que una instancia muere dejando abierto un thread, entonces se restauran los bloques de datos modificados que estaban en el cache de la instancia muerta, y cerrando elthread que estaba abierto. La recuperación se efectua automáticamento cuando la BD se levanta.
Recuperación física
    Se realiza como respuesta a un comando RECOVER. Se utiliza para convertir los ficheros de backup en actuales, o para restaurar los cambios que fueron perdidos cuando un fichero de datos fue puesto offline sin un checkpoint, aplicando los fichero redo log archivados y en línea.

crdg
http://www.infor.uva.es/


martes, 12 de febrero de 2013

Fechas en Oracle

Empezando con el manejo de instrucciones y algunos problemas, en muchas ocasiones tenemos algunas complicaciones para hacer algunas operaciones con las fechas ya sea por realizar operaciones o para mostrarla de cierta forma. Para los ejemplos y funciones se ocupa Oracle version 9i asi que para las versiones posteriores no deberían tener problemas.
La sentencia que nos ayuda a mostrar la fecha y hora de la base de datos es la siguiente
SELECT SYSDATE FROM DUAL;
Para esta instrucción nos mostrara una salida con la Fecha y Hora del sistema, dependiendo de como tengamos configurado nuestro cliente para consulta, pero en caso de que queramos mostrar solo la fecha o solo la hora necesitaríamos formatearla para de esta forma obtener el resultado deseado
SELECT TO_CHAR(SYSDATE, ‘DD/MM/RRRR’) AS Fecha FROM dual;
similar a ocupar SELECT TRUNC(SYSDATE) AS Fecha FROM dual;
Si necesitamos representar una cadena como Fecha es necesario ocupar la instrucción TO_DATE
La sintaxis para ocupar alguna de estas instrucciones es la siguiente:
-  TO_CHAR(Fecha1, [formato], [nlsparam])   En donde:
Fecha1 – Se refiere a la variable que queremos converir al formato especifico
formato – Para mostrar de cierta forma nuestra fecha u hora.




http://hankcomzen.wordpress.com/