Crear BD Oracle en Windows y Linux
Submitted by cfb on 13 February, 2007 - 02:22
En el site www.ajpdsoft.com se publica el manual online Instalacion Oracle 9i sobre Windows, donde se explica paso a paso y con captura de pantallas cómo instalar una BD Oracle 9i sobre windows, cómo solucionar algunos de los errores típicos que suelen aparecer durante la instalación, cómo levantar el listener, comprobar el estado de la base de datos, y alguna cosa más..
- Versión para impresión
- Inicie sesión o regístrese para enviar comentarios
- 43346 lecturas
-


Crear BD Oracle sobre Debian
En este artículo se presenta una completa guia 'paso a paso', confeccionada por Alejandro Ramirez para instalar una base de datos Oracle 10g sobre Debian.
Está todo en castellano, y cada paso está muy bien explicado. La guia es para Debian, pero puede ser fácilmente extrapolable a otros SO Linux.
Oracle en Debian
Alejandro Ramírez (jano@jano.com.es)
Abstract
Oracle en Debian
Table of Contents
Instalar Oracle
Estas instrucciones de instalación están adaptadas de Oracle®
Database Quick Installation Guide 10g Release 1 (10.1) for Linux
x86. (requiere registro gratuito). Visita también Oracle Database Documentation Library (requiere registro
gratuito).
Descargar Oracle 10g
Ve a http://otn.oracle.com/software/products/database/oracle10g/index.html
y descargar el siguiente fichero:
Note
cksum
es una utilidad básica del sistema que muestra el CRC y tamaño en
bytes de un fichero.
Descomprímelo. Aparecerá un directorio Disk1.
Note
Con las tres primeras líneas hacemos login como root y
permitimos que este usuario root use el servidor X del usuario
inicial. Lo necesitaremos luego para lanzar el instalador. cpio es
un programa de archivado similar a tar.
Preparar el sistema
Instalar librerías y herramientas
Instala
libc6-dev
2.3.2.ds1-12. Una librería C usada por casi todos los
programas escritos en ese lenguaje. Si no la instalamos, algunos
ejecutables de Oracle en orahome/bin no se
crearán adecuadamente porque requieren ficheros de cabecera en
/usr/include.
binutils
2.14.90.0.7-8. Herramientas para desarrollar programas
en Unix. En realiad esto solo es requerido por Oracle 8.
Instala lo siguiente:
wajig:
es un frontend para usar apt-get, apt-cache, dpkg, e
init.d.
gcc:
el compilador de c.
make:
una herramienta de construcción de proyectos.
libmotif3:
librerías compartidas para ejecutar programas OpenMotif.
lesstif2:
librerías compartidas para LessTif, libXm, libMrm.
rpm:
instalador de paquetes Debian. Funciona al margen del instalador
de paquetes de Debian.
Los sistemas operativos certificados tienen ciertas utilidades
en diferentes sitios que Debian. Añade estos enlaces
simbólicos:
Espacio en disco
Según Oracle, el sistema debe tener 512Mb (524288 KB) de RAM y 1
Gb (1048576 KB) de swap o el doble de RAM. En sistemas con 2 o más Gb
de RAM, la partición de intercambio puede ser entre una y dos veces el
tamaño de la RAM. Siendo realistas, 512Mb de RAM es lo mínimo para
poder arrancar el sistema, no para trabajar con Oracle.
Para ver la cantidad de RAM y swap:
Puedes obtener más espacio de swap usando un fichero en vez de
reparticionando, aunque si estas configurando un servidor es más
aconsejable reparticionar. Aqui se muestra como crear un fichero de
511995 kB y usarlo como swap (hazlo solo si necesitas más
swap):
El espacio en disco recomendable debería ser mayor de 4Gb, que
se consumirá como sigue:
Table 1. espacio requerido en disco
Universal Installer
vienen en el "Companion CD"
Este comando muestra el espacio libre en
disco:
Límites del kernel
Ahora vamos a justar algunos parametros del kernel. Priumero
vemos la configuración de nuestro sistema:
La salida debe ser
asi que editamos
/etc/sysctl.conf y añadimos o cambiamos estas
líneas:
Al reiniciar el
sistema, /etc/inittab invocará el script
/etc/init.d/bootmisc.sh que leera la
configuración del kernel de /etc/sysctl.conf.
Pero si queremos que los cambios apliquen inmediatamente hacemos
esto:
Para ver los límites del shell ejecutamos ulimit
-a, que mostrará algo similar a esto:
Por defecto, hay
un límite por usuario, de 1024 descriptores de fichero, y 2047
procesos. Vamos a editar el fichero
/etc/security/limits.conf para ajustar estos
valores:
Las dos últimas líneas
imponen un límite inicial de 1024, pero permiten que un usuario
aumente el límite a 65536 usando el comando ulimit -n
65536. Las dos primeras líneas limitan el número de
procesos.
Añade lo siguiente a
/etc/pam.d/login:
pam_limits.so
es el módulo PAM que procesa la configuración del fichero
/etc/security/limits.conf que cambiamos
antes.
Suponiendo que el usuario oracle usa un shell Bash, Bourne, o
Korn, añade lo siguiente a
$HOME/.bash_profile:
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fiDirectorios y permisos
Creamos un usuario (oracle) y un par de grupos
oinstall: propietario de los ficheros de Oracle. Este
grupo se usa cuando los dbas no mantienen la instalación de
software. En caso contrario, bastaría con hacerlo todo con el
grupo dba.
dba: grupo de usuarios con privilegios SYSDBA.
Para comprobar si existen haz:
Crea los que falten con esto:
Creamos el directorio base de oracle
(/u01/app/oracle), y opcionalmente un directorio
de datos para las bases de datos que creemos
(/u02/oradata):
El directorio base debería tener 2.5Gb
(2621440 KB) libres o 3.7Gb (3879731 KB) si no creamos un directorio
de datos. Cuando no creamos un directorio de datos, oracle usa
/u01/app/oracle/oradata. Cada base de datos ocupa
un subdirectorio del directorio de datos.
Haz login como oracle
y
añade esta línea al final de
/home/oracle/.bash_profile:
Crea este directorio
Añade estas variables de entorno:
ORACLE_BASE=/u01/app/oracle ORACLE_HOME=/u01/app/oracle/product/10.1.0/db_1; export ORACLE_HOME ORACLE_SID=test; export ORACLE_SID ORACLE_TERM=xterm; export ORACLE_TERM ORACLE_OWNER=oracle; export ORACLE_OWNER #TNS_ADMIN=/home/oracle/config/10.1.0 export TNS_ADMIN NLS_LANG=SPANISH_SPAIN.WE8ISO8859P1; export NLS_LANG #ORA_NLS10=${ORACLE_HOME}/db_1/nls/data; export ORA_NLS10 CLASSPATH=${CLASSPATH}:${ORACLE_HOME}/jdbc/lib/classes12.zip LD_LIBRARY_PATH=${ORACLE_HOME}/lib; export LD_LIBRARY_PATH DISABLE_HUGETLBFS=1; export DISABLE_HUGETLBFS TEMP=/tmp; export TEMP TMPDIR=/tmp; export TMP PATH=$PATH:/u01/app/oracle/product/10.1.0/db_1/bin; export PATHCrea este directorio que parece que usa para guardar un fichero
de lock:
Instalación
Instalación
Asegurate de que la redirección de X esta activada, y ejecuta el
instalador como usuario oracle:
Puesto que el instalador solo se ejecuta en sistemas operativos
certificados (Red-Hat o United Linux), podemos hacer una de dos cosas
para arrancar el instalador:
engañar al instalador para que piense que esta en Red-Hat
(la ^D es Ctrl+D)
y luego ejecutar el instalador
o simplemente, pedirle que ignore los
prerequisitos:
Cuando te pida que ejecutes root.sh, haz esto
antes:
Pantallas de la instalación
Table 2. Instalación
Ruta de Acceso:
/var/install/oracle/Disk1/stage/products.xml
Nombre: OraDb10g_home1
Ruta de acceso:
/u01/app/oracle/product/10.1.0/db_1
Pulsa
Siguiente.
seleccione la primera. Pulsa
Siguiente.
Siguiente.
Datos
Nombre de la Base de Datos Global:
test.debian
SID: test
Seleccionar juego de caracteres de Base de
Datos: Europeo Occidental WE8ISO8859P1.
Crear base de datos con esquemas de ejemplo:
Seleccionado.
En /etc/hosts tengo
una línea que vincula mi IP con el nombre debian, de modo
que test.debian, significará base de datos "test" en el
sistema con IP 192.168.1.36 (que es mi IP). Pulsa
Siguiente.
Datos
Base de Datos
/u02/oradata como directorio de
almacenamiento de las bases de datos. Pulsa
Siguiente.
Recuperación
Siguiente.
Datos
SYSTEM, SYSMAN, DBSNMP. Yo escogí "secreto" como contraseña
única. Pulsa Siguiente.
información:
Nombre de la Base de Datos Global:
test.debian
Identificador del Sistema (SID): test
Nombre de Archivo de Parámetros del Servidor:
/u01/app/oracle/product/10.1.0/db_1/dbs/spfiletest.ora
Enterprise Manager: http://debian.elpiso:5500/em
También nos indica que todas las cuentas
excepto SYS, SYSTEM, DBSNMP, SYSMAN, estan bloqueadas. Pulsa
Aceptar.
hacemos. Aceptamos los valores por defecto. En mi caso el
script termina tras diez minutos esperando a conectarse con
el demonio "Cluster Ready Service". Ignoro este error,
vuelvo al instalador, y pulso
Aceptar.
herramientas. Anoto dichas URLs y pulso
Salir.
Mensajes de consola al ejecutar root.sh:
debian:/u01/app/oracle/product/10.1.0/db_1# ./root.sh Running Oracle10 root.sh script... \nThe following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracle/product/10.1.0/db_1 Enter the full pathname of the local bin directory: [/usr/local/bin]: Copying dbhome to /usr/local/bin ... Copying oraenv to /usr/local/bin ... Copying coraenv to /usr/local/bin ... Adding entry to /etc/oratab file... Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root.sh script. Now product-specific root actions will be performed. Successfully accumulated necessary OCR keys. Creating OCR keys for user 'root', privgrp 'root'.. Operation successful. Oracle Cluster Registry for cluster has been initialized Adding to inittab Checking the status of Oracle init process... Expecting the CRS daemons to be up within 600 seconds. Giving up: Oracle CSS stack appears NOT to be running. Oracle CSS service would not start as installed Automatic Storage Management(ASM) cannot be used until Oracle CSS service is startedMensaje de fin de instalación:
Usuarios:
DBSNMP
SYS. Es el único usuario con acceso al esquema SYS, que
guarda las tablas y vistas para el diccionario de datos de la
base de datos. Solo se usa para cambiar los parametros de
almacenamiento del diccionario de datos. Este usuario se crea
automaticamente al crear una base de datos y tiene rol
DBA.
SYSMAN
SYSTEM. Solo se usa para crear tablas y vistas con
información realtiva a la administración de la base de datos.
Este usuario se crea automaticamente al crear una base de datos
y tiene rol DBA.
Roles
SYSDBA. Puede conectarse como usuario SYS. Tiene los
siguientes privilegios especiales:
Perform STARTUP and SHUTDOWN operations
ALTER DATABASE: open, mount, back up, or change
character set
CREATE DATABASE
DROPDATABASE
CREATE SPFILE
ALTER DATABASE ARCHIVELOG
ALTER DATABASE RECOVER
Includes the RESTRICTED SESSION privilege
SYSOPER. Permite tareas administrativas sin acceso a los
datos de usuario. Tiene los siguientes privilegios
especiales:
Perform STARTUP and SHUTDOWN operations
CREATE SPFILE
ALTER DATABASE OPEN/MOUNT/BACKUP
ALTER DATABASE ARCHIVELOG
ALTER DATABASE RECOVER (Complete recovery only. Any
form of incomplete recovery, such as UNTIL
TIME|CHANGE|CANCEL|CONTROLFILE requires connecting as
SYSDBA.)
Includes the RESTRICTED SESSION privilege.
Comprobación
Compruebo que servicios estan a la escucha:
La base de datos y el proceso Oracle Net listener estan
ejecutandose.
Oracle
Enterprise Manager Database Control y iSQL*Plus estan
ejecutandose y son accesible con un navegador.
Table 3. Servicios
de OC4J.
Los siguientes son procesos de Oracle que aparecen tras la
instalación. Podemos verlos con ps -efH.
Consola para trabajar con PL/SQL. Disponible como
aplicación web en http://debian.elpiso:5560/isqlplus.
Teniendo en cuenta la URL, debería haber un puerto a la escucha
en 5560:
Reinicia automaticamente el Oracle Management Agent.
Comprobamos que esta en ejecución con
El Database Control es una aplicación Web que podemos usar
para administrar una base de datos Oracle. Conecto en la URL
http://debian.elpiso:5500/em
usando usuario SYS y role SYSDBA. El password es el que
especificamos durante la instalación. Teniendo en cuenta la URL,
debería haber un puerto a la escucha en 5500:
The Oracle Management Agent is responsible for monitoring
all targets on the host, for communicating that information to
the middle-tier Management Service, and for managing and
maintaining the host and the products installed on the host.
Comprobamos que esta en ejecución con
Yo no lo uso, asi que le hice un kill al emwd y al emagent
(por ese orden).
The listener is down: listener "LISTENER" is not running using
/u01/app/oracle/product/10.1.0/db_1/network/admin/listener.ora
Para conectarte a SQL*PLUS haz esto:
Si aparece un mensaje
ejecuta
Net Services
Oracle Net es un componente de Net Services que permite la
conexión de clientes a la base de datos. Net Services se conocía
anteriormente como Net8, y antes como SQL*Net.
En UNIX, Oracle busca el fichero tnsnames.ora
en los sitios siguientes:
$ORACLE_HOME/network/admin
/var/opt/oracle
Un directorio apuntado por la variable
TNS_ADMIN. Cuando hay varios usuarios usando un
mismo fichero tnsnames, lo más comodo es que apunten la variable
TNS_ADMIN a un directorio compartido.
Cuando conectamos usando usuario/password@SID, oracle sigue estos
pasos:
Lee el valor de NAMES.DEFAULT_DOMAIN en el fichero
sqlnet.ora, y se lo añade al SID de la base
de datos. Si el SID es test, y el valor leído es debian, la cadena
resultante es "test.debian".
Resuelve la cadena anterior en el fichero
tnsnames.ora.
Si conectamos usando usuario/password@SID.dominio, oracle no lee
el fichero sqlnet.ora. Va directamente al fichero
tnsnames.ora.
Un ejemplo de sqlnet.ora:
Un ejemplo de tnsnames.ora:
EXTPROC_CONNECTION_DATA.DEBIAN = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC1) ) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) ) TEST.DEBIAN = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.1.36) (PORT = 1521) ) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TEST) ) )El listener usa el fichero listener.ora, que también debe estar en
el directorio apuntado por TNS_ADMIN. Este es un ejemplo del contenido
del fichero:
# LISTENER is the name of the listener LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC0) ) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.1.36) (PORT = 1521) ) ) ) ) # SID list of the listener LISTENER SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/10.1.0/db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = test.debian) (ORACLE_HOME = /u01/app/oracle/product/10.1.0/db_1) (SID_NAME = test) ) ) # directorio de log para el listener LISTENER LOG_DIRECTORY_LISTENER = /home/oracle/configSi has cambiado la variable TNS_ADMIN, quiza
quieras reiniciar el Listener:
Para comprobar que el listener funciona usa
tnsping:
netca
Para probar los anteriores ficheros, o configurar otros desde
cero podemos usar el Asistente de Configuración:
Escoge "Local Net Service Name configuration" para probar el
tnsnames.ora. Un error común:
O en inglés
Arrancar y parar Oracle
Edita /etc/oratab para indicar que bases de
datos deben arrancar con el sistema. Aqui solo arranco la base de datos
test asi que todo el contenido de mi fichero es este:
Crea el script de arranque en
/etc/init.d/oracle con este
contenido:
#!/bin/bash # # Run-level Startup script for the Oracle Instance and Listener # # chkconfig: 345 91 19 # description: Startup/Shutdown Oracle listener and instance ORA_HOME="/u01/app/oracle/product/10.1.0/db_1" ORA_OWNR="oracle" # if the executables do not exist -- display error if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ] then echo "Oracle startup: cannot start" exit 1 fi # depending on parameter -- startup, shutdown, restart # of the instance and listener or usage display case "$1" in start) # Oracle listener and instance startup echo -n "Starting Oracle: " # start TNS listener su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl start" # start database su - $ORA_OWNR -c $ORA_HOME/bin/dbstart touch /var/lock/subsys/oracle echo "OK" ;; stop) # Oracle listener and instance shutdown echo -n "Shutdown Oracle: " # stop TNS listener su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop" # stop database su - $ORA_OWNR -c $ORA_HOME/bin/dbshut rm -f /var/lock/subsys/oracle echo "OK" ;; reload|restart) $0 stop $0 start ;; *) echo "Usage: $0 start|stop|restart|reload" exit 1 esac exit 0Hazlo ejecutable
Añadelo a los niveles de ejecución
El fichero listener.ora es la configuración
para el SQL*Net Listener. Como valor del campo HOST, ebes poner la IP
del equipo, no el hostname de la máquina. La ruta a este fichero es
/u01/app/oracle/product/10.1.0/db_1/network/admin/listener.ora.
Ahora ya deberiamos poder ejecutar o parar oracle con
wajig:
Veras algo como esto:
Si queremos hacerlo manual, arrancamos el listener
TNS:
Para ver si el
listener se está ejecutando podemos hacer ps -ef | grep
lsnr, o netstat -a | grep 1521.
Usar Oracle
Instalacion de bases de datos Oracle sobre SUSE
En el enlace de Novell Documentacion Oracle sobre SUSE se puede acceder a una serie de documentos de ayuda en formato PDF para realizar instalaciones de diferentes versiones de Oracle sobre otras tantas de SUSE Linux. Recordemos que SLES (SUSE Linux Enterprise Server) es una de las distribuciones Linux que está certificada por Oracle.
La información es completa y fiable, al provenir de una fuente oficial, y la mayoría de documentos se estructuran como guias del tipo 'paso a paso', con impresiones de pantalla para cada etapa.
Si se quiere instalar, por ejemplo, la última versión de la base de datos Oracle sobre la última de SLES sólo hay que ir siguiendo las indicaciones del documento de Instalacion de Oracle 10g release 2 sobre SUSE Linux Enterprise Server 10.
Por supuesto, al ser documentación de Novell, está todo en inglés.
problema conexion desde pyhton y oracle
desde python me intento conectar a Oracle de manera remota con la cadena de conexion conexion=cx_Oracle.connect("usuario/contraseña@host") y me sale el siguiente error ORA-12514 el listener no ha podido resolver el SERVICE_NAME del descriptor de conexion espero pronta respuesta a la posible solucion
gracias