FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Errores varios en índices CDX
Posts: 728
Joined: Fri Oct 07, 2005 07:38 AM
Errores varios en índices CDX
Posted: Wed Aug 30, 2017 04:01 PM
Buenas amigos!
Tengo un cliente desde hace un par de meses tiene problemas con los índices, con cuelgues del programa. En el hb_out.log se generan estos tres tipos de errores (no en este orden ni siempre los tres) :

Code (fw): Select all Collapse
Error irrecuperable 9201: hb_cdxPageSeekKey: wrong parent key
Error irrecuperable 9201: hb_cdxPageGetKeyVal: index corrupted.
Error irrecuperable 1010: hb_cdxIndexPageRead: Read index page failed.


Un borrado de índices y una regeneración solventan el problema por unos pocos días, pero pronto vuelve a presentarse este problema.
He estado revisando las tablas y la que más trabajan (detalle de albaranes de venta) ahora mismo tiene un tamaño de 2,7GB .

¿Alguna sugerencia o experiencia en estos problemas? No me gustaría tener que forzar una regeneración de índices cada día. :-) :-)
Gracias!
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Errores varios en índices CDX
Posted: Wed Aug 30, 2017 05:36 PM

Hola, muestre cómo usted está creando los índices.

Saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Errores varios en índices CDX
Posted: Wed Aug 30, 2017 07:00 PM

por favor muestra el codigo de creacion de los indices.
ademas indica que compilador usas xharbour o harbour, y que version tienes.
lo puedes saber ejecutando "harbour -version"

salu2
carlos vargas

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Errores varios en índices CDX
Posted: Wed Aug 30, 2017 07:30 PM
Tu MENU principal esta asi?

Code (fw): Select all Collapse
#Include "FiveWin.ch"

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850

ANNOUNCE RDDSYS
REQUEST OrdKeyNo, OrdKeyCount, OrdCreate, OrdKeyGoto
REQUEST DBFCDX, DBFFPT

FUNCTION Main()
 
   SET DATE BRITISH
   SET EPOCH TO 1950
   SET CENTURY ON
   SET SOFTSEEK OFF
   SET WRAP ON
   SETCANCEL( .F. )
   SET CONFIRM OFF
   SET DELETED ON
   SET ESCAPE OFF
   SET EXACT ON
   SET EXCLUSIVE OFF
   SET MULTIPLE OFF

   IF ISEXERUNNING( CFILENAME( HB_ARGV( 0 ) ) )
      __Quit()
   ENDIF

   RDDSETDEFAULT("DBFCDX")

   HB_LANGSELECT( 'PT' )     // Default language is now Portuguese
   HB_SETCODEPAGE( "PT850" )


   /*
   USE BD...
   GO TOP


   BROWSE()
   */

RETURN NIL


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 728
Joined: Fri Oct 07, 2005 07:38 AM
Re: Errores varios en índices CDX
Posted: Wed Aug 30, 2017 08:06 PM
Si, en el inicio de la aplicación

Code (fw): Select all Collapse
  REQUEST DBFCDX
  REQUEST DBFFPT
  RDDSETDEFAULT ("DBFCDX")
  REQUEST HB_Lang_ES
  REQUEST HB_CODEPAGE_ESWIN
  HB_LangSelect("ES")
  HB_CDPSELECT ("ESWIN")


Dejo una de las funciones que utilizo para el indexado :

Code (fw): Select all Collapse
Function Indexa (cAlias,cOrden,cCond,cComo)
/* =====================================================================
   Crea un índice temporal
   
   Parámetros:
                cAlias . Alias que se quiere ordenar
                cOrden . Campo a ordenar el fichero
                cCond  . Condiciones a aplicar para generar el orden
                cComo  . Se le pasa .T. si se quiere ordenadr DESCENDING
                
   Devuelve el nombre del fichero temporal creado                
   ---------------------------------------------------------------------
   Última revisión:06/08/2013 17:05
   Revisado por   :Angel
   =====================================================================
*/   
        
Local oWnd, nRecs, nFil:=0, cFil:="IND", nSel:=Select()

  Select &cAlias
  Set Index To

  cFil:="temporal.cdx"

  If cComo=NIL
    Index On &cOrden TAG (cOrden) To (cDirTemp+cFil)
  Else
    Index On &cOrden TAG (cOrden) To (cDirTemp+cFil) DESCENDING 
  Endif
  (cAlias)->(OrdListAdd (cDirTemp+cFil))
  (cAlias)->(DbSetOrder(1))
  (cAlias)->(DbGoTop())
  Select (nSel)
  
  
Return (cFil)


Uso Harbour 3.2.0dev (r1703231115) y Borland 7.0
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
Posts: 282
Joined: Mon Oct 10, 2005 08:55 AM
Re: Errores varios en índices CDX
Posted: Thu Aug 31, 2017 10:25 AM

Hace tiempo que no tengo ese problema con mis clientes, y es porque al hacer una nueva instalación siempre me aseguro de anular el protocolo SMB de windows en el servidor y cada uno de los terminales existentes, protocolo que precisamente es el que por hacer un bien, ahorrar tiempo, lo que realmente hace es corromper los indices.
Ocurre generalmente cuando el servidor tiene como S.O el Server 2008 o 2012.
Hecho esto, nunca mas el problema en la instalación en cuestión.
Saludos :shock:

Posts: 728
Joined: Fri Oct 07, 2005 07:38 AM
Re: Errores varios en índices CDX
Posted: Thu Aug 31, 2017 10:34 AM
José Vicente Beltrán wrote:Hace tiempo que no tengo ese problema con mis clientes, y es porque al hacer una nueva instalación siempre me aseguro de anular el protocolo SMB de windows en el servidor y cada uno de los terminales existentes, protocolo que precisamente es el que por hacer un bien, ahorrar tiempo, lo que realmente hace es corromper los indices.
Ocurre generalmente cuando el servidor tiene como S.O el Server 2008 o 2012.
Hecho esto, nunca mas el problema en la instalación en cuestión.
Saludos :-)


Vaya! Pues voy a probarlo de inmediato. Efectivamente, el servidor del cliente tiene instalado Server 2008.
Gracias,
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Errores varios en índices CDX
Posted: Thu Aug 31, 2017 05:59 PM
Angel, cambia tu ERRSYSW.PRG para muestrar los errores.

Code (fw): Select all Collapse
   if Left( ProcName( 7 ), 10 ) == "ERRORDIALO"
      SET RESOURCES TO
      ErrorLevel( 1 )
      QUIT
   endif

   // Incluido em 27/06/2013 By Joao Santos - Sao Paulo - Brasil
   IF UPPER(e:Description)="CORRUPTION DETECTED"         .OR. ;
      UPPER(e:Description)="DETECTADO ÖNDICE CORROMPIDO" .OR. ;
      UPPER(e:Description)="DETECTADO INDICE CORROMPIDO"


      ? "CORRUPTION DETECTED"  // mensageria

      DBCLOSEALL()

      QUIT

   ENDIF

   // Incluido em 26/07/2013 By Joao Santos
   IF UPPER(e:Description) = "LOCK REQUIRED"                              .OR.;
      UPPER(e:Description) = "TRAVAMENTO REQUERIDO"                       .OR.;
      UPPER(e:Description) = "FALHA NO TRAVAMENTO"                        .OR.;
      UPPER(e:Description) = "FALHA NO TRAVAMENTO DO APPEND"              .OR.;
      UPPER(e:Description) = "USO EXCLUSIVO REQUERIDO"                    .OR.;
      UPPER(e:Description) = "Erro DBFCDX/1002 erro ao Abrir"             .OR.;
      UPPER(e:Description) = "Erro DBFCDX/1002 erro Open (DOS Erro 2)"    .OR.;
      UPPER(e:Description) = "Error DBFCDX/1002 Open error"               .OR.;
      UPPER(e:Description) = "Error DBFCDX/1002 Open error (DOS Error 2)" .OR.;
      UPPER(e:Description) = "ERROR BASE/1003 Variable does Not Exist"    .OR.;
      UPPER(e:Description) = "(DOS Error 2) DBFCDX/1002 ERRO DE ABERTURA" .OR.;
      UPPER(e:Description) = "Erro DBFCDX/1001 erro ao Abrir"             .OR.;
      UPPER(e:Description) = "Erro DBFCDX/1001 erro Open (DOS Erro 2)"    .OR.;
      UPPER(e:Description) = "Error DBFCDX/1001 Open error"               .OR.;
      UPPER(e:Description) = "Error DBFCDX/1001 Open error (DOS Error 2)" .OR.;
      UPPER(e:Description) = "(DOS ERROR 2) DBFCDX/1001 ERRO DE ABERTURA" .OR.;
      UPPER(e:Description) = "(DOS ERROR 2) DBFCDX/1001 Open Error"       .OR.;
      UPPER(e:Description) = "Error DBFCDX/1201 WORKAREA NOT INDEXED"     .OR.;
      UPPER(e:Description) = "ERROR DBFCDX/1201 WORKAREA NÇO INDEXADA"    .OR.;
      UPPER(e:Description) = "Error DBFCDX/1012 Corruption detected"      .OR.;
      UPPER(e:Description) = "ERROR DBFCDX/1012 CORRUPTION DETECTED"      .OR.;
      UPPER(e:Description) = "Error DBFCDX/1210 Corruption detected"      .OR.;
      UPPER(e:Description) = "ERROR DBFCDX/1210 CORRUPTION DETECTED"      .OR.;
      UPPER(e:Description) = "(DOS ERROR 64) DBFCDX/1010  ERRO DE LEITURA".OR.;
      UPPER(e:Description) = "(DOS ERROR 64) DBFCDX/1010  READ ERROR"     .OR.;
      UPPER(e:Description) = "(DOS ERROR 87) DBFCDX/1010  ERRO DE LEITURA".OR.;
      UPPER(e:Description) = "(DOS ERROR 87) DBFCDX/1010  READ ERROR"     .OR.;
      UPPER(e:Description) = "(DOS Error 2) DBFCDX/1001 ERRO DE ABERTURA" .OR.;
      UPPER(e:Description) = "Error DBCMD/2001 Workarea nao esta em uso"  .OR.;
      UPPER(e:Description) = "Error DBCMD/2001 Workarea not in use"


      ? [ERROR DE RED]  // Mensageria

   ENDIF

   cErrorLog += "Aplicacao - Instrucoes Para Envio de Email-Leia: DESCRICAO DO ERRO Logo Abaixo:" + CRLF
   cErrorLog += "===============================================================================" + CRLF
   cErrorLog += "   Caminho e Nome: " + GetModuleFileName( GetInstance() )


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 174
Joined: Sat Feb 23, 2013 10:04 AM
Re: Errores varios en índices CDX
Posted: Fri Oct 06, 2017 07:39 AM

Hola Ángel,

¿ Pudiste solucionar el problema ?

Yo tengo corrupcion de indices pero en Terminal Server.

No sé si el SMB afecta cuando se trabaja en Terminal Server.

Algún hint, pls.

Salu2

Posts: 728
Joined: Fri Oct 07, 2005 07:38 AM
Re: Errores varios en índices CDX
Posted: Fri Oct 06, 2017 07:50 AM

No, sigo igual :cry: :cry: :cry:

Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
Posts: 174
Joined: Sat Feb 23, 2013 10:04 AM
Re: Errores varios en índices CDX
Posted: Fri Oct 06, 2017 09:43 AM

Vaya !!

Yo he pedido que miren el antivirus, que tenga excluida la carpeta del programa.

Qué Windows tiene tu cliente ?

Posts: 728
Joined: Fri Oct 07, 2005 07:38 AM
Re: Errores varios en índices CDX
Posted: Fri Oct 06, 2017 09:49 AM

Windows Server 2008 R2 ... de momento van trabajando (he programado una tarea que compacte y reindexe por las noches) ... pero no es plan, claro.

Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: Errores varios en índices CDX
Posted: Sun Oct 08, 2017 11:09 AM
Yo he tenido bastante suerte con dbfcdx de Harbour, sin problemas salvo ocasiones inevitables como apagados repentinos o caídas de la red.
Una pregunta... ¿Como andamos de Commits()?

Hay commits antes del unlock? Es la principal causa de problemas. Sé que a veces se pone más lento el grabado de datos, pero el tiempo que te ahorras lo perderás en reindexar y peor aun, perder la confianza del cliente.

Del manual de Clipper:

http://www.itlnet.net/programming/progr ... 1df26.html

Code (fw): Select all Collapse
Notes

     .  Network environment: DBCOMMIT() makes database updates visible
        to other processes.  To insure data integrity, issue DBCOMMIT()
        before an UNLOCK operation.  For more information, refer to the
        "Network Programming" chapter in the Programming and Utilities Guide.


Un saludo
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 174
Joined: Sat Feb 23, 2013 10:04 AM
Re: Errores varios en índices CDX
Posted: Mon Oct 09, 2017 05:35 PM

Gracias Carlos,

He incluido algunos dbCommit() en procesos más sensibles.

Veremos. Si aguanta tres semanas sin romper, creo que podremos decir que hemos tenido exito.

Salu2

Posts: 728
Joined: Fri Oct 07, 2005 07:38 AM
Re: Errores varios en índices CDX
Posted: Tue Oct 10, 2017 06:59 AM

Yo he hecho lo mismo, haremos un seguimiento para ver qué tal.

Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4