Manuales POS



CAJAS_01_Mantenimiento_Caja

Audiencia 

Este documento está pensado para ser consumido por los equipos de:

  1. Soporte Farmax OR (Niveles 1 y 2)

  2. Equipo de desarrollo TI (Farmacias del Ahorro y proveedor externo)

 

Descripción general

Se presentó un error en la sucursal 1564 caja 22 y este problema ocurrió a base de un apagón de luz provocando daños a la base de datos y servicios del POS.

Impacto a la operación

El impacto de la operación es media en virtud de que la operación no se ve comprometida por esta incidencia. Criticidad

 

Alto

 

Medio

X

Bajo

 

 

Sistemas/módulos involucrados

POS

 

Precondiciones 

Aquí se debe especificar el nivel de acceso requerido por cada sistema (aplicativo o base de datos), indicando el rol o perfil necesario para para el diagnóstico y/o solución del incidente.

 

POS

Usuario: 

Contraseña: 

Procedimiento de diagnóstico

  1. Se realizó el respaldo de la base de datos solicitando a farmacias que pusiera en modo esclavo el Disco duro esto para extraer los archivos .mdf y .ldf.

  2. Una vez extraídos procedieron hacer una reinstalación en un equipo nuevo reinstalando el POS, el sql de la nueva base de datos.

  3. Una vez que instalaron todo en la máquina se procedió a importar los archivos mdf y ldf, y se realizó un respaldo de la base de datos nueva de la caja esto para prevenir algún error en la otra base anterior.

  4. Eliminamos los archivos mdf y ldf de la base de datos nueva y se pego la antigua, se procedió a iniciar los servicios.

  5. Sin embargo, un servicio de Till marcaba error por lo cual se procedió a realizar el mantenimiento de caja.

  6. Primero debes de conectarte a la caja de la sucursal donde se tiene el problema con el siguiente query.

SELECT * FROM upRegistroEquipoSucursalCajas (NOLOCK) WHERE codigoSucursal = 1564 and numeroCaja in (22)

  1. Debes de copiar la ip y realizar una nueva conexión.

  2. Validar que estar en la caja con el siguiente query

select @@servername
  1. Antes de ejecutar el script del mantenimiento, la caja no debe de estar en operación y que los servicios del POS estén detenidos (Esto es muy importante ya que podemos dañar algún dato de información o registro de la base de datos).

  2. Una vez confirmado deberás abrir el siguiente script y ejecutar línea por línea hasta que cada una termine su función.

  1. ALTER DATABASE FARMAX_CAJA SET EMERGENCY
  2. DBCC CHECKDB ('FARMAX_CAJA')
  3. ALTER DATABASE FARMAX_CAJA SET SINGLE_USER WITH ROLLBACK IMMEDIATE
  4. DBCC CHECKDB (FARMAX_CAJA, REPAIR_ALLOW_DATA_LOSS)
  5. ALTER DATABASE FARMAX_CAJA SET MULTI_USER

 

  1. Una vez que se haya terminado de ejecutar las 5 líneas procederemos a ejecutar el último script.

Use FARMAX_CAJA
DECLARE @cmd NVARCHAR(1000)   
DECLARE @Table VARCHAR(255)   
DECLARE @SchemaName VARCHAR(255)
DECLARE @IndexName VARCHAR(255)  
DECLARE @AvgFragmentationInPercent DECIMAL  
DECLARE @fillfactor INT   
DECLARE @FragmentationThresholdForReorganizeTableLowerLimit VARCHAR(10)  
DECLARE @FragmentationThresholdForRebuildTableLowerLimit VARCHAR(10)  
DECLARE @Message VARCHAR(1000)  
SET NOCOUNT ON  
SET @fillfactor = 90   
SET @FragmentationThresholdForReorganizeTableLowerLimit = '10.0' -- Percent  
SET @FragmentationThresholdForRebuildTableLowerLimit = '30.0' -- Percent  
BEGIN TRY  
-- ensure the temporary table does not exist  
IF (SELECT OBJECT_ID('tempdb..#FramentedTableList')) IS NOT NULL  
DROP TABLE #FramentedTableList;  
IF (SELECT OBJECT_ID('tempdb..#TableList')) IS NOT NULL  
DROP TABLE #TableList;  
SET @Message = 'DATE : ' + CONVERT(VARCHAR, GETDATE()) + ' - Retrieving indexes with high fragmentation from ' + DB_NAME() + ' database.'  
RAISERROR(@Message, 0, 1) WITH NOWAIT  
SELECT OBJECT_NAME(IPS.OBJECT_ID) AS [TableName], avg_fragmentation_in_percent, SI.name [IndexName],   
schema_name(ST.schema_id) AS [SchemaName], 0 AS IsProcessed INTO #FramentedTableList  
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL , NULL) IPS  
JOIN sys.tables ST WITH (nolock) ON IPS.OBJECT_ID = ST.OBJECT_ID  
JOIN sys.indexes SI WITH (nolock) ON IPS.OBJECT_ID = SI.OBJECT_ID AND IPS.index_id = SI.index_id  
WHERE ST.is_ms_shipped = 0 AND SI.name IS NOT NULL  
AND avg_fragmentation_in_percent >= CONVERT(DECIMAL, @FragmentationThresholdForReorganizeTableLowerLimit)   
ORDER BY avg_fragmentation_in_percent DESC  
SELECT DISTINCT TableName, 0 IsProcessed INTO #TableList FROM #FramentedTableList ORDER BY 1 
SET @Message = 'DATE : ' + CONVERT(VARCHAR, GETDATE()) + ' - Retrieved indexes with high fragmentation from ' + DB_NAME() + ' database.'  
RAISERROR(@Message, 0, 1) WITH NOWAIT  
RAISERROR('', 0, 1) WITH NOWAIT  
WHILE EXISTS ( SELECT 1 FROM #FramentedTableList WHERE IsProcessed = 0 )  
BEGIN  
SELECT TOP 1 @Table = TableName, @AvgFragmentationInPercent = avg_fragmentation_in_percent, @SchemaName = SchemaName, @IndexName = IndexName  
FROM #FramentedTableList  
WHERE IsProcessed = 0  
  --Reorganizing the index  
IF((@AvgFragmentationInPercent >= @FragmentationThresholdForReorganizeTableLowerLimit) AND (@AvgFragmentationInPercent < @FragmentationThresholdForRebuildTableLowerLimit))  
BEGIN  
SET @Message = 'DATE : ' + CONVERT(VARCHAR, GETDATE()) + ' - Reorganizing Index for [' + @Table + '] which has avg_fragmentation_in_percent = ' + CONVERT(VARCHAR, @AvgFragmentationInPercent) + '.'  
    RAISERROR(@Message, 0, 1) WITH NOWAIT  
    SET @cmd = 'ALTER INDEX ' + @IndexName + ' ON [' + RTRIM(LTRIM(@SchemaName)) + '].[' + RTRIM(LTRIM(@Table)) + '] REORGANIZE'   
    EXEC (@cmd)  
    --PRINT @cmd   
    SET @Message = 'DATE : ' + CONVERT(VARCHAR, GETDATE()) + ' - Reorganize Index completed successfully for [' + @Table + '].'   
    RAISERROR(@Message, 0, 1) WITH NOWAIT  
    RAISERROR('', 0, 1) WITH NOWAIT  
  END  
  --Rebuilding the index  
  ELSE IF (@AvgFragmentationInPercent >= @FragmentationThresholdForRebuildTableLowerLimit )  
  BEGIN  
    SET @Message = 'DATE : ' + CONVERT(VARCHAR, GETDATE()) + ' - Rebuilding Index for [' + @Table + '] which has avg_fragmentation_in_percent = ' + CONVERT(VARCHAR, @AvgFragmentationInPercent) + '.'  
    RAISERROR(@Message, 0, 1) WITH NOWAIT  
    SET @cmd = 'ALTER INDEX ' + @IndexName + ' ON [' + RTRIM(LTRIM(@SchemaName)) + '].[' + RTRIM(LTRIM(@Table)) + '] REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3),@fillfactor) + ', STATISTICS_NORECOMPUTE = OFF)'   
    EXEC (@cmd)  
    --PRINT @cmd  
    SET @Message = 'DATE : ' + CONVERT(VARCHAR, GETDATE()) + ' - Rebuild Index completed successfully for [' + @Table + '].'  
    RAISERROR(@Message, 0, 1) WITH NOWAIT  
    RAISERROR('', 0, 1) WITH NOWAIT  
  END  
  UPDATE #FramentedTableList SET IsProcessed = 1  
  WHERE TableName = @Table AND IndexName = @IndexName  
END  
WHILE EXISTS ( SELECT 1 FROM #TableList WHERE IsProcessed = 0 )  
BEGIN  
SELECT @Table = TableName FROM #TableList WHERE IsProcessed = 0  
SET @Message = 'DATE : ' + CONVERT(VARCHAR, GETDATE()) + ' - Recompile Table for [' + @Table + ']'  
RAISERROR(@Message, 0, 1) WITH NOWAIT  
SET @cmd = 'exec sp_recompile ' + RTRIM(LTRIM(@Table))    
EXEC (@cmd)  
SET @Message = 'DATE : ' + CONVERT(VARCHAR, GETDATE()) + ' - Recompile Table completed successfully for [' + @Table + '].'  
RAISERROR(@Message, 0, 1) WITH NOWAIT  
RAISERROR('', 0, 1) WITH NOWAIT  
UPDATE #TableList SET IsProcessed = 1  
WHERE TableName = @Table  
END  
SET @Message = 'DATE : ' + CONVERT(VARCHAR, GETDATE()) + ' - Update Statistics for database [' + DB_NAME() + '].'   
RAISERROR(@Message, 0, 1) WITH NOWAIT 
SET @cmd = 'EXEC sp_updatestats' 
EXEC (@cmd)  
SET @Message = 'DATE : ' + CONVERT(VARCHAR, GETDATE()) + ' - Statistics completed successfully for [' + DB_NAME() + '].'  
RAISERROR(@Message, 0, 1) WITH NOWAIT  
RAISERROR('', 0, 1) WITH NOWAIT 
DROP TABLE #FramentedTableList   
DROP TABLE #TableList   
END TRY  
BEGIN CATCH  
  PRINT 'DATE : ' + CONVERT(VARCHAR, GETDATE()) + ' There is some run time exception.'  
  PRINT 'ERROR CODE : ' + CONVERT(VARCHAR, ERROR_NUMBER())   
  PRINT 'ERROR MESSAGE : ' + ERROR_MESSAGE()  
END CATCH 
--trunca log
USE FARMAX_CAJA
GO
DBCC SHRINKFILE (N'FARMAX_CAJA_log' , 0, TRUNCATEONLY)
GO
  1. Una vez terminado de ejecutar todo el script de mantenimiento ya procedemos a iniciar los servicios y abrir nuevamente el POS.

  2. Y listo.

 

Validación

No aplica.

Notificación de resolución

Especificar la lista de usuarios que deben ser notificados al momento que se ha confirmado la resolución de la incidencia.

Incidencia relacionada

INC 2024-151881
INC 2024-174430
INC 2024-167548
INC 2024-207797
INC 2024-206262
INC 2024-195963
INC 2024-191958
INC 2024-184292
INC 2024-153384
INC 2024-161812
INC 2024-153384
INC 2024-184156
INC 2024-187502
INC 2024-184997
INC 2024-181512
INC 2024-184208
INC 2024-184964
INC 2024-181687
INC 2024-174075
INC 2024-182179
INC 2024-209453
REQ 2024-206413
INC 2024-208554
INC 2024-242945
INC 2024-242137
INC 2024-246872
INC 2024-208554
INC 2024-211219
INC 2024-202944
INC 2024-202777
REQ 2024-218593
INC 2024-219212
INC 2024-219400
INC 2024-223699
INC 2024-223727
INC 2024-233188
INC 2024-232913
INC 2024-237026
INC 2024-238687
INC 2024-238048
INC 2024-237628
INC 2024-233219
REQ 2024-206413
INC 2024-209453
INC 2024-268940
INC 2024-265661
INC 2024-265452
INC 2024-261695
INC 2024-254295
INC 2024-232743
INC 2024-242937
INC 2024-248395
INC 2024-248201
INC 2024-246872
INC 2024-242137
INC 2024-242945
INC 2024-271526
INC 2024-274672
INC 2024-209453
INC 2024-299711
INC 2024-299179
INC 2024-298840
INC 2024-296952
INC 2024-296891
INC 2024-298042
INC 2024-288356
INC 2024-275991
INC 2024-282147
INC 2024-295270
INC 2024-294797
INC 2024-265567
INC 2024-286397
INC 2024-285930
INC 2024-284127
INC 2024-280304
INC 2024-295267
INC 2024-295315
INC 2024-289973
INC 2024-287505
INC 2024-289014
INC 2024-285957
INC 2024-283411
INC 2024-276734
INC 2024-280309
INC 2024-271834
INC 2024-272395
INC 2024-271834
INC 2024-312882
INC 2024-300757
REQ 2024-308514
INC 2024-305590

Glosario

Revisa el glosario del equipo de soporte de Farmacias del ahorro aquí

Kuvaus
INC 2024-151881 INC 2024-174430 INC 2024-167548 INC 2024-207797 INC 2024-206262 INC 2024-195963 INC 2024-191958 INC 2024-184292 INC 2024-153384 INC 2024-161812 INC 2024-153384 INC 2024-184156 INC 2024-187502 INC 2024-184997 INC 2024-181512 INC 2024-184208 INC 2024-184964 INC 2024-181687 INC 2024-174075 INC 2024-182179 INC 2024-209453 REQ 2024-206413 INC 2024-208554 INC 2024-242945 INC 2024-242137 INC 2024-246872 INC 2024-208554 INC 2024-211219 INC 2024-202944 INC 2024-202777 REQ 2024-218593 INC 2024-219212 INC 2024-219400 INC 2024-223699 INC 2024-223727 INC 2024-233188 INC 2024-232913 INC 2024-237026 INC 2024-238687 INC 2024-238048 INC 2024-237628 INC 2024-233219 REQ 2024-206413 INC 2024-209453 INC 2024-268940 INC 2024-265661 INC 2024-265452 INC 2024-261695 INC 2024-254295 INC 2024-232743 INC 2024-242937 INC 2024-248395 INC 2024-248201 INC 2024-246872 INC 2024-242137 INC 2024-242945 INC 2024-271526 INC 2024-274672 INC 2024-209453 INC 2024-299711 INC 2024-299179 INC 2024-298840 INC 2024-296952 INC 2024-296891 INC 2024-298042 INC 2024-288356 INC 2024-275991 INC 2024-282147 INC 2024-295270 INC 2024-294797 INC 2024-265567 INC 2024-286397 INC 2024-285930 INC 2024-284127 INC 2024-280304 INC 2024-295267 INC 2024-295315 INC 2024-289973 INC 2024-287505 INC 2024-289014 INC 2024-285957 INC 2024-283411 INC 2024-276734 INC 2024-280309 INC 2024-271834 INC 2024-272395 INC 2024-271834 INC 2024-312882 INC 2024-300757 REQ 2024-308514 INC 2024-305590
Categoría: Mantenimiento_cajas
CORTE_CAJA_10_Evento en sistema LDFarmax ORACLE - Difencia en Corte Edellinen