/db/ddlutils/oracle/procedures/DBA_Cleanup.sql

https://bitbucket.org/idempiere/idempiere/ · SQL · 89 lines · 22 code · 6 blank · 61 comment · 1 complexity · dbb432bfe4ef1f3741544fcb159d3791 MD5 · raw file

  1. CREATE OR REPLACE PROCEDURE DBA_Cleanup
  2. /*************************************************************************
  3. * The contents of this file are subject to the Adempiere License. You may
  4. * obtain a copy of the License at http://www.adempiere.org/license.html
  5. * Software is on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
  6. * express or implied. See the License for details. Code: Adempiere ERP+CRM
  7. * Copyright (C) 1999-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved.
  8. *************************************************************************
  9. * $Id: DBA_Cleanup.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $
  10. ***
  11. * Title: Cleanup old temporary data
  12. * Description:
  13. *
  14. * Author: Teo Sarca, www.arhipac.ro
  15. * * Autodetect temporary tables and delete rows that are older then 7 days
  16. ************************************************************************/
  17. AS
  18. BEGIN
  19. DBMS_OUTPUT.PUT_LINE('DBA_Cleanup');
  20. -- Clean up data
  21. /**
  22. -- C_Invoice_CheckPaid();
  23. UPDATE C_Payment_v
  24. SET IsAllocated=CASE WHEN paymentAllocated(C_Payment_ID, C_Currency_ID)=PayAmt THEN 'Y' ELSE 'N' END
  25. WHERE IsAllocated='N';
  26. UPDATE C_Invoice_v1
  27. SET IsPaid = CASE WHEN invoicePaid(C_Invoice_ID,C_Currency_ID,MultiplierAP)=GrandTotal THEN 'Y' ELSE 'N' END
  28. WHERE IsPaid='N';
  29. **/
  30. -- Temporary Tables
  31. FOR t IN (SELECT t.TableName FROM AD_Table t
  32. WHERE t.TableName like 'T!_%' ESCAPE '!'
  33. AND t.IsView='N'
  34. AND EXISTS (SELECT 1 FROM user_tables ut WHERE UPPER(ut.table_name)=UPPER(t.TableName))
  35. AND EXISTS (SELECT 1 FROM user_tab_cols uc WHERE UPPER(uc.table_name)=UPPER(t.TableName) AND uc.column_name='AD_PINSTANCE_ID')
  36. ORDER BY t.TableName)
  37. LOOP
  38. EXECUTE IMMEDIATE
  39. 'DELETE FROM '||t.TableName||' t'
  40. ||' WHERE EXISTS (SELECT 1 FROM AD_PInstance pi WHERE pi.AD_PInstance_ID=t.AD_PInstance_ID AND Created < SysDate-7)'
  41. ;
  42. IF (SQL%ROWCOUNT <> 0) THEN
  43. DBMS_OUTPUT.PUT_LINE(' '||t.TableName||'=' || SQL%ROWCOUNT);
  44. END IF;
  45. END LOOP;
  46. /** Search Info -- AD_Find not used in adempiere
  47. DELETE FROM AD_Find WHERE Created < SysDate-7;
  48. IF (SQL%ROWCOUNT <> 0) THEN
  49. DBMS_OUTPUT.PUT_LINE(' AD_Find=' || SQL%ROWCOUNT);
  50. END IF;
  51. */
  52. /** Processes older than a week -- audit data better configured using HouseKeeping
  53. DELETE FROM AD_PInstance WHERE Created < SysDate-7;
  54. IF (SQL%ROWCOUNT <> 0) THEN
  55. DBMS_OUTPUT.PUT_LINE(' Old AD_PInstance=' || SQL%ROWCOUNT);
  56. END IF;
  57. -- Change Log -- audit data better configured using HouseKeeping
  58. DELETE FROM AD_ChangeLog WHERE Created < SysDate-7;
  59. IF (SQL%ROWCOUNT <> 0) THEN
  60. DBMS_OUTPUT.PUT_LINE(' Old AD_ChangeLock=' || SQL%ROWCOUNT);
  61. END IF;
  62. -- Old Session (1 Week) -- audit data better configured using HouseKeeping
  63. DELETE FROM AD_Session WHERE Created < SysDate-7;
  64. IF (SQL%ROWCOUNT <> 0) THEN
  65. DBMS_OUTPUT.PUT_LINE(' Old AD_Session=' || SQL%ROWCOUNT);
  66. END IF;
  67. */
  68. /** Errors older than 1 week -- AD_Error not used in Adempiere
  69. DELETE FROM AD_Error WHERE Created < SysDate-7;
  70. IF (SQL%ROWCOUNT <> 0) THEN
  71. DBMS_OUTPUT.PUT_LINE(' Old AD_Error=' || SQL%ROWCOUNT);
  72. END IF;
  73. */
  74. /** Acknowledged Notes older than one week -- audit data better configured using HouseKeeping
  75. DELETE FROM AD_Note WHERE Processed='Y' AND Updated < SysDate-7;
  76. IF (SQL%ROWCOUNT <> 0) THEN
  77. DBMS_OUTPUT.PUT_LINE(' Processed AD_Note=' || SQL%ROWCOUNT);
  78. END IF;
  79. */
  80. --
  81. COMMIT;
  82. END DBA_Cleanup;
  83. /