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.
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.
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.
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
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
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:
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
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
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.)
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:
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:
NAMES.DEFAULT_DOMAIN = debian
# autentificacion en windows
# SQLNET.AUTHENTICATION_SERVICES= (NTS)
# prioridad de resolucion de nombres
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
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:
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.
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
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:
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