IBM Maximo: Cleanup WOGEN table
WOGEN table data growing exponentially. Is very important to cleanup this table
Details here: WOGEN table data growing exponentially
Create an Automation Script
1) Navigate to the System Configuration > Platform Configuration > Automation Scripts application. 2) From the Select Action menu, choose the Create > Script option. 3) Populate the fields:
- Script: MAX_CLEANUP_WOGEN
- Description: Automation Script to cleanup WOGEN table
- Script Language: python
- Log Level: ERROR
- Source: <put source code below>
4) Click the Create button to create the new script
Create a Crontask
1) Navigate to the System Configuration > Platform Configuration > ron Task Setup application. 2) From the Common Actions menu, choose the Create > New Cron Task Definition option. 3) Populate the fields:
- Cron Task: MAX_CLEANUP_WOGEN
- Description: Maximo Maintanance Cleanup WOGEN table
- Class: com.ibm.tivoli.maximo.script.ScriptCrontask
Click the Save button
4) Click the New Row button under the Cron Task Instances table
5) Populate the fields:
- Cron Task Instance Name: MAX_CLEANUP_WOGEN01
- Description: Cron Task to cleanup WOGEN table
- Schedule: 1M,0,0,0,1,*,*,*,*,*
- Run as User: MAXADMIN
- Active: Yes
- Keep History: Yes
- Max Number of History Records: 100
Click the Save button
6) In Cron Task Parameters table at the bottom of the page. Populate
- SCRIPTARG: DAYS=5,NUMROWS=1000
- SCRIPTNAME: MAX_CLEANUP_WOGEN
Click the Save button
Automation Script - Source Code
# # MAX_CLEANUP_WOGEN Automation Script called from a Cron Task # this script cleanup WOGEN table # from java.lang import System from psdi.server import MXServer from psdi.util.logging import MXLoggerFactory mxserver = MXServer.getMXServer() logger = MXLoggerFactory.getLogger("maximo.maximodev") def string_to_dict(input_string): res_dict = {} pairs = input_string.split(',') for pair in pairs: key, value = pair.split('=') if value is not None: res_dict[key.lower()] = value return res_dict # Execute delete statement def execDelete(days, numrows): logger.debug("MAX_CLEANUP_WOGEN - execDelete - start") sql = 'delete from WOGEN where rundate < (sysdate-' + days + ') and rownum <= ' + numrows conKey = mxserver.getSystemUserInfo().getConnectionKey() con = mxserver.getDBManager().getConnection(conKey) try: stmt= con.createStatement() stmt.executeUpdate(sql) stmt.close() con.commit() except: print('MAX_CLEANUP_WOGEN - execDelete - exception') finally: mxserver.getDBManager().freeConnection(conKey) # ======================== main ======================== logger.info('MAX_CLEANUP_WOGEN start script -- running') print('MAX_CLEANUP_WOGEN start script -- running') # Get the variables from the cron task arguments days = '1' numrows = '100' if arg: arg_dict = string_to_dict(arg) if 'days' in arg_dict: days = arg_dict['days'] if 'numrows' in arg_dict: numrows = arg_dict['numrows'] print('MAX_CLEANUP_WOGEN days = ' + days + '; numrows = ' + numrows ) execDelete(days,numrows) logger.info('MAX_CLEANUP_WOGEN end script')