Crear BD Oracle en Windows y Linux

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..

 

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


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:

  $ cksum ship.db.cpio.gz
  306399691 611574473 ship.db.cpio.gz

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.

xhost +
su
export DISPLAY=:0.0
gunzip ship.db.cpio.gz
cpio -idmv < ship.db.cpio

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.

apt-get install libc6-dev binutils

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.

wajig install gcc make libmotif3 lesstif2 rpm

Los sistemas operativos certificados tienen ciertas utilidades
en diferentes sitios que Debian. Añade estos enlaces
simbólicos:

ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename

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:

grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo

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):

su - root
cd /root
dd if=/dev/zero of=/root/tmpswp bs=1k count=500000
chmod 600 tmpswp
mkswap tmpswp
swapon tmpswp
grep SwapTotal /proc/meminfo

El espacio en disco recomendable debería ser mayor de 4Gb, que
se consumirá como sigue:


Table 1. espacio requerido en disco

espacio en /tmp para el Oracle
Universal Installer
400 Mb
Ficheros de instalación 1.5 Gb
Productos opcionales de Oracle Database 10g que
vienen en el "Companion CD"
1 Gb
Ficheros de una base de datos 1.2 Gb
Total 4.1 Gb

Este comando muestra el espacio libre en
disco:

df -k /

Límites del kernel

Ahora vamos a justar algunos parametros del kernel. Priumero
vemos la configuración de nuestro sistema:

/sbin/sysctl -a | grep sem
/sbin/sysctl -a | grep shm
/sbin/sysctl -a | grep file-max
/sbin/sysctl -a | grep ip_local_port_range

La salida debe ser

kernel.sem = 250 32000 100 128

kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 2147483648

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

asi que editamos
/etc/sysctl.conf y añadimos o cambiamos estas
líneas:

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

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:

/sbin/sysctl -p

Para ver los límites del shell ejecutamos ulimit
-a
, que mostrará algo similar a esto:

core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
max memory size       (kbytes, -m) unlimited
open files                    (-n) 1024
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) unlimited
cpu time             (seconds, -t) unlimited
max user processes            (-u) 2047
virtual memory        (kbytes, -v) unlimited

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:

*               soft    nproc   2047
*               hard    nproc   16384
*               soft    nofile  1024
*               hard    nofile  65536

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:

session    required     /lib/security/pam_limits.so

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
 fi

Directorios 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:

grep oinstall /etc/group
grep dba /etc/group
grep nobody /etc/group
id oracle
id nobody

Crea los que falten con esto:

/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/groupadd nobody
/usr/sbin/useradd -c "Oracle Software Owner" -g oinstall -G dba oracle
/usr/sbin/useradd -g nobody nobody

# cambiamos el password del usuario oracle
passwd oracle

Creamos el directorio base de oracle
(/u01/app/oracle), y opcionalmente un directorio
de datos para las bases de datos que creemos
(/u02/oradata):

mkdir -p /u01/app/oracle
mkdir -p /u02/oradata
chown -R oracle:oinstall /u01 /u02
chmod -R 775 /u01 /u02

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

su oracle

y
añade esta línea al final de
/home/oracle/.bash_profile:

umask 022

Crea este directorio

mkdir -p /home/oracle/config/10.1.0

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 PATH

Crea este directorio que parece que usa para guardar un fichero
de lock:

mkdir /var/lock/subsys

Instalación

Instalación

Asegurate de que la redirección de X esta activada, y ejecuta el
instalador como usuario oracle:

xhost +
su oracle
# cd al directorio donde descomprimimos
cd /var/install/Disk1

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)

    cat > /etc/redhat-release
    Red Hat Linux release 2.1 (drupal)
    ^D

    y luego ejecutar el instalador

    ./runInstaller 

  • o simplemente, pedirle que ignore los
    prerequisitos:

    ./runInstaller -ignoreSysPrereqs
  • Cuando te pida que ejecutes root.sh, haz esto
    antes:

    ln -s /etc /etc/rc.d

    Pantallas de la instalación


    Table 2. Instalación

    Pantalla Acción
    Bienvenido Pulsa Siguiente.
    Especificar Ubicación de los Archivos Yo usé los valores
    • 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.

    Seleccionar tipo de Tipo de Instalación Selecciona Standard Edition o Enterprise Edition. Yo
    seleccione la primera. Pulsa
    Siguiente.
    Seleccionar Configuración de Base de Datos Yo seleccione "Uso General". Pulsa
    Siguiente.
    Especificar Opciones de Configuración de Base de
    Datos
    Valores:
    • 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.

    Seleccionar Opción de Gestión de Base de
    Datos
    Pulsa Siguiente.
    Especificar Opción de Almacenamiento de Archivo de
    Base de Datos
    Yo seleccioné "Sistema de Archivos" con
    /u02/oradata como directorio de
    almacenamiento de las bases de datos. Pulsa
    Siguiente.
    Especificar Opciones de Copia de Seguridad y
    Recuperación
    No Activar Copias de Seguridad Automáticas. Pulsa
    Siguiente.
    Especificar Contraseñas de Esquema de Base de
    Datos
    Aqui nos pide contraseña para las cuentas SYS,
    SYSTEM, SYSMAN, DBSNMP. Yo escogí "secreto" como contraseña
    única. Pulsa Siguiente.
    Resumen Pulsa Instalar.
    Asistente de Configuración de Base de Datos Cuando el aistente finaliza muestra la 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.

    Privilegios de Configuración Nos pide que ejecutemos un script como root. Lo
    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.
    Fin de Instalación El instalador termina mostrando las URLs de varias
    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 started

    Mensaje de fin de instalación:

    Se han desplegado las siguientes aplicaciones J2EE y se puede 
    acceder a ellas en las siguientes direcciones URL.
    
    URL de Ultra Search:
    http://debian.elpiso:5620/ultrasearch
    
    URL de Herramienta de Administración de Ultra Search:
    http://debian.elpiso:5620/ultrasearch/admin
    
    URL de iSQL*Plus:
    http://debian.elpiso:5560/isqlplus
    
    URL de Enterprise Manager 10g Database Control:
    http://debian.elpiso:5500/em

    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:

    debian:~# netstat -l| grep "5500\|5560\|5620"
    tcp        0      0 *:5560                  *:*                     LISTEN
    tcp        0      0 *:5500                  *:*                     LISTEN
    1. La base de datos y el proceso Oracle Net listener estan
      ejecutandose.

    2. Oracle
      Enterprise Manager Database Control
      y iSQL*Plus estan
      ejecutandose y son accesible con un navegador.


    Table 3. Servicios

    Puerto Servicio Comando
    1521 Listener. $ORACLE_HOME/bin/tnslsnr
    5560 iSQL*Plus  
    5500 Oracle Database Control corriendo como aplicación web
    de OC4J.
    $ORACLE_HOME/jdk/bin/java

    Los siguientes son procesos de Oracle que aparecen tras la
    instalación. Podemos verlos con ps -efH.

    iSQL*Plus

    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:

    netstat -l | grep 5560
    Management Agent Watchdog

    Reinicia automaticamente el Oracle Management Agent.
    Comprobamos que esta en ejecución con

    ps -ef | grep emwd
    Oracle Database Control

    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:

    netstat -l | grep 5500
    Oracle Management Agent

    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

    ps -efH | grep emagent

    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:

    oracle@debian:/u01$ sqlplus /nolog
    
    SQL*Plus: Release 10.1.0.2.0 - Production on Dom Jul 4 19:41:32 2004
    
    Copyright (c) 1982, 2004, Oracle.  All rights reserved.
    
    SQL> CONNECT SYS/secreto AS SYSDBA
    Conectado.

    Si aparece un mensaje

    ORA-12705: invalid or unknown NLS parameter value specified

    ejecuta

    unset ORA_NLS10

    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:

    1. 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".

    2. 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:

    NAMES.DEFAULT_DOMAIN = debian
    
    # autentificacion en windows
    # SQLNET.AUTHENTICATION_SERVICES= (NTS)
    
    # prioridad de resolucion de nombres
    NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)

    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/config

    Si has cambiado la variable TNS_ADMIN, quiza
    quieras reiniciar el Listener:

    lsnrctl stop
    lsnrctl start

    Para comprobar que el listener funciona usa
    tnsping:

    oracle@debian:~$ tnsping test.debian
    
    TNS Ping Utility for Linux: Version 10.1.0.2.0 - Production on 04-JUL-2004 22:15:20
    
    Copyright (c) 1997, 2003, Oracle.  All rights reserved.
    
    Archivos de parámetros utilizados:
    /home/oracle/config/sqlnet.ora
    
    
    Adaptador TNSNAMES utilizado para resolver el alias
    Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) 
    (HOST = 192.168.1.36) (PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) 
    (SERVICE_NAME = TEST)))
    Realizado correctamente (0 mseg)

    netca

    Para probar los anteriores ficheros, o configurar otros desde
    cero podemos usar el Asistente de Configuración:

    netca

    Escoge "Local Net Service Name configuration" para probar el
    tnsnames.ora. Un error común:

    Connecting...ORA-12514: TNS:el listener no conoce actualmente 
    el servicio solicitado en el descriptor de conexi�n

    O en inglés

    Connecting...ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect descriptor

    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:

    *:/u01/app/oracle/product/10.1.0/db_1:N
    test:/u01/app/oracle/product/10.1.0/db_1:Y

    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 0

    Hazlo ejecutable

    chmod 755 oracle

    Añadelo a los niveles de ejecución

    ln -s /etc/init.d/oracle /etc/rc.d/rc2.d/S99oracle
    ln -s /etc/init.d/oracle /etc/rc.d/rc3.d/S99oracle
    ln -s /etc/init.d/oracle /etc/rc.d/rc4.d/S99oracle
    ln -s /etc/init.d/oracle /etc/rc.d/rc0.d/K01oracle
    ln -s /etc/init.d/oracle /etc/rc.d/rc6.d/K01oracle

    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:

    wajig start oracle
    wajig stop oracle

    Veras algo como esto:

    debian:/etc/init.d# wajig start oracle
    Starting Oracle:
    LSNRCTL for Linux: Version 10.1.0.2.0 - Production on 26-JUN-2004 13:18:52
    
    Copyright (c) 1991, 2004, Oracle.  All rights reserved.
    
    Message 1070 not found; No message file for product=network, facility=TNSTNS-12545: 
    Message 12545 not found; No message file for product=network, facility=TNS
     TNS-12560: Message 12560 not found; No message file for product=network, facility=TNS
      TNS-00515: Message 515 not found; No message file for product=network, facility=TNS
       Linux Error: 2: No such file or directory
    
    SQL*Plus: Release 10.1.0.2.0 - Production on Sat Jun 26 13:18:55 2004
    
    Copyright (c) 1982, 2004, Oracle.  All rights reserved.
    
    SQL> Connected to an idle instance.
    SQL> ORACLE instance started.
    
    Total System Global Area  188743680 bytes
    Fixed Size                   778036 bytes
    Variable Size             162537676 bytes
    Database Buffers           25165824 bytes
    Redo Buffers                 262144 bytes
    Database mounted.
    Database opened.
    SQL> Disconnected from Oracle Database 10g Release 10.1.0.2.0 - Production
    
    Database "test" warm started.
    touch: cannot touch `/var/lock/subsys/oracle': No such file or directory
    OK

    Si queremos hacerlo manual, arrancamos el listener
    TNS:

    lsnrctl start

    Para ver si el
    listener se está ejecutando podemos hacer ps -ef | grep
    lsnr
    , o netstat -a | grep 1521.

    Usar Oracle

    sqlplus scott/tiger@test

    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

    Contenido relacionado

    • Para instalar una base de datos Oracle sobre una distribución Linux lo mejor es seguir las indicaciones de Oracle. En Oracle by example - Oracle database 10g on a single instance Oracle explica de una manera bastante clara cómo hacerlo.

      Una cosa importante a tener en cuenta es que cada distribución LINUX tiene sus peculiaridades, y que no todo sirve para todas. Lo más recomendable es utilizar las que están certificadas por Oracle, eso no garantiza que no surgan problemas, pero por lo menos Oracle los documenta. Oracle suele certificar para distribuciones SUSE en su versión empresarial (SLES) y RedHat.

      Una buena opción, si queremos tener lo más parecido a las versiones empresariales, y poder ir actualizando nuestro SO, puede ser utilizar Open SUSE o CentOS. Otra puede ser utilizar su propia distribución Oracle Enterprise Linux

       

    • Saludos
      Estoy instalando el Oracle 10g sobre Windows server 2008 R2, le doy al SETUP que instale como administrador y sale el prompt MSDOS de Windows, empieza la instalación pero ahí se queda y se cae, no sé qué pasa alguien puede colaborarme.
      Le agradezco toda su colaboración
    • Para aprender cómo instalar Pentaho sobre Linux puedes seguir el video tutorial que se ha publicado en el blog de Omar. El vídeo dura unos 40 minutos, durante los que Omar Palomino realiza y va explicando paso a paso una instalación de la versión Deployment de Pentaho 1.7 sobre una distribución Linux Fedora 9. Los pasos principales son:

      • Instalación de JDK
      • Instalación de Apache Tomcat
      • Instalación de ANT
      • Instalación de Pentaho, versión Deployment

      Si prefieres Descarga video tutorial pentahodescargartelo para visualizarlo con más calidad, podrás distinguir mejor lo que va escribiendo en la linea de comandos.

    • Para los que quieren estar siempre a la última y para los amantes del riesgo, desde el 4 de mayo está disponible la última versión del servidor de base de datos de Oracle para Windows Vista. Se puede descargar en Oracle Database 10g Release 2 para Windows Vista

      Si alguien se anima y la prueba puede ser interesante cualquier comentario al respecto..

    • Cómo arrancar el listener de Oracle

      Para que desde fuera del servidor donde está instalada la base de datos se pueda acceder a la misma el servicio denominado listener ha de estar activado, o como se suele decir, ha de estar escuchando.

      Puede pasar que la base de datos esté correctamente levantada y no se pueda conectar desde otros servidores, que también están correctamente configurados (TNSNAMES correcto, etc.). En estos casos puede ser que el listener tenga algún problema, o simplemente que no haya sido iniciado. En ese caso tan sólo habría que arrancar el listener.

      Consultar el estado del mismo, arrancarlo o pararlo es muy sencillo. Sólo hay que abrir una sesión de línea de comandos (consola, terminal, etc. ) con el usuario con el que se ha instalado la base de datos, y ejecutar el comando lsnrctl con los siguientes parámetros para cada caso:

     

     

     

    Gestion del Conocimiento    |    Business Intelligence y Analítica    |     Bases de Datos    |      ERP     |      CRM      |     Tendencias tecnológicas