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

    • DROP DATABASE

    • 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

Respon

El contingut d'aquest camp es manté privat i no es mostrarà públicament.
  • Les línies i paràgrafs es trenquen automàticament.
  • Links to specified hosts will have a rel="nofollow" added to them.

  • Les adreces de pàgines web i de correu electrònic es tornen automàticament en enllaços.

Més informació sobre opcions de format

CAPTCHA
Aquesta comprovació es fa per tal d'evitar l'spam
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.

Cerca amb el motor de Google

Google