<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-4067849093780415132</atom:id><lastBuildDate>Fri, 18 Jun 2010 12:51:54 +0000</lastBuildDate><title>amox + oracle</title><description></description><link>http://oracle.amox.mx/</link><managingEditor>noreply@blogger.com (amox)</managingEditor><generator>Blogger</generator><openSearch:totalResults>75</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-675105829173070889</guid><pubDate>Fri, 25 Dec 2009 16:50:00 +0000</pubDate><atom:updated>2009-12-25T10:53:41.269-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>humor</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><title>Quién dice que no hay chamba? O que no la hay bien pagada?</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vhZkOZQyL5Y/SzTtkj77_7I/AAAAAAAAAQ8/IbtNpY6Wyqw/s1600-h/Picture+46.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 302px; height: 320px;" src="http://4.bp.blogspot.com/_vhZkOZQyL5Y/SzTtkj77_7I/AAAAAAAAAQ8/IbtNpY6Wyqw/s320/Picture+46.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5419217464011259826" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Qué tal $30,000 dólares al mes?&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-675105829173070889?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/12/quien-dice-que-no-hay-chamba-o-que-no.html</link><author>noreply@blogger.com (amox)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vhZkOZQyL5Y/SzTtkj77_7I/AAAAAAAAAQ8/IbtNpY6Wyqw/s72-c/Picture+46.png' height='72' width='72'/><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-4133670833128656551</guid><pubDate>Sun, 11 Oct 2009 04:29:00 +0000</pubDate><atom:updated>2009-10-10T23:35:29.167-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sql</category><category domain='http://www.blogger.com/atom/ns#'>custom</category><category domain='http://www.blogger.com/atom/ns#'>cemli</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><title>Cómo crear CEMLIs para Oracle Applications y no morir en el intento, Parte 8</title><description>&lt;/p&gt;
&lt;p&gt;Si no puedes ver el contenido, favor de dirigirte a la siguiente url: &lt;a href="http://knol.google.com/k/cuauhtemoc-amox-cornelio/quick-guide-on-database-objects/153594c4goidl/21?collectionId=153594c4goidl.11&amp;position=15"&gt;http://knol.google.com/k/cuauhtemoc-amox-cornelio/quick-guide-on-database-objects/153594c4goidl/21?collectionId=153594c4goidl.11&amp;position=15&lt;/a&gt;&lt;/p&gt;
&lt;iframe src="http://knol.google.com/k/cuauhtemoc-amox-cornelio/quick-guide-on-database-objects/153594c4goidl/21?embed=content" width="540" height="800"&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-4133670833128656551?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/10/como-crear-cemlis-para-oracle.html</link><author>noreply@blogger.com (amox)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-6654080446720583380</guid><pubDate>Sun, 11 Oct 2009 04:15:00 +0000</pubDate><atom:updated>2009-10-10T23:32:06.561-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>news</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><title>In English, please</title><description>&lt;/p&gt;
&lt;p&gt;In order to reach a wider audience, from now on, posts will written be mostly in English. I Know sometimes is really difficult to find information in Spanish, but that should be a motivation to learn English instead of giving up or complaining about the lack of help on the web. Still, those who now me know where to reach me and can always discuss Oracle in our mother language and curse on it, as that's one particular topic where Spanish is way better than English.&lt;/p&gt;
&lt;p&gt;Parallel to this blog, I've been also maintaining a &lt;a href="http://knol.amox.mx/"&gt;knol&lt;/a&gt;. Being the consolidation need another reason to decide what language to keep writing on. From now on I'll be writing on the know, as I like better that interface for writing tutorials and how-to's. Articles will be embedded here also individually. In the meantime, here is a list of all the posts I've written so far.&lt;/p&gt;
&lt;p&gt;If the list doesn't appear (seems to have issues with Safari), you can view it at &lt;a href="http://knol.google.com/k/cuauhtemoc-amox-cornelio/a-m-o-x-o-r-a-c-l-e/153594c4goidl/11#"&gt;http://knol.google.com/k/cuauhtemoc-amox-cornelio/a-m-o-x-o-r-a-c-l-e/153594c4goidl/11#&lt;/a&gt;&lt;/p&gt;
&lt;iframe src="http://knol.google.com/k/cuauhtemoc-amox-cornelio/a-m-o-x-o-r-a-c-l-e/153594c4goidl/11?embed=content" width="540" height="800"&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-6654080446720583380?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/10/in-english-please.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-519906329125344490</guid><pubDate>Fri, 17 Jul 2009 17:19:00 +0000</pubDate><atom:updated>2009-10-01T22:19:12.435-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sql</category><category domain='http://www.blogger.com/atom/ns#'>pl/sql</category><category domain='http://www.blogger.com/atom/ns#'>fallas</category><category domain='http://www.blogger.com/atom/ns#'>cemli</category><category domain='http://www.blogger.com/atom/ns#'>rdbms</category><category domain='http://www.blogger.com/atom/ns#'>workflow</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><category domain='http://www.blogger.com/atom/ns#'>application server</category><title>Consecuencias de recompilar stored procedures utilizados por Workflow</title><description>&lt;/p&gt;
&lt;p&gt;Algo que no me ha parecido en cuanto al comportamiento de Oracle Workflow es el referente a que cuando se recompila algún procedimiento almacenado que es referenciado por el mismo, sea una actividad o atributo tipo documento, el workflow truena con errores de que el estado del package es inconsistente, o no existe, y a diferencia de una sesión de pl/sql, no se soluciona con reintentar el llamado o si se está utilizando la aplicación, cambiarse de responsabilidad.&lt;/p&gt;
&lt;p&gt;El problema requiere lo siguiente para solucionarlo (Nota 761638.1) , lo cual no me agrada en lo absoluto:
&lt;ul&gt;
&lt;p&gt;When a package is compiled, all copies in the shared pool are flagged as invalid. The error ORA-04061 in the error stack is caused because the notification mailer is reading an old version of the package stored in memory.  &lt;/p&gt;

&lt;p&gt;1. Please bring down the concurrent managers, forms server, apache server, etc....on the middle tier. - It is recommended that $COMMON_TOP/admin/scripts/SID/adstpall.sh apps/apps or equivalent be used.&lt;/p&gt;

&lt;p&gt;2. Enter adadmin - Recompile the APPS schema - take note of invalid objects prior - and then thereafter -to ensure no new invalid objects are created.&lt;/p&gt;

&lt;p&gt;3. Bring the instance back up - and retest this problem at hand.- Ensure the notification mailer is bounced completely when restarting the instance&lt;/p&gt;

&lt;p&gt;4. Retest the problem by creating a new requisition - confirm that the approval is flowing properly.&lt;/p&gt;

&lt;p&gt;For the requisitions which are still in error, please login as the System Administrator - and utilize the RETRY option that will be available in the notifications which were sent identifying
 the error. &lt;/p&gt;&lt;/ul&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-519906329125344490?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/07/consecuencias-de-recompilar-stored.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-284111362448031045</guid><pubDate>Fri, 17 Jul 2009 15:20:00 +0000</pubDate><atom:updated>2009-07-17T10:37:22.426-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sql</category><category domain='http://www.blogger.com/atom/ns#'>custom</category><category domain='http://www.blogger.com/atom/ns#'>api</category><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>pl/sql</category><category domain='http://www.blogger.com/atom/ns#'>cemli</category><category domain='http://www.blogger.com/atom/ns#'>rdbms</category><category domain='http://www.blogger.com/atom/ns#'>workflow</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><title>Cómo enviar notificaciones de Workflow a correos no registrados</title><description>&lt;/p&gt;
&lt;p&gt;Si bien es posible enviar notificaciones de manera natural a roles creados en el directorio de Workflow, los cuales se generan a partir de datos de la aplicación como son usuarios, parties, empleados, etc., puede haber ocasiones en que será necesario enviarlas a un correo que no esté directamente relacionado a un rol y por consistencia de información no sea factible crear un dato "dummy".&lt;/p&gt;
&lt;p&gt;Puesto que en la notificación, el valor para el Performer es obligatoriamente el nombre de un rol, tampoco podemos poner directamente el correo, por lo que nos vemos en la necesidad de buscar una alternativa para genera un rol y que este no cree información en el sistema que pueda causar confusión en cuanto a su utilización.&lt;/p&gt;
&lt;p&gt;La opción utilizada es recurrir a las APIs de workflow, en particular las del manejo del directorio (WF_DIRECTORY), para crear un rol Ad-Hoc que pueda ser utilizado como performer. El código es simple:
&lt;pre&gt;
 wf_directory.CreateAdHocRole(
    role_name =&amp;gt; 'CODIGO_ROL'
  , role_display_name =&amp;gt; 'Descripcion Rol'
  , email_address =&amp;gt; 'correo@dominio.mx'
  , language =&amp;gt; 'AMERICAN'
  , territory =&amp;gt; 'AMERICA'
  , parent_orig_system =&amp;gt;'WF_LOCAL_ROLES'
  , parent_orig_system_id =&amp;gt;'10001');     
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Con esto, el rol se crea en la base de datos y está disponible para ser utilizado como performer de una notificación.&lt;/p&gt;
&lt;p&gt;Cabe resaltar que esto es cuando el correo es necesario para el destinatario principal de la notificación. Para casos en los que sólo se requiere enterar a correos adicionales en el CC o BCC, es posible utilizar atributos del mensaje a utilizar, #WFM_CC y #WFM_CC, donde es permitido utilizar direcciones de correo directamente, sin necesidad de especificar el rol.&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-284111362448031045?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/07/como-enviar-notificaciones-de-workflow.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-5857903046021929337</guid><pubDate>Fri, 17 Jul 2009 14:58:00 +0000</pubDate><atom:updated>2009-07-17T10:04:02.261-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>forms</category><category domain='http://www.blogger.com/atom/ns#'>fusion</category><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>cemli</category><category domain='http://www.blogger.com/atom/ns#'>jdeveloper</category><category domain='http://www.blogger.com/atom/ns#'>release 12</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><category domain='http://www.blogger.com/atom/ns#'>application server</category><title>JDdeveloperLA</title><description>&lt;/p&gt;
&lt;p&gt;Para quienes ya sienten pasos en la azotea por la obsolesencia de Forms y están viendo como Java está teniendo más presencia en el desarrollo de interfaces de usuario para aplicaciones Oracle, no está de más darle una revisada al sitio &lt;a href="http://jdeveloperla.com/"&gt;JDeveloperLA&lt;/a&gt; y su aportación de contenido en español sobre estos asuntos.&lt;/p&gt;
&lt;p&gt;Ahora bien, hay que tener ya los fundamentos de Java y J2EE, así que a darle antes de que el futuro, no sólo nos alcance, si no que ya nos está rebasando incluso.&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-5857903046021929337?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/07/jddeveloperla.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-2005367449112027101</guid><pubDate>Wed, 15 Jul 2009 19:36:00 +0000</pubDate><atom:updated>2009-07-17T09:19:22.622-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>noticias</category><title>También en Oracle hay recortes de personal</title><description>&lt;/p&gt;
&lt;p&gt;Si aún no lo han vivido en carne propia, es un hecho que la situación económica en estos momentos si está haciendo mella en muchos aspectos y lo relacionado con Oracle no está exento de ello. Como referencia la nota sobre unos &lt;a href="http://www.reuters.com/article/technologyNews/idUSTRE5615EX20090702"&gt;1,000 despidos en Europa&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-2005367449112027101?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/07/tambien-en-oracle-hay-recortes.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-7296320853743859216</guid><pubDate>Sun, 05 Jul 2009 05:01:00 +0000</pubDate><atom:updated>2009-07-05T00:31:48.490-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sql</category><category domain='http://www.blogger.com/atom/ns#'>custom</category><category domain='http://www.blogger.com/atom/ns#'>api</category><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>pl/sql</category><category domain='http://www.blogger.com/atom/ns#'>cemli</category><category domain='http://www.blogger.com/atom/ns#'>workflow</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><title>Utilizar HTML en notificaciones de Workflow</title><description>&lt;/p&gt;
&lt;p&gt;No tengo mucha experiencia práctica con Workflow, en general sólo modificando procesos, no habiéndome metido con los atributos, actividades, notificaciones y api's, así que asumía que de un requerimiento que me hicieron para mostrar una tabla formateada podía simplemente poner el html en la notificación, sea directamente o en un atributo cuyo valor lo generaba desde un procedimiento almacenado.&lt;/p&gt;
&lt;p&gt;Creado el atributo, modificado el mensaje y probado el procedimiento almacenado, la prueba mostró las etiquetas &lt;code&gt;html&lt;/code&gt; sin interpretarlas. Si bien le había dado una ojeada express al developer guide de workflow, al regresar con calma al mismo, éste especifica claramente que por motivos de seguridad, éste es el comportamiento del software, y que para lograr lo requerido es necesario la definición de atributos de tipo documento. He aquí los pasos, buscando también que el contenido sea dinámico dependiendo de un parámetro.&lt;/p&gt;
&lt;h3&gt;Crear atributos&lt;/h3&gt;
&lt;p&gt;Crear 2 atributos, uno para el documento como tal y otro para el id del mismo. Para el id, se deja de tipo texto dado que es posible que debamos proporcionar múltiple información para armar el html. Para el ejemplo simplemente se pasará el id.
&lt;ul&gt;
&lt;li&gt;Nombre: DOCUMENT_ID&lt;/li&gt;
&lt;li&gt;Nombre Descriptivo: Id Documento HTML&lt;/li&gt;
&lt;li&gt;Typo: Texto&lt;/li&gt;
&lt;li&gt;Longitud: 30&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;Para el documento como tal, considerando que ya creamos el procedimiento almacenado para generarlo. El valor por default sigue el formato plsql:nombre.procedimiento.almacenado/valor_param_document_id. En este caso, al ser variable el id, utilizamos un token para ser sustituido en tiempo de ejecución por el valor del atributo referenciado.
&lt;ul&gt;
&lt;li&gt;Nombre: MSG_HTML&lt;/li&gt;
&lt;li&gt;Nombre Descriptivo: Mensaje documento HTML&lt;/li&gt;
&lt;li&gt;Valor: Constante&lt;/li&gt;
&lt;li&gt;Default: plsql:bolinf.amox_wf_test.html_document/&amp;DOCUMENT_ID&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;h3&gt;Procedimiento para generar html&lt;/h3&gt;
&lt;p&gt;El procedimiento debe seguir los estándares definidos por workflow, de tal manera que al ser llamado funcione y se integre adecuadamente. A continuación un ejemplo sencillo:
&lt;pre&gt;
  procedure html_document(
     document_id   in           varchar2
   , display_type  in           varchar2
   , document      in out nocopy varchar2 
   , document_type in out nocopy varchar2 )  
  is                    
  begin             
  document_type := 'text/html' ;
  document := '&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Id Documento&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;' || document_id || '&amp;lt;/td&gt;&amp;lt;/tr&gt;' ;
  end html_document ;  
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;Uso&lt;/h3&gt;
&lt;p&gt;En el flujo de proceso, en las actividades previas a la notificación, generar el id para identificar el documento y asignarlo al atributo DOCUMENT_ID. En la notificación, agregar el token para el documento, &amp;MSG_HTML. En tiempo de ejecución, éste último token efectuará la llamada al procedimiento almacenado, reemplazando a su vez el id por el valor de atributo DOCUMENT_ID, lo que permitirá en el procedimiento determinar como armar el mensaje.&lt;/p&gt;
&lt;h3&gt;Precauciones&lt;/h3&gt;
&lt;p&gt;Dado que es a nivel notificaciçon, en caso de haber error, el workflow no truena, más el error aparecerá en el mensaje, el cuál habrá que revisar para identificar el problema. Tener cuidado con la longitud del mensaje y las variables para contenerlo. Por definición, workflow acepta hasta 32k de información de atributos de tipo documento, más considerar que también el mensaje tiene un límite, por lo que si se presenta demasiada información, se podrá truncar el mensaje en caso de exceder el máximo soportado.&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-7296320853743859216?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/07/utilizar-html-en-notificaciones-de.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-7718958709638293929</guid><pubDate>Sun, 05 Jul 2009 04:36:00 +0000</pubDate><atom:updated>2009-07-05T00:00:50.576-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sql</category><category domain='http://www.blogger.com/atom/ns#'>pl/sql</category><category domain='http://www.blogger.com/atom/ns#'>cemli</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><title>Obtener passwords de usuarios de Oracle Applications</title><description>&lt;/p&gt;
&lt;p&gt;Si bien esta &lt;i&gt;vulnerabilidad&lt;/i&gt; ya tiene algo de tiempo publicada, y ya en algún momento Alfredo Mosqueda me había pasado el código, no había necesidad de haberlo utilizado hasta recién que hubo que trabajar con On Demand, teniendo poco tiempo para liberar un desarrollo y no mucha velocidad de respuesta de parte de Oracle, así que hubo que darle la vuelta volándose la contraseña de sysadmin. Esto funcionará en dev y test.&lt;/p&gt;
&lt;h3&gt;La vulnerabilidad&lt;/h3&gt;
&lt;p&gt;El asunto reside en que la contraseña de apps es la llave para encriptar las claves de usuario (por ello es que para cambiar la contraseña de apps es necesario ejecutar fndcpass y no solo cambiarla a nivel bd). Ésta en conjunto con el procedimiento almacenado para desencriptar los passwords permite obtener la contraseña de cualquier usuario del sistema. Para los detalles, ver este &lt;a href="http://johanlouwers.blogspot.com/2006/12/oracle-applications-passwords.html"&gt;post&lt;/a&gt; en el blog de Johan Lowers.&lt;/p&gt;
&lt;h3&gt;Obtener la contraseña de apps&lt;/h3&gt;
&lt;p&gt;Si es una instalación en sitio, generalmente contamos con ella para el ambiente de desarrollo. De no ser así, utilizar la ingeniería social, ya depende de cada quien si lo consigue.&lt;/p&gt;
&lt;p&gt;Para on demand, con unsuario de sistema operativo del ambiente objetivo, dev (d) o test (t) teclear lo siguiente (reemplazar amox por el nombre corto asignado a la implementación)
&lt;pre&gt;
pbrun impdba password-manager [d|t]amoxi
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Lo cual mostrará algo como lo siguiente
&lt;pre&gt;
apps:OD3rgY4z
bolinf:G2pfA7xL
rac_accnt:RB2qgX7w
system:MH5qdW3a
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;Publicar la función para desencriptar&lt;/h3&gt;
&lt;p&gt;Crear el siguiente package en el esquema apps:
&lt;pre&gt;
create or replace package amox_util
as function decrypt(key in varchar2, value in varchar2) return varchar2 ;
end ;
create or replace package body amox_util 
as
function decrypt(key in varchar2, value in varchar2) 
return varchar2  as 
language java name 'oracle.apps.fnd.security.WebSessionManagerProc.decrypt(java.lang.String,java.lang.String) return java.lang.String';
end;
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;Query para obtener el password de usuarios&lt;/h3&gt;
&lt;p&gt;Utilizar el siquiente query, el cual solicita el nombre de usuario y devuelve la contraseña:
&lt;pre&gt;
SELECT
usertable.user_name
,(SELECT
amox_util.decrypt(UPPER((
SELECT(
SELECT
amox_util.decrypt(UPPER(
(SELECT upper(fnd_profile.value('GUEST_USER_PWD')) FROM dual)
)
,usertable.encrypted_foundation_password)
FROM dual
) AS apps_password
FROM
fnd_user usertable
WHERE
usertable.user_name LIKE upper(
(SELECT
substr(fnd_profile.value('GUEST_USER_PWD'),1,instr(fnd_profile.value('GUEST_USER_PWD'),'/')-1)
FROM dual)
)
)
),usertable.encrypted_user_password)
FROM
dual
) AS encrypted_user_password
FROM
fnd_user usertable
WHERE
usertable.user_name LIKE upper('&amp;username')&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-7718958709638293929?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/07/obtener-passwords-de-usuarios-de-oracle.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-7594340123199415778</guid><pubDate>Sun, 05 Jul 2009 00:58:00 +0000</pubDate><atom:updated>2010-03-03T23:26:13.452-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sql</category><category domain='http://www.blogger.com/atom/ns#'>ora</category><category domain='http://www.blogger.com/atom/ns#'>metalink</category><category domain='http://www.blogger.com/atom/ns#'>noticias</category><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>pl/sql</category><category domain='http://www.blogger.com/atom/ns#'>fallas</category><category domain='http://www.blogger.com/atom/ns#'>rdbms</category><category domain='http://www.blogger.com/atom/ns#'>shell</category><category domain='http://www.blogger.com/atom/ns#'>application server</category><title>Instalar Oracle 10G R2 en Mac OS X</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vhZkOZQyL5Y/SlAkXsolgVI/AAAAAAAAANc/omlPrtx5T-A/s1600-h/Picture+22.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 258px;" src="http://2.bp.blogspot.com/_vhZkOZQyL5Y/SlAkXsolgVI/AAAAAAAAANc/omlPrtx5T-A/s320/Picture+22.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5354819946480501074" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Después de que sólo estuvo disponible para versión server del sistema operativo y para equipos con procesadores PPC, no hace mucho Oracle por fin puso a disposición la versión 10G R2 de la base de datos para equipos con procesador intel, para versiones 10.5 y superiores del sistema operativo. Si bien tiene sus limitaciones (no RAC, no iSQLPlus, Applications Server, entre otros), para efectos de pruebas, ayuda en tanto que evita tener que requerir de una máquina virtual.&lt;/p&gt;
&lt;p&gt;La instalación está bien documentada y no hay mayor problema con ello, más si me ví cauto en modificar algunos parámetros del sistema operativo, así como corroborar que el acceso a la bd por otros usuarios no oracle debe ser mediante el uso de un alias de tnsnames y no de manera local (bequeath).&lt;/p&gt;
&lt;p&gt;Sólo como observación, esta instalación es para pruebas únicamente, y puede no seguir recomendaciones de seguiridad, por lo que para su para un sistema en producción, consultar con su DBA.&lt;/p&gt;
&lt;h3&gt;Información&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10204macsoft_x86-64.html"&gt;Software&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://download.oracle.com/docs/cd/B19306_01/install.102/b25286/toc.htm"&gt;Guía de instalación Oracle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.pythian.com/news/1937/quick-install-guide-for-oracle-10g-release-2-on-mac-os-x-leopard-intel"&gt;Quick Install Guide&lt;/a&gt;, por Alex Gorbachev&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Prerequisitos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Sistema Operativo: Mac OS X 10.5.4 o Superior&lt;/li&gt;
&lt;li&gt;Procesador: Intel, 32 o 64 bits&lt;/li&gt;
&lt;li&gt;Software Adicional: Xcode, disponible en los medios de instalación del sistema operativo, o bien en el &lt;a href="http://developer.apple.com/"&gt;sitio&lt;/a&gt; de apple.&lt;/li&gt;
&lt;li&gt;Espacio en Disco: Unos 5 Gb en total, incluyendo sw de instalación&lt;/li&gt;
&lt;li&gt;Memoria: 1 Gb Mínimo, ideal de 2 Gb para arriba. Yo uso 4 y sin impacto alguno en desempeño&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Creación de Usuarios y grupos&lt;/h3&gt;
&lt;p&gt;Si se tiene instalado la versión server del sistema operativa, existe una herramienta gráfica, más ocupo la versión estándar así que hay que utilizar línea de comandos. Primero que nada hay que abrir una nueva sesión de la terminal y hacer un &lt;code&gt;sudo&lt;/code&gt; para un nuevo shell, de tal manera que estemos con el usuario root y podamos llevar a cabo tareas administrativas así como otras al finalizar la instalación. Será necesario proporcionar la contraseña del usuario administrador.&lt;/p&gt;
&lt;pre&gt;
sudo sh
Password:
&lt;/pre&gt;
Ahora, teclear lo siguiente para crear los grupos oinstall, dba y el usuario oracle, al final, establecemos contraseña para el usuario. La penúltima línea evita mostrar el nombre de usuario en la pantalla de login:
&lt;pre&gt;
dscl . -create /groups/oinstall
dscl . -append /groups/oinstall gid 4200
dscl . -append /groups/oinstall passwd "*"

dscl . -create /groups/dba
dscl . -append /groups/dba gid 4201
dscl . -append /groups/dba passwd "*"

dscl . -create /users/oracle
dscl . -append /users/oracle uid 4200
dscl . -append /users/oracle gid 4200
dscl . -append /Groups/dba GroupMembership oracle
dscl . -append /users/oracle shell /bin/bash
dscl . -append /users/oracle home /Users/oracle
dscl . -append /users/oracle realname "Oracle software owner"
dscl . -append /Groups/dba GroupMembership oracle
mkdir /Users/oracle
chown oracle:oinstall /Users/oracle
defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add oracle
passwd oracle
&lt;/pre&gt;
&lt;p&gt;Para validar que todo quedó de acuerdo a lo esperado, teclear &lt;code&gt;id oracle&lt;/code&gt;, lo cual debe mostrar algo como lo siguiente:&lt;/p&gt;
&lt;pre&gt;
uid=502(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)
&lt;/pre&gt;
&lt;h3&gt;Parámetros del Kernel&lt;/h3&gt;
&lt;p&gt;Para el correcto funcionamiento del software de oracle, será necesario modificar algunos parámetros del kernel. Dado que son varios, y algunos requieren reinstalación, se listan aquí sólo los que son necesarios, así como algunos adicionales a establecer en la sesión del usuario. Estos, probados en una Mac Book Pro intel de 2da generación.&lt;/p&gt;
&lt;p&gt;Crear o editar el archivo &lt;code&gt;/etc/sysctl.conf&lt;/code&gt; con los siguientes parámetros:&lt;/p&gt;
&lt;pre&gt;
kern.sysv.shmall=2097152
kern.sysv.shmmni=4096
kern.maxproc=1024
kern.maxprocperuid=512
&lt;/pre&gt;
&lt;p&gt;Abrir otra ventana de terminal e iniciar sesión con el usuario oracle, crear el archivo .bash_profile y agregar las siguientes líneas:&lt;/p&gt;
&lt;pre&gt;
# Must match kern.maxprocperuid
ulimit -Hu 266
ulimit -Su 266
# Must match kern.maxfilesperproc
ulimit -Hn 10240
ulimit -Sn 10240
# Evitar fallas en la creación de la BD
ulimit -s 32000
&lt;/pre&gt;
&lt;h3&gt;Crear directorios para instalación&lt;/h3&gt;
&lt;p&gt;Para utilizar la estructura existente en el sistema operativo Mac y una de las sugerencias de Oracle para la instalación, se crearán los directorios bajo &lt;code&gt;/opt&lt;/code&gt;, esto en la sesión de root.
&lt;pre&gt;
mkdir /opt/oracle
mkdir /opt/oraInventory
chown oracle:oinstall /opt/oraInventory/
chown oracle:oinstall /opt/oracle/
chmod 775 /opt/oracle
chmod 775 /opt/oraInventory
&lt;/pre&gt;
&lt;/p&gt;
&lt;h3&gt;Preparar la instalación&lt;/h3&gt;
&lt;p&gt;En la sesión de oracle, agregar lo siguiente al archivo .bash_profile. Modificar el &lt;pre&gt;ORACLE_SID&lt;/pre&gt; al que deseen utilizar 
&lt;pre&gt;
umask 022
ORACLE_BASE=/opt/oracle
ORACLE_SID=mbp
ORACLE_HOME=/opt/oracle/oracle/product/10.2.0/db_1
DYLD_LIBRARY_PATH=$ORACLE_HOME/lib
ORACLE_HOSTAME=localhost
TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_BASE ORACLE_SID ORACLE_HOME DYLD_LIBRARY_PATH ORACLE_HOSTNAME TNS_ADMIN
PATH=$PATH:$ORACLE_HOME/bin
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Teclear lo siguiente para establecer las variables:
&lt;pre&gt;
. ./.bash_profile
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Y validar que existan utilizando &lt;code&gt;echo&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Establecer la variable &lt;code&gt;DISPLAY&lt;/code&gt;:
&lt;pre&gt;
export DISPLAY=:0.0
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;Iniciar la instalación&lt;/h3&gt;
&lt;p&gt;Cambiarse al directorio donde se bajó el software, folder Disk1. Desde ahí teclear lo siguiente:
&lt;pre&gt;
./runInstaller
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Esto iniciará una ventana gráfica con el wizard de instalación. Utilizar la instalación típica y cambiar la información sólo si se desea:
&lt;ul&gt;
&lt;li&gt;Oracle Home Location: /opt/oracle/oracle/product/10.2.0/db_1&lt;/li&gt;
&lt;li&gt;Installation Type: Enterprise Edition&lt;/li&gt;
&lt;li&gt;UNIX DBA Group: dba&lt;/li&gt;
&lt;li&gt;Create Starter Database: Seleccionado&lt;/li&gt;
&lt;li&gt;Global Database Name: Igual que el valor para $ORACLE_SID&lt;/li&gt;
&lt;li&gt;Database Password: Password para system y sys&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;De aquí para adelante, seguir las instrucciones. Al final se creará la bd de ejemplo, donde algunas cuentas estándar estarán bloqueadar (scott, hr, ...). Seleccionar el botón Password Management sí se desean activar en este momento.&lt;/p&gt;
&lt;h3&gt;Subir y bajar la base de datos&lt;/h3&gt;
&lt;p&gt;Con el usuario oracle, conectarse a sqlplus de la siguiente manera y utilizar &lt;code&gt;startup/shutdown&lt;/code&gt; para iniciar y dar de baja la base de datos:
&lt;pre&gt;
sqlplus /nolog
sql&gt; conn / as sysdba
sql&gt; startup
sql&gt; shutdown
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;Asegurar conectividad con otros usuarios del sistema operativo&lt;/h3&gt;
&lt;p&gt;Ya para efectos de trabajar con la base, y no tener que utilizar el usuario &lt;code&gt;oracle&lt;/code&gt;, se requieren algunos pasos adicionales, considerando que no es posible hacer una conexión local (bequeath), y ésta debe hacerse vía tcp.&lt;/p&gt;
&lt;p&gt;Primero, en la base de datos, modificar el parámetro &lt;code&gt;local_listener&lt;/code&gt;, en este caso, para escuchar por el puerto 10521. Hecho esto, por si las dudas subir y bajar la bd para que tome el parámetro.
&lt;pre&gt;
alter system set local_listener='(address=(protocol=TCP)(host=localhost)(port=10521))' ;
alter system register ;
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Ahora, desde sistema operativo, hay que subir el listener:
&lt;pre&gt;
lsnrctl start
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Crear o editar el archivo tnsnames.ora:
&lt;pre&gt;
vi $TNS_ADMIN/tnsnames.ora
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Para agregar el alias a la bd, utilizando el SID definido para la instalación:
&lt;pre&gt;
mbp =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 10521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = mbp)
    )
  )
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;Verificar acceso con otros usuarios&lt;/h3&gt;
&lt;p&gt;Logearse con el usuario con que se desea conectarse a oracle y teclear lo siguiente para ver la definición del .bash_profile de oracle y copiar lo que se muestre. Posteriormente editar el .bash_profile del usuario y agregar las líneas copiadas.
&lt;pre&gt;more /Users/oracle/.bash_profile&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Validar que funciona la conectividad:
&lt;pre&gt;
sqlplus /nolog
sql&gt; conn system@mbp
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;De así desearlo, agregar el usuario al grupo dba, para no requerir proporcionar los passwords de sys y system:
&lt;pre&gt;
dscl . -append /Groups/dba GroupMembership usuario
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-7594340123199415778?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/07/instalar-oracle-10g-r2-en-mac-os-x.html</link><author>noreply@blogger.com (amox)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vhZkOZQyL5Y/SlAkXsolgVI/AAAAAAAAANc/omlPrtx5T-A/s72-c/Picture+22.png' height='72' width='72'/><thr:total>4</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-8336980609245696771</guid><pubDate>Wed, 13 May 2009 15:55:00 +0000</pubDate><atom:updated>2009-05-13T11:02:01.446-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>noticias</category><category domain='http://www.blogger.com/atom/ns#'>fusion</category><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>jdeveloper</category><category domain='http://www.blogger.com/atom/ns#'>application server</category><title>Recuento de hechos de la adquisición de Sun por parte de Oracle</title><description>&lt;/p&gt;
&lt;p&gt;Confirmando especulaciones previas sobre IBM pujando por la compra de Sun, además de información sobre un tercero en discordia además de Oracle, es la información que se puede obtener de los reportes requeridos por la SEC (Security Exchange Comission) para llevar a cabo la adquisición.&lt;/p&gt;
&lt;p&gt;Interesante leerlo, y sorprendente que Oracle no haya sido más agresivo en la compra, aunque también IBM no se vió con mucho interés por realmente dar una mejor oferta. Recuerdo que alguien de Java me comentó sobre el rumor, y dada la continua interacción de Oracle y la creciente utilización de Java en el middle tier, sugerí que pasaría algo similar a lo de Retek, donde alguien estaba por comprarlo y Oracle al tener interés en la compañía salió al mercado para obtenerla.&lt;/p&gt;
&lt;p&gt;El recuento, así como las ligas a la información provista por Sun, puede ser leído en &lt;a href="http://www.theregister.co.uk/2009/05/12/suns_three_suitors/page2.html"&gt;The Register&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-8336980609245696771?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/05/recuento-de-hechos-de-la-adquisicion-de.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-3977824181252973864</guid><pubDate>Fri, 08 May 2009 03:54:00 +0000</pubDate><atom:updated>2009-05-07T22:54:00.912-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sql</category><category domain='http://www.blogger.com/atom/ns#'>custom</category><category domain='http://www.blogger.com/atom/ns#'>pl/sql</category><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>rdbms</category><category domain='http://www.blogger.com/atom/ns#'>shell</category><category domain='http://www.blogger.com/atom/ns#'>forms</category><category domain='http://www.blogger.com/atom/ns#'>interface</category><category domain='http://www.blogger.com/atom/ns#'>cemli</category><category domain='http://www.blogger.com/atom/ns#'>application server</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><category domain='http://www.blogger.com/atom/ns#'>release 12</category><category domain='http://www.blogger.com/atom/ns#'>reports</category><title>Cómo crear CEMLIs para Oracle Applications y no morir en el intento, Parte 6</title><description>&lt;/p&gt;
&lt;p&gt;Ya después de tanto preparativo vamos a iniciar a pegarle a la tecla (casi). Empezaremos por definir el ambiente de trabajo y la infraestructura para poder extender y personalizar Oracle Applications.&lt;/p&gt;
&lt;p&gt;Esta preparación consiste a grandes rasgos en definir una nueva aplicación en el sistema, con su propio esquema de base de datos y estructura de directorios en los nodos del servidor de aplicaciones, de manera que no interfiera o altere los módulos que se proveen como parte de la instalación inicial del producto. Todo esto se define en el Developer's Guide de Oracle Applications, información adicional se define para el caso de On Demand, ya que esto se provee por Oracle.&lt;/p&gt;
&lt;p&gt;Ahora bien, existen 2 enfoques de la manera en que esto se define, y lo más importante, cómo se controla. El primero y el más antiguo considera que es el usuario quien tiene el acceso irrestricto a toda la infraestructura de la aplicación, y que si bien existen estándares y lineamientos para desarrollo, al tener esta facilidad pueden hacerse exepciones. El enfoque más reciente, y relacionado al esquema On Demand, asegura el cumplimiento de dichos estándares y lineamientos y lo que es más, los hace aún más extensos y rígidos y si bien hay un procedimiento para negociar exepciones, está sujeto a evaluación y esto puede resultar en el rechazo de la misma.&lt;/p&gt;
&lt;p&gt;En enfoque On Demand, cuando se cuenta con dicho servicio, no es negociable. Una consideración interesante es que hay casos en que clientes con infraestructura propia migran a éste esquema, lo cual puede requerir la adaptación de los CEMLIs para que sean aceptados y cumplan con los estándares establecidos para el caso.&lt;/p&gt;
&lt;p&gt;Teniendo en cuenta lo anterior, y como un ejercicio para obligarnos a seguir los lineamientos de manera estricta en lo personal recomiendo utilizar el esquema On Demand aún cuando la infraestructura sea administrada por el cliente. Así las cosas aquí los pasos para la configuración de nuestra aplicación de desarrollo bajo lo definido para este servicio. Para el caso de estar administrados por On Demand, éstas definiciones deben ya existir, se hará mención en adelante de en qué se diferencian cuando sea el caso. Se deberán también seguir los estándares para control de cambios, ya que de aquí derivo uno de los problemas más comunes en el desarrollo de software.&lt;/p&gt;
&lt;p&gt;Para efectos de tener datos de ejemplo, se considera como nombre corto de aplicación &lt;code&gt;AMX&lt;/code&gt;. A ésta abreviatura hay que precederla de los carácteres &lt;code&gt;XX&lt;/code&gt;, de tal manera que se evite una duplicidad con un módulo existente o que pudiera existir en el futuro. Para cada caso, deberá buscarse una abreviatura significativa a partir del nombre del cliente y de ser necesario utilizar 4 carácteres para ello.&lt;/p&gt;
&lt;H3&gt;Definir la aplicación personalizada&lt;/H3&gt;
&lt;p&gt;La pantalla para ello, como System Administrator o Application Developer, está bajo el submenú Application, función Register.&lt;/p&gt;
&lt;p&gt;La aplicación que se define es la utilizada para registrar los productos creados o modificados, de tal manera que no coincidan con las aplicaciones estándar. Tendrá un nombre corto, un nombre descriptivo y una variable de ambiente de sistema operativo asociada. El nombre corto ya se definió y será &lt;code&gt;XXAMX&lt;/code&gt;. Para definir la variable de ambiente, deberá agregarse el prefijo &lt;code&gt;_TOP&lt;/code&gt; de acuerdo al estándar de nombrado para ello. Finalmente, para el nombre completo, y todas las descripciones que vayan a estar asociadas, utilizar siempre como prefijo el nombre corto, XXAMX - Desarrollos Amox.&lt;/p&gt;
&lt;p&gt;Para el caso de On Demand, se define como XBOL, XBOL_TOP, Business Online.&lt;/p&gt;
&lt;h3&gt;Definir estructura de directorios en los nodos de programas concurrentes&lt;/h3&gt;
&lt;p&gt;Siguiendo los estándares definidos para todas las aplicaciones, se deberá generar una estructura de directorios similar a la siguiente. Es importante mencionar que para productos que deban ser traducidos, será requerido contar con un subdirectorio por idioma, tanto el base como los instalados. Para efectos de demostración se considerá Inglés norteamericano como base (US) e instalados español latinoamericano (ESA) y portugués brasileño (PTB). El dueño del directorio será el usuario de sistema operativo definido como &lt;code&gt;applmgr&lt;/code&gt; y la estructura definida en todos los nodos de programas concurrentes.&lt;/p&gt;
&lt;p&gt;La estructura queda definida bajo &lt;code&gt;$APPL_TOP&lt;/code&gt; y el directorio base será nombrado de igual manera que el nombre corto de la aplicación, en este caso &lt;code&gt;xxamx&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La versión dependerá del release con el que trabajemos, 11.5.0 para los diferentes releases de 11i y 12.0 para Release 12.&lt;/p&gt;
&lt;pre&gt;
$APPL_TOP/xxamx
$APPL_TOP/xxamx/11.5.0
$APPL_TOP/xxamx/11.5.0/bin
$APPL_TOP/xxamx/11.5.0/lib
$APPL_TOP/xxamx/11.5.0/resource
$APPL_TOP/xxamx/11.5.0/sql
$APPL_TOP/xxamx/11.5.0/reports
$APPL_TOP/xxamx/11.5.0/reports/US
$APPL_TOP/xxamx/11.5.0/reports/ESA
$APPL_TOP/xxamx/11.5.0/reports/PTB
$APPL_TOP/xxamx/11.5.0/forms
$APPL_TOP/xxamx/11.5.0/forms/US
$APPL_TOP/xxamx/11.5.0/forms/ESA
$APPL_TOP/xxamx/11.5.0/forms/PTB
$APPL_TOP/xxamx/11.5.0/plsql
$APPL_TOP/xxamx/11.5.0/mesg
$APPL_TOP/xxamx/11.5.0/graphs
$APPL_TOP/xxamx/11.5.0/log
$APPL_TOP/xxamx/11.5.0/out
$APPL_TOP/xxamx/11.5.0/admin
&lt;/pre&gt;
&lt;h3&gt;Agregar la ruta base de la aplicación a las variables de ambiente&lt;/h3&gt;
&lt;p&gt;Para que la aplicación adecuadamente pueda localizar y ejecutar archivos registrados para nuestra aplicación personalizada, será necesario definir en los nodos de programas concurrentes una variable de ambiente que apunte a la ruta base del esquema de directorios recién definido. La variable será definida conforme se registró la aplicación en el primer paso.&lt;/p&gt;
&lt;p&gt;Se deberá editar el archivo &lt;code&gt;adovars.env&lt;/code&gt; localizado en &lt;code&gt;$APPL_TOP/admin&lt;/code&gt; agregando la definición de la variable de ambiente al final del mismo, de acuerdo al sistema operativo que corresponda así como el intérprete de comandos utilizado.&lt;/p&gt;
&lt;pre&gt;
XXAMX_TOP=$APPL_TOP/xxamx/11.5.0
export XXAMX_TOP
&lt;/pre&gt;
&lt;p&gt;Los cambios para verse reflejados requieren un reinicio del servidor de aplicaciones.&lt;/p&gt;
&lt;h3&gt;Definir esquema de base de datos&lt;/h3&gt;
&lt;p&gt;Este paso tiene implicaciones en el licenciamiento del software de oracle, así que hay que evaluar si será efectivamente requerido crear nuevos objetos de base de datos. Para más información referirse al &lt;a href="http://www.oracle.com/corporate/pricing/sig.html"&gt;software investment guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Se creará un esquema nombrado tal como el nombre corto asignado a la nueva aplicación, con los grants de connect y resource. De acuerdo a configuraciones particulares de cada instalación, se podrán definir tablespaces específicos.&lt;/p&gt;
&lt;pre&gt;
create user XXAMX 
identified by XXAMX
/
grant connect
  , resource
   to XXAMX
/
&lt;/pre&gt;
&lt;h3&gt;Otorgar permisos sobre objetos de APPS al esquema personalizado&lt;/h3&gt;
&lt;p&gt;Para mantener controlado el acceso a objetos de APPS, y en concordancia con el manejo de ambientes On Demand, todas las estructuras de datos y código (a excepción de vistas) serán creadas bajo el nuevo esquema, debiendo solicitar conforme se requiera el acceso a objetos de APPS. Como sea, inicialmente se deberá otorgar acceso a objetos de uso común, como APIs y Open Interfaces. A continuación un breve ejemplo. Conforme se vayan desarrollando productos de software, se deberá ir haciendo un inventario de objetos a los que se requiere acceso, para solicitar el mismo en cada nuevo ambiente.&lt;/p&gt;
&lt;pre&gt;
grant execute on fnd_global to XXAMX ;
grant execute on fnd_file to XXAMX ;
grant execute on fnd_api to XXAMX ;
grant execute on fnd_msg_pub to XXAMX ;
grant execute on fnd_date to XXAMX ;
grant execute on qp_price_list_pub to XXAMX;
grant execute on ego_item_pub to XXAMX;
grant execute on fnd_message to XXAMX ;
grant execute on app_exception to XXAMX ;
grant execute on apps.hz_hierarchy_v2pub to XXAMX ;
grant execute on apps.fnd_file to XXAMX ;
grant execute on apps.hzp_cust_pkg to XXAMX ;
grant execute on apps.hz_customer_profile_v2pub to XXAMX ;
grant execute on apps.ar_credit_memo_api_pub to XXAMX ;
grant execute on apps.arw_cmreq_cover to XXAMX ;
grant execute on apps.qp_qualifier_rules_pub to XXAMX ;
grant execute on apps.qp_globals to XXAMX ;
grant execute on apps.qp_prl_loader_pub to XXAMX ;
grant execute on apps.oe_debug_pub to XXAMX ;
grant execute on apps.oe_msg_pub to XXAMX ;

grant select on fnd_flex_value_sets to XXAMX ;
grant select on fnd_flex_values to XXAMX ; 
grant select on fnd_flex_values_vl to XXAMX ; 
grant select on fnd_lookup_values_vl to XXAMX ; 
grant select on apps.hz_parties to XXAMX ;
grant select on apps.hz_cust_accounts to XXAMX ;
grant select on apps.hz_cust_acct_relate to XXAMX ;
grant select on apps.hz_cust_profile_amts to XXAMX ;
grant select on apps.hz_customer_profiles to XXAMX ;
grant select on apps.ar_payment_schedules_all to XXAMX ;
grant select on apps.ar_receivable_applications_all to XXAMX ;
grant select on apps.ra_cust_trx_types_all to XXAMX ;
grant select on apps.ra_customer_trx_all to XXAMX ;
grant select on apps.hz_cust_site_uses_all to XXAMX ;
grant select on apps.qp_list_headers_vl to XXAMX ;
grant select on apps.qp_list_lines to XXAMX ;
grant select on apps.qp_qualifier_rules to XXAMX ;
grant select on apps.qp_qualifiers_s to XXAMX ;

grant select, update on apps.ra_interface_lines_all to XXAMX ;

grant select, insert, delete on QP_INTERFACE_LIST_HEADERS to XXAMX ;
grant select, insert, delete on QP_INTERFACE_LIST_LINES to XXAMX ;
grant select, insert, delete on QP_INTERFACE_QUALIFIERS to XXAMX ;
grant select, insert, delete on QP_INTERFACE_PRICING_ATTRIBS to XXAMX ;
grant select, insert, delete on QP_INTERFACE_ERRORS to XXAMX ;
grant select, insert, delete on po_headers_interface to XXAMX ;
grant select, insert, delete on po_lines_interface to XXAMX ;
grant select, insert, delete on po_distributions_interface to XXAMX ;
&lt;/pre&gt;
&lt;h3&gt;Registrar el nuevo esquema en la aplicación&lt;/h3&gt;
&lt;p&gt;Con la responsabilidad de System Administrator, abrir la pantalla bajo Security/Oracle/Register, agregar un nuevo registro con los siguientes valores:
&lt;ul&gt;
&lt;li&gt;Database User Name: XXAMX&lt;/li&gt;
&lt;li&gt;Password: XXAMX&lt;/li&gt;
&lt;li&gt;Privilege: Enabled&lt;/li&gt;
&lt;li&gt;Install Group: 1&lt;/li&gt;
&lt;li&gt;Description: Esquema para aplicación personalizada&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;h3&gt;Agregar aplicación personalizada a Data Group Standard&lt;/h3&gt;
&lt;p&gt;Si bien la documentación indica crear un nuevo Data Group basado en el Standard, esto no aplica en general, y ni siquiera bajo On Demand esto se lleva a cabo. Así las cosas, como System Administrator seleccionar Security/Oracle/Data Group y hacer una consulta para el data group Standard y agregar un registro con los siguientes datos:
&lt;ul&gt;
&lt;li&gt;Application: XXAMX - Desarrollos&lt;/li&gt;
&lt;li&gt;Oracle ID: APPS&lt;/li&gt;
&lt;li&gt;Description: Aplicación personalizada para desarrollos&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;
&lt;p&gt;Si se quiere seguir la documentación, crear un nuevo data group, darle el nombre XXAMX - Desarrollos, guardarlo y posteriormente seleccionar el botón Copy Applications From... y elegir el data group Standard.&lt;/p&gt;
&lt;h3&gt;Registrar aplicación en Oracle Alert&lt;/h3&gt;
&lt;p&gt;Con la responsabilidad Alert Manager, abrir el menú System/Installations y agregar un registro con los siguientes datos:
&lt;ul&gt;
&lt;li&gt;Application: XXAMX – Desarrollos&lt;/li&gt;
&lt;li&gt;Oracle Username: APPS&lt;/li&gt;
&lt;li&gt;Status: Custom&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;
&lt;h3&gt;Crear área de Stage para intercambio de archivos&lt;/h3&gt;
&lt;p&gt;Para controlar el intercambio de información vía archivos en una especie de repositorio, accesible a todos los nodos de programas concurrentes, se sugiere crear un esquema de directorios como se sugiere a continuación.&lt;/p&gt;
&lt;pre&gt;
/interface
/interface/incoming
/interface/outgoing
&lt;/pre&gt;
&lt;p&gt;Tener en cuenta que para asegurar visibilidad, y evitar duplicidad de información cuando se tienen múltiples nodos concurrentes, si bienla nueva estructura de directorios puede residir en uno de ellos, en los demás se deberá crear la referencia a éste mediante el montaje del mismo.&lt;/p&gt;
&lt;h3&gt;Usuario de sistema operativo para transferencia de archivos&lt;/h3&gt;
&lt;p&gt;Para tener controlado el acceso, y evitar el uso de un shell, definir un nuevo usuario de sistema operativo en el nodo donde se definió la estructura del paso anterior, con las siguientes características:
&lt;ul&gt;
&lt;li&gt;username: interface&lt;/li&gt;
&lt;li&gt;password: interface&lt;/li&gt;
&lt;li&gt;Home Directory: /interface&lt;/li&gt;
&lt;li&gt;Shell: /bin/false&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-3977824181252973864?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2008/08/cmo-crear-cemlis-para-oracle_14.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-7390049868588024959</guid><pubDate>Sun, 03 May 2009 02:30:00 +0000</pubDate><atom:updated>2009-05-05T20:38:40.609-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>fallas</category><title>Error en Universal Installer al instalar OEM Grid Control 10.4</title><description>&lt;/p&gt;
&lt;p&gt;Para unas pruebas que está llevando a cabo cierta persona, requería instalar Oracle Enterprise Manager Grid Control. Cauta como es, decidió instalar sobre XP y no vista, así como no ir sobre la última versión, es decir el release 5, si no el anterior, el 4. Se bajó el software, alrededor de 1 GB. Y al intentar instalar, por no leer antes el readme por supuesto, resulta que es sólo un upgrade y que se requiere el release 2 instalado.&lt;/p&gt;
&lt;p&gt;Ya después de bajar otro GB para tener el release 2, de nuevo, dada su prolijo actuar decidió renombrar la carpeta de instalación a un nombre más descriptivo. En cuanto a la instalación, se mostraba el mensaje de prerrequisitos cumplidos así como indicar que iniciaría el Universal Installer. 
&lt;p&gt;Se instaló el JRE de java, se revisaron prerrequisitos y nada, simplemente no iniciaba el instalador. Al instalar se crea una carpeta en el directorio %TEMP%, teniendo ya varios de todos los intentos. Al intentar lanzar la instalación desde uno de estos directorios, parecía iniciar, más sin embargo se creaba otro directorio de instalación, sólo ciclando el problema.&lt;/p&gt;
&lt;p&gt;Después de jugar un rato, aplica la máxima ya conocida de "Si no está roto, no lo arregles". Renombré el directorio de instalación a un nombre corto sin espacios, y quedó. Mejor no moverle si no sabemos.&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-7390049868588024959?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/05/error-en-universal-installer-al.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-8646744596405179467</guid><pubDate>Fri, 24 Apr 2009 17:01:00 +0000</pubDate><atom:updated>2009-04-24T12:05:33.980-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>custom</category><category domain='http://www.blogger.com/atom/ns#'>noticias</category><category domain='http://www.blogger.com/atom/ns#'>fusion</category><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>hrms</category><category domain='http://www.blogger.com/atom/ns#'>cemli</category><category domain='http://www.blogger.com/atom/ns#'>release 12</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><title>Presentación a Release 12 en Collaborate 2009</title><description>&lt;/p&gt;
&lt;p&gt;Gustavo Gonález, de IT Convergence hará una presentación de la experiencia de IT Convergence en su migración a Release 12. A continuación reproduzco el texto de Gustavo en Linkedin. Ojalá puedan asistir al &lt;a href="http://oaug.collaborate09.com/"&gt;Collaborate 2009&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Estoy esperando con mucho interés la presentación en mi primera conferencia Collaborate. El título de mi presentación es “Mission Possible: Upgrade to Financials, HRMS, CRM, and Project R12 on 3 Continents in 6 Months.” (Misión Posible: Actualizar a Finanzas, HRMS, CRM, y el Proyecto R12 en 3 continentes en 6 meses) &lt;/p&gt;
&lt;p&gt;Esta presentación habla del upgrade interno que realizamos en IT convergente a Oracle R12, que tuvo lugar durante 2008 y fue a producción a principios de 2009. Teniendo en cuenta que esta actualización implicaba operaciones en oficinas en los EE.UU., Asia y América Latina, e incluyó Oracle Financials, Oracle HRMS, Proyecto Oracle, y Oracle CRM, usted debe pensar en asistir, ya que podrá obtener un montón de pistas sobre cómo planificar su hoja de ruta. &lt;/p&gt;
&lt;p&gt;En primer lugar, voy a comentar nuestra decisión de hacer un upgrade a R12. Que puede parecer trivial, pero en realidad tienes que tener una clara comprensión de por qué usted va a hacer upgrade si desea tener éxito. De hecho, los motivos de nuestro upgrade conducen directamente a la manera de cómo estructuramos el mismo, la forma en que teníamos previsto re-implementar (o no) el Release 12 con sus nuevas características y funcionalidades. &lt;/p&gt;
&lt;p&gt;Este fue un gran proyecto, y con éxito administramos el riesgo. Pero, ¿cómo? Bueno, no voy a proporcionar todas las respuestas aquí, pero les puedo decir que este upgrade nos obligó a evaluar honestamente la capacidad de nuestro personal interno. Por ejemplo, el R12 no estaba listo para apoyar los procesos de impuestos en la Argentina, y sabíamos que no podíamos resolverlo por nuestra cuenta. Entonces, comenzamos a trabajar con Oracle Support en este apoyo de forma inmediata .... &lt;/p&gt;
&lt;p&gt;Hay una gran lista de de detalles detrás de esto, que se verán en la presentación. También obtendrán la oportunidad dever cómo el apoyo y el patrocinio de los niveles ejecutivos de la organización fueron fundamentales para nuestro éxito. &lt;/p&gt;
&lt;p&gt;Así que si estás planeando ir a Orlando, tienes que planear asistir a mi sesión de "Misión Posible: Actualizar a Finanzas, HRMS, CRM, y el Proyecto R12 en 3 continentes en 6 meses", OAUG ID de la sesión es 1694 en la sala W204C, a las 09:45 horas. &lt;/p&gt;
&lt;p&gt;http://oaug.collaborate09.com/&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-8646744596405179467?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/04/presentacion-release-12-en-collaborate.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-1067439265207173868</guid><pubDate>Mon, 20 Apr 2009 22:45:00 +0000</pubDate><atom:updated>2009-04-20T17:50:48.755-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>noticias</category><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>jdeveloper</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><category domain='http://www.blogger.com/atom/ns#'>application server</category><title>Oracle Compra Sun</title><description>&lt;/p&gt;
&lt;p&gt;En un movimiento que parece natural, &lt;a href="http://www.oracle.com/sun/index.html"&gt;Oracle compra Sun&lt;/a&gt;. Si alguien quería más motivos para empezar a picarle a Java, pues ya va siendo hora.&lt;/p&gt;
&lt;p&gt;Oracle y Sun han mantenido una buena interacción de hace ya un buen tiempo, con la incorporación de Java en la base de datos y el uso del para montar forms en un ambiente Web. Más recientemente con la compra de BEA y el desarrollo de los frameworks ADF y OAF.&lt;/p&gt;
&lt;p&gt;Queda por ver cómo integrarán las áreas de Hardware y Sistema operativo, dado el reciente movimiento de Oracle con HP para Exadata y la incursión ya más madura con Oracle Enterprise Linux. &lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-1067439265207173868?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/04/oracle-compra-sun.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-7374118825202050445</guid><pubDate>Thu, 05 Mar 2009 02:23:00 +0000</pubDate><atom:updated>2009-03-04T20:52:12.824-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>fallas</category><category domain='http://www.blogger.com/atom/ns#'>application server</category><title>Habilitando el Application Server Control al instalar iAS 10G</title><description>&lt;/p&gt;
&lt;p&gt;Haciendo pininos con la suite de SOA, después de lidiar con el password de oc4jadmin, el único servicio no accesible era el referente a consola de administración (Oracle Enterprise Manager 10g Application Server Control), en la url &lt;code&gt;http://server:port/em&lt;/code&gt;. Esto fue sobre un servidor Windows, si les llega a pasar que al acceder se muestre un eror 404, esto es lo que hay que moverle a 2 archivos de configuración. La causa, por cierto, fue al (des)seleccionar la opción "Configure this as an Administration OC4J instance" al instalar (lo hizo otra persona a mi solo me dijeron "no jala, revisa").&lt;/p&gt;
&lt;p&gt;Cabe mencionar que esto es sólo para una instalación de prueba y la finalidad es tener arriba el servicio. Puede no ser la mejor manera o la más segura.&lt;/p&gt;
&lt;p&gt;El el archivo &lt;code&gt;ORACLE_HOME\j2ee\Admin_OC4J_instance_name\config\default-web-site.xml&lt;/code&gt;, asegurar que la línea que hace referencia al ascontrol se muestre como sigue:&lt;/p&gt;
&lt;pre&gt;
&amp;lt;web-app application="ascontrol" name="ascontrol" root="/em" load-on-startup="true" ohs-routing="true" /&amp;gt;
&lt;/pre&gt;
&lt;p&gt;El el archivo &lt;code&gt;ORACLE_HOME\j2ee\Admin_OC4J_instance_name\config\server.xml&lt;/code&gt;, asegurar que la línea que hace referencia al ascontrol se muestre como sigue:&lt;/p&gt;
&lt;pre&gt;
&amp;lt;application name=”ascontrol” path=”../../home/applications/ascontrol.ear” parent=”system” start=”true” /&amp;gt;
&lt;/pre&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-7374118825202050445?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/03/habilitando-el-application-server.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-4267559760142087865</guid><pubDate>Tue, 13 Jan 2009 03:09:00 +0000</pubDate><atom:updated>2009-01-12T21:32:18.962-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>pl/sql</category><category domain='http://www.blogger.com/atom/ns#'>application server</category><title>Conociendo APEX</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vhZkOZQyL5Y/SWwF7-0xZlI/AAAAAAAAAL4/mDLGrQ3s0E8/s1600-h/Picture+16.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 157px;" src="http://3.bp.blogspot.com/_vhZkOZQyL5Y/SWwF7-0xZlI/AAAAAAAAAL4/mDLGrQ3s0E8/s320/Picture+16.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5290610190288250450" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Antes conocido como HTML DB, Oracle Aplication Express en un ambiente RAD (Rapid Application Development) para generar aplicaciones Web con Oracle como Backend. Si bien ya tiene rato no había tenido chance de ver qué onda con ésto dado mi foco en CEMLIs de Oracle Applications. No hace mucho revisando las posibles opciones de herramientas de desarrollo para Oracle a usar después de Forms, si bien el camino para el Release 12 es el uso de Java y ADF, encontré una mención a APEX.&lt;/p&gt;
&lt;p&gt;Buscando una opción para armar aplicaciones alrededor del ERP que lo complementen o sustituyan aplicaciones legadas o a la medida y dado que voy muy lento con mi estudio de Java decidí darle un vistazo a APEX.&lt;/p&gt;
&lt;p&gt;Mi diagnóstico hasta ahora, siguiendo los 2 manualitos y utilizando el &lt;a href="http://apex.oracle.com"&gt;ambiente de prueba&lt;/a&gt; que provee oracle &lt;/p&gt; es que funciona muy bien para cosas sencillas (altas, bajas, consultas, reportes) y tiene unas funcionalidades interesantes considerando que es un ambiente Web.&lt;/p&gt;
&lt;p&gt;La integración con la base de datos es impresionante y es lo que le da valor como herramienta de desarrollo, además de que aprovecha muy bien el ambiente web para cuestiones de presentación. La programación de procesos se realiza en PL/SQL por lo que la ruta de aprendizaje es más rápida que para ADF. Se pueden tener prototipos de aplicaciones en cuestión de horas e incluso hay algunos ejemplos en el sitio de oracle para algunos requerimientos comunes. Los manualitos están bastante interesantes y ayudan muy bien a familizarizarse con el producto.&lt;/p&gt;
&lt;p&gt;La instalación requiere la BD (al menos 9i) y el Application Server y parece no ser muy complicada (no tengo espacio ahora para montar una máquina virtual y probar por el momento). Lo único que me falta validar es el uso de Web Services, pero es cuestión de tener un ambiente propio para ello.&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-4267559760142087865?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2009/01/conociendo-apex.html</link><author>noreply@blogger.com (amox)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vhZkOZQyL5Y/SWwF7-0xZlI/AAAAAAAAAL4/mDLGrQ3s0E8/s72-c/Picture+16.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-7485074751150058041</guid><pubDate>Thu, 04 Dec 2008 13:52:00 +0000</pubDate><atom:updated>2008-12-04T08:04:17.541-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>metalink</category><category domain='http://www.blogger.com/atom/ns#'>fallas</category><title>Metalink 3, incongruencias</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vhZkOZQyL5Y/STfjPZFsJMI/AAAAAAAAALk/IGHBHZxAX2Q/s1600-h/Picture+14.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 130px;" src="http://3.bp.blogspot.com/_vhZkOZQyL5Y/STfjPZFsJMI/AAAAAAAAALk/IGHBHZxAX2Q/s320/Picture+14.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5275935342060119234" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Bien, ya Metalink 3 tiene su ratito en producción y presenta algunas bondades. Se agradece que la interface gráfica de usuario sea más amigable y configurable, sin duda. Ya cada quien decidirá si le acomoda o no, y aún está la opción de seguir usando la versión anterior, la cual después de haber trabajado con la nueva parece un poco arcaica.&lt;/p&gt;
&lt;p&gt;No me quiero meter mucho a detalle, simplemente hacer 2 observaciones de cosas que no me agradan del todo y con las cuales he de lidiar diariamente. Estoy suscrito a las notificaciones vía correo electónico de mis &lt;i&gt;headlines&lt;/i&gt;. El correo llega y se centra en los productos que elegí, hasta ahí todo bien. Sin embargo las ligas que presenta están aún en el formato de metalink2, por lo cual la posibilidad de tener la versión para imprimir no está disponible, y es algo que utilizo bastante cuando encuentro información importante. Si ya estoy &lt;i&gt;firmado&lt;/i&gt; y elegí la nueva versión, abre la página de inicio y se pas por el arco del triunfo el id de la nota, por lo que debo regresar al correo, buscar el id de la misma y hacer la búsqueda. La idea de tener el correo y de ahí saltar al contenido pierde ya sentido.&lt;/p&gt;
&lt;p&gt;La otra cuestión es que en la página de inicio, la sección de announcements hasta arriba y ocupando todo el espacio horizonta siempre aparece y si bien elijo, "No, Gracias", al abrir otra pestaña y acceder a metalink nuevamente vuelve a aparecer. No hay manera de desactivar dicha región, así que hay que estar desactivándola. No me hace sentido tener algo tan configurable. Lo que es peor, ya que tiene el iconito del altavoz, sólo aplica cuando se cuenta con configuration manager, así que ni siquiera debiera aparecer.&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-7485074751150058041?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2008/12/metalink-3-incongruencias.html</link><author>noreply@blogger.com (amox)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vhZkOZQyL5Y/STfjPZFsJMI/AAAAAAAAALk/IGHBHZxAX2Q/s72-c/Picture+14.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-5338169224643252703</guid><pubDate>Thu, 04 Dec 2008 03:40:00 +0000</pubDate><atom:updated>2008-12-20T12:36:19.583-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>custom</category><category domain='http://www.blogger.com/atom/ns#'>forms</category><category domain='http://www.blogger.com/atom/ns#'>fusion</category><category domain='http://www.blogger.com/atom/ns#'>interface</category><category domain='http://www.blogger.com/atom/ns#'>cemli</category><category domain='http://www.blogger.com/atom/ns#'>jdeveloper</category><category domain='http://www.blogger.com/atom/ns#'>release 12</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><category domain='http://www.blogger.com/atom/ns#'>application server</category><title>Hacia donde moverse para anticiparse a Fusion</title><description>&lt;/p&gt;
&lt;p&gt;Si uno le pega al desarrollo sobre Oracle Applications, viendo el roadmap las herramientas básicas van para fuera, Forms y Reports. Viene Java y ADF para la interface (o interfaz, siempre he tenido la duda) de usuario y BI Publisher (XML Publisher) para reporteo. Así también, muchas cosas con java para procesos y eventos.&lt;/p&gt;
&lt;p&gt;Estamos a tiempo, ya con Release 12 nos estamos dando de topes y la gente de Java está ganando terreno. Más vale empezar a estudiar y actualizarse, ya hay quienes llevan ventaja.&lt;/p&gt;
&lt;p&gt;De los cursos, a partir de 9i está el Oracle Java Developer y el de J2EE. Ya más reciente está lo referente a ADF e incluso uno dirigido a developers de 4GL, que para Oracle sería Forms. Mientras tanto el entender Oracle Applications Framework también ayuda, ya que es el antecedente de lo que será el uso de ADF en Fusion.&lt;/p&gt;
&lt;p&gt;XML Publisher es un poco más sencillo, pero igual hay que conocerlo para sacarle todo el jugo.&lt;/p&gt;
&lt;p&gt;Algunos blogs a seguir, para darnos cuenta de entrada, que si le pegamos a lo tradicional de Oracle Developer, estamos fuera si no podemos entender de qué demonios están hablando. Así también, ya conforme obtengamos conocimiento, serán de gran ayuda en cuanto a los puntos finos del asunto de java y adf así como en ocasiones ayudar a dar el salto en cuanto a funcionalidades similares a lo que estamos acostumbrados a realizar:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://oracleradio.blogspot.com/"&gt;Oracle Radio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.groundside.com/blog/"&gt;GroundSide Blogs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apps2fusion.com/"&gt;Apps2Fusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-5338169224643252703?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2008/12/hacia-donde-moverse-para-anticiparse.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-5826785101489009281</guid><pubDate>Wed, 26 Nov 2008 13:50:00 +0000</pubDate><atom:updated>2008-11-26T08:00:37.024-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>fusion</category><category domain='http://www.blogger.com/atom/ns#'>release 12</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><title>Fusion anybody?</title><description>&lt;/p&gt;
&lt;p&gt;¿Alguien ha oído hablar de Fusion? Seguramente, llevamos ya rato como Juanito y el lobo. Si bien ya está disponible la plataforma, Fusion Middleware, lo que se sigue esperando es Fusion Applications. Se suponía que para estas fechas ya debiera estar fuera, sin embargo tenemos ya un Release 12 de Oracle Apps, así como nuevas versiones de JDE y PeopleSoft. ¿Conviene migrar a estos productos en transición ahora y migrar en 2 años nuevamente a Fusion? ¿Sería más prudente quedarse en el release actual (p.e. 11.5.10) y esperar a Fusion sin pasar por R12? Quiénes ya han trabajado con 12 sabrán que pareciera que no es un producto no del todo maduro aún, y queda el temor de que pase lo mismo cuando Fusion sea liberado. Si Fusion efectivamente sale al mercado en 2010, no pensaría que fuese tan descabellado esperar a ello en vez de pasar el tope del release 12, o bien esperar a que este último madure un poco y darle luego un tiempo a que Fusion madure.&lt;/p&gt;
&lt;p&gt;Una artículo interesante sobre que ha pasado con Fusion hasta ahora: &lt;a href="http://www.cio.com/article/452717/Oracle_Fusion_Applications_Is_Delivery_Too_Little_Too_Late_or_Smart_Strategy_"&gt;Oracle Fusion Applications: Is 2010 Delivery Too Little, Too Late, or Smart Strategy?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-5826785101489009281?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2008/11/fusion-anybody.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-8339342829432580559</guid><pubDate>Sun, 21 Sep 2008 17:27:00 +0000</pubDate><atom:updated>2008-09-21T23:22:32.115-05:00</atom:updated><title>Metalink 3.0</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vhZkOZQyL5Y/SNcdeiyxTII/AAAAAAAAAI0/oO8Oy40ppRc/s1600-h/Picture+4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_vhZkOZQyL5Y/SNcdeiyxTII/AAAAAAAAAI0/oO8Oy40ppRc/s320/Picture+4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5248696301296635010" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Después de la versión beta sólo disponible para algunos, finalmente fue liberado el release 3 del sitio de Metalink, al cual es posible acceder ahora, o bien optar por la versión anterior, de todos conocida. Se requiere flash para este nuevo diseño y se maneja generalmente por el uso de bloques similares a Oracle Portal. Diviértanse un rato entendiendo el nuevo funcionamiento. &lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-8339342829432580559?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2008/09/metalink-30.html</link><author>noreply@blogger.com (amox)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vhZkOZQyL5Y/SNcdeiyxTII/AAAAAAAAAI0/oO8Oy40ppRc/s72-c/Picture+4.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-2449687514068868972</guid><pubDate>Mon, 18 Aug 2008 06:00:00 +0000</pubDate><atom:updated>2008-08-18T19:45:16.422-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sql</category><category domain='http://www.blogger.com/atom/ns#'>custom</category><category domain='http://www.blogger.com/atom/ns#'>ms-dos</category><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>pl/sql</category><category domain='http://www.blogger.com/atom/ns#'>hrms</category><category domain='http://www.blogger.com/atom/ns#'>rdbms</category><category domain='http://www.blogger.com/atom/ns#'>shell</category><category domain='http://www.blogger.com/atom/ns#'>ora</category><category domain='http://www.blogger.com/atom/ns#'>api</category><category domain='http://www.blogger.com/atom/ns#'>forms</category><category domain='http://www.blogger.com/atom/ns#'>interface</category><category domain='http://www.blogger.com/atom/ns#'>cemli</category><category domain='http://www.blogger.com/atom/ns#'>workflow</category><category domain='http://www.blogger.com/atom/ns#'>jdeveloper</category><category domain='http://www.blogger.com/atom/ns#'>application server</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><category domain='http://www.blogger.com/atom/ns#'>reports</category><title>Cómo crear CEMLIs para Oracle Applications y no morir en el intento, Parte 5</title><description>&lt;p&gt;&lt;/p&gt;
&lt;p&gt;
Como paso previo a trabajar con Oracle Applications es necesario contar con un ambiente y los accesos tanto a la utilización de la aplicación (usuario y responsabilidades), la base de datos (acceso con apps y esquema personalizado) y los nodos de programas concurrentes (applmgr,  usuario nombrado, usuario de interfaces). Esto en un ambiente que no sea el de producción.&lt;/p&gt;
&lt;p&gt;Nota importante es respecto al uso de Oracle On Demand, dado que los accesos están restringidos y existe un procedimiento específico para solicitar usuarios para algunos de éstos servicios, así como otros respecto a la configuración de variables de ambiente y la transferencia de archivos a los nodos de programas concurrentes. Se harán observaciones al respecto cuando tal sea el caso.&lt;/p&gt;
&lt;h3&gt;Ambiente&lt;/h3&gt;
&lt;p&gt;Aunque obvio, es necesario contar con un ambiente de trabajo de Oracle Applications, por lo que asumo que para efectos prácticos se cuenta ya con ello, (ojalá que esto no implique que ya estemos trabajando en algo real, un proyecto facturable, lo cual no es lo ideal si apenas estamos iniciando).&lt;/p&gt;
&lt;p&gt;Como sea, la aplicación tampoco es un software cualquiera y no podemos simplemente obtener una versión demo, instalarla y empezar a trabajar. La aplicación es un "mounstro" en cuanto a tamaño e infraestructura requerida, aunque dadas las actuales características de hardware es más posible contar con algún servidor que nos permita tener la aplicación instalada. Si trabajamos en algún despacho o consultoría idealmente debiéramos contar con algún ambiente para capacitación y pruebas. De no ser así habrá que poner a trabajar a los jefes para que se inscriban al programa de partners e investiguen las formas en que se puede utilizar la aplicación bajo éste esquema para poder capacitar a sus empleados en el uso de la misma.&lt;/p&gt;
&lt;p&gt;Como anécdota, cuando yo empezé a capacitarme en cuestiones relacionadas al tema de esta serie de artículos, todo era con los PDFs o manuales de curso, pero sin un ambiente para practicar. No lo recomiendo.
&lt;/p&gt;
&lt;p&gt;Si aún no cuentan con un ambiente pero ya son partners, en el sitio de &lt;a href="http://edelivery.oracle.com/"&gt;eDelivery&lt;/a&gt; pueden obtener el software para su instalación. De preferencia obtener el último release de la versión 11i dado que es el más maduro, e ir bajando la versión 12 para más adelante. Instalar la instancia Vision que es un demo con módulos ya preconfigurados e incluso con transacciones. Por acá anda también un post de la &lt;a href="http://oracle.am0x.com/2008/02/oracle-applications-11i-115102-en.html"&gt;instalación bajo Suse Linux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Si no cuentan con un ambiente, una alternativa es registrarse en &lt;a href="http://solutionbeacon.com/"&gt;Solution Beacon&lt;/a&gt; que cuenta con ambientes Vision de diferentes releases, para lo cuál será necesario contar con un CSI válido. La limitante es que sólo permite el acceso a la aplicación como tal pero no a base de datos o a sistema operativo.&lt;/p&gt;
&lt;h3&gt;Acceso a la aplicación&lt;/h3&gt;
&lt;p&gt;Como primer paso debemos conocer el URL del ambiente de trabajo, así como las configuraciones del archivo de hosts en caso de ser necesarias, validando que al ingresar la dirección, se muestre información relevante a Oracle Applications. Las páginas iniciales son HTML y con cualquier navegador pueden ser accesadas, sin embargo para iniciar la aplicación en sí, la cual requiere el uso de una JRE específica, pudieran haber ciertas necesidades en cuanto al navegador y la versión del mismo. Para el release 11.5.10.2, podemos ingresar con Explorer en Windows, Safari en Mac y Windows, y Opera y Firefox y sus derivados en los anteriores más Linux. Todos en sus versiones más recientes.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vhZkOZQyL5Y/SKjQ3nqpagI/AAAAAAAAAHQ/5b2itLeP64Q/s1600-h/Picture+88.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_vhZkOZQyL5Y/SKjQ3nqpagI/AAAAAAAAAHQ/5b2itLeP64Q/s320/Picture+88.png" alt="" id="BLOGGER_PHOTO_ID_5235664220777441794" border="0" /&gt;&lt;/a&gt;

Imagen 1
&lt;/div&gt;&lt;p&gt;En caso de no mostrar nada la página de inicio, revisar el url del mismo y que el dominio esté respondiendo a pings, así como asegurarse de indicar el puerto en la dirección, que generalmente está en el rango de los 8000.&lt;/p&gt;
&lt;h3&gt;Usuario de la aplicación&lt;/h3&gt;
&lt;p&gt;Al ser un ambiente de desarrollo, idealmente debiéramos poder contar con el usuario &lt;code&gt;SYSADMIN&lt;/code&gt; (sería el equivalente de &lt;code&gt;root&lt;/code&gt; en sistema operativo). El password por default para el mismo es &lt;code&gt;SYSADMIN&lt;/code&gt;. Ya con éste usuario debemos crear uno propio con los estándares de nombrado que apliquen para el proyecto. Para el caso de On Demand, esto deberá ser &lt;code&gt;XXXX-NOMBRE.APELLIDO&lt;/code&gt;, donde &lt;code&gt;XXXX&lt;/code&gt; son las iniciales asignadas al cliente. Para éste último esquema considerar también que hay un usuario privilegiado nombrado &lt;code&gt;BOL-SETUP&lt;/code&gt; con password &lt;code&gt;WELCOME12&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En caso de no contar con el acceso como usuario &lt;code&gt;SYSADMIN&lt;/code&gt;, solicitar a quien corresponda se cree un usuario para nuestra persona.&lt;/p&gt;Como recomendación, no compartir usuarios. La aplicación guarda un registro del último cambio realizado sobre un registro, y ya se de más de un caso dónde ésto ha servido como evidencia para responsabilizar a alguien de una modificación con repercusiones en el comportamiento de la aplicación. Qué mal si esto fue hecho no por el dueño del usuario si no por alguien a quien se le compartió.
&lt;h4&gt;Responsabilidades&lt;/h4&gt;
&lt;p&gt;Cualquiera que haya sido el caso para la creación de nuestro usuario, debemos asignarnos o solicitar el acceso a las siguientes responsabilidades (Algunas pueden no estar disponibles dependiendo del release con el que se trabaje):
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;System Administrator&lt;/li&gt;
&lt;li&gt;Application Developer&lt;/li&gt;
&lt;li&gt;Alert Manager&lt;/li&gt;
&lt;li&gt;Oracle Diagnostic Tools&lt;/li&gt;
&lt;li&gt;Functional Administrator&lt;/li&gt;
&lt;li&gt;Functional Developer&lt;/li&gt;
&lt;li&gt;XML Publisher Administrator&lt;/li&gt;
&lt;li&gt;AK Developer&lt;/li&gt;
&lt;li&gt;System Administration&lt;/li&gt;
&lt;li&gt;Las que correspondan a las responsabilidades implementadas en el proyecto, tanto las de configuración (Manager, Super User) como las que serán utilizadas por los usuarios.&lt;/li&gt;
&lt;/ul&gt;
Puede ser que por seguridad nos nieguen &lt;code&gt;System Administrator&lt;/code&gt;. En este caso debemos investigar quién es la persona responsable de dicha responsabilidad para dirigir con la misma las actividades que requieran el uso de ésta. Cabe mencionar que podemos solicitar el uso de otras responsabilidades que tengan acceso a algunos de los menús de System Administrator, como puede ser &lt;code&gt;&lt;span&gt;% HRMS Setup Manager&lt;/span&gt;&lt;/code&gt;. Si se descuidan los administradores, podemos solicitar esta responsabilidad y con ello acelerar algunos procedimientos.
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Acceder a la aplicación&lt;/h3&gt;
&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vhZkOZQyL5Y/SKjTNZGTIHI/AAAAAAAAAHY/iRb2oKrBGI0/s1600-h/Picture+89.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_vhZkOZQyL5Y/SKjTNZGTIHI/AAAAAAAAAHY/iRb2oKrBGI0/s320/Picture+89.png" alt="" id="BLOGGER_PHOTO_ID_5235666793847267442" border="0" /&gt;&lt;/a&gt;

Imagen 2&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vhZkOZQyL5Y/SKjT6tczMLI/AAAAAAAAAHg/5H4xkOQhZZs/s1600-h/Picture+90.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_vhZkOZQyL5Y/SKjT6tczMLI/AAAAAAAAAHg/5H4xkOQhZZs/s320/Picture+90.png" alt="" id="BLOGGER_PHOTO_ID_5235667572404465842" border="0" /&gt;&lt;/a&gt;

Imagen 3&lt;/div&gt;
&lt;p&gt;Ya con nuestro usuario, acceder a la página de inicio, seleccionar la liga Apps Logon Links y posteriormente E-Bussiness Home Page y proporcionar los datos de usuario y contraseña asignada. La primera vez que ingresemos se nos solicitará cambiar dicha contraseña, y dependiendo de la configuración de seguridad esto pudiera repetirse cada cierto número de días o de accesos. Se recomienda, sobretodo por inconsistencia de traducciones y para facilitar el uso de algunos términos ingresar a la aplicación utilizando el idioma inglés. En versiones 11i el sistema no diferenciaba entre mayúsculas y minúsculas. En release 12 esto ya se toma en cuenta.
&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vhZkOZQyL5Y/SKjVq2fsUII/AAAAAAAAAHo/KHYbOBvWPJ8/s1600-h/Picture+91.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_vhZkOZQyL5Y/SKjVq2fsUII/AAAAAAAAAHo/KHYbOBvWPJ8/s320/Picture+91.png" alt="" id="BLOGGER_PHOTO_ID_5235669498977865858" border="0" /&gt;&lt;/a&gt;

Imagen 4&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vhZkOZQyL5Y/SKjV6emqHTI/AAAAAAAAAHw/ibIpHuPselk/s1600-h/Picture+92.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_vhZkOZQyL5Y/SKjV6emqHTI/AAAAAAAAAHw/ibIpHuPselk/s320/Picture+92.png" alt="" id="BLOGGER_PHOTO_ID_5235669767442537778" border="0" /&gt;&lt;/a&gt;

Imagen 5&lt;/div&gt;
&lt;p&gt;Aparecerá una lista en la izquierda con las responsabilidades asignadas, las que al ser seleccionadas muestran del lado derecho las funciones disponibles para la misma. Al ser seleccionada una función, se cargará un applet de Java y la aplicación abrirá en una nueva ventana&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vhZkOZQyL5Y/SKjXrNy6L1I/AAAAAAAAAH4/wp3x5v0KJO4/s1600-h/Picture+93.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_vhZkOZQyL5Y/SKjXrNy6L1I/AAAAAAAAAH4/wp3x5v0KJO4/s320/Picture+93.png" alt="" id="BLOGGER_PHOTO_ID_5235671704255737682" border="0" /&gt;&lt;/a&gt;

Imagen 6&lt;/div&gt;
&lt;p&gt;Para este último paso, asegurar que esté permitido el uso de ventanas emergentes (popups), javascript y java para el dominio donde reside la aplicación. Para explorer, asignar el mismo a la lista de sitios conocidos y permitir la ejecución de controles Active X y java.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vhZkOZQyL5Y/SKjXrEUiLRI/AAAAAAAAAIA/0WyrSu1DV3Y/s1600-h/Picture+94.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_vhZkOZQyL5Y/SKjXrEUiLRI/AAAAAAAAAIA/0WyrSu1DV3Y/s320/Picture+94.png" alt="" id="BLOGGER_PHOTO_ID_5235671701712416018" border="0" /&gt;&lt;/a&gt;

Imagen 7&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vhZkOZQyL5Y/SKjXrQ03vRI/AAAAAAAAAII/HBijCnB4-Ew/s1600-h/Picture+95.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_vhZkOZQyL5Y/SKjXrQ03vRI/AAAAAAAAAII/HBijCnB4-Ew/s320/Picture+95.png" alt="" id="BLOGGER_PHOTO_ID_5235671705069272338" border="0" /&gt;&lt;/a&gt;

Imagen 8&lt;/div&gt;
&lt;p&gt;Permitido lo anterior, deberán abrirse 2 pantallas adicionales del navegador y una tercera con la aplicación. Pudiera ser que en el inter se muestren advertencias de seguridad las cuales se deberán aceptar, así también se instalarán plugins que posiblemente requieran el reinicio del navegador.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vhZkOZQyL5Y/SKjXrm-qFOI/AAAAAAAAAIQ/-dRpZoe9KXQ/s1600-h/Picture+97.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_vhZkOZQyL5Y/SKjXrm-qFOI/AAAAAAAAAIQ/-dRpZoe9KXQ/s320/Picture+97.png" alt="" id="BLOGGER_PHOTO_ID_5235671711015900386" border="0" /&gt;&lt;/a&gt;

Imagen 9&lt;/div&gt;
&lt;p&gt;Ya adentro, se presenta el navegador que contine la lista jerárquica de funciones a las que se tiene acceso a través de la reponsabilidad asignada. Referirse al User Guide y la guía de navegación de la documentación para familiarizarse con el uso del ERP y su interface de usuario.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vhZkOZQyL5Y/SKjhedHbfiI/AAAAAAAAAIg/HAqgnNUxNb4/s1600-h/Picture+98.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_vhZkOZQyL5Y/SKjhedHbfiI/AAAAAAAAAIg/HAqgnNUxNb4/s320/Picture+98.png" alt="" id="BLOGGER_PHOTO_ID_5235682480146316834" border="0" /&gt;&lt;/a&gt;

Imagen 10&lt;/div&gt;
&lt;p&gt;Por lo pronto y como referencia para los pasos siguientes, ir al menú help opción About Oracle Applications y copiar lo que aparece en dicha ventana, ya que es información importante sobre la infraestructura.&lt;/p&gt;
&lt;h3&gt;Acceso a la base de datos&lt;/h3&gt;
&lt;p&gt;Requerimos esto para poder desarrollar accediendo a las estructuras de datos así como la información que en ésta se encuentre. Debemos contar antes que nada con la información suficiente del servidor: ip/nombre, puerto y SID. Al menos el primero y tercero los podemos obtener de la información presentada en la ayuda (Imagen 10, sección database server). Para el SID dato pueden existir ciertos estándares de nombrado, sobre todo en on demand, utilizando la primera letra para definir el ambiente y luego las demás para el cliente: Gold, Dev, Test, Stage, Prod. Por ejemplo si las iniciales del cliente fuesen AMOX, pudiérams tener los SIDs, GAMOX, DAMOX, TAMOX, SAMOX, PAMOX.
&lt;/p&gt;&lt;p&gt;Ya con los datos anteriores, configurar el tnsnames para developer y workflow o las conexiones en sql developer y JDeveloper, tal como lo haríamos para cualquier otra base de datos Oracle. En desarrollo generalmente sólo se tiene un nodo de base de datos, y en producción pudieran ser más por lo que debemos asegurar contar con la información adecuada.
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;En cuanto a los usuarios, para ambientes de desarrollo debiéramos contar con la contraseña del usuario &lt;code&gt;apps&lt;/code&gt; (&lt;code&gt;apps&lt;/code&gt; default para instalaciones en sitio y &lt;code&gt;welcome[12]&lt;/code&gt; para on demand). Este usuario es el que tiene acceso a los datos de los esquemas de todos los módulos, ademas de las definiciones de vistas y procedimientos almacenados. Dependiendo de las políticas de seguridad esto podría no ser así, en cuyo caso, igual que para lo referente a Sysadmin, conocer con quién se deberán canalizar las solicitudes de acciones a ejecutar con dicho usuario, ya que para otras acciones que llevaremos a cabo desarrollando será necesario contar con la contraseña (por ejemplo el uso de &lt;code&gt;FNDLOAD&lt;/code&gt;, compilación de formas, examine).&lt;/p&gt;
&lt;p&gt;De acuerdo a los estándares, se debiera contar también con un usuario para las extensiones a realizar a la base de datos. Para ambiente on demand éste es &lt;code&gt;BOLINF&lt;/code&gt; y para desarrollos en sitio debiera ser &lt;code&gt;XXAAAA&lt;/code&gt;, siendo &lt;code&gt;XX&lt;/code&gt; una constante y &lt;code&gt;AAAA&lt;/code&gt; tres o cuatro letras que identifiquen al cliente o aplicación personalizada si cada una tendrá su propio esquema. Para &lt;code&gt;BOLINF&lt;/code&gt; el password por defecto puede ser &lt;code&gt;WELCOME[12]&lt;/code&gt; o &lt;code&gt;EASY4U&lt;/code&gt;. Para esquemas personalizados usualmente es el mismo que el usuario. Estos datos por defecto aplican en ambientes no productivos, donde por seguridad deberán ser modificados.
&lt;/p&gt;
&lt;p&gt;Una observación importante para éste último caso, de contar con un usuario adicional de base de datos, es en lo referente a las licencias, dado que se asume que se usará el producto tal cual, sin personalizaciones, por lo que no se pagan licencias adicionales por base de datos. Si, como generalmente sucede, se crearán nuevos objetos y un nuevo usuario para ello, aplican entonces cargos por licencia. Validar si esto ha sido considerado en las licencias adquiridas y ponerse en regla antes de alguna auditoría (Saludos Nacho).&lt;/p&gt;
&lt;p&gt;Otros usuarios que pudieran ser requeridos y cuyas contraseñas por default se proporcionan son &lt;code&gt;APPLSYSPUB/PUB&lt;/code&gt; y &lt;code&gt;EUL4US/EUL4US&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Verificar que tenemos acceso con los usuarios que nos proporcionen y en el caso de &lt;code&gt;apps&lt;/code&gt; ser muy cauto con su uso.&lt;/p&gt;
&lt;h3&gt;Acceso a sistema operativo&lt;/h3&gt;
&lt;p&gt;Este será necesario para transferir y obtener código fuente de algunos productos, archivos planos para interfaces y conversión de datos, ejecución de &lt;code&gt;FNDLOAD&lt;/code&gt;, compilar formas y librerías así como otras utilerías. Por seguridad, debemos contar con una herramienta que permita el uso de ssh así como ftsp y sftp.&lt;/p&gt;
&lt;p&gt;El usuario dueño del filesystem de la aplicación usualmente es &lt;code&gt;applmgr&lt;/code&gt;, pero este puede variar. Idealmente debiéramos tener éste al menos en desarrollo, más dado el acceso con que cuenta es fácil poder cometer errores graves así que para el día a día se recomienda el uso de un usuario particular y sólo utilizar &lt;code&gt;applmgr&lt;/code&gt; cuando realmente sea necesario.&lt;/p&gt;
&lt;p&gt;El usuario asignado pudiera ser uno nombrado y particular para cada desarrollador, o bien un genérico para desarrollo, ya dependerá de la seguridad implementada en el proyecto.&lt;/p&gt;
&lt;p&gt;Sea cual fuere el caso, debemos conocer la manera de establecer las variables de ambiente adecuadas a la instancia para la cual se desarrolla. Generalmente esto es a través de un archivo &lt;code&gt;.env&lt;/code&gt; en &lt;code&gt;$APPL_TOP&lt;/code&gt;, el cual podemos consultar de los datos que sacamos en el menú help opción about oracle applications, quitándole los dos útlimos directorios al valor de &lt;code&gt;AU_TOP&lt;/code&gt;. Para validar que este establece la información adecuada consultar el valor de las variables &lt;code&gt;$TWO_TASK&lt;/code&gt; y &lt;code&gt;$APPL_TOP&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En la arquitectura &lt;span style="font-style: italic;"&gt;On Demand&lt;/span&gt;, es todo diferente. De entrada, el usuario con acceso de implementador debe solicitarse a través del &lt;a href="https://ondemand.oracle.com/portal/page?_pageid=56,33623,56_33632&amp;amp;_dad=ocp&amp;amp;_schema=OCP"&gt;OCP Landing Pad&lt;/a&gt;, opción Request New Account, debiendo proporcionar el correo del Service Delivery Manager y los servidores para los que se desea contar con acceso. Validar antes con el SDM esto datos. Hecha la solicitud se procesa en varias fases de aprobación y se nos notificará vía correo cuando esto se haya realizado.&lt;/p&gt;
&lt;p&gt;Ya en cuanto a establecer las variables de ambiente y obtener las contraseñas para las que tengamos acceso se utiliza la herramienta powerbroker a través del comando pbrun. De Nuevo, solicitar al SDM los documentos de su uso.
&lt;/p&gt;&lt;pre&gt;
pbrun impdba -u DAMOX
pbrun impdba password-manager DAMOX
&lt;/pre&gt;
&lt;p&gt;Adicionalmente, pudieran definirse usuarios específicos para interfaces de entrada y salida para poder transferir archivos desde y hacia la aplicación. Verificar si este es el caso y obtener la información de los datos que se requieran. Esto es recomendable así que de no existir o considerarse, solicitar la creación de un usuario interface para tal fin (esto se detalla en el siguiente artículo de esta serie). No debe poder ejecutar shell si no únicamente transferir vía ftp y debe residir su home en un filesystem compartido cuando exista más de un nodo de programas concurrentes.&lt;/p&gt;
&lt;p&gt;En cuanto a On Demand, dicho usuario existe y sigue la nomenclatura de las instancias. Deberá solicitarse los datos al cliente y en caso de que aún no eucnte con ellos, levantar un service request para solicitarlo. Usualmente se utiliza &lt;code&gt;sftp&lt;/code&gt; pero hay casos donde también puede usarse &lt;code&gt;ftps&lt;/code&gt;. Para On Demand, existe también un procedimiento para transferir código fuente a través del uso de éste usuario, en directorios previamente establecidos, lo cual se indicará para cada caso particular cuando se toque el tema. Mientras tanto solicitar al SDM el documento que detalla el proceso de FTP.
&lt;/p&gt;
&lt;p&gt;Otros accesos&lt;/p&gt;
&lt;p&gt;Dependiendo de las herramientas de desarrollo a utilizar pudiéramos requerir otros datos de acceso como pudiera ser para Discoverer y BPEL.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-2449687514068868972?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2008/08/cmo-crear-cemlis-para-oracle_18.html</link><author>noreply@blogger.com (amox)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vhZkOZQyL5Y/SKjQ3nqpagI/AAAAAAAAAHQ/5b2itLeP64Q/s72-c/Picture+88.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-6132630505268258671</guid><pubDate>Fri, 04 Jul 2008 03:00:00 +0000</pubDate><atom:updated>2009-08-21T11:04:49.346-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sql</category><category domain='http://www.blogger.com/atom/ns#'>custom</category><category domain='http://www.blogger.com/atom/ns#'>forms</category><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>pl/sql</category><category domain='http://www.blogger.com/atom/ns#'>cemli</category><category domain='http://www.blogger.com/atom/ns#'>reports</category><title>Cómo crear CEMLIs para Oracle Applications y no morir en el intento, Parte 4</title><description>&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Ahora, antes de comenzar a darle a la tecla es importante contar con herramientas que nos ayuden a facilitar el trabajo diario. Aquí una lista de algunos programas que pueden serles de utilidad.&lt;/p&gt;
&lt;h3&gt;Editores de Texto&lt;/h3&gt;
&lt;p&gt;Por costumbre, suelo no usar IDE's para programar procedimientos almacenados, siendo el proceso que sigo crear el código en editores de texto y ejecutarlos posteriormente desde sqlplus para crear los objetos en la base de datos. Dado a que pl/sql no es un lenguaje de propósito general a diferencia de Java ó C es difícil encontrar editores orientados a programadores que ofrezcan funcionalidades ligadas a este lenguaje. Por ello, me avoqué a encontrar editores que pudieran ser adaptados en cuanto a resaltado de sintaxis, que permitan la definición y uso de macros así como integración con sistemas de control de versiones. Al haber trabajado en plataformas Windows y Max OS X, los editores con que mejor me acomodé fueron &lt;a href="http://www.textpad.com/download/index.html"&gt;Textpad&lt;/a&gt; para el primer caso y &lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt; para el segundo. En caso de ser de utilidad ustedes, pongo a su disposición los archivos de sintaxis creados para usarse con pl/sql:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.am0x.com/oracle/am0x.tmbundle.zip"&gt;Bundle para Textmate&lt;/a&gt;. Una vez descomprimido, arrastrar el archivo a Textmate una vez abierto el programa. Habilita resaltado de sintaxis, identificación de bloques y procedimientos y funciones. Provee además algunas plantillas para crear procedimientos almacenados.&lt;/li&gt;
&lt;li&gt;Textpad. Archivo de sintaxis. En las opciones definir un nuevo lenguaje y utilizar el archivo adjunto como archivo de sintaxis. Asociar los tipos de archivo que nos interesen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Utilerías sistema operativo&lt;/h3&gt;
&lt;p&gt;Por seguridad, el acceso a los servidores es a través de ssh por lo que serán requeridas herramientas que lo soporten para poder abrir sesiones. Si se trabaja con algun sistema Unix/Linux, estas vienen como parte del SO, más no así para Windows, así que debemos usar alguna, siendo las más comunes
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty/download.html"&gt;Putty&lt;/a&gt;. Open Source, disponible para diferentes versiones.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.vandyke.com/products/securecrt/"&gt;Secure CRT&lt;/a&gt;. Shareware
&lt;/li&gt;
&lt;/ul&gt;Así también será necesario tener a la mano herramientas que soporten transferencias ftp con los procolos ssh y sftp:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://filezilla-project.org/"&gt;FileZilla&lt;/a&gt;. Open Source, para windows. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://cyberduck.ch/"&gt;Cyberduck&lt;/a&gt;. Open source, para Mac OS X.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;h3&gt;IDEs para SQL y PL/SQL&lt;/h3&gt;
&lt;p&gt;
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;SQL*Plus. El caballito de batalla, y el que seguro siempre tendremos disponible del lado del servidor. Puede instalarse desde el disco de developer o desde el cliente de la base de datos que corresponda. A partir de la versión 8i reemplaza también a svrmgr para labores administrativas de la base de datos. En Windows tenemos la versión gráfica y la modo carácter.&lt;/li&gt;
&lt;li&gt;iSQL*Plus. Versión web de sqlplus, con mucha de la misma funcionalidad, con sus asegunes por ser utilizado desde un navegador, lo que lo vuelve multiplataforma. Disponible desde la versión 9i de la base de datos. Como nota curiosa, al instalarse por defecto y en un puerto determinado y el hecho mucha gente olvidaba deshabilitarlo posterior a la instalación, era posible hacer búsquedas en google y con ello tener donde hacer pruebas si no teníamos una instancia disponible.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.oracle.com/technology/tech/oci/instantclient/index.html"&gt;Oracle Instant Client&lt;/a&gt;. Permite la ejecución de aplicaciones sobre Oracle sin necesidad de instalar el cliente para la base de datos. Esto me permite utilizar SQL*Plus en Mac OS X.&lt;/li&gt;
&lt;li&gt;Oracle Procedure Builder. Comúnmente instalado en conjunto con Oracle Developer pero casí nadie le daba bola. Permite editar procedimientos almacenados y resalta sintaxis.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.oracle.com/technology/software/products/sql/index.html"&gt;Oracle SQL Developer&lt;/a&gt;. IDE de Oracle con admnistrador de conexiones, navegador de objetos, editor de sql y pl/sql así como otras monerías como acceso a bd de mysql y permitir exportar resultados de consultas. Basado en Java, multiplataforma, sin costo.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tora.sourceforge.net/"&gt;TORA&lt;/a&gt;. Originalmente proyecto open source, cuyo principal desarrollador fue reclutado por Quest, creador de TOAD. Finalmente heredó el proyecto y al parecer sigue en marcha, disponible para Linux y Windows.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.quest.com/toad/"&gt;TOAD&lt;/a&gt;. IDE bastante completo y generalmente subutilizado (Quién ha revisado todos los packages que incluye y que son provistos por el Gurú de PL/SQL &lt;a href="http://www.stevenfeuerstein.com/"&gt;Steven Feuerstein&lt;/a&gt;), por lo que su relación costo/beneficio no es rentable para quienes sólo lo utilizan para hacer cueritos, stored procedures y matar sesiones, razón por la cual todo mundo usa una versión pirata. Útil para administradores de base de datos y programadores hard-core. Como nota curiosa, si bajan el trial y registran sus datos van a tener un representante de ventas el día siguiente de finalización del periodo de prueba hostigándolos. Sólo disponible para Windows.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.quest.com/sql-navigator/"&gt;SQL Navigator&lt;/a&gt;. Personalmente no lo he utilizado pero he visto a más de una persona usando dicho software. También de Quest y supongo que sólo para Windows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Utilerías PL/SQL&lt;/h3&gt;
&lt;p&gt;
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.stevenfeuerstein.com/"&gt;Steven Feuerstein&lt;/a&gt;. Provee algunas aplicaciones para generar código así como para pruebas de procedimientos almacenados.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://asktom.oracle.com/tkyte/WebAlchemy/WebAlchemy.htm"&gt;Web Alchemy&lt;/a&gt;. Para quienes utilicen el Oracle PL/SQL Web Toolkit, utilería para generar código pl/sql a partir de código html.&lt;/li&gt;
&lt;li&gt;PL Formatter. Originalmente de Revealnet (adquirido posteriormente por Quest), permitía formatear a nuestro gusto código de pl/sql. Útil para estandarizar así como hacer legible el código, me parece que ya no existe como versión stand-alone y sólo funciona integrado con TOAD como un add-on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Utilerías Oracle Developer&lt;/h3&gt;
&lt;p&gt;
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.orcl-toolbox.com/"&gt;ORCL Toolbox&lt;/a&gt;. Cuenta con herramientas que potencializan el uso de Developer API para poder explorar el contenido de fuentes de Forms y Reports y poder hacer cambios en lote o comparar versiones.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Control de Versiones&lt;/h3&gt;
&lt;p&gt;Esto más bien dependerá si se utiliza el control de versiones en el proyecto que participemos, pudiendo contar con diveras opciones tanto comerciales como libres. Dependerá más de gustos personales elegir que cliente utilizar, teniendo en cuenta las restricciones en cuanto al sistema operativo soportado. De particular interés &lt;a href="http://www.oracle.com/technology/products/repository/index.html"&gt;Oracle Sofware Configuration Manager&lt;/a&gt; y PCVS. El primero por ser de Oracle y permitir comparar fuentes de Forms y Reports pudiendo tener una mejor visibilidad de los cambios de código. El segundo también lo soporta aunque es de un tercero. Si bien lo ideal sería tener en cuenta el control de versiones en proyectos difícilmente lo he visto implementado y generalmente no se le da el uso correcto, como nota cultural estos han sido Visual Source Safe de Microsoft y Subversion. Para uso personal &lt;a href="http://ximbiot.com/cvs/wiki/"&gt;CVS&lt;/a&gt;, &lt;a href="http://subversion.tigris.org/"&gt;SVN&lt;/a&gt; ó &lt;a href="http://git.or.cz/"&gt;Git&lt;/a&gt; son buenas opciones.&lt;/p&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-6132630505268258671?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2008/07/cmo-crear-cemlis-para-oracle_03.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-5979001509294256319</guid><pubDate>Wed, 02 Jul 2008 03:00:00 +0000</pubDate><atom:updated>2008-07-09T14:52:28.558-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sql</category><category domain='http://www.blogger.com/atom/ns#'>custom</category><category domain='http://www.blogger.com/atom/ns#'>software</category><category domain='http://www.blogger.com/atom/ns#'>pl/sql</category><category domain='http://www.blogger.com/atom/ns#'>hrms</category><category domain='http://www.blogger.com/atom/ns#'>rdbms</category><category domain='http://www.blogger.com/atom/ns#'>shell</category><category domain='http://www.blogger.com/atom/ns#'>api</category><category domain='http://www.blogger.com/atom/ns#'>forms</category><category domain='http://www.blogger.com/atom/ns#'>interface</category><category domain='http://www.blogger.com/atom/ns#'>cemli</category><category domain='http://www.blogger.com/atom/ns#'>workflow</category><category domain='http://www.blogger.com/atom/ns#'>jdeveloper</category><category domain='http://www.blogger.com/atom/ns#'>application server</category><category domain='http://www.blogger.com/atom/ns#'>oracle applications</category><category domain='http://www.blogger.com/atom/ns#'>reports</category><title>Cómo crear CEMLIs para Oracle Applications y no morir en el intento, Parte 3</title><description>&lt;/p&gt;
&lt;p&gt;Ya con el conocimiento básico de la aplicación y su funcionalidad, procederemos a definir lo qué es un CEMLI.&lt;/p&gt;
&lt;p&gt;CEMLI es el acrónimo para Configuration, Extension, Modification, Localization, Integration, a saber, Configuración, Extensión, Modificación, Localización, Integración. A continuación una breve descripción de los temas que se consideran para cada caso. &lt;/p&gt;
&lt;h3&gt;Configuración&lt;/h3&gt;
&lt;p&gt;Temas que permiten su definición mediante la funcionalidad estándar de Oracle Applications y que forman parte de la configuración a realizar en cada implementación, con la finalidad de que se cubran las necesidades de negocio del cliente. Dichas configuraciones pueden ser:
&lt;ul&gt;
&lt;li&gt;Opciones de Perfil&lt;/li&gt;
&lt;li&gt;Lookups&lt;/li&gt;
&lt;li&gt;Flexfields Clave&lt;/li&gt;
&lt;li&gt;Flexfields Descriptivos&lt;/li&gt;
&lt;li&gt;Programas Concurrentes&lt;/li&gt;
&lt;li&gt;Juegos de Solicitudes&lt;/li&gt;
&lt;li&gt;Responsabilidades&lt;/li&gt;
&lt;li&gt;Menúes&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;Como temas de desarrollo podrá ser necesario definir nuevos perfiles y sus catálogos de valores, juegos de valores y su definición para flexfields claves y descriptivos, crear o modificar definiciones de programas concurrentes y juegos de solicitudes.&lt;/p&gt;
&lt;h3&gt;Extensiones&lt;/h3&gt;
&lt;p&gt;Dícese de la implementación de nuevas funcionalidades en la aplicación para cubrir las brechas requeridas por los procesos de negocio. Para ello pueden ser utilizadas las herramientas de desarrollo soportadas por la aplicación, así como ciertas funcionalidades provistas por la aplicación misma. Dentro del primer grupo tenemos:
&lt;ul&gt;
&lt;li&gt;Objetos de Base de Datos&lt;/li&gt;
&lt;li&gt;Triggers&lt;/li&gt;
&lt;li&gt;Directorios personalizados&lt;/li&gt;
&lt;li&gt;Formas&lt;/li&gt;
&lt;li&gt;Reportes&lt;/li&gt;
&lt;li&gt;Liberías&lt;/li&gt;
&lt;li&gt;Procedimientos Almacenados&lt;/li&gt;
&lt;li&gt;Scripts de Unix&lt;/li&gt;
&lt;li&gt;Workflow&lt;/li&gt;
&lt;li&gt;Controladores de impresoras&lt;/li&gt;
&lt;li&gt;Scripts de SQL y PL/SQL&lt;/li&gt;
&lt;li&gt;CUSTOM.pll&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;En cuanto a extensiones previstas como parte de la funcionalidad de la aplicación tenemos:
&lt;ul&gt;
&lt;li&gt;Alertas&lt;/li&gt;
&lt;li&gt;Forms Personalization&lt;/li&gt;
&lt;/ul&gt;
Este es un punto muy relacionado con desarrollo y para cada uno de los temas hay estándares y restricciones, que deberán ser seguidas en la medida de lo posible al desarrollar para Oracle Applications, como se define en el Developers Guide así como los manuales de las funcionalidades estándar. Una consideración importante en cuanto a las restricciones es que si la aplicación es administrada por el cliente, se puede ser más laxo en cuanto al manejo de excepciones a las restricciones. Por el contrario si la aplicación corre bajo un esquema On Demand, hay incluso más restricciones y estándares, y si bien hay un procedimiento para manejo de excepciones estas no siempre son aceptadas, además de contar con un control estricto del performance de los CEMLIs. La recomendación sería de inicio considerar que se trabaje con un esquema on demand aunque no sea el caso, ya que define reglas más estrictas para la creación de CEMLIs buscando aislar de manera efectiva cualquier código adicional creado para la aplicación.
&lt;/p&gt;
&lt;h3&gt;Modificación&lt;/h3&gt;
&lt;p&gt;En ocasiones, para las brechas de funcionalidad detectadas se identifica como una posible solución la modificación de un producto estándar, de cualquiera de los mencionados en los puntos anteriores. Oracle no da soporte a este tipo de acciones, por lo que antes de efectivamente tener que modificar un producto estándar tenemos las siguientes opciones, dependiendo del tipo de producto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Formas. Uso de flexfields descriptivos, folders, grids, forms personalization, CUSTOM.pll.&lt;/li&gt;
&lt;li&gt;Procesos. Modificación de Workflows, APIs, Extensiones previstas por la aplicación: user hooks (hr), get_custom_price (qp), external exposures (om), etc. Esto último requiere siempre darle una leída a la documentación del producto.&lt;/li&gt;
&lt;li&gt;Triggers. Uso de Oracle Alert.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En caso de no poder implementar la modificación con lo mencionado anteriormente o alguna funcionalidad específica de un producto, la recomendación es hacer una copia del producto y a ésta aplicar la modificación, debiendo documentar muy bien lo realizado ya que el producto base puede cambiar con nuevas versiones. Cabe mencionar que habrá casos en que no se tenga el fuente disponible como es el caso de programas en Pro*C, para lo cual será necesario levantar un SR en Oracle para solicitarlo, lo cual puede o no tener éxito. Así también es posible levantar un enhacement request para implementar una funcionalidad deseada, sin embargo esto puede llevar mucho tiempo. Cabe la posibilidad también de que algo deseado pueda no ser llevado a cabo dada la funcionalidad de la aplicación y las restricciones existentes, en cuyo caso se deberá buscar un workaround para tener la funcionalidad más parecida a la deseada.&lt;/p&gt;
&lt;h3&gt;Localización&lt;/h3&gt;
&lt;p&gt;Hay ciertos requerimientos particulares de países o regiones, relacionados sobretodo con cuestiones de normatividad. En dichos casos pueden existir ciertas adecuaciones proporcionadas por Oracle para ello, como pudieran ser productos específicos tales como reportes fiscales con datos y formatos de acuerdo a la legislación vigente, o bien soluciones completas tales como versiones específicas de la nómina para México, Reuno Unido, Estados Unidos, etc. Dichas adecuaciones cuentan con soporte de Oracle y continuamente están haciendo adecuaciones en concordancia con cambios en legislación.&lt;/p&gt;
&lt;h3&gt;Integración&lt;/h3&gt;
&lt;p&gt;Aquí se incluyen las interfaces de entrada y/o salida que interactuan con Oracle Applications. Por seguridad, la manipulación de datos de la aplicación no está soportada, por lo cual para la integración con sistemas de terceros o legados, así como para la conversión de datos, oracle proporciona diversos métodos para intercambio de información, a saber:
&lt;ul&gt;
&lt;li&gt;Open Interfaces. Tablas de paso que mediante programas concurrentes de Oracle que validan la información en ellas contenida de acuerdo a la configuración de la aplicación. De ser correcta, se inserta dicha información en tablas de sistema, en caso contrario se indican los errores detectados.&lt;/li&gt;
&lt;li&gt;API. Interfaces programáticas para creación de datos "en línea". Son procedimientos almacenados que toman como parámetros los datos que se desean ingresar al sistema, y en parámetros de salida se indica el estado de finalización y posibles errores dectados.&lt;/li&gt;
&lt;li&gt;ADE. Disponible hasta los últimos releases del 11.5, que permiten interactuar con Excel para extraer información de Oracle así como insertar o actualizar, aunque sólo para los módulos de HR. A partir de 11.5.10 se reemplaza por Web ADI y se abre a otros módulos, como por ejemplo FA.&lt;/li&gt;
&lt;li&gt;ADI. Integración con Excel para carga de pólizas a GL.&lt;/li&gt;
&lt;li&gt;Web ADI. Integración con Excel para extracción, carga y actualización de datos a Oracle.&lt;/li&gt;
&lt;li&gt;Interconnect. Utiliza queues (colas) a las que se suscriben los sistemas a interconectar, que basados en los mensajes recibidos llevan a cabo acciones.&lt;/li&gt;
&lt;li&gt;BPEL. Entre sus monerias esta el uso de Web Services para comunicarse desca y hacia otros sistemas.&lt;/li&gt;
&lt;/ul&gt;
Cabe mencionar que al no permitirse tampoco el acceso a la base de datos desde un sistema externo en el caso de un esquema On Demand, para la versión 11i se sugiere el uso de Interconnect y BPEL a partir del release 12. No se mucho del tema pero he sabido de su utilización y es funcional.&lt;/p&gt;
&lt;p&gt;Dependiendo de la versión de la aplicación e incluso del nivel de parches se podrá tener acceso o no a Open Interfaces u/o APIs para un mismo objeto de negocios, como por ejemplo el caso de AR, donde Originalmente sólo se contaba con AutoInoivce y Lockbox y en la actualidad se cuenta además con APIs. Referirse a la documentación de acuerdo a la versión de trabajo para determinar que método está disponible así como las posibles diferencias entre ambos y poder elegir la adecuada para la integración requerida.&lt;/p&gt;
&lt;p&gt;A efectos de tomar en cuenta el hecho de que puedan existir múltiples nodos para la capa de programas concurrentes, es recomendable para la transferencia de archivos de datos desde/hacia la aplicación, contar con un filesystem compartido accesible desde todos los nodos.&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-5979001509294256319?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2008/07/cmo-crear-cemlis-para-oracle.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4067849093780415132.post-3089671355071042285</guid><pubDate>Tue, 01 Jul 2008 21:20:00 +0000</pubDate><atom:updated>2008-07-01T16:25:26.904-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>noticias</category><category domain='http://www.blogger.com/atom/ns#'>rdbms</category><category domain='http://www.blogger.com/atom/ns#'>application server</category><title>Oracle Actualiza los precios de sus productos</title><description>&lt;/p&gt;
&lt;p&gt;Como no lo hacía desde hace un rato y considerando el incremento en rendimiento por procesador, Oracle ha incrementado los precios de licencias de productos de base de datos y servidores de aplicaciones entre un 15 y 20%.&lt;/p&gt;
&lt;p&gt;Para ver una comparativa de precios y ejemplos de algunos productos, referirse a ésta nota en &lt;a href="http://www.theregister.co.uk/2008/06/20/oracle_license_increase/"&gt;The Register&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4067849093780415132-3089671355071042285?l=oracle.amox.mx' alt='' /&gt;&lt;/div&gt;</description><link>http://oracle.amox.mx/2008/07/oracle-actualiza-los-precios-de-sus.html</link><author>noreply@blogger.com (amox)</author><thr:total>0</thr:total></item></channel></rss>