Archive for diciembre, 2007

Que permisos de Oracle son necesarios para GeneXus?

miércoles, diciembre 26th, 2007

Desde que trabajo con GeneXus, en la mayoría de las empresas que estuve, he visto dar el rol de DBA al usuario que fuera a conectarse a la base de datos.

También he visto excepciones, que comentaré más adelante, pero generalmente, el mismo usuario que usamos para crear las tablas, es el usuario que también ejecuta la aplicación.

Esta es la forma más simple, rápida y con menos mantenimiento para trabajar, pero no la más correcta.

El problema es que hace muchos años, no existían tantos DBAs ORACLE. Entonces el choque de fuerzas entre los implantadores de sistemas GeneXus y los DBAs no era tan habitual, en muchas empresas no existían DBAs y simplemente el usuario que usábamos en GeneXus era el todo poderoso DBA.

Con el paso del tiempo la cosa se fue complicando, porque el usuario de ORACLE DBA tiene permisos más allá de los necesarios y podía acceder a otros esquemas del banco de datos, cuando generalmente era una instancia de base para todos los sistemas de la empresa, que corrían bajo esquemas distintos. Esto entre otras atribuciones peligrosas que tiene el usuario ORACLE DBA, dejaba a los DBAs humanos de pelos de punta.

Hasta la versión 9i de ORACLE, asociando los roles de CONNECT y RESOURCE, y dándole permisos ilimitados para TABLESPACE al usuario ya era suficiente, y digamos estábamos mejor que dar el ROL de DBA a nuestro usuario.

El problema es que a partir de la versión 10g de ORACLE, fueron sacados algunos privilegios del ROL CONNECT.
Estos fueron:
CREATE SYNONYM
CREATE VIEW.

Sumado a esto en la versión 9i de ORACLE, se repetían los siguientes privilegios entre CONNECT y RESOURCE.
Estos eran:
CREATE CLUSTER
CREATE SEQUENCE
CREATE TABLE

Como conclusión, si hoy usamos ORACLE 10g tenemos que estar tomando un privilegio de aquí, otro de allá, para crear nuestro usuario ORACLE, para poder ejecutar con GENEXUS, entonces la vida se hace un poco más complicada.

Para esto, la solución es crearnos nuestro propio script de ROL Y PROFILE y asignarle a nuestro usuarios este ROL y PROFILE.

A continuación anexo los scripts de las atribuciones mínimas necesarias para crear, reorganizar tablas, usar el sistema con nuestro usuario GENEXUS. Existen algunos privilegios comentados con (*) que indican que son opcionales, están colocados allí porque si debemos pedirle a un DBA oficial que nos cree un usuario, es bueno pedirle estos privilegios para cuando necesitamos conectarnos con sqlplus para ver algunos datos de tablas, crear alguna view para ser usada con DataViews desde GeneXus, etc.

Crear un rol

CREATE ROLE NUESTROROL NOT IDENTIFIED;

— Privilegios tomados del Rol CONNECT
GRANT CREATE SESSION TO NUESTROROL;
GRANT ALTER SESSION TO NUESTROROL; — (*)
GRANT CREATE DATABASE LINK TO NUESTROROL; — (*)

— Privilegios tomados del Rol RESOURCE
GRANT CREATE SEQUENCE TO NUESTROROL;
GRANT CREATE TRIGGER TO NUESTROROL; — (*)
GRANT CREATE PROCEDURE TO NUESTROROL; — (*)
GRANT CREATE TABLE TO NUESTROROL;

— Otros Privilegios
— (en versiones anteriores a ORACLE 10 estos privilegios estaban en CONNECT)
GRANT CREATE VIEW TO NUESTROROL; — (*)
GRANT CREATE SYNONYM TO NUESTROROL; — (*)

— Privilegios de sistema
— (permite ver views de diccionario)
GRANT SELECT ANY DICTIONARY TO NUESTROROL; — (*)

Crear un perfil

CREATE PROFILE NUESTROPERFIL LIMIT
IDLE_TIME 120
— (para no dejar que nuestros usuarios dejen el sistema abierto sin usarlo por más de 2 horas)
SESSIONS_PER_USER 50;
— (para no permitir más de 50 sesiones en simultáneo)

Este perfil con estos valores es opcional, en caso de no necesitar controlar nada de esto, podemos usar el perfil DEFAULT de ORACLE, o por el contrario si precisamos diferenciar procesador y o memoria entre otros recursos de ORACLE para una sesión, se puede entrar mas en detalles a la hora de crear un PROFILE.

Por default la instancia de base de datos no está habilitada para restringir recursos del perfil.
Para que nuestro perfil funcione debemos pedirle al DBA que nos habilite este parámetro, o si tenemos nosotros permisos de system podemos hacer esta modificación con el siguiente comando:

ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;

Luego debemos bajar y subir nuevamente la base de datos para que comenzar con este parámetro activo.

Ahora si, finalmente creamos el usuario:

Crear un usuario

CREATE USER NUESTROUSUARIO
IDENTIFIED BY NUESTROPASSWORD
DEFAULT TABLESPACE USERS
— (es recomendable tener nuestro tablespace definido)
TEMPORARY TABLESPACE TEMP
— (es recomendable tener nuestro tablespace definido)
PROFILE NUESTROPERFIL
ACCOUNT UNLOCK;
GRANT UNLIMITED TABLESPACE TO NUESTROUSUARIO;
GRANT NUESTROROL TO NUESTROUSUARIO;

Cabe aclarar un pequeño pero no menos importante detalle, referente al privilegio UNLIMITED TABLESPACE, tanto en versiones anteriores, como en la versión de ORACLE 10g, cuando asignamos el ROL RESOURCE, ORACLE también asigna este privilegio al usuario, cosa que no sucede cuando creamos nuestro propio ROL.
Si quisiéramos intentar asignar este privilegio a nuestro rol, nos daria el siguiente error:

ORA-01931
Cannot grant string to a role.
Cause: UNLIMITED TABLESPACE,\nREFERENCES, INDEX, SYSDBA or SYSOPER privilege cannot be granted to a\nrole.

Por tal motivo el GRANT debemos hacerlo a la hora de crear el usuario, como muestra el script anterior.

Espero que este resumen le haya sido útil.

Fabricio De los Santos
Gerencia de Proyectos – Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Homenaje a un Uruguayo que triunfó en Brasil en el 2007

viernes, diciembre 21st, 2007

Simplemente me refiero al Beto Acosta, Vice artillero del Campeonato Brasilero 2007 y finalista para “Crack do Brasileirao”
Realmente en los últimos días las noticias sólo hacían referencia al pase de Beto Acosta para el Cruceiro o Palmeiras y al final se terminó quedando en Corintians.
Claro jugará en la divisional B, Corintians descendió este año, pero es la torcida más popular de Brasil, así que probablemente ascenderá nuevamente el año que viene.

Entre tantas noticias, la que me llamó la atención fue “Cerrito desmente Timbu e libera Acosta”, me acordé enseguida de un colega (Gerardo Canedo), que siempre hablaba de su Cerrito y la verdad que me alegré ver que fue NOTICIA por unos cuantos días por estos lares.

En resumen, me alegro por Acosta, luego de que si, que va, que no puede, que legalmente esto y lo otro, salió su pase al Corintians, y por sobre todas las cosas en uno de los artículos que me gustó leer decía “Jugando en Corintians me van a poder convocar para la selección de Uruguay”.

Ojalá y así sea, ojalá siga haciendo goles, y triunfe también en el 2008, no sólo por ser uruguayo, no porque jugó en Peñarol, sino porque tiene 30 años, edad que muchos jugadores pensarían que ya perdieron su cuarto de hora, y sin embargo, él está pasando su mejor momento en un país que con 13 o 14 años y hasta veces menos, ya te están vendiendo para Europa.

Algunos links con las notcias

Os finalistas do Craque Brasileirão 2007

Timão contrata o uruguaio Acosta

Cerrito desmente Timbu e libera Acosta

Muy buenas noticias, un buen año, esperemos que el próximo sea mejor.

Felicitaciones Beto!

Fabricio De los Santos
Gerencia de Proyectos – Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Una computadora para cada niño

martes, diciembre 18th, 2007

Proyecto Ceibal

Hace mucho tiempo atrás había leído algo de que Microsoft estaba en un proyecto de llevar una computadora a cada niño.
En particular era una entrevista a un ejecutivo que estaba viajando con este proyecto, etc, etc.
Luego en el evento de GeneXus de este año, escuché a Nicolás y Breogan hablando del proyecto y enseguida lo asocié con aquello que había leído hacía bastante tiempo.
Esos 2 acontecimientos en realidad no me emocionaron tanto como la foto que vi publicada en el Blog de Enrique Almeida, que ni bien la vi, me recordó a una imagen que por muchos años la vi en un lugar u otro y enseguida fui a procurarla en internet y bueno aquí la coloqué una al lado de la otra.

Batalla de Las Piedras

Es una gran oportunidad para Uruguay, ojalá estos niños puedan aprovecharse de esto y Uruguay vuelva a estar nuevamente a la cabeza en números de alfabetización y cultura, algo que antes era orgullo, hoy ya casi no se habla de eso, porque evidentemente ya no debe ser así.

Estoy fuera de la política, pero me gustaron estas palabras del presidente, que están en el sitio de presidencia.

“Les puedo decir que en lo que va de nuestro gobierno y en lo que nos quede en el mismo, difícilmente encontremos una satisfacción mayor que la que vamos a encontrar hoy cuando estemos hablando de este proyecto.”

Ojalá existan otras satisfacciones, pero en realidad, la alegría, la emoción de que hay una esperanza para el futuro, y el poder brindarle el mismo derecho de aprender a todos los niños, eso realmente es algo muy importante.
Ojalá esto sea LA DIFERENCIA en los próximos años!

Felicitaciones a todos los que participan de este plan.

El sitio de presidencia

Blog del Proyecto Ceibal

Fabricio De los Santos
Gerencia de Proyectos – Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Como desinstalar oracle 9

lunes, diciembre 17th, 2007

Como desinstalar oracle completamente, borrando entradas en el registro de windows.

Luego de probar la versión 10g de oracle me decidí a desinstalar Oracle 9.2 de mi máquina, y me encontré con algunos detalles, que no pude apagar definitivamente, como carpetas de oracle y entradas de oracle en los servicios de windows.
Intenté instalar el oracle 10 por arriba pero me encontré con otros problemas a la hora de ejecutar.
En fin, terminé creando una guia que comparto aqui con un paso a paso para desinstalar oracle 9 por completo.

Paso a paso

– Verificar si se tiene odbcs asociados y eliminarlos ya que después quedan corruptos y da otro dolor de cabeza desinstalarlos (aunque también podemos después crear uno nuevo con el mismo nombre y ahí podemos apagarlo, pero lo más prolijo sería eliminar el odbc asociado antes de desinstalar oracle)
– Ejecutar el universal installer
– Borrar todos los homes que aparezcan
– Borrar la variable de ambiente ORAHOME
– Borrar de la variable de ambiente PATH todas las referencias a oracle (panel de control / sistema / avanzado / variables de ambiente)
– Borrar del registro toda referencia a oracle (ejecutar regedit buscar carpeta oracle y borrar)
– Reiniciar el pc
– Borrar la carpeta oracle debajo de c:\

En mi caso en particular como tenia la base de datos instalada local el instalador/desinstalador no me borró los servicios OracleHome92TnsListener y OracleServiceMiMaquina.

Tenemos dos formas de borrar estos servicios de windows

1) sc delete OracleHome92TnsListener

Entramos en el panel de control / servicios y ya no está mas.

2) Ejecutando regedit
Borramos la cadena correspondiente a OracleServiceMiMaquina en:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services

Esta segunda opción lo que tiene de diferente es que para ver si el servicio desapareció del panel de control / servicios, hay que reiniciar el pc

Si se usa la primera opción no es necesario reiniciar el pc.

Fabricio De los Santos
Gerencia de Proyectos – Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com