Lindo error en Oracle 9i.



Instale un GXWiki sobre IIS / Oracle. Ya voy instalando varios GXWiki para diversos usos y nunca habia tenido problemas.
Con este, la cosa fue distinta pues funciona bien, hasta que se quiere agregar un referencia a un nuevo articulo con [[Articulo]].
Para probar instalamos el mismo sitio, accediendo a la misma base de datos, desde otro equipo con IIS, y todo funciona correctamente.
En el equipo que debe funcionar, da el error: ORA-12571 TNS: packet writer failure, cuya solucion es bastante compleja.
Ya probamos la opcion de modificar el sqlnet.ora, el chequeo de antivirus y variasmas y ninguna funciono.
En la traza de Oracle
=====================
PARSING IN CURSOR #1 len=119 dep=0 uid=38 oct=3 lid=38 tim=1242562966330321 hv=598034925 ad='3072aa0'
SELECT PageType FROM WikiProc.Page WHERE (PageType = :PageType AND PageName = :PageName) AND (Not ( PageId = :PageId))
END OF STMT
PARSE #1:c=0,e=18,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=1242562966330320
EXEC #1:c=0,e=11,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=1242562966330382
*** 2010-04-27 13:07:57.522
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [12333], [0], [0], [0], [], [], [], []
Current SQL statement for this session:
SELECT PageType FROM WikiProc.Page WHERE (PageType = :PageType AND PageName = :PageName) AND (Not ( PageId = :PageId))



Se puede ver que la sentencia es de lo mas inocua y simple...
Son de los errores lindos que me pueden tener ocupado una semana...
La aplicacion da este error: 

[GxADODataException: ORA-12571: TNS:packet writer failure
ORA-12571: TNS:packet writer failure
]
   GeneXus.Data.ADO.GxCommand.FetchData(IDataReader& dr) +494
   GeneXus.Data.NTier.ADO.ForEachCursor.execute() +211
   GeneXus.Data.NTier.DataStoreProvider.execute(Int32 cursor, Object[] parms, Boolean batch) +609
   GeneXus.Data.NTier.DataStoreProvider.execute(Int32 cursor, Object[] parms) +10
   GeneXus.Programs.tpage_bc.CheckExtendedTable055() +147
   GeneXus.Programs.tpage_bc.Insert055() +33
   GeneXus.Programs.tpage_bc.Save() +722
   GeneXus.Utils.GxSilentTrnSdt.Save() +19
   GeneXus.Programs.pgetcreatepageid.executePrivate() +436
   GeneXus.Programs.pgetcreatepageid.execute(String aP0_PageFullName, Int32& aP1_PageId) +35
   GeneXus.Programs.peditedcontenttointernalcontent.S11102() +97
   GeneXus.Programs.peditedcontenttointernalcontent.executePrivate() +1507
   GeneXus.Programs.peditedcontenttointernalcontent.execute(String aP0_EditedContent, Int32 aP1_UserId, String& aP2_InternalContent, IGxCollection& aP3_Links) +111
   GeneXus.Programs.paddpageversion.executePrivate() +765
   GeneXus.Programs.paddpageversion.execute(Int32 aP0_PageId, String aP1_PageNameAux, String aP2_EditedPageVersionContent, String aP3_PageVersionBlob, Int32 aP4_UserId, String aP5_PageVersionFootNote, String aP6_PageVersionComment, Int16 aP7_PageType, Int16 aP8_IsMinor, Int16 aP9_PageVersionStatus, Int16 aP10_PageVersionViewStatus, Int32& aP11_AssignedPageId, String& aP12_PageFullName, Boolean& aP13_Success) +159
   GeneXus.Programs.paddpageversionweb.executePrivate() +190
   GeneXus.Programs.paddpageversionweb.execute(Int32 aP0_PageId, String aP1_PageName, String aP2_Body, Int32 aP3_UserId, String aP4_PageVersionFootNote, String aP5_PageVersionComment, Int16 aP6_PageType, Int16 aP7_PageVersionIsMinorChange, Int16 aP8_PageVersionStatus, Int16 aP9_PageVersionViewStatus, Int32 aP10_OriginalVersionId1) +119
   GeneXus.Programs.heditpage.E120M2() +684
   GeneXus.Programs.heditpage.EVT0M2() +647
   GeneXus.Programs.heditpage.DispatchEvents() +5
   GeneXus.Programs.wikimasterpage.EVT082() +2816
   GeneXus.Programs.wikimasterpage.webExecute() +131
   GeneXus.Programs.heditpage.webExecute() +251
   GeneXus.Http.GXHttpHandler.ProcessRequest(HttpContext httpContext) +333


Sigo a la búsqueda de hacer funcionar esto. Claramente es un problema de instalación del cliente Oracle en ese equipo, que es de 64bits, pero ya se reinstalo y el problema sigue. Alguien paso por algo parecido?

Comentarios

  1. Enrique, el cliente de oracle es el mismo en ambas máquinas?
    el ado.net provider by default es microsoft y ese llega al oracle a traves del cliente.
    Buscaría diferencias en la config. del client, por ejemplo del
    \oracle\ora90\network\admin\tnsnames.ora
    Saludos, Armin

    ResponderEliminar
  2. El cliente es el "mismo". O sea es la igual version.. pero el servidor de produccion es 64bits y los otros son de 32bits.

    El cliente oracle es en ambos casos de 32bits.

    Cuando encuentre la solucion, publico como lo solucionamos....

    ResponderEliminar
  3. Una posibilidad es que tengas en el medio un proxy server, firewall o balanceador y que este cerrando conexiones no utilizadas durante un tiempo sin avisar al otro extremo.
    Es posible que el Timeout de inactividad de la conexión en el pool sea mayor a la del firewall, con lo que se podría tratar de utilizar una conexión dónde el otro tramo este cerrado.
    Esto es más probable en ambientes productivos donde se setea una DMZ con firewalls.
    Hemos tenido algunos casos de estos en otras plataformas y han sido temas de diferencias en seteos de timeout de conexiones.
    En casos extraños como este nos ha sido util una analizador de paquetes de red como Wireshark o Microsoft Network Analyzer.
    Suerte

    ResponderEliminar
  4. Marcos:
    El servidor esta en al DMZ y seguramente puede ser algo de esto.
    Lo raro es que muchas operaciones (insert/update/delete) en la base se hacen sin problemas, pero cuando llega a esa sentencia da error.

    Estuvieron analizando los paquetes con el Microsoft Network Analyzer, pero para yo ya no puedo ayudar a ese nivel.

    Gracias por el comentario y espero que se solucione en los proximos dias.

    ResponderEliminar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

El Sordo

Paleta de colores en GeneXus