Cómo crear el usuario ORACLE necesario para monitorizar con NAGIOS

Para poder monitorizar con NAGIOS los parámetros de Oracle, es necesario crear un usuario llamado “nagios” dentro de la BBDD que queremos monitorizar. Dependiendo de la versión de Oracle que tengamos, tendremos que asignarle unos grants diferentes para que la monitorización se pueda realizar de manera adecuada.

Para versiones 9,10G y 11G:

CREATE USER nagios IDENTIFIED BY oradbmon; -- Poner el password que deseemos
 GRANT CREATE SESSION TO nagios;
  GRANT SELECT any dictionary TO nagios; -- Este no funciona en 8i
  GRANT SELECT ON V_$SYSSTAT TO nagios;
  GRANT SELECT ON V_$INSTANCE TO nagios;
  GRANT SELECT ON V_$LOG TO nagios;
  GRANT SELECT ON SYS.DBA_DATA_FILES TO nagios;
  GRANT SELECT ON SYS.DBA_FREE_SPACE TO nagios;

Para versiones 8i (8.1.7) poner además …

 GRANT SELECT ON sys.dba_tablespaces TO nagios;
 GRANT SELECT ON dba_temp_files TO nagios;
 GRANT SELECT ON sys.v_$Temp_extent_pool TO nagios;
 GRANT SELECT ON sys.v_$TEMP_SPACE_HEADER  TO nagios;
 GRANT SELECT ON sys.v_$session TO nagios;
 GRANT SELECT ON SYS.OBJAUTH$ TO nagios;
 GRANT SELECT ON SYS.OBJ$ TO nagios;
 GRANT SELECT ON SYS.USER$ to nagios;
 GRANT SELECT ON SYS.COL$ TO nagios;
 GRANT SELECT ON SYS.TABLE_PRIVILEGE_MAP TO nagios;

Hay que tener en cuenta que para versiones 8i el privilegio SELECT ANY DICTIONARY no está soportado, y por tanto, se deben conceder de manera individual sobre los objetos del diccionario. Asimismo, el privilegio SELECT ANY TABLE  no permite el acceso a objetos del diccionario, a menos que cambiemos el parámetro…
O7_DICTIONARY_ACCESSIBILITY  de FALSE a TRUE de la siguiente manera:

alter system set o7_dictionary_accessibility=TRUE scope=spfile;
Posted in Administración Oracle, Administración Sistemas | Tagged , , , | Leave a comment

Consultar tabla sin que se sepa quien es el propietario

Esta entrada de blog trata de una cosa muy simple, pero que nos puede servir de ayuda para si alguna vez, queremos que algún usuario pueda realizar consultas sobre alguna tabla que no queramos que se conozca quien es el propietario. Para ello, basta con crear un sinónimo de dicha tabla y dar el permiso de consulta sobre el sinónimo.

Crear el sinónimo:

create public synonym s_tabla for usuario.tabla;

Asignar los permisos:

grant select on  s_tabla to usuario_destino;

Cuando hagamos una select del “s_tabla” veremos el contenido de “tabla” cuyo propietario es “usuario” pero no será necesario indicarlo en la consulta.

Una tontería facilona, pero que puede sernos útiles en algún momento.

 

Posted in Administración Oracle | Tagged | Leave a comment

Instalar OBI (Oracle Business Intelligence) en un Datawarehouse ya existente

En esta entrada de blog sólo se va a explicar el proceso de instalación (sencilla) de OBI en un DWH que ya existe, pero si deseas ampliar información referente a la arquitectura de OBIEE (Oracle Business intelligence Enterprise Edition) pulsa en este enlace.

El proceso lo dividiré en tres partes:

1- Creación del usuario con permisos SYSDBA y su tablespace.

2.- Creación/Instalación del repositorio de OFM para poder instalar OBI.

3.- La instalación propiamente dicha de OBI.

Comenzamos …

Pero antes de meter mano a todo el tinglado, debemos saber que se necesita …

Requisitos mínimos recomendados para OBI:

Disk Space: 20GB or more
Available Memory: 4GB or more
Temp Space: 950MB or more
Swap Space: 3GB or more
CPU: dual-core Pentium, 1.5GHz or greater

Como se  va a hacer una instalación desde 0, necesito lo siguiente:

Una base de datos Oracle instalada, 10.2.0.4 o superior. En esta base de datos se instalarán ciertos esquemas necesarios para que OBI funcione. En mi caso tengo una 11GR2.

El Repository Creation Utility (RCU) que se encarga de crear estos esquemas y sus correspondientes tablespaces en la base de datos que acabamos de comentar.

Por último, Los binarios de la nueva versión 11.1.1.5.0. En total 5 archivos que ocupan muchísimo.

1- Creación del usuario con permisos SYSDBA y su tablespace

Antes de comenzar con todo el proceso necesitamos crear un usuario en la base de datos DatawareHouse con permisos SYSDBA o bien, utilizar el usuario SYS para lanzar el proceso de creación del repositorio de OBI. En este ejemplo crearé un usuario con permisos idénticos al de SYS. Podemos asignarle el tablespace USERS o bien crear uno específico para ese usuario. Como tablespace temporal podemos usar el TEMP o bien uno un poco más grande (esto no lo dice en ninguna documentación que yo haya visto). Yo he optado por esta última opción.

Nombre tablespace en mi ejemplo: TS_DBA_BI

/oradata/tsdbabidata1.dbf
/oradata/tsdbabidata2.dbf

CREATE SMALLFILE TABLESPACE "TS_DBA_BI"  DATAFILE '/oradata/tsdbabidata1.dbf' SIZE 1G REUSE ,  '/oradata/tsdbabidata2.dbf' SIZE 1G REUSE  LOGGING EXTENT MANAGEMENT  LOCAL SEGMENT SPACE MANAGEMENT AUTO;

No es necesario crearlo de ese tamaño. De hecho este usuario sólo se usa para poder crear los esquemas necesarios para el repositorio.

Ahora deberíamos crear el usuario con permisos SYSDBA. Yo lo he hecho con OEM y a partir del usuario SYS y conectado como SYS. Selecciono “Crear como” y pulso en “Ir” dentro de la pestaña usuarios de OEM:

Seguidamente le pongo una clave y le asigno el tablespace creado para él y el temporal que desee. En mi caso uno bastante grande para “facilitar la instalación” si es necesario.

Podemos comprobar que el usuario funciona saliendo de OEM e intentar entrar con el usuario creado conectando como SYSDBA:

2.- Creación/Instalación del repositorio de OFM para poder instalar OBI

El siguiente paso es Descargar la RCU (Repository Creation Utility) que nos permitirá crear el repositorio con el usuario ya creado anteriormente. Este proceso lo podemos hacer desde un PC cliente, que en mi ejemplo era un Windows XP. Para ello accederemos a la WEB de Oracle apartado middleware y en BI enterprise edition encontraremos el software. Algo como …

Una vez descargado el fichero, descomprimirlo y ejecutar rcu.bat en el caso de Windows que es nuestro ejemplo.

Descomprimir ofm_rcu_win_11.1.1.6.0_disk1_1of1.zip
Ejecutar \rcuHome\BIN\rcu.bat

Comenzamos con la instalación del repositorio …

Pulsamos siguiente …

En la siguiente pantalla rellenaremos los campos con nuestros datos, nombre de host o IP, el puerto, el nombre de la instancia (que sale en el tnsnames.ora) y el usuario que hemos creado y seleccionaremos en el campo rol SYSDBA.

Se ignora este error, ya que es una recomendación de Oracle y nuestro DWH estaba en el Character SET que correspondía.

En la siguiente pantalla seleccionaremos lo marcado con la marca de verificación …

En la siguiente pantalla introduciremos las contraseñas para los esquemas. En mi caso, como quería instalar todo para ver como funciona OFM (OBI) puse la misma para todos los esquemas.

En la siguiente pantalla nos muestra la asignación de tablespaces. Por defecto, me los asignaba en una ubicación diferente a la que yo deseaba. Así que pulsé el botón “Gestionar Tablespaces” para adecuar la instalación a mis pretensiones.

Al pulsar el botón mencionado anteriormente, me sale la pantalla siguiente donde puedo especificar los datos que yo desee. No los modificaré si me convencen, o sí lo haré si veo que no son los deseados para mi instalación.

Y así lo haré para cada tablespace que se vaya a crear. Pulsando en el icono del “lápiz” podré editar los valores del tablespace y ubicación de los datafiles, etc…

Pulsaremos aceptar…

Hasta aquí tendríamos instalada la parte del repositorio. Nos faltaría instalar OBI.

3.- La instalación propiamente dicha de OBI.

Finalmente, procederé a la instalación de OBI propiamente dicha. Antes de empezar, voy a resumir lo que he hecho hasta ahora, para tenerlo aun más claro si cabe.

En primer lugar he creado un usuario con privilegios SYSDBA a partir del usuario SYS y le he asignado un tablespace que he creado previamente para dicho usuario. Además, he decidido asignarle un tablespace Temporal más grande de lo normal. Esto último no es imprescindible, pero a mi me gusta “evitar sorpresas” por falta de espacio. Seguidamente, he descargado de la web oficial de Oracle la utilidad RCU que nos permite crear el repositorio necesario para instalar herramientas de Oracle Fusion Middleware. Lo he descargado en versión Windows porque era desde un PC con Windows desde dónde he lanzado la utilidad RCU, aunque su destino era conectarse a un servidor Linux con un DatawareHouse. Y finalmente, en las siguientes lineas, explicaré la instalación de OBI (Oracle Business Intelligence) en una versión simple, para comprobar que funciona y conocer la herramienta.

Voy a instalar OBI en un Servidor Windows Server 2008 R2 (Service Pack 1). Por tanto, hemos tenido previamente que descargar la versión de OBI para este sistema Operativo teniéndo en cuenta que es de 64 bits. Sino sabes cúal es la versión de tu S.O, revisa esta entrada de blog en el caso de que tu server sea Windows o esta si tu server es Linux/Unix.

Una vez descargada la versión de la web oficial de Oracle, la descomprimiremos y la pondremos toda colgando de un mismo directorio, para facilitar al instalador la búsqueda de los ficheros. Tal que así:

Accederemos al primer directorio descargado y ejecutaremos el instalador:

../Disk1/bishiphome/setup.exe o runInstaller

Saldrá una pantalla como esta …

En la siguiente pantalla marco “Omitir actualizaciones de Software”.

Antes de la siguiente pantalla, he creado el directorio C:\middleware para poder ubicar los ficheros de instalación.

En la siguiente pantalla, el instalador nos propone un nombre de usuario, que aceptaremos, deberemos poner una clave.

En las siguientes pantallas comenzará la creación de los esquemas necesarios … para ello tendremos que introducir una cadena de conexión de acuerdo a la base de datos que queremos explotar, en mi caso mi DWH con los formatos indicados.

En la siguiente pantalla desmarco todo porque no deseo recibir información …

Pulsaremos “SI”

Seguidamente seleccioné tipo de instalación “Simple” porque lo que estoy es valorando la herramienta OBI para futuras instalaciones en producción.

En la pantalla anterior que nos mostrará todo lo que se pretende instalar, pulsaremos en el botón Guardar para almacenar lo que el instalador irá realizando durante el proceso de instalación del producto. Para ello, he creado previamente el directorio C:\middleware_log donde iré almacenando los logs de instalación.

Le pongo el nombre “log_install.txt” al log de esta parte de la instalación.

Se inicia el proceso de instalación …

Daremos numerosas veces a “siguiente” etc… hasta que se complete la instalación. Una vez finalizada podemos visualizar el fichero de log y guardarlo para ver cuales son los enlaces que debemos usar para poder acceder a los componentes instalados.

Para comprobar que se ha instalado correctamente tenemos/podemos acceder a las URL´s correspondientes:

En mi ejemplo mi servidor de Windows se llama “SERVI”

Consola de WebLogic

http://SERVDI:7001/console

La consola de administración de WebLogic es importante para la configuración del dominio de BI.

Oracle Enterprise Manager

http://SERVI:7001/em

Es el panel de control de la instancia de Fusion Middle Ware desde dónde podemos ver todos los componentes java que corren en el Administration Server.

Business Intelligence Enterprise Edition

http://SERVI:7001/analytics

Es el punto de entrada al sistema de BI. Aquí es donde los usuarios entran pra analizar sus cuadros de mando.

Business Intelligence Publisher

http://SERVI:7001/xmlpserver

Es el punto de entrada al sistema de reporting BI Publisher. Desde aquí los desarrolladores preparan informes que luego pueden mostrarse en los cuadros de mandos de Analytics. Los usuarios también pueden entrar para sacar los infomes directamente desde aquí.

Real-Time Decisions

http://SERVI:7001/ui

Punto de entrada al sistema de toma de decisiones Real Time.

Posted in Oracle Fusion Middleware | Tagged , , , , | Leave a comment

Lanzar informe de carga de repositorio de trabajo (AWR) desde sqlplus

Oracle proporciona dos scripts para producir informes de repositorio de carga de trabajo (awrrpt.sql y awrrpti.sql) que podemos ejecutar directamente desde sqlplus sin necesidad de ejecutarlos via OEM con un navegador .

Son similares en formato a los informes STATSPACK y dan la opción de formato HTML o texto plano. Los dos informes dan esencialmente la misma salida pero el awrrpti.sql te permite seleccionar una sola instancia. Los informes se pueden generar de la siguiente manera:

Conectados como sys o system ...

SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql
SQL> @$ORACLE_HOME/rdbms/admin/awrrpti.sql

Las secuencias de comandos te pedirá que ingreses el formato del informe (html o texto), el identificador de instantánea inicial, el id instantánea final y el informe de nombre de archivo. El informe resultante o su apertura se realizará en un navegador o editor de texto en consecuencia.

El informe via html es algo parecido a la siguiente pantalla (muestro sólo una parte pequeña del informe total):

Posted in Administración Oracle | Tagged , , , , | Leave a comment

El super “find” …

Busca la cadena manolito desde la raiz en cualquier fichero
# find ~/ -type f |xargs grep -i manolito

No hace falta decir nada más. Muy útil cuando buscamos algo dentro de un fichero y nos estamos ¡¡¡ volviendo locos !!! Lo ideal es hacerlo como root para evitar que algún fichero no sea leído porque no tenga permisos de lectura.

Posted in Linux | Tagged , , , | Leave a comment

Ejecutar comando scp sin que pida contraseña el servidor de origen

En la siguiente entrada de blog explico como utilizar el comando scp (Secure Copy o SCP es un medio de transferencia segura de archivos informáticos entre un host local y otro remoto o entre dos hosts remotos, usando el protocolo Secure Shell (SSH)) de Linux o Unix que nos permite realizar la copia de un fichero/s de un servidor a otro. Esto es muy útil cuando has creado una shell por ejemplo en un servidor de desarrollo y quieres simplemente copiarla de manera idéntica en el servidor de producción.

Ejemplo de formato de scp

scp -p -r $usuario@$servidor:fichero dir/

Ejemplo conectados como root en el servidor “destino”:

# scp -p -r shell.sh root@servidor:/ruta

Esto copia el fichero shell.sh en el servidor “servidor” conectado como root en la ruta “/ruta”. Para que no pida la contraseña, en el servidor “servidor” debe existir en el “home” del root el fichero .rhosts donde se detalla el servidor “destino” y el usuario del servidor “destino” que queremos que no pida la contraseña.

Ejemplo de fichero .rhosts del servidor “servidor”

[root@servidor ~]# more .rhosts
 destino root
 destino pepe --> Poniendo esto al usuario "pepe" tampoco se le pediría contraseña
Posted in Linux | Tagged , | Leave a comment

Crear un DAD con OEM Application Server Control en ORACLE OAS 10g

Con el objeto de mostrar formularios por el navegador y poder acceder a procedimientos y paquetes de un esquema a través de una dirección virtual necesitamos crear lo que se conoce como DAD. Es decir, un descriptor de acceso a base de datos.

Pincharemos sobre el enlace HTTP_Server. Nos saldrá la pantalla siguiente e iremos a la pestaña “Administración”

En la siguiente pantalla pulsaremos el enlace “Propiedades PL/SQL”.

Una vez dentro de la pantalla anterior, al final de la siguiente veremos los enlaces para poder crear los DAD´s que necesitemos.

A la derecha de la pantalla, saldrá el botón “Crear” que nos permite crear DAD´s. En la pantalla anterior podemos ver como ya existen 2 creados en este ejemplo, uno que si que funciona, flecha verde arriba, y otro que no. Flecha verde abajo. Probablemente, el que no funciona es debido a una mala definición en el fichero tnsnames.ora.

Para crear un DAD pulsaremos en el botón “Crear” y saldrá una pantalla como la que sigue … Hay que tener en cuenta que para que el DAD funcione tendremos que reiniciar el servidor HTTP.

En esta pantalla tenemos que seleccionar el tipo de DAD que queremos crear. Si tenemos el OAS-portal instalado, podemos seleccionarlo, pero sino, podemos seleccionar General y funcionará seguro. Una vez seleccionado pulsaremos Continuar … Saldrá la pantalla siguiente donde podremos especificar la configuración de la conexión a la base de datos.

El nombre o ubicación de DAD será como una especie de directorio vitual que usaremos en la URL para acceder al esquema. En este ejemplo pondré “/dad_inf”. Seguidamente rellenaremos los campos con los datos del usuario que queramos que acceda para ejecutar su package, procedimiento o lo que sea que quiera ejecutar. En cadena de conexión pondremos el formato que se indica en el campo de debajo. Es decir, el nombre del servidor, el puerto, normalmente el 1521 por defecto y el nombre que tengamos especificado dentro del identificador en el fichero tnsnames.ora. Finalmente, especificaremos el idioma que tenemos en la Base de datos (podemos sacar estos valores consultando la tabla nls_database_parameters.

Ejemplo:

Con este ejemplo, ya podríamos probar el DAD, no hace falta rellenar las siguientes pantallas. Podríamos hacerlo posteriormente si queremos, simplemente pinchando en el enlace del DAD creado y accediendo al menú desplegable de la izquierda de la pantalla anterior.

En página por defecto ponemos el nombre del procedimiento que queremos que se ejecute si no se especifica ningún otro al escribir la url. Por ejemplo, si hemos llamado al descriptor midad y la página de inicio la ejecuta el procedimiento inicio, escribiremos inicio en página por defecto y cuando pongamos en el navegador http://misitio:XXXX/dad_inf, nos redirigirá a http://misitio:XXXX/dad_inf/inicio pero se puede dejar en blanco.

Para ejecutar cualquier prueba, podemos ir al navegador e intentar ejecutar cualquier procedimiento que tengamos creado para el usuario especificado en el DAD y ver que funciona.

Posted in Administración de Oracle IAS/OAS | Tagged , , , | Leave a comment

Cómo saber si nuestro Unix o Linux es de 32 o 64 bits

Tanto en Unix como en Linux una manera sencilla de saber si nuestro sistema es de 32 o 64 bits es ejecuntando el comando uname desde la linea de comandos:

$ uname -a
Linux h0541.csub.scs.es 2.6.18-308.16.1.el5 #1 SMP Tue Sep 18 07:21:07
EDT 2012 x86_64 x86_64 x86_64 GNU/Linux

En este ejemplo se trata de un Linux de 64 bits.  Nos lo informa el x86_64. Sino sale esto es de 32 bits.

Posted in Instalaciones, Linux | Tagged , , , | Leave a comment

Cómo saber si nuestro Windows es de 32 o 64 bits

Muchas veces es necesario saber si nuestro Windows o el Windows donde vamos a instalar el software de Oracle es de 32 o 64 bits. Lo necesitamos saber basicamente para la elección del CD a instalar. Si nos equivocamos e intentamos instalar un software Oracle de 32 bits en uno de 64 bits o alrevés, podemos encontrarnos con errores que nos puedan despistar y resulta que es porque nos hemos equivocado al seleccionar el CD. Por este motivo es importante, antes de ponerse a instalar nada, elegir correctamente el CD de 32 o 64 bits.

Para saber si nuestro servidor o PC cliente donde se va a instalar el software Oracle es de 32 o 64 bits tenemos que hacer:

Windows 8
Abre el menú Inicio de Windows 8 y elige Sistema. Se muestra una ventana. Arriba te indica la versión. Por la mitad, en la línea Tipo de sistema, aparece si el sistema operativo es de 32 o 64 bits.

Windows 7
Entra en el menú Inicio, haz clic con el botón derecho del ratón en Equipo y luego pincha en Propiedades. Se abrirá la ventana Sistema. Entre otras cosas te dice tu versión de Windows y de Service Pack y el número de bits.

Windows XP y Windows Vista
Esto lo podemos hacer de 2 maneras:

La primera ejecutándo desde el menú el sysdm para sacar las propiedades del sistema o bien accediendo a la misma pantalla mediante el ratón.

Primera opción:
1.    Entra en el menú Inicio y haz clic en Ejecutar (abajo, a la derecha).
2.    Escribe en la ventana sysdm.cpl y pulsa Enter o Aceptar.
3.    Pincha en la pestaña General.
Si tu Windows XP es de 64 bits deberás ver x64 justo después del nombre de la versión (Windows XP Professional x64 Edition Versión). Si no pone nada significa que es de 32 bits.

Segunda opción:

En el icono Mi PC, pulsar botón derecho y saldrá la pantalla siguiente de propiedades del sistema o también desde Inicio -> Panel de control -> Sistema y mantenimiento -> Sistema.

En este ejemplo, como no sale nada de x64 significa que es de 32 bits.

Si tu Windows XP es de 64 bits deberás ver x64 justo después del nombre de la versión (Windows XP Professional x64 Edition Versión). Si no pone nada significa que es de 32 bits.

NOTA:
En los CD´s originales de Oracle, si la versión es de 32 bits no suele tampoco poner nada. Sin embargo, si la versión es de 64 bits lo indica expresamente en el mismo CD al lado del nombre del producto.

Posted in Administración Sistemas, Instalaciones | Tagged , , | Leave a comment

Crear una tabla con contenido mediante database link de una base de datos a otra

En la siguiente entrada de Blog, voy a explicar como crear una tabla con contenido en una base de datos Oracle accediendo a otra base de datos Oracle mediante un database Link. Además voy a mostrar que la creación de la tabla en destino puede presentar diferencias de storage dependiendo de cómo la creemos. Si queremos que sea idéntica a la de origen, tendremos que copiar sus parámetros de storage en la sentencia de creación. Esto es una manera de crear una tabla con contenido sin necesidad de utilizar las utilidades exp/imp ni expdp/impdp.

Esto es muy útil cuando queremos crear una tabla que tenemos en Desarrollo o Pre-producción y queremos pasarlo al entorno de producción.

Para el ejemplo daré por hecho que tenemos un Data Base Link creado que permite acceder a la Base de datos de destino. Un database link se crea de la siguiente manera:

CREATE PUBLIC DATABASE LINK "MY_DBLINK"
CONNECT TO USUARIO_PRUEBA
IDENTIFIED BY  "<pwd_usuario>"
USING '<cadena_conexión>'; -- Esto consiste en una cadena de conexión que debe estar en tnsnames.ora

Puedes ampliar información sobre DBLinks aqui

Para comprobar que el DBLink funciona, podemos hacer la consulta hacia la tabla que queremos copiar de la siguiente  manera:

SQL> SELECT * FROM USUARIO_PRUEBA.TABLA@MY_DBLINK;

 Ahora creamos la tabla con el contenido de la siguiente manera:

- Primero nos conectamos a la Base de datos, con el usuario que corresponda, donde queremos crear la tabla con el contenido:

sqlplus usuario_prueba@cadena_conexion

- Ahora creamos la tabla …

SQL> CREATE TABLE usuario_prueba.nombre_tabla AS SELECT * from USUARIO_PRUEBA.TABLA@MY_DBLINK;

Esta sentencia creará la tabla en el destino con su contenido, pero los parámetros de STORAGE serán los que tenga el tablespace donde esta asignado “usuario_prueba”. Es decir, no cogerá los valores de STORAGE que tiene la tabla en origen.

Ahora probaremos con otro ejemplo, donde si detallamos el STORAGE que queremos y el tablespace donde queremos ubicar la tabla.

CREATE TABLE usuario_prueba.nombre_tabla
 TABLESPACE tablespace
 PCTUSED    40
 PCTFREE    10
 INITRANS   1
 MAXTRANS   255
 STORAGE    (
 INITIAL          10016K
 NEXT             10000K
 MINEXTENTS       1
 MAXEXTENTS       499
 PCTINCREASE      0
 FREELISTS        1
 FREELIST GROUPS  1
 BUFFER_POOL      DEFAULT
 )
 LOGGING
 NOCACHE
 NOPARALLEL AS SELECT * FROM USUARIO_PRUEBA.TABLA@MY_DBLINK;

En este otro ejemplo, el storage que tendrá la tabla será el especificado en la misma sentecia CREATE TABLE, y los datos los cogerá exactamente igual que la sentencia anterior.

Posted in Administración Oracle | Tagged , , , , | Leave a comment