02 noviembre 2011

Arrancar / parar una base de datos Oracle en Linux



Son las 3:00 am, estas jugando una mazmorra en World of Warcraft y suena el teléfono de la guardia, rompiendo tu concentración en el "boss" que estabas a punto de matar.

Operador de CAU: "Se ha caído la maquina xxxxx y tiene una base de datos Oracle, ¿como se arranca?"


¿Quieres evitar esta pesadilla?


Sigue leyendo:


Coloca este codigo en /etc/init.d y crea enlaces en rc5.d y rc3.d para que Oracle Database 10g R2 pueda arrancar o parar automaticamente cuando arranquemos o hagamos una parada controlada del Sistema Operativo Linux.



export ORACLE_BASE=/usr/u01/app/oracle
export ORACLE_HOME=/usr/u01/app/oracle/product/10.2.0.1
export ORACLE_TERM=xterm
export PATH=/home/oracle/bin:$ORACLE_HOME/bin:$PATH
# Se tiene que cambiar el SID 
export ORACLE_SID=orcl
export DISPLAY=:0
export ORACLE_USER=oracle
 
# levantamos el listener, la base de datos y la consola del Database manager
case $1 in
start)
su – “$ORACLE_USER”<<EOO
lsnrctl start
sqlplus /nolog<<EOS
connect / as sysdba
startup
EOS
emctl start dbconsole
EOO
;;
#paramos el listener, la base de datos y la consola del database manager.
stop)
su – “$ORACLE_USER”<<EOO
lsnrctl stop
sqlplus /nolog<<EOS
connect / as sysdba
shutdown immediate
EOS
emctl stop dbconsole
EOO
;;
 
*)
 
echo “Usage: $0 {start|stop}”
;;
esac

15 junio 2011

Acceso a una bbdd MS SQLServer desde Oracle.


Es posible acceder a bases de datos no Oracle (Si, hay gente que no cree, en Oracle y adquiere "bases de datos" de otros fabricantes) de forma transparente con Oracle Transparent Gateway, usando una la arquitectura de servicios heterogéneos.




La arquitectura de servicios heterogéneos se basa en la siguiente configuración:

Se especifica una entrada de TNS en el fichero
 tnsnames.ora que resuelva una conexión al servidor, puerto y nombre de servicio determinado, con el parámetro HS=OK.. En este ejemplo vamos a suponer que queremos extraer datos de una bbdd MS SQL Server 2008 R2, mediante la ejecución de una función PL/SQL.

Pasos a seguir:

  • Instalar en el diccionario los servicios heterogéneos.
  • Configurar el tnsnames.ora.
  • Configurar el listener.ora.
  • Comprobar que ambos ficheros funcionan correctamente.
  • Configurar el ODBC para la bbdd MS server.
  • Crear el DBLINK hacia la bbdd MS Server
  • Ejecutar una consulta mediante ese dblink. 

 Instalar en el diccionario los servicios heterogéneos.

Hay que ejecutar el siguiente código, como usuario SYS.:

@? $ORACLE_HOME/rdbms/admin/caths.sql

Para verificar que se han instalado correctamente el diccionario de servicios heterogéneos lo podemos  verificar de la siguiente manera:

SQL> DESCRIBE HS_FDS_INST;

Si no devuelve error alguno se ha ejecutado/instalado el catálogo de servicios heterogéneos adecuadamente.


 Configurar el fichero listener.ora

# listener.ora Network Configuration File: /opt/oracle/product/11gR2/db/network/admin/listener.ora
# Generated by Oracle configuration tools.
 LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = server_name)(PORT = 1521))
    )  
)
SID_LIST_LISTENER=
   (SID_LIST=
      (SID_DESC= 
         (SID_NAME=dg4msql)
         (ORACLE_HOME=/opt/oracle/product/11gR2/db)
          (ENVS=LD_LIBRARY_PATH=/usr/lib64:/opt/oracle/product/11gR2/db/dg4msql/driver/lib)
         (PROGRAM=dg4msql)       
      )
)
ADR_BASE_LISTENER = /opt/oracle

dg4msql es el Oracle Database Gateway for MS SQL Server, se puede instalar en el nodo Linux, el nodo Windows o en un  tercer nodo independiente. DG4MSQL 11i R2 esta soportado para  Windows 2008 R2 64bit.

 Configurar el fichero TNSNAMES.ora



# tnsnames.ora Network Configuration File: /opt/oracle/product/11gR2/db/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

#Maquina donde se haya el MS SQLServer
MSSQL=
   (DESCRIPTION=
      (ADDRESS=
         (PROTOCOL=TCP)
         (HOST=gdlsndb001pre)
         (PORT=1521)
      )
      (CONNECT_DATA=
         (SID=MSSQL))
      (HS=OK))
 
# Maquina que tiene el Oracle Transparent Gateway 
dg4msql=
   (DESCRIPTION=
      (ADDRESS=
         (PROTOCOL=TCP)
         (HOST=gdlsndb001pre)
         (PORT=1521)
      )
      (CONNECT_DATA=
         (SID=dg4msql))
      (HS=OK))
 
LISTENER_SID =
  (ADDRESS = (PROTOCOL = TCP)(HOST = hostname01)(PORT = 1521))