Lindo error en Oracle 9i.
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?
Enrique, el cliente de oracle es el mismo en ambas máquinas?
ResponderBorrarel 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
El cliente es el "mismo". O sea es la igual version.. pero el servidor de produccion es 64bits y los otros son de 32bits.
ResponderBorrarEl cliente oracle es en ambos casos de 32bits.
Cuando encuentre la solucion, publico como lo solucionamos....
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.
ResponderBorrarEs 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
Marcos:
ResponderBorrarEl 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.