domingo, 17 de octubre de 2010

Recrear la consola de Administracion de Oracle con EMCA

Al instalar el nuevo servidor de base de datos Oracle 11g, sobre un CentOS 5.4, se puede acceder a la consola de administración por la siguiente dirección.     


Pero luego de reiniciar el servidor posiblemente tengamos un problema al tratar de iniciar el Administrado, y veremos un mensaje como el siguiente, que nos indica que el inicio ha fallado.




Si nos sucede esto, entonces podemos usar el emca (Asistente de Configuracion del EM), así primero debemos editar el archivo portlist.ini

[root@oracleserver ~]# su oracle
[oracle@oracleserver alex]$ cd $ORACLE_HOME/install/
[oracle@oracleserver install]$ vi portlist.ini


Y debemos cambiar la segunda línea al puerto que se 1158, o el que ustedes deseen utilizar, en este caso usaremos el 1158.

Número de puerto HTTP para Ultra Search =5620
Puerto HTTP de la Consola de Enterprise Manager (orcl) = 1158
Puerto del Agente de Enterprise Manager (orcl) = 3938


Para salir de la edición damos ESC y escribimos ":wq" y damos enter. 

Ahora podremos recrear la consola, para esto escribimos lo siguiente, e ingresamos los datos que el asistente nos solicitará.   Para obtener el puerto del listener podemos visualizarlo con: lsnrctl status.


[oracle@oracleserver alex]$ emca -deconfig dbcontrol db -repos drop

EMCA iniciado en 17-oct-2010 18:46:49
Asistente de Configuración EM, Versión 11.1.0.5.0 Producción
Copyright (c) 2003, 2005, Oracle. Todos los Derechos Reservados.

Introduzca la siguiente información:
SID de Base de Datos: orcl
Número de Puerto del Listener: 1521
Contraseña de Usuario SYSMAN:
Contraseña de Usuario SYSMAN:
¿Desea continuar? [sí(Y)/no(N)]: y^H^H
17-oct-2010 18:47:47 oracle.sysman.emcp.EMConfig perform
INFO: Esta operación se está registrando en /usr/app/oracle/cfgtoollogs/emca/ORCL/emca_2010_10_17_18_46_49.log.
17-oct-2010 18:47:48 oracle.sysman.emcp.util.DBControlUtil stopOMS
INFO: Parando Database Control. Puede tardar unos minutos...
17-oct-2010 18:47:55 oracle.sysman.emcp.EMReposConfig stopDBMSJobs
ADVERTENCIA: Error al iniciar la conexión SQL. No se pueden realizar las operaciones SQL
17-oct-2010 18:47:55 oracle.sysman.emcp.EMReposConfig invoke
ADVERTENCIA: No se han podido eliminar los trabajos DBMS.
17-oct-2010 18:47:55 oracle.sysman.emcp.ParamsManager checkListenerStatusForDBControl
ADVERTENCIA: Error al iniciar la conexión SQL. No se pueden realizar las operaciones SQL
17-oct-2010 18:47:55 oracle.sysman.emcp.EMReposConfig invoke
INFO: Borrando el repositorio de EM. Puede tardar unos minutos...
17-oct-2010 18:47:58 oracle.sysman.emcp.EMReposConfig invoke
INFO: El repositorio se ha borrado correctamente
La configuración de Enterprise Manager se ha realizado correctamente
EMCA terminado en 17-oct-2010 18:48:07



Y luego:

 [oracle@oracleserver alex]$ emca -config dbcontrol db -repos create

EMCA iniciado en 17-oct-2010 18:48:26
Asistente de Configuración EM, Versión 11.1.0.5.0 Producción
Copyright (c) 2003, 2005, Oracle. Todos los Derechos Reservados.
Introduzca la siguiente información:
SID de Base de Datos: orcl
Número de Puerto del Listener: 1521
Contraseña de Usuario SYSMAN:
Contraseña de Usuario SYSMAN: Dirección de Correo Electrónico para Notificaciones (opcional):
Servidor de Correo Saliente (SMTP) para Notificaciones (opcional):
-----------------------------------------------------------------
Ha especificado los siguientes valores
ORACLE_HOME de Base de Datos ................ /usr/app/oracle/product/11.1.0/db_1
Nombre de Host Local ................ localhost
Número de Puerto del Listener ................ 1521
SID de Base de Datos ................ orcl
Dirección de Correo Electrónico para Notificaciones ...............
Servidor de Correo Saliente (SMTP) para Notificaciones ...............
-----------------------------------------------------------------
¿Desea continuar? [sí(Y)/no(N)]: y
17-oct-2010 18:49:21 oracle.sysman.emcp.EMConfig perform
INFO: Esta operación se está registrando en /usr/app/oracle/cfgtoollogs/emca/ORCL/emca_2010_10_17_18_48_26.log.
17-oct-2010 18:49:22 oracle.sysman.emcp.EMReposConfig createRepository
INFO: Creando el repositorio de EM. Puede tardar unos minutos...
17-oct-2010 18:53:16 oracle.sysman.emcp.EMReposConfig invoke
INFO: El repositorio se ha creado correctamente
17-oct-2010 18:53:18 oracle.sysman.emcp.EMReposConfig uploadConfigDataToRepository
INFO: Cargando los datos de configuración en el repositorio de EM. Puede tardar unos minutos...
17-oct-2010 18:53:53 oracle.sysman.emcp.EMReposConfig invoke
INFO: Los datos de configuración se han cargado correctamente
17-oct-2010 18:53:53 oracle.sysman.emcp.ParamsManager getLocalListener
ADVERTENCIA: Error al recuperar el listener para localhost
17-oct-2010 18:53:54 oracle.sysman.emcp.util.DBControlUtil configureSoftwareLib
INFO: La biblioteca de software se ha configurado correctamente.
17-oct-2010 18:53:54 oracle.sysman.emcp.EMDBPostConfig configureSoftwareLibrary
INFO: Desplegando archivos de provisionamiento...
17-oct-2010 18:54:01 oracle.sysman.emcp.EMDBPostConfig configureSoftwareLibrary
INFO: Los archivos de provisionamiento se han desplegado correctamente.
17-oct-2010 18:54:01 oracle.sysman.emcp.util.DBControlUtil secureDBConsole
INFO: Protegiendo Database Control. Puede tardar unos minutos...
17-oct-2010 18:54:11 oracle.sysman.emcp.util.DBControlUtil secureDBConsole
INFO: Database Control se ha protegido correctamente.
17-oct-2010 18:54:11 oracle.sysman.emcp.util.DBControlUtil startOMS
INFO: Iniciando Database Control. Puede tardar unos minutos...
17-oct-2010 18:54:36 oracle.sysman.emcp.EMDBPostConfig performConfiguration
INFO: Database Control se ha iniciado correctamente
17-oct-2010 18:54:36 oracle.sysman.emcp.EMDBPostConfig performConfiguration
INFO: >>>>>>>>>>> La dirección URL de Database Control es https://localhost:1158/em <<<<<<<<<<<
17-oct-2010 18:54:38 oracle.sysman.emcp.EMDBPostConfig invoke
ADVERTENCIA:
************************  WARNING  ************************
El repositorio de gestión se ha colocado en el modo seguro en el que se cifrarán los datos de Enterprise Manager. La clave de ci
frado se ha colocado en el archivo: /usr/app/oracle/product/11.1.0/db_1/localhost_orcl/sysman/config/emkey.ora. Asegúrese de que
se ha realizado una copia de seguridad de este archivo ya que los datos cifrados no se podrán utilizar si éste se pierde.
***********************************************************
La configuración de Enterprise Manager se ha realizado correctamente
EMCA terminado en 17-oct-2010 18:54:38


Y con esto tendremos nuestra consola reconstruida y funcionando correctamente. 
Escribamos en nuestro navegador: https://ipserveroracle:1158/em





lunes, 4 de octubre de 2010

Programar backup Oracle 11g en Centos 5

A continuación se realizará un script que generará un backup de Oracle utilizando el utilitario de exportacion EXP


Script del archivo 1 (backup1.bat):



#!/bin/bash
###########################################################
## Script para realizar backup Oracle
## ver 1.0
## Alex Echavarría
###########################################################
XBACKUP="/backups/oracle"
XDIA=`date +'%Y%m%d-%H%M'`
XDIA_BACKUP=$XBACKUP/$D_DIA
XDIA_F=`date +'%d-%m-%Y %H%M'`
echo "***Proceso de Backup iniciado: " $D_DIA_F


##Creamos el directorio para realizar el backup
mkdir $XDIA_BACKUP
echo "  -> Carpeta creada..."
chmod 777 $XDIA_BACKUP
echo "  -> Generando backup..."


##Seteamos variables de Entorno
export ORACLE_SID=nombre_instancia_oracle
export ORACLE_HOME=/usr/app/oracle/product/11.1.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_OWNER=oracle


##Lanzamos exportacion de ORACLE
exp system/1234 file=$XDIA_BACKUP/archivo_data.dmp owner=pruebas, administracion, conta1, conta2 log=/tmp/export_orasite.log buffer=1000000
echo "  -> Comprimiendo el Backup..."


##Comprimimos el archivo generado
gzip -8 $XDIA_BACKUP/archivo_data.dmp
echo "  -> Backup Generado en " $XDIA_BACKUP 




Ahora necesitamos un script para ejecutar el archivo 1 y que todas las salidas de este se guarden en un archivo log. Para esto simplemente escribimos lo siguiente:


Script del archivo 2 (backup2.bat) :


#!/bin/bash
cd /home/oracle
./backup_oracle.bat >> /tmp/oracle.log


Lo que hará el segundo script es ejecutar el bat 1 y enviar todas las salidas del mismo al archivo oracle.log.

Si consultamos el archivo podremos visualizar algo así:


Ahora que ya tenemos ambos archivos debemos ejecutarlos indicarle al S.O. que lo ejecute en las horas que nosotros deseemos, para esto utilizamos el crontab (Programador de Tareas de Linux). Este es un archivo ubicado en /etc/crontab.

Editamos el archivo con vi:  # vi /etc/crontab

Y agregamos una línea como esta al final:


Donde 45 indica el minuto, y 12,18 la hora, es decir este script se ejecutará a las 12:45 pm. y a las 6:45 p.m.



jueves, 30 de septiembre de 2010

Crear un usuario con privilegios de root en Linux

Tenia problemas para realizar algunas operaciones a nivel de root, y siempre tenia que loguearme y prácticamente para mi era una pérdida de tiempo, así que necesitaba hacer todo en la consola y al mismo tiempo conservar mi usuario.


Entonces primero al loguearnos como root, crearemos un usuario de la siguiente manera:


adduser -u 0 -o -g 0 alex


Debes cambiar "alex" por el usuario que tu requieras crear.


Luego para cambiar la contraseña al usuario creado debes ingresar:


passwd alex


Y el sistema te pedirá ingresar tu clave 2 veces para confirmarla.


Ahora cierra la consola, y vuelve a ingresar con tu usuario, y tendrás todos los privilegios.


Si deseas puedes comprobarlo en el archivo /etc/passwd.
Entonces de la consola escribimos:


cat  /etc/passwd


Y podrás visualizar que tu usuario se mantiene como 


usuario:x:0:0


Los ceros indican que tu usuario tiene privilegios de root.




Listo.

lunes, 20 de septiembre de 2010

Programar es un Arte

Cuando un músico escucha una melodía que acaba de componer o cuando un escultor retoca el ultimo detalle de su obra maestra, está ante un logro personal, pero que fue hecho pensando en los demás.

Está ante el fruto de su trabajo, que tuvo que realizar para pasar de una idea o modelo que estaba solo en su imaginación, a algo perceptible por los otros. Y ese logro causa una gran satisfacción.

El desarrollo de software (al igual que la música, la escultura o la pintura) es una actividad creativa y, hasta si se quiere, artística.

Es una actividad en la que una persona (el programador) debe plasmar una idea en un programa que alguien usará luego.

Y es muy probable que esa idea sea algo totalmente novedoso, algo que nadie antes ha visto. Y ver esa idea traducida en software produce una sensación que solo un programador puede entender.

Ser programador no es fácil, pero es divertido. Desarrollar software es, definitivamente, una tarea compleja.

Deberemos ser capaces de interpretar al usuario, de entender qué es lo que necesita (aunque muchas veces el mismo no sabe qué es lo que necesita).

Pasaremos largas horas pensando un algoritmo que resuelva el problema de nuestro cliente de la mejor manera. Muchas veces nos iremos a casa y seguiremos pensando en ese dichoso algoritmo. Nos iremos a dormir (probablemente tarde, porque habremos dedicado parte de nuestro tiempo libre a aprender nuevas tecnologías) y despertaremos pensando en el algoritmo o incluso, con la solución en mente. Pero cuando escribamos la ultima linea del código que implementa ese algoritmo y lo veamos funcionando, obtendremos una gran satisfacción que solo puede entender otro programador.

Creo que cada persona que quiere dedicarse a ser programador, antes de nada, debe experimentar que sensación produce ver su programa en ejecución.

Aquel que no sienta nada jamás podrá ser un programador, porque la mayor recompensa es, justamente, esa sensación, aunque sean las 4 de la madrugada y llevemos 72 horas codificando.

domingo, 22 de agosto de 2010

Instalando Mysql 5 sobre CentOS 5.4

Como están, esta vez instalaremos el Gestor de base de datos MySQL 5 sobre la el SO. CentOS 5.4, y realizaremos la configuración para conectarnos desde los clientes.
Para comenzar debemos tener instalado el SO. CentOS, en la instalación pueden elegir instalar por defecto una versión de MySQL, pero si quieren una mas actualizada pueden descargarla de la página web de MySQL, de la siguiente direccion http://www.mysql.com/downloads/mysql/#downloads

 

Lógicamente debes estar registrado en la página de MySQL para poder descargar el fichero, el registro es sencillo.


Luego lo ejecutamos en el servidor de la siguiente manera:


 Una vez instalado procederemos a indicarle al servicio que se ejecute al iniciar el SO, con el siguiente comando.

[root@localhost home]# /sbin/chkconfig mysqld on

Luego procederemos a levantar el servicio.

[root@localhost home]# service mysqld start

Si escribimos mysql en la línea de comandos nos conectaremos a la base de datos, porque el usuario root no tiene un password creado, entonces lo que sigue es asignarle un password al usuario root de Mysql. Para esto usarmos mysqladmin.

[root@localhost home]# /usr/bin/mysqladmin -u root password '123456'


En este caso le puse del 1 al 6, como ejemplo. Y luego si tecleamos mysql obtendremos.


[root@localhost home]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)


Lógicamente porque el usuario por defecto root ya tiene asignado un password, ahora nos conectaremos de la siguiente manera:


[root@localhost home]# mysql -u root -p
Enter password:  



Ingresamos el password anterior y nos conectaremos a MySQL.


Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 27
Server version: 5.0.77 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>  



Para ver los usuarios y las ubicaciones desde las que mysql aceptara las conexiones debemos listarlos de la tabla user, pero antes debemos conectarnos a la bd mysql.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host, user, password from user;

+-----------------------+------+------------------+
| host                  | user | password         |
+-----------------------+------+------------------+
| localhost             | root | 33cf3f7a4d06abc8 |
| localhost.localdomain | root | 33cf3f7a4d06abc8 |
| 127.0.0.1             | root | 33cf3f7a4d06abc8 |
| localhost             |      |                  |
| localhost.localdomain |      |                  |
| %                     | sa   | 33cf3f7a4d06abc8 |
| localhost             | sa   | 33cf3f7a4d06abc8 |
+-----------------------+------+------------------+
7 rows in set (0.00 sec)



Si queremos crear otro supersusuario, por ejemplo uno llamado aep con todos los privilegios sobre cualquier base de datos (ALL PRIVILEGES ON *.*) y que pueda conectar desde cualquier sitio (TO aep@"%")

mysql> GRANT ALL PRIVILEGES ON *.* TO aep@"%" IDENTIFIED BY '123456' WITH GRANT OPTION;
        
Si ahora queremos borrar un usuario, por ejemplo a nuestro aep y sabiendo que los usuarios se guardan en la tabla llamada user, haremos:

      mysql> use mysql;
      mysql> DELETE FROM user WHERE user = 'aep';
Y aep será borrado de nuestro sistema MySQL.

Los puertos
MySQL utiliza el puerto 3306 por defecto, así que lo debemos agregar dentro de la lista permisible de conexiónes para CentOS.
Para esto debemos ingresar por línea de comandos lo siguiente: system-config-securitylevel

 Y finalmente podremos conectarnos desde nuestro cliente, utilizando MySQL Query Browser por ejemplo.