Archive for the ‘Oracle’ Category

Iniciar una base de datos Oracle

martes, octubre 9th, 2012

La documentación de oracle dice que para iniciar la base de datos solo debe ejecutarse

dbstart 

Si te ocurre el siguiente error

ORACLE_HOME_LISTENER is not set, unable to start listener 

Lo primero a revisar son las variables de entorno que deben estar configuradas.

Luego de esta revision de configuracion, en vez de ejecutar el comando a secas ejecuta

dbstart $ORACLE_HOME

Y debiese funcionar siguiendo la filosofía Unix, o sea, si no envía ningun mensaje es porque esta correcto.

Variables de entorno Oracle

martes, octubre 9th, 2012

A el usuario oracle se le deben establecer las siguientes variables en el archivo .bash_profile o el profile que estes utilizando.En este archivo incorpora las líneas cambiandolas por las rutas de tu instalación de Oracle


Actualización (24-09-2015)
Se presume que se instaló la base de datos segun lo esxplicado en otro de mis articulos
Instalando Oracle 11G a linea de mando

ORACLE_BASE=/u01/app/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2/db_1
export ORACLE_HOME
ORACLE_PATH=$ORACLE_HOME/bin
export ORACLE_PATH
ORACLE_SID=orcl
export ORACLE_SID

Adicionalmente es util tener configurada el path de linux hacia los ejecutables de oracle, esto nos evitará cambios de rutas y cosas asi

PATH=$PATH:$HOME/bin:$ORACLE_PATH
export PATH

Linux debe ser reiniciado solo por un cambio en el hardware

lunes, octubre 8th, 2012

Debo admitir que ciertamente defiendo Linux como sistema operativo de servidores. Como desktop aún le falta (aun cuando ubuntu a avanzado años luz), como servidor… debo admitir que admiro esta situación de configurar archivos.

Con el amor propio herido debido a que tras un reinicio de un servidor Linux que fue aumentado en RAM, Oracle no funcionaba decidí reiniciar debido a que no se me ocurrían más cosas para hacerlo partir… pero no estaba todo dicho… sobre todo luego de un comentario “…o sea, que igual que Windows tienes que reiniciar” (Julio Romero)… frase que fue (en buen chileno) como un ají ahí mismito…

Así que luego la decisión fue no claudicar… no puede ser el reinicio, no puede ser que Linux deba ser reiniciado, pero por sobretodo no se puede rebajar a ser igualado a windows.

Aun cuando efectivamente existen parches en el Kernel que ameritan reinicio, la mayoría o los reinicios justificados en Linux sólo debiesen ser de hardware, ya que para todo lo demás existe un archivo de configuración que si esta mal «seteado» la aplicación no funcionará.

En mi caso, Oracle finalmente inicio, luego de hacer un serie de pasos para que esto sucediera.

Crear spfile en oracle

lunes, octubre 8th, 2012

Para crear un archivo con los parametros de la base de datos debes aplicar el siguiente comando

CREATE SPFILE FROM PFILE;

Puede que te de el siguiente error

CREATE SPFILE FROM PFILE
*
ERROR at line 1:
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file
'ORACLE_HOME/dbs/initSID.ora'

Si esto sucede debes especificar explicitamente la ubicacion del archivo pfile

create spfile from pfile='RUTA/init.ora'

y debieses recibir

File created.

Transacciones ACID

miércoles, julio 25th, 2012

En el contexto de transacciones de bases de datos, ACID es un acrónimo de Atomico (Atomic), Consistente (Consistent), Aislado (Isolation) y Durabilidad(Durable). Las transacciones proporcionan un modelo sencillo de éxito o fracaso una o un conjunto de operaciones en la base de datos. Una transacción se compromete (es decir, todas sus acciones se ejecutaron de forma correcta), o se anula (es decir, si una accion fallo, entonces todas sus acciones hechas hasta ese momento se deshacen). Los atributos de una transacción ACID son las siguientes:

Atomicidad

Una transacción permite la agrupación de uno o más cambios en las tablas y filas en la base de datos para formar una operación atómica e indivisible. Es decir, o bien se producen todos los cambios o ninguno de ellos. Si por alguna razón la transacción no puede completarse, la operación debe restablecer el estado de la base de datos al momento en que estaba antes del inicio de la transacción a través de una operación de reversa (rollback).

Consistencia

Las transacciones siempre operan en una visión coherente de los datos y cuando terminan deben también dejar los datos en un estado coherente. Mientras que una transacción se ejecuta se generan inconsistencias momentaneas dentro de la base de datos, pero la transaccion no puede dejar ver estas inconsistencias; al finalizar, debido a que en la finalización todas las inconsistencias deben son eliminadas, la transaccion libera los datos para que puedan ser leídos/escritos nuevamente.

Aislamiento

Para una operación determinada, debería ser como si ésta se estuviese ejecutando sola en la base de datos. Los efectos de la ejecución simultánea de las transacciones son invisibles para esta transacción, y los efectos de esta transacción son invisibles para los demás hasta que la transacción ha comprometido su trabajo.

Durabilidad

Una vez que se confirma una transacción y sus efectos, se garantiza que persista incluso en el caso de fallos posteriores del sistema. Hasta antes de que se confirme la transacción, los cambios realizados por esa transacción no son durables, y no persisten en la cara de un fallo del sistema, al recuperarse de un fallo se deshacen las inconsistencias provocas por la ejecución no terminada de la transaccion.

La simplicidad de las transacciones ACID es especialmente importante en un entorno de base de datos distribuida, donde las transacciones se realizan de forma simultánea.

Oracle 11g no exporta algunas tablas

jueves, abril 26th, 2012

En la versión Enterprise de Oracle 11g se añadió la funcionalidad de no exportar tablas con una cantidad de cero(0) registros. Esto yo asumo que lo hizo para la economización de espacio, CPU o cualquier otra razón. Pero para los que ocupamos esta utilidad para mover bases de datos enteras y trasaladarlas de un lado a otro, creo que nos dejo de ser muy util.

El tema se registra en que un tabla con creo registros no tiene ubicado espacio, por lo que no se exportará. Por lo mismo debemos saber que tablas son las que poseen cero registro y aplicar

ALTER TABLE nombre_tabla ALLOCATE EXTENT; 

Con esto la tabla ya va a ser exportada aun cuando no posea registros.
Para ello es ulti la consulta.
Con ella generamos la siguiente

 SELECT 'ALTER TABLE ' || table_name || ' ALLOCATE EXTENT; '
 FROM all_Tables
 WHERE owner = '&usuario' and num_rows=0;

La salida de esta script la ejecutas luego y estarás listo para exportar.