pub.monitor.archive:serviceArchive throwing"Error in archiving: com.wm.monitor.util.MonitorException

Hi All,

Could you please help me on below issue?

Am invoking the “pub.monitor.archive:serviceArchive” using flow service with following input parameters.

days -1
archiveAction- DELETE
status-COMPLETED-FAILED

When am invoking the service, am getting the follwoing exception:
Error in archiving: com.wm.monitor.util.MonitorException: OTHER EXCEPTIONS OCCURRED!-903ORA-00903: invalid table name

server log:

java.lang.Thread.run(Thread.java:662)
[590] at com.wm.util.pool.PooledThread.run(PooledThread.java:131)
[589] at com.wm.app.b2b.server.Dispatch.run(Dispatch.java:366)
[588] at com.wm.app.b2b.server.HTTPDispatch.handleRequest(HTTPDispatch.java:186)
[587] at com.wm.app.b2b.server.HTTPMessageHandler.process(HTTPMessageHandler.java:160)
[586] at com.wm.app.b2b.server.comm.DefaultServerRequestHandler.handleMessage(DefaultServerRequestHandler.java:119)
[585] at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:234)
[584] at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:386)
[583] at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:547)
[582] at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:363)
[581] at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:30)
[580] at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:276)
[579] at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
[578] at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:51)
[577] at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
[576] at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:44)
[575] at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:41)
[574] at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:643)
[573] at com.wm.app.b2b.server.FlowSvcImpl.baseInvoke(FlowSvcImpl.java:1063)
[572] at com.wm.lang.flow.FlowState.invoke(FlowState.java:409)
[571] at com.wm.lang.flow.FlowState.step(FlowState.java:444)
[570] at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:584)
[569] at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:324)
[568] at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:194)
[567] at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:234)
[566] at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:386)
[565] at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:547)
[564] at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:363)
[563] at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:30)
[562] at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:276)
[561] at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
[560] at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:51)
[559] at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
[558] at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:44)
[557] at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:41)
[556] at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:643)
[555] at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:443)
[554] at java.lang.reflect.Method.invoke(Method.java:597)
[553] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[552] at sun.reflect.GeneratedMethodAccessor340.invoke(Unknown Source)
[551] at pub.monitor.archive.serviceArchive(archive.java:147)
[550] at com.wm.monitor.app.Archive.serviceArchive(Archive.java:460)
[549]2013-09-25 05:34:35 GMT [MOD.0120.0000I] com.wm.monitor.util.MonitorException: OTHER EXCEPTIONS OCCURRED!-903ORA-00903: invalid table name
[548]

Before running this service did you set up Archiving tables in the back end? as you need to configure first archiving before you run any of the archive services…please check with your wM Admin/DBA about the set up etc…

Also review the documentation pertaining to the archiving service.

HTH,
RMG

1 Like

Thanks a lot for your reply:)

My requirement is to delete audit logs older than one day. Also, this task should be scheduled(May be daily basis).

Is there any approach to do this activity without setting up the archive tables? Please advise. Thanks for your help:)

Hi Prasath,

you will require the archive tables for deleting the audit logs.
These tables are used for preparing the entries to be deleted.

Dependent on your wM Version these tables should be placed in a different db schema than the live data.

See Monitoring Guide for details.

The archiving service can be scheduled but you might need to implement a wrapper for these as it is not possible in all wM versions to assign Input values to scheduled services. Recent versions of the wM 9.x stream allow assigning Input values to scheduled services.

Regards,
Holger

You can also schedule the archive stored procedures, which get installed when you create the Archive schema, directly on the database. This is my preferred approach.

Percio

At present we are having oracle jobs in the DB which takes care of this task.

@Percio, can you please eloborate about your statement.

Thanks,

Sure. When you install the Archive database component using the Database Configurator, it creates a schema/database, and inside that schema/database it creates some stored procedures. E.g.: PROCESS_ARCHIVE_START_PROCESSARCHIVE, SERVER_ARCHIVE_START_SERVERARCHIVE, SERVICE_ARCHIVE_START_SERVICEARCHIVE, etc.

When you call the archive services inside the WmMonitor package, those services are simply calling these stored procedures behind the scenes (assuming you didn’t check the box “Enable JDBC Archive (Disable Stored Procedure Archive)” in the WmMonitor home page). Therefore, instead of scheduling these services to run on the IS, you can simply schedule these stored procedures to run directly on the database. In SQL Server, for example, you can do it via the SQL Server Agent, and in Oracle, you can do it via the Oracle Scheduler, if I’m not mistaken.

The advantages of doing this are:

  • No IS resources are consumed (CPU, threads, memory, etc)
  • Reduced network chatter
  • It delegates data archival to database administrators instead of webMethods admins/developers
  • Archival happens whether the IS is up or not

Hope this helps,
Percio