Instalar Oracle 10G R2 en Mac OS X


Para Snow Leopard, con esto la arman: Blog de Ray
Después de que sólo estuvo disponible para versión server del sistema operativo y para equipos con procesadores PPC, no hace mucho Oracle por fin puso a disposición la versión 10G R2 de la base de datos para equipos con procesador intel, para versiones 10.5 y superiores del sistema operativo. Si bien tiene sus limitaciones (no RAC, no iSQLPlus, Applications Server, entre otros), para efectos de pruebas, ayuda en tanto que evita tener que requerir de una máquina virtual.
La instalación está bien documentada y no hay mayor problema con ello, más si me ví cauto en modificar algunos parámetros del sistema operativo, así como corroborar que el acceso a la bd por otros usuarios no oracle debe ser mediante el uso de un alias de tnsnames y no de manera local (bequeath).
Sólo como observación, esta instalación es para pruebas únicamente, y puede no seguir recomendaciones de seguiridad, por lo que para su para un sistema en producción, consultar con su DBA.

Información

Prerequisitos

  • Sistema Operativo: Mac OS X 10.5.4 o Superior
  • Procesador: Intel, 32 o 64 bits
  • Software Adicional: Xcode, disponible en los medios de instalación del sistema operativo, o bien en el sitio de apple.
  • Espacio en Disco: Unos 5 Gb en total, incluyendo sw de instalación
  • Memoria: 1 Gb Mínimo, ideal de 2 Gb para arriba. Yo uso 4 y sin impacto alguno en desempeño

Creación de Usuarios y grupos

Si se tiene instalado la versión server del sistema operativa, existe una herramienta gráfica, más ocupo la versión estándar así que hay que utilizar línea de comandos. Primero que nada hay que abrir una nueva sesión de la terminal y hacer un sudo para un nuevo shell, de tal manera que estemos con el usuario root y podamos llevar a cabo tareas administrativas así como otras al finalizar la instalación. Será necesario proporcionar la contraseña del usuario administrador.
sudo sh
Password:
Ahora, teclear lo siguiente para crear los grupos oinstall, dba y el usuario oracle, al final, establecemos contraseña para el usuario. La penúltima línea evita mostrar el nombre de usuario en la pantalla de login:
dscl . -create /groups/oinstall
dscl . -append /groups/oinstall gid 4200
dscl . -append /groups/oinstall passwd "*"

dscl . -create /groups/dba
dscl . -append /groups/dba gid 4201
dscl . -append /groups/dba passwd "*"

dscl . -create /users/oracle
dscl . -append /users/oracle uid 4200
dscl . -append /users/oracle gid 4200
dscl . -append /users/oracle gid 4201
dscl . -append /users/oracle shell /bin/bash
dscl . -append /users/oracle home /Users/oracle
dscl . -append /users/oracle realname "Oracle software owner"
mkdir /Users/oracle
chown oracle:oinstall /Users/oracle
defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add oracle
passwd oracle
Para validar que todo quedó de acuerdo a lo esperado, teclear id oracle, lo cual debe mostrar algo como lo siguiente:
uid=502(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)

Parámetros del Kernel

Para el correcto funcionamiento del software de oracle, será necesario modificar algunos parámetros del kernel. Dado que son varios, y algunos requieren reinstalación, se listan aquí sólo los que son necesarios, así como algunos adicionales a establecer en la sesión del usuario. Estos, probados en una Mac Book Pro intel de 2da generación.
Crear o editar el archivo /etc/sysctl.conf con los siguientes parámetros:
kern.sysv.shmall=2097152
kern.sysv.shmmni=4096
kern.maxproc=1024
kern.maxprocperuid=512
Abrir otra ventana de terminal e iniciar sesión con el usuario oracle, crear el archivo .bash_profile y agregar las siguientes líneas:
# Must match kern.maxprocperuid
ulimit -Hu 266
ulimit -Su 266
# Must match kern.maxfilesperproc
ulimit -Hn 10240
ulimit -Sn 10240
# Evitar fallas en la creación de la BD
ulimit -s 32000

Crear directorios para instalación

Para utilizar la estructura existente en el sistema operativo Mac y una de las sugerencias de Oracle para la instalación, se crearán los directorios bajo /opt, esto en la sesión de root.
mkdir /opt/oracle
mkdir /opt/oraInventory
chown oracle:oinstall /opt/oraInventory/
chown oracle:oinstall /opt/oracle/
chmod 775 /opt/oracle
chmod 775 /opt/oraInventory

Preparar la instalación

En la sesión de oracle, agregar lo siguiente al archivo .bash_profile. Modificar el
ORACLE_SID
al que deseen utilizar
umask 022
ORACLE_BASE=/opt/oracle
ORACLE_SID=mbp
ORACLE_HOME=/opt/oracle/oracle/product/10.2.0/db_1
DYLD_LIBRARY_PATH=$ORACLE_HOME/lib
ORACLE_HOSTAME=localhost
TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_BASE ORACLE_SID ORACLE_HOME DYLD_LIBRARY_PATH ORACLE_HOSTNAME TNS_ADMIN
PATH=$PATH:$ORACLE_HOME/bin
Teclear lo siguiente para establecer las variables:
. ./.bash_profile
Y validar que existan utilizando echo.
Establecer la variable DISPLAY:
export DISPLAY=:0.0

Iniciar la instalación

Cambiarse al directorio donde se bajó el software, folder Disk1. Desde ahí teclear lo siguiente:
./runInstaller
Esto iniciará una ventana gráfica con el wizard de instalación. Utilizar la instalación típica y cambiar la información sólo si se desea:
  • Oracle Home Location: /opt/oracle/oracle/product/10.2.0/db_1
  • Installation Type: Enterprise Edition
  • UNIX DBA Group: dba
  • Create Starter Database: Seleccionado
  • Global Database Name: Igual que el valor para $ORACLE_SID
  • Database Password: Password para system y sys
De aquí para adelante, seguir las instrucciones. Al final se creará la bd de ejemplo, donde algunas cuentas estándar estarán bloqueadar (scott, hr, ...). Seleccionar el botón Password Management sí se desean activar en este momento.

Subir y bajar la base de datos

Con el usuario oracle, conectarse a sqlplus de la siguiente manera y utilizar startup/shutdown para iniciar y dar de baja la base de datos:
sqlplus /nolog
sql> conn / as sysdba
sql> startup
sql> shutdown

Asegurar conectividad con otros usuarios del sistema operativo

Ya para efectos de trabajar con la base, y no tener que utilizar el usuario oracle, se requieren algunos pasos adicionales, considerando que no es posible hacer una conexión local (bequeath), y ésta debe hacerse vía tcp.
Primero, en la base de datos, modificar el parámetro local_listener, en este caso, para escuchar por el puerto 10521. Hecho esto, por si las dudas subir y bajar la bd para que tome el parámetro.
alter system set local_listener='(address=(protocol=TCP)(host=localhost)(port=10521))' ;
alter system register ;
Ahora, desde sistema operativo, hay que subir el listener:
lsnrctl start
Crear o editar el archivo tnsnames.ora:
vi $TNS_ADMIN/tnsnames.ora
Para agregar el alias a la bd, utilizando el SID definido para la instalación:
mbp =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 10521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = mbp)
    )
  )

Verificar acceso con otros usuarios

Logearse con el usuario con que se desea conectarse a oracle y teclear lo siguiente para ver la definición del .bash_profile de oracle y copiar lo que se muestre. Posteriormente editar el .bash_profile del usuario y agregar las líneas copiadas.
more /Users/oracle/.bash_profile
Validar que funciona la conectividad:
sqlplus /nolog
sql> conn system@mbp
De así desearlo, agregar el usuario al grupo dba, para no requerir proporcionar los passwords de sys y system:
dscl . -append /Groups/dba GroupMembership usuario

6 comentarios:

  1. Hola, como puedes instalar sobre opt si no se puede lanzar el instalador como root ni con sudo

    Gracias
    ReplyDelete
  2. Antes de iniciar la instalación, crea con root el subdirectorio sobre opt y modifícale los permisos.
    ReplyDelete
  3. Hola yo tengo instalado oracle en snow leopard y funciona de maravilla, hace migraciones y todo tipo de administración, ahora he querido instalarlo en el macbook de un amigo, una vez instalado desde sql developer no me conecta. Creo que he seguido todo los pasos pero no hay manera. Mi pregunta es ¿con esta instalación que haces funciona sin problemas en snow leopard? pues yo tuve que hacer mas modificaciones cuando segui un blog en inglés
    ReplyDelete
  4. No he actualizado a snow leopard aún, así que no podría decirte si funciona de la misma manera.
    Habría que diagnosticar primero desde sqlplus, sobretodo por que no funciona como una instalación local, hay que declarar el alias en el tnsnames para conectarse.
    Del sqldeveloper, sobretodo por la cuestión de que utiliza jdbc para la conexión habría que probar utilizando el service_name en lugar del SID
    ReplyDelete
  5. Hola a mi sale este error:
    ] : kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
    Exception in thread "main" java.lang.InternalError: Can't connect to window server - not enough permissions.
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1823)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1720)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1045)
    at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.awt.NativeLibLoader.loadLibraries(NativeLibLoader.java:38)
    at sun.awt.DebugHelper.(DebugHelper.java:29)
    at java.awt.Component.(Component.java:560)
    ReplyDelete
  6. Por lo que se ve del error parece ser un problema de privilegios. Valida que los usuarios creados esten asignados a los grupos descritos.
    ReplyDelete

No spam