miércoles, 8 de julio de 2020

REP-52262: Diagnostic output is disabled en Oracle Reports 12c

Este mensaje suele aparecer en una nueva instalación de Oracle Forms/Reports 11g o 12c.



Este mensaje nos indica que está deshabilitada la información de diagnostico de Reports y suele ser el siguiente mensaje en aparecer luego de haber solucionado el error REP-51019. 

Para solucionarlo debemos realizar lo siguiente:

1. Sacar respaldo del archivo rwservlet.properties

Este archivo se encuentra en la siguiente ubicación:

$DOMAIN_HOME\config\fmwconfig\servers\WLS_REPORTS\applications\reports_#\configuration


2.Agregar la siguiente linea debajo de la linea de <inprocess>

<webcommandaccess>L2</webcommandaccess>


3. Por último se debe reiniciar el servidor de Reportes.

Con los pasos anteriores ya no se presentará el mensaje en cuestión y podremos acceder sin problema a los comandos web del servlet de Reports.

REP-51019 System user authentication is missing en Oracle Reports 12c

En una nueva instalación de Oracle Forms/Reports es común que se muestre en pantalla el mensaje en cuestión al tratar de ver alguna de las opciones del servlet de Reports, como por ejemplo la opción de showjobs que nos permite ver el detalle de trabajos de reportes ejecutados y siendo ejecutados.

Para lograr ver las diferentes opciones del Servlet de Reports y que no nos aparezca este mensaje debemos hacer lo siguiente para deshabilitar la seguridad:

1. Sacar respaldo de los archivos rwservlet.properties y rwserver.conf

2. En el archivo rwservlet.properties verificar que la opción de SSO esté desactivada, debe estar así:

<singlesignon>no</singlesignon>


3. Luego debemos deshabilitar la seguridad de JAZN, para ello hacemos lo siguiente en el archivo rwserver.conf

La siguiente línea la debemos comentar:

ANTES:

<security id="rwJaznSec" class="oracle.reports.server.RWJAZNSecurity"/>

DESPUÉS:

<!--security id="rwJaznSec" class="oracle.reports.server.RWJAZNSecurity"/-->

4. Siempre en el archivo rwserver.conf debemos quitar la referencia a la seguridad de JAZN en el nodo del Job:


ANTES:

<job jobType="report" engineId="rwEng" securityId="rwJaznSec"/>

DESPUÉS:

<job jobType="report" engineId="rwEng"/>


5. Por último debemos reiniciar nuestro servidor de Reportes.


Con los pasos anteriores el mensaje habrá desaparecido.


Nota: Posiblemente luego de estos pasos deberán habilitar el acceso a los comandos del servlet de Reports, para ello pueden hacer lo que se detalla en la siguiente nota:

REP-52262

jueves, 28 de mayo de 2020

REP-69 An internal error occurred REP-56132 Access is denied to the report definition en Oracle Reports 12c

Al ejecutar un reporte en Oracle Reports 12c se puede presentar el error que se muestra en la siguiente imagen:


Para entender un poco la causa de éste error, tenemos que tener en cuenta que desde la versión 12c es necesario seleccionar la ruta de donde se pueden leer archivos de reportes tipo RDF y a donde se puede escribir en el caso que la salida del reporte vaya a Archivo.

En el archivo rwserver.conf se debe definir la siguiente sección la cual especifica la ruta de donde se leen los archivos RDF y donde se guardan las salidas de los reportes que van a Archivo o File:

<folderAccess>
  <read>O:\Reportes</read>
  <write>C:\temp</write>
</folderAccess>


Ahora bien, el error mostrado nos está diciendo que no se tiene acceso al archivo fuente del reporte que se está queriendo ejecutar, las posibles causa de ésto son:

1. La ruta donde se encuentra el reporte no está agregada al REPORTS_PATH
2. Si es Linux, el link simbólico de la ruta no está agregado al REPORTS_PATH
3. La ubicación donde se encuentra el reporte no está definido como una opción de "lectura" permitida, lo que explicaba antes.
4. El nombre del reporte no está correcto.


Se debe validar los puntos anteriores para solucionar el problema en cuestión.

lunes, 13 de abril de 2020

Está certificado Weblogic 10.3.6 con la base de datos 19c ?

La respuesta es SI.

Weblogic 10.3.6 se encuentra certificado con la versión de Oracle Database 19.3+ en modalidad On-Premise.

Nota: está soportada la versión de base de datos 18c/19c pero siempre en modalidad On-Premisa, la versión 18c/19c en la nube NO está soportada.

La certificación está dando con los drivers que ya vienen instalados con el Weblogic, si necesitan cambiar los drivers del Weblogic tomen en consideración que no está soportado hacerlo manualmente, sino se debe seguir el método provisto por Oracle que sería instalar algún parche.

Para mayor información se puede revisar la siguiente nota de Oracle:
If Weblogic 10.3.6 Support Oracle DB 19c? (Doc ID 2637763.1)

viernes, 13 de marzo de 2020

REP-0118 al tratar de abrir el Reports Builder

Si en una nueva instalación de Forms/Reports al tratar de abrir el Reports Builder nos aparece el siguiente mensaje:

REP-0118: Unable to create a temporary file.

Es debido a que la variable REPORTS_TMP no está definida o está apuntando a una ubicación en la cual no se tiene permisos de escritura.

Por lo anterior se debe validar lo siguiente para su corrección:
  • Validar que la variable este definida en la siguiente ubicación: HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_Oraclexxxx
  • La Ubicación a la que apunta la variable anterior el usuario tenga permisos de escritura y que tenga el espacio suficiente.


Como crear un Servidor de Reportes de tipo Standalone en Oracle Reports 12c

Para crear un Servidor de Reportes de tipo Standalone y no utilizar el tradacional de tipo In-Process que se crear al instalar el producto, se deben seguir los siguientes pasos:
  1. Desde una linea de comandos o terminal ubicarse en la siguiente ruta: $ORACLE_HOME\oracle_common\common\bin
  2. Iniciar el WLST por medio de ejecutar el archivo wlst.cmd/wlst.sh
  3. Conectarnos al AdminServer por medio del siguiente comando:  connect('weblogic','weblogic_password','localhost:7001')
  4. Ejecutar el siguiente comando para crear el Servidor de Reportes:
 createReportsServerInstance(instanceName='rep_server1',machine='AdminServerMachine')

    Listo! con esto se ha creado el Servidor de tipo Stanadlone.

Nota: antes de proceder con los pasos para crear el Servidor de Reportes de tipo Standalone, se debe haber ejecutado por medio de WLST el comando createReportsToolsInstance(). Pueden corroborar que ya se ejecuto si existe el siguiente directorio:

$DOMAIN_HOME\reports

miércoles, 11 de diciembre de 2019

Error oracle.as.scheduler.ejb.AsyncRequestBean desplegando BI Publisher 12c

Al tratar de desplegar el EAR del BI Publisher se presenta el siguiente error en la consola de Weblogic:

Unable to access the selected application.
Error oracle.as.scheduler.ejb.AsyncRequestBean
El siguiente mensaje puede aparecer también:

The configuration for xxxx is still being loaded from your last request, please wait a moment and retry.

CAUSA:

Las librerías compartidas del despliegue no se encuentran disponibles para el AdminServer.

SOLUCIÓN:

1. Entrar a la consola de Weblogic.
2. Activar sesión de cambios en la consola.
3. Navegar al apartado de Despliegues.
4. Ingresar a la librería bip-shared-libraries(11.1.1)
5. Seleccionar el tab "Targets".
6. Seleccionar el servidor AdminServer y guardar los cambios.
7. Activar los cambios en la consola.
8. Probar nuevamente el despliegue de la aplicación de BI Publisher... esta vez debe funcionar! ;)

NOTA:

Si aún con los pasos anteriores no funciona, los siguientes pasos pueden ayudar:

1. Bajar todos los servicios de BI:
    $DOMAIN_HOME/bitools/bin/stop.sh
2. Reemplazar el EAR (en caso de no haberlo borrado desde la consola).
3. Remover la carpeta tmp que se encuentra en la ruta:
    $DOMAIN_HOME/servers/bi_server1/tmp
4. Iniciar todos los servicios de BI:
    $DOMAIN_HOME/bitools/bin/start.sh




lunes, 4 de noviembre de 2019

Crear Wallet en Base de Datos Oracle: UTL_HTTP y SSL

Si estás tratando de consumir un servicio Web por medio de HTTPS a nivel de código PL/SQL o por otra vía en la Base de Datos y te da el siguiente error:

ORA-29024: Certificate validation failure

Es debido a que la base de datos no confía en el certificado digital que se le presenta cuando trata de establecer comunicación con el servidor donde se encuentra alojado el servicio web en cuestión.

Para solucionar ésto lo que debemos hacer es conseguir el certificado del servidor donde se encuentra alojado el servicio web y crear una Wallet a nivel del sistema operativo donde se encuentra instalada nuestra base de datos. El certificado se puede conseguir en la barra de dirección del navegador cuando ponemos el WSDL del servicio.

Una vez tenemos el certificado realizamos los siguientes pasos:

1. Crear carpeta que contendrá el wallet:

mkdir -p /u01/app/oracle/wallet

2. Configurar las variables de ambiente de la base de datos porque haremos uso de la utilidad de orapki

3. Crear wallet:

orapki wallet create -wallet /u01/app/wallet -pwd welcome123 -auto_login

4. Agregar certificado:

orapki wallet add -wallet /u01/app/oracle/wallet -trusted_cert -cert "/u01/Root.crt" -pwd welcome123

5. Probar la invocación del servicio, para ello agregar el wallet antes de la invocación del servicio:

En mi caso lo probaré desde el SQLPLUS, una sola sesión todo lo siguiente:

SET SERVEROUTPUT ON
EXEC UTL_HTTP.set_wallet('file:/u01/app/oracle/wallet', NULL);
Creamos el siguiente procedimiento almacenado:

CREATE OR REPLACE PROCEDURE show_html_from_url (
  p_url  IN  VARCHAR2,
  p_username IN VARCHAR2 DEFAULT NULL,
  p_password IN VARCHAR2 DEFAULT NULL
) AS
  l_http_request   UTL_HTTP.req;
  l_http_response  UTL_HTTP.resp;
  l_text           VARCHAR2(32767);
BEGIN
  -- Make a HTTP request and get the response.
  l_http_request  := UTL_HTTP.begin_request(p_url);

  -- Use basic authentication if required.
  IF p_username IS NOT NULL and p_password IS NOT NULL THEN
    UTL_HTTP.set_authentication(l_http_request, p_username, p_password);
  END IF;

  l_http_response := UTL_HTTP.get_response(l_http_request);

  -- Loop through the response.
  BEGIN
    LOOP
      UTL_HTTP.read_text(l_http_response, l_text, 32766);
      DBMS_OUTPUT.put_line (l_text);
    END LOOP;
  EXCEPTION
    WHEN UTL_HTTP.end_of_body THEN
      UTL_HTTP.end_response(l_http_response);
  END;
EXCEPTION
  WHEN OTHERS THEN
    UTL_HTTP.end_response(l_http_response);
    RAISE;
END show_html_from_url;
/
Por último probamos la invocación:

EXEC show_html_from_url('https://esb.rinnovo.com:8885/purchase/get-transactions');
Obtendremos la respuesta de nuestro servicio sin problemas:

SQL> EXEC show_html_from_url('https://esb.rinnovo.com:8885/purchase/get-transactions');
{"generalResponse":{"responseDescription":"Version no
especificada","errors":[{"code":"400","id":"4b157gda-a7fc
","detail":"No se especificado un encabezado URI
existente","title":"Version no especificada"}],"responseCode":"700"}}

PL/SQL procedure successfully completed.

SQL>

Con el procedimiento anterior, solo bastará agregar la linea donde configuramos el Wallet sin el EXEC.