Measure optimal values of background processes (RMON,PMON,RECO)?
Hi buddy's,
I am facing issue to determin optimal values of oracle EBS R12 background processes like (RMON,PMON,SMON,RECO)?
I want to determine and find it's maximum optimal values of each process with step by step guide because i am new in oracle.
My purpose is that if i found the optimal values of all background process then while during tuning it is clear for me to what i want to achieve.
Kindly help me and clarify this scenario how is it possible ?
Best Regards,
Waqar Arif
Hi,
You should learn some concepts first because you seem very very very new. RMON,PMON,SMON,RECO are background processes of Oracle database and there isn't anything called "value" associated with them. you can't control them or set any value for them. These are background processed which will rung when your instance will start.
See bellow for some concepts
http://docs.oracle.com/cd/B28359_01/server.111/b28318/memory.htm
Salman
Edited by: Salman Qureshi on Apr 10, 2013 2:45 PM
Similar Messages
-
Dear All :
In Linux/Unix OS , we can check Oracle background process with command
ps -ef | grep ora
,but how to check on Windows OS ? Can anyone show me how to do that...
thanks alot ~
with regardsset line 400
select
A.SID,
A.SERIAL#,
A.PROGRAM,
P.PID,
P.SPID,
A.OSUSER, /* Who Started INSTANCE */
A.TERMINAL,
A.MACHINE,
A.LOGON_TIME,
B.NAME,
B.Description
,P.PGA_USED_MEM
,P.PGA_FREEABLE_MEM
,P.PGA_MAX_MEM
from
v$session A,
v$process P,
v$bgprocess B
where
A.PADDR=B.PADDR
AND A.PADDR=P.ADDR
--and A.type='BACKGROUND'
--Alternative (you can use BACKGROUND column from v$process )
AND P.BACKGROUND=1
HTH
Girish Sharma -
Regarding the Mandatory BackGround Processes
Hi,
I wanna to know the information abt the BackGround processes like(PMON,SMON,CKPT,LGWR,DBWR).Can u pls explain abt all these processes and can i able to visualise these processes practically?
Regards,
sudhirTo fully outline these processes and what they do, would take a book. In fact, books have been written on the subject.
Go to http://tahiti.oracle.com/ and start with the Concepts manual.
-Mark -
Optimal value of processes parameter in AMS instance
Hi
If we have several database instances on single server which are accessing ASM instance. How can we calculate optimal value of PROCESSES parameter for ASM instance
Here, I would like to mention that we are using Goldengate also for replication and for this our ARCHIVE DG is on ASM
Rgds
HarvindrI have seen systems with multiple database instances (4-6) and running very well with just the defaults. That being said, follow the recommendations. GG, IIRC, talks to the database which does all of the reads/writes for GG. Therefore, 50+50*n RDBMS INSTANCES.
http://docs.oracle.com/cd/E11882_01/server.112/e10803/config_gg.htm
"Oracle GoldenGate 11g introduces a new optimized method of reading log files stored in Oracle ASM. *This new method uses the database server to access the redo and archived redo log files, instead of connecting directly to the Oracle ASM instance*. The database must contain the libraries with the API modules. The libraries are currently included with Oracle Database release 10.2.0.5 and 11.2.0.2. For information for accessing the API modules for other releases, see "Optimized Access for Oracle GoldenGate to Redo Log Files in ASM - for Oracle Database Releases other than 10.2.0.5 and 11.2.0.2" in My Oracle Support Note 1333171.1 at https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=1333171.1 " -
Reducing Windows Background Processes
I'm in charge of my company's data acquisition system and we've finally got everything running about how we want it to. The last issue we're having is that whenever the screen updates the program slows down measureably. I've got the program running in a loop that collects data, processes data, waits for user input, sends out commands to other hardware, and then repeats. The program is configured to only display one data point (64 channels, plus 5 on a chart and three other numeric gauge indicators) of every 100 collected. The effect this has is that while the program is not displaying data the loop executes in about 2-3ms, but that time jumps to ~60ms when it has to update the front panel.
My question is: how can improve the performance of my code on a windows XP system?
Is there some kind of indicator that I should use over another kind?
Does anyone have a guide on how to disable windows background processes (the computer the DAQ system is on isn't running much, but I'm not a very advanced user in that area)?
Any other general tips and tricks for this kind of problem?
I know the best solution would be to move to a real time operating system, but that just isn't an option right now. Any suggestions on how to improve performance on the system I've got would be appreciated.Some clarifications, as requested. We're acquiring 32 analog channels and 32 thermocouple channels. The gauges and chart indicators are just a way of displaying a subset of the data in a more obvious form. All channels are also displayed in numeric indicators. The program is set up to run a loop with the following DAQ scheme: calculate a timestamp (relative to the start of the program), acquire a single scan of the analog channels, acquire a single scan of the thermocouple channels, and then do other data processing tasks. There's no set data rate, we're trying to acquire the data as fast as the program will allow, so the 2-3ms loop times is what we see in the output data file. One data point will occur at time 0.003, and then next would get the timestamp 0.006.
Every time the screen is updated, in the post-processing part, the time to execute the whole loop increases dramatically. In the data file we'd see a point recorded at time 0.006, and then the next one would be at time 0.066 (something to that effect). Since screen updating seems to be the cause of the slowdown I'm interested in what I can do to get that part to run as fast as possible.
We're running LabVIEW 7.1, and to get the screen to only update occasionally I have it set to keep a counter going that is incremented each time through the loop. If the counter gets to the value of 100, then in post-processing the current batch of data is sent to the front panel indicators and the counter is reset to 0. For all other counter values the data just goes into the output file and the screen indicators are left alone. -
Submit Report (Regarding Background Processing)
Hi Guru's,
I want help regarding Background Processing.
I have developed a program which is running fine in forground but in Background mode no values are comming.
All values are becomig Zero.
Plz help.
*--- Submit Report for 'COGI' (Postprocessing of Error Records from Automatic Goods Movements)
SUBMIT coruaffw USING SELECTION-SCREEN '1000'
WITH r_cumul = 'X'
EXPORTING LIST TO MEMORY
AND RETURN.
*---- Get the List
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = it_list_tab
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
*--- Convert to Ascii
CALL FUNCTION 'LIST_TO_ASCI'
TABLES
listobject = it_list_tab
listasci = it_asci_tab
EXCEPTIONS
empty_list = 1
list_index_invalid = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE i000 WITH 'Problem in converting LIST to ASCII'.
ENDIF.
DESCRIBE TABLE it_asci_tab LINES w_cogi.
w_cogi = w_cogi - 5.
CALL FUNCTION 'LIST_FREE_MEMORY'
TABLES
listobject = it_list_tab.Hi Arbind,
You have used return you need to add the addition with.Try this way hope it works
SUBMIT zreport EXPORTING LIST TO MEMORY
AND RETURN
WITH P_1 = P_1
WITH P_2 = P_2
WITH P_3 = P_3
WITH S_4 IN S_4
WITH S_5 IN S_5
WITH S_6 IN S_6. -
ABAP trail 7.00 timeouts and background process
Does anyone knows if it's possible to change the number of dialog and background processes?
And the transaction to change the timeouts of such processes?
Thank youyou can change the timeout in rz11.Parameter-name is rdisp/max_wprun_time. Backgound processes habe no timeout, so this value is only valid for dia-processes
To change the number, you have to adjust your instance profile. In the forum 'Netweaver Administrator' should be some information about that. So just the short hint: you can adjust the profiles in RZ10, but have to do some steps for that. Just search in NW-Admin-forum above.
Regards,
ulf -
Background Processing, Selection Screens and Variants
Hi All,
I am having a little trouble Background Processing with Selection Screens and Variants.
When a user runs my report and selects the option of background processing, then they select a checkbox. Once this is checked, they should go and fill in details, press Execute and voila a background process is created. However what is happening is that when i execute it then it asks for a variant. I do not want this to happen. I want the values in the selection screens to be used as default. Here is my code for background processing
FORM START_BACKGROUND_PROCESSING.
CALL FUNCTION 'BP_JOBVARIANT_SCHEDULE'
EXPORTING
TITLE_NAME = 'End Customer Report '
JOB_NAME = 'customer_report'
PROG_NAME = 'ZSE_SD_SALES'
EXCEPTIONS
NO_SUCH_PROGRAM = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "START_BACKGROUND_PROCESSING
After the background process is started, all teh data is collated then written to the app server. this is the order
ELSEIF R2 EQ 'X' AND SY-BATCH EQ 'X'.
PERFORM INITIALIZE_DATA.
PERFORM SELECT_DATA.
PERFORM PROCESS_DATA.
PERFORM GET_END_CUSTOMER_DATA.
PERFORM WRITE_TO_APP_SERVER.
Any ideas? Points given to those who are helpfuldone myeslf
-
Post Author: thecoffeemachine
CA Forum: .NET
I already posted this message in other Web sites, but I am almost getting crazy here and I need help:
HI:
The Web application I am testing was having several issues related to loading Crystal Reports. It was fixed and I do not know which of the 1000 things I did to fix it; but now it began, again, to have the same behavior after I had a conflict with another Web site that was in the same server.
The thing is that I had another virtual directory where resided a copy of the same Web app. for testing purposes/working with the Visual Studio. The reports were loading all fine, very fast, all perfect... And suddenly the assemblies of one Web site and the other began to "blend" together and..... well the same behaviors appeared again. I tried to copy the last stable backup and rebuild the Web app... but it did not work.
At the very first time that one requests the report, it shows without problem. At the second time it shows an error message related to "cannot submit to background processing", and sometimes "object not set to an instance.." ... and on the third time it just never shows up and the app. becomes unresponsive. I have to close the window and request the Web site again in another browser window. If I wish to see the report again I have to wait for hours until it shows it.
I am using Visual Studio 2003 and the Crystal Report version that was shipped with that Visual Studio version. I am working with Windows Server 2003 and SQL Server 2000. Below is the VB code:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.SqlConnection1.Open()
Me.SqlSelectCommand1.Parameters("@CourseCode").Value = Request.QueryString("CD") Me.SqlSelectCommandReferences.Parameters("@CourseCode").Value = Request.QueryString("CD") Me.SqlSelectCommandTextbook.Parameters("@CourseCode").Value = Request.QueryString("CD") Me.SqlSelectCommandObjectives.Parameters("@CourseCode").Value = Request.QueryString("CD") Me.SqlSelectCommandTopicData.Parameters("@CourseCode").Value = Request.QueryString("CD") Me.SqlSelectCommandCourseOutcomes.Parameters("@CourseCode").Value = Request.QueryString("CD")
Me.SqlDataAdapterMainData.Fill(Me.DtsSyllabusCompleteData1, "procWebSelectCourseSyllabusData") Me.SqlDataAdapterReferences.Fill(Me.DtsSyllabusCompleteData1, "procWebSelectCourseReferenceData") Me.SqlDataAdapterTextBook.Fill(Me.DtsSyllabusCompleteData1, "procWebSelectCourseTextbookData") Me.SqlDataAdapterObjectives.Fill(Me.DtsSyllabusCompleteData1, "procWebSelectCourseObjectivesData") Me.SqlDataAdapterTopicData.Fill(Me.DtsSyllabusCompleteData1, "procWebSelectCourseTopicData")
Me.SqlDataAdapterCourseOutcomes.Fill(Me.DtsSyllabusCompleteData1, "procWebSelectCourseOutcomes")
Dim myExportOptions As CrystalDecisions.Shared.ExportOptions Dim myDiskFileOptions As CrystalDecisions.Shared.DiskFileDestinationOptions Dim myExportFile As String Dim myReport As New ABETFormat myReport.SetDataSource(Me.DtsSyllabusCompleteData1)
myExportFile = "C:UNTempPDF" & Session.SessionID.ToString & ".pdf" myDiskFileOptions = New CrystalDecisions.Shared.DiskFileDestinationOptions myDiskFileOptions.DiskFileName = myExportFile myExportOptions = myReport.ExportOptions
With myExportOptions .DestinationOptions = myDiskFileOptions .ExportDestinationType = .ExportDestinationType.DiskFile .ExportFormatType = .ExportFormatType.PortableDocFormat End With
myReport.Export()
Response.ClearContent() Response.ClearHeaders() Response.ContentType = "application/pdf"
Response.WriteFile(myExportFile) Response.Flush() Response.Close() System.IO.File.Delete(myExportFile) Me.SqlConnection1.Close()
End Sub
I already have tried moving the Crystal Reports dll´s to the bin directory. ..... I have tried calling the Garbage Collector at page unload...I also have checked, inside the report, that the database is "up to date"... ... recycling the worker process of the IIS... etc...
I see that, in debbuging mode inside the Visual Studio, when the page loads the debbuging window shows a message notifying that the symbols related to the Crystal Reports dll's could not be loaded.
Should I need to modify the default properties of the database? I checked "database is case insensitive", "use indexes or server for speed".. I have tried checking and unchecking the box "performing grouping on server"
Oh by the way, my report has about 4 subreports in it. Each report loaded shows 1 or 2 pages.
ANY HELP WILL BE EXTREMELY APPRECIATED....
MMSSee [Crystal Reports For Visual Studio 2005 Walkthroughs|https://www.sdn.sap.com/irj/boc/index?rid=/library/uuid/2081b4d9-6864-2b10-f49d-918baefc7a23&overridelayout=true] article, page 107 and on for details on how to use Crystal reports in session.
Ludek -
Measuring the value of "session_cached_cursors" and "open_cursor"
Friends ,
Recently In my Database production server Oracle10g (version : 10.2.0.1.0.), I got the "open_cursor" and "session_cached_cursors" related error where OEM asks to increase the value . I have increase the value but the problem still is not solved .
Can anybody plz tell me , how can I measure the Standard value of "open_cursor" and also "session_cached_cursors" of my database server ?
Another question ,
SQL> show parameter open_
NAME TYPE VALUE
open_cursors integer 500
In above output , what is the unit of 500 value . Is this value related with the SGA memory area ?shipon_97 wrote:
Thanks all for reply ..
I have another query ...
How can I find the standarnd value of "open_cursor" as well as "session_cached_cursors" parameter value in the respect of my oracle database server . And what are the recommended value of these parameters . I am using oracle database 10g (v-10.2.0.1.0 ) .Shipon,
You can see the values of the parameters in your db with the simple show parameter command,
>
show parameter open_cursors
show parameter session_cached_cursors>
About the settings of the parameters and their optimal value, I guess there wont' be any "concrete" answer to that. Session cached cursors is set to 50 default in Oracle which means 50 cursors can be marked as 'hot cursors' for the the system and will be avoided from the library cache lookup. This also has a condition that the cursor will be marked as hot only when its run for 3 times. So you need to check back with your system that how many queries are actually requiring this optimization. And more over, this is used or said to be used when you are seeing a Library Cache Latch contention. I don't think that just for the sake of change, you need to modify the parameter from default.
The smae is true for the OPEN_CURSORS as well. The value is required to be changed if you are seeing an error about maximum opened cursor exceeding from the set value. Generally , a value of 2000 is enough for most of the systems but again, that may depend on site to site and surely enough , you need to check yours befoe playing around.
HTH
Aman.... -
Background processing - unable to access the file
Hi Gurus!
01/09/2009 00:00:06 Job started
01/09/2009 00:00:06 Step 001 started (program ZWELL_UPLOAD, variant 20080107WMI-1, user ID STIWARI)
01/09/2009 00:00:06 File P:\SAP\ERP\ZWELL\wmigdc\wmi_dls_extract_20090107_3 does not exist or cannot be opened
01/09/2009 00:00:06 Step 002 started (program ZWELL_UPLOAD, variant 20080107WMI-2, user ID STIWARI)
01/09/2009 00:00:06 File P:\SAP\ERP\ZWELL\wmigdc\wmi_dls_extract_20090107_2 does not exist or cannot be opened
01/09/2009 00:00:06 Step 003 started (program ZWELL_UPLOAD, variant 20080107WMI-3, user ID STIWARI)
01/09/2009 00:00:07 File P:\SAP\ERP\ZWELL\wmigdc\wmi_dls_extract_20090107_3 does not exist or cannot be opened
01/09/2009 00:00:07 Job finished
Can I get some help as to why is it not able to loacte the file when run through background processing when its able to read and excute when I directly run the program. Is theer any settings that I need to set up in the ABAP program itself which will enable to make it happen or else what to do so that I can set a background job to happen successfully.
ThanksI have assigned thhose correctly I believe.
* Selection-Screen *
selection-screen begin of block 1 with frame title text-001.
parameters: p_bukrs type t001-bukrs default '1000', " company code
p_zss type zsds_uwi-zss, " Survey system
p_pathps like rlgrap-filename modif id g1 , " Presentation server path
p_pathas like rlgrap-filename modif id g2 , " Application server path
* p_pbkas LIKE rlgrap-filename MODIF ID g2 , " Backup path
p_err like rlgrap-filename , " error file as SAP table format
p_err2 LIKE rlgrap-filename, " error file as input format
p_ps like ssfparms-binccerts radiobutton group ssff " Presentation server
default 'X' user-command shift,
p_as like ssfparms-binccerts radiobutton group ssff." Application server
selection-screen end of block 1.
* Includes *
include zwellupd0001. "Top Include
include zwellupd0002. "Form Include
* Initialization.
initialization.
*--- Assign default '1' to survey system
p_zss = v_zss = 1.
* At Selection-Screen *
at selection-screen output.
perform modify_screen.
*-Presentation
at selection-screen on value-request for p_pathps.
call function 'KD_GET_FILENAME_ON_F4'
exporting
static = c_x
changing
file_name = p_pathps.
*-Application
at selection-screen on value-request for p_pathas.
*- Assign the Physical File Name Using a Logical File Name
call function 'FILE_GET_NAME'
exporting
client = sy-mandt
logical_filename = c_asin
operating_system = sy-opsys
importing
file_name = p_pathas
exceptions
file_not_found = 1
others = 2.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
at selection-screen on value-request for p_err.
call function 'KD_GET_FILENAME_ON_F4'
exporting
static = c_x
changing
file_name = p_err.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_err2.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
static = c_x
CHANGING
file_name = p_err2.
* Start-Of-Selection *
start-of-selection.
*---Modify the screen variables as per the user selection
perform initialize.
*--- Upload file from Presentation
* PERFORM upload_ps .
**--- Upload file from Application
* PERFORM upload_as .
perform upload_file.
perform write_err_file.
* perform write_err2_file.
perform write_report.
* End-Of-Selection *
end-of-selection.
*& Form modify_screen
* Modify the screen variables as per the user selection
form modify_screen .
if p_ps = 'X'.
loop at screen.
check screen-group1 = c_g2.
screen-active = 0.
modify screen.
endloop.
else.
loop at screen.
check screen-group1 = c_g1.
screen-active = 0.
modify screen.
endloop.
endif.
endform. " modify_screen
*& Form initialize
* Assign Local Variables
form initialize .
*-Pass selection screen fields to local variables.
v_zss = p_zss.
v_pathas = p_pathas.
v_pathps = p_pathps.
* v_pathbkas = p_pbkas.
v_ps = p_ps.
v_as = p_as.
v_bukrs = p_bukrs.
endform. " initialize
*& Form write_report
* text
* --> p1 text
* <-- p2 text
form write_report .
if v_zss = 1.
write: / '*** Update report for DLS ***'.
else.
write: / '*** Update report for NTS ***'.
endif.
write:
/ 'Input File Count', g_inp_count,
/ 'Insert Count', g_insert_count,
/ 'Updated Count', g_upd_count,
/ 'Failed Count', g_err_count.
endform. " write_report
*& Form write_err_file
* text
* --> p1 text
* <-- p2 text
form write_err_file .
case p_as.
when 'X'. "X is application server
* TRANSLATE FILENAME USING '\/'." correct slash for unix
open dataset p_err for output in text mode encoding default.
if sy-subrc = 0.
loop at t_err into s_welldls.
transfer s_welldls to p_err.
if sy-subrc ne 0.
message i010(ad) with p_err 'Download Failed'.
endif.
endloop.
close dataset p_err.
else.
message i010(ad) with p_err 'dataset could not be found'.
sy-subrc = -1. "Maintain error condition
endif.
when ' '. "Blank is presenation server
translate p_err using '/\'."correct slash Dos file
call function 'DOWNLOAD'
exporting
filename = p_err
filetype = 'DAT' "FTYPE set to ASC in DATA seg
tables
data_tab = t_err.
if sy-subrc ne 0.
message i010(ad) with 'File ' p_err 'cannot be located.'.
sy-subrc = -1. "Maintain error condition
exit.
endif.
endcase.
endform. " write_err_file
even the constants:
*-Declare survey system as constants
CONSTANTS: c_dls TYPE zsds_uwi-zss VALUE '1',
c_nts TYPE zsds_uwi-zss VALUE '2',
c_x TYPE c VALUE 'X'.
*-Logical File Path maintained in Txn FILE
CONSTANTS:
c_asin TYPE filename-fileintern VALUE 'Z_INTERFACES_IN_WELL_MASTER',
c_asout TYPE filename-fileintern VALUE 'Z_INTERFACES_OUT_WELL_MASTER'.
*-Screen Grouping
CONSTANTS:
c_g1 TYPE screen-group1 VALUE 'G1',
c_g2 TYPE screen-group1 VALUE 'G2'.
DATA: v_folder TYPE string.
DATA: v_filestr TYPE string.
DATA: v_datalen TYPE i.
DATA v_rec(1000).
Thanks -
AQ Callbacks - Blocking background processes and best practices.
We are running several queues within our company and one of them uses pl/sql callback functionnality.
Basically, several triggers can enqueue a message when underlying tables are updated. The goal of the callback is to "treat" those messages, which means dequeuing the messages and passing them to some procedure (determined through a confguration table and the type of message). I don't know if i'm clear enough on this but it is as important.
In general the mechanism works perfectly but we noticed in one of our databases that, after a relatively big amount of messages enqueuing (~ 500-1000 in one trasanction), there are numerous background processes blocked on system table SYS.AQ_SRVNTFN_TABLEI. In fact, the queue starts growing and messages are not dequeued anymore by the callback, that doesn't seem to be executed anymore at all.
We actually were also unable to re-compile the package that holds the callback procedure nor removing/adding the reference of the subscriber to the queue with DBMS_AQ. It would hang there forever...
We are running Oracle Database 10g Enterprise Edition Release *10.2.0.4.0* and the value of AQ_TM_PROCESSES = 0.
I don't necesseraly have a complete and clear view of how the queue mechanism works behind the scenes so forgive for some foolish things I could say :-)
Diagnosis:
After some research, it seems the backgrounds processes are blocked on the system table SYS.AQ_SRVNTFN_TABLE on some index for MSGID.
If I understand correctly how the system works, the callback gets executed for a specific MSGID as we use it in the callback procedure to dequeue this message.
I've also discovered that the default value for the WAIT dequeue option is FOREVER...
So my idea was that, for some reason, the callback tries to dequeue a message that does not exist in the queue and... waits forever for the message to "appear".
This at first seemed pretty unlikely to me: why would the callback be executed if no message with provided MSGID exists... then you start doubting :-)
Attempt to resolve:
We've decided to alter the WAIT option to not let the dequeue in the callback wait forever.
We have made some tests (outside the callback) with NO_WAIT and also with a wait of a few seconds. Both solution prooved right so we added a wait of 60s in the callback and added some tracing.
Since then, no more background processes seems to hang there and we are able to alter the callback procedure normally. But with the added tracing, we noticed an unexplained behavior with the execution of the callback:
- callback runs
- ORA-25263: no message in queue QUEUE_OWNER.MULTISRC_NOTIFQ with message ID B4FFD1115523A46EE040007F0100304F
- callback runs again and message is dequeued and treated correctly
The first oracle error happens fast, not after 60s as the WAIT option specifies.
Questions:
<li>Is the way the callback method is implemented correct (see code below) ?</li>
<li>Do we need to commit in the callback method ? What implies committing or not ?</li>
<li>How wouold you explain the behavior of the callback after setting the dequeue WAIT to 60s and why it does not actually wait for 60s ?</li>
<>
<>
<>
<>
The configuration of the queue and the callback is as follow:
- the type of the payload is SYS.ANYDATA
- an extra index is create on CORRID column
begin
-- create queue table
begin
DBMS_AQADM.CREATE_QUEUE_TABLE(QUEUE_TABLE => 'QUEUE_OWNER.MULTISRC_NOTIFTAB'
,QUEUE_PAYLOAD_TYPE => 'SYS.ANYDATA'
,MULTIPLE_CONSUMERS => true);
end;
-- create and start queue
begin DBMS_AQADM.CREATE_QUEUE(QUEUE_NAME => 'QUEUE_OWNER.MULTISRC_NOTIFQ', QUEUE_TABLE => 'QUEUE_OWNER.MULTISRC_NOTIFTAB'); end;
begin DBMS_AQADM.START_QUEUE(QUEUE_NAME => 'QUEUE_OWNER.MULTISRC_NOTIFQ'); end;
-- grant access to the queue to PDO
-- add a subscriber to the queue and register the plsql to execute
begin
DBMS_AQADM.ADD_SUBSCRIBER(QUEUE_NAME => 'QUEUE_OWNER.MULTISRC_NOTIFQ'
,SUBSCRIBER => SYS.AQ$_AGENT('MULTISRC_NOTIFSUBSCR', null, null));
DBMS_AQ.REGISTER(SYS.AQ$_REG_INFO_LIST(SYS.AQ$_REG_INFO('QUEUE_OWNER.MULTISRC_NOTIFQ:MULTISRC_NOTIFSUBSCR'
,DBMS_AQ.NAMESPACE_AQ
,'plsql://PDO.PO_NOTIFY.MULTISRC_NOTIF_SUBSCRIBER?PR=0'
,HEXTORAW('FF')))
,1);
end;
end;
create index queue_owner.multisrcq_corrid on queue_owner.multisrc_notiftab (CORRID)
The callback procedure is as follow:
procedure MULTISRC_NOTIF_SUBSCRIBER(context raw,
REGINFO SYS.AQ$_REG_INFO,
DESCR SYS.AQ$_DESCRIPTOR,
PAYLOAD raw,
PAYLOADL number) is
L_METHOD constant varchar2(50) := 'MULTISRC_NOTIF_SUBSCRIBER';
R_DEQUEUE_OPTIONS DBMS_AQ.DEQUEUE_OPTIONS_T;
R_MESSAGE_PROPERTIES DBMS_AQ.MESSAGE_PROPERTIES_T;
V_MESSAGE_HANDLE raw(16);
O_PAYLOAD ANYDATA;
cursor C_TREATMENTS(P_ENTITY in varchar2) is
select T.MNOT_PROCEDURE_C
from TA_GEN.MULTISRC_NOTIF_TREATMENTS T
where T.MNOT_ENTITY_C = P_ENTITY
and T.MNOT_BEGIN_D < sysdate
and ((T.MNOT_END_D > sysdate and T.MNOT_END_D is not null) or
(T.MNOT_END_D is null))
order by T.MNOT_PRIORITY_N asc;
WK_CORRID varchar2(128);
WK_ENTITY TA_GEN.MULTISRC_NOTIF_TREATMENTS.MNOT_ENTITY_C%type;
WK_PROCEDURE TA_GEN.MULTISRC_NOTIF_TREATMENTS.MNOT_PROCEDURE_C%type;
CT_EXEC number(2) := 0;
begin
-- DGH: 15.12.11 / added a wait of 60 seconds for dequeue to avoid infinite waiting (default is FOREVER)
R_DEQUEUE_OPTIONS.WAIT := 60;
-- dequeue message
R_DEQUEUE_OPTIONS.MSGID := DESCR.MSG_ID;
R_DEQUEUE_OPTIONS.CONSUMER_NAME := DESCR.CONSUMER_NAME;
DBMS_AQ.DEQUEUE(QUEUE_NAME => DESCR.QUEUE_NAME,
DEQUEUE_OPTIONS => R_DEQUEUE_OPTIONS,
MESSAGE_PROPERTIES => R_MESSAGE_PROPERTIES,
PAYLOAD => O_PAYLOAD,
MSGID => V_MESSAGE_HANDLE);
-- extract entity name
WK_CORRID := R_MESSAGE_PROPERTIES.CORRELATION;
WK_ENTITY := SUBSTR(WK_CORRID,
INSTR(WK_CORRID, '##') + 2,
(INSTR(WK_CORRID, '##', 1, 2) -
INSTR(WK_CORRID, '##')) - 2);
-- execute treatment(s)
open C_TREATMENTS(WK_ENTITY);
loop
fetch C_TREATMENTS
into WK_PROCEDURE;
exit when C_TREATMENTS%notfound;
execute immediate 'begin ' || WK_PROCEDURE || '(:MSG); end;'
using O_PAYLOAD;
CT_EXEC := CT_EXEC + 1;
end loop;
close C_TREATMENTS;
exception
when others then
if C_TREATMENTS%isopen then close C_TREATMENTS; end if;
PO_NOTIFY.TRACE_MULTISRC_NOTIF(L_METHOD,
sqlerrm,
DESCR.MSG_ID,
R_MESSAGE_PROPERTIES.CORRELATION,
WK_ENTITY,
WK_PROCEDURE);
rollback;
end MULTISRC_NOTIF_SUBSCRIBER;Helping you with the specific issue is going to be difficult without direct access to the servers but given the importance this system seems to have to your business why are you not running on a fully supported version (10.2 has been in extended support for more than 6 months) and even in the current configuration not patched to 10.2.0.5?
My instinct would be to focus on moving to 11.2.0.3 as quickly as possible with a corresponding change to a current operating system version if your O/S is similarly out of date. -
Background processing of Program
Hi all,
I have a requirement of background processing of a program which is called from another program.
Requirement : during execution of Program A, Program B is Submitted to run in background with two field values from Program A.
Is it possible ? I am able to explore it. Please help.
Regards,
NibhaDATA: number TYPE tbtcjob-jobcount,
name TYPE tbtcjob-jobname VALUE 'JOB_TEST',
print_parameters TYPE pri_params.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = name
IMPORTING
jobcount = number
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc = 0.
SUBMIT submitable TO SAP-SPOOL
SPOOL PARAMETERS print_parameters
WITHOUT SPOOL DYNPRO
VIA JOB name NUMBER number
AND RETURN.
IF sy-subrc = 0.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = number
jobname = name
strtimmed = 'X'
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
OTHERS = 8.
IF sy-subrc <> 0.
ENDIF.
ENDIF.
ENDIF.
System fields
sy-subrc Meaning
0 Background task scheduled successfully.
4 Scheduling cancelled by user on the selection screen.
8 Error during scheduling, i.e. when accessing JOB_SUBMIT internally.
12 Error in internal number assignment. -
I want to covert the BDC to background process
Hi,
I want to change the BDC program to Background processing . I am posting the code below, can you change it.
FUNCTION YFIIN_CRC_SET_FLG1.
""Local Interface:
*" IMPORTING
*" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
*" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
*" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
*" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
*" VALUE(USER) LIKE APQI-USERID OPTIONAL
*" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
*" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
*" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
*" VALUE(QMNUM_001) LIKE VIQMEL-QMNUM
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
subrc = 0.
perform bdc_nodata using NODATA.
perform open_group using GROUP USER KEEP HOLDDATE CTU.
perform bdc_dynpro using 'SAPLIQS0' '0200'.
perform bdc_field using 'BDC_CURSOR'
'RIWO00-QMNUM'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RIWO00-QMNUM'
QMNUM_001.
perform bdc_dynpro using 'SAPLIQS0' '7200'.
perform bdc_field using 'BDC_OKCODE'
'=GNOK'.
perform bdc_field using 'BDC_CURSOR'
'VIQMEL-QMNUM'.
perform bdc_dynpro using 'SAPLIQS0' '7200'.
perform bdc_field using 'BDC_OKCODE'
'=BUCH'.
perform bdc_field using 'BDC_CURSOR'
'VIQMEL-QMNUM'.
perform bdc_transaction tables messtab
using 'IQS2'
CTU
MODE
UPDATE.
if sy-subrc <> 0.
subrc = sy-subrc.
exit.
endif.
perform close_group using CTU.
ENDFUNCTION.
==================================
***INCLUDE BDCRECXY
Batchinputdata of single transaction
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
Nodata-Character
DATA: NODATA_CHARACTER VALUE '/'.
create batchinput session *
FORM OPEN_GROUP
USING P_GROUP LIKE APQI-GROUPID
P_USER LIKE APQI-USERID
P_KEEP LIKE APQI-QERASE
P_HOLDDATE LIKE APQI-STARTDATE
P_CTU LIKE APQI-PUTACTIVE.
IF P_CTU <> 'X'.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING CLIENT = SY-MANDT
GROUP = P_GROUP
USER = P_USER
KEEP = P_KEEP
HOLDDATE = P_HOLDDATE.
ENDIF.
ENDFORM.
end batchinput session *
FORM CLOSE_GROUP USING P_CTU LIKE APQI-PUTACTIVE.
IF P_CTU <> 'X'.
close batchinput group
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDIF.
ENDFORM.
Start new transaction according to parameters *
FORM BDC_TRANSACTION TABLES P_MESSTAB
USING P_TCODE
P_CTU
P_MODE
P_UPDATE.
DATA: L_SUBRC LIKE SY-SUBRC.
IF P_CTU <> 'X'.
CALL FUNCTION 'BDC_INSERT'
EXPORTING TCODE = P_TCODE
TABLES DYNPROTAB = BDCDATA
EXCEPTIONS OTHERS = 1.
ELSE.
CALL TRANSACTION P_TCODE USING BDCDATA
MODE P_MODE
UPDATE P_UPDATE
MESSAGES INTO P_MESSTAB.
ENDIF.
L_SUBRC = SY-SUBRC.
REFRESH BDCDATA.
SY-SUBRC = L_SUBRC.
ENDFORM.
Start new screen *
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
Insert field *
FORM BDC_FIELD USING FNAM FVAL.
IF fval <> NODATA_CHARACTER.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
Insert field *
FORM BDC_NODATA USING P_NODATA.
NODATA_CHARACTER = P_NODATA.
ENDFORM.Hi..
Incase of Session method you have to Schedule the Program RSBDCSUB in backgroud using the Tcode SM36.
This program Takes the Session Name as input and Process the Session in background.
Note: Create a variant with the Session name for this program
<b>Reward if Helpful</b> -
How run a report in background process ?
Hi Experts,
I wrote a code in which I am have multiple selection screens....means in first screen there will 3 radio buttons.
So, depending upon the radio button selected, the other selction screen will be displayed...
So, here i want to run a report in background process...But in menubar im not able to find 'program'.
So, please help me this to run my report in background process.. with any simple code...
Thanks,
Rocky.Hi,
Try to see this example and adapt it for your case:
constants : c_jobname like tbtcjob-jobname value 'ZRFC_CM_38',
c_jobclass like tbtcjob-jobclass value 'A',
c_x type c value 'X',
c_msgclass type arbgb value 'ZXXXSD',
c_error type bapi_mtype value 'E',
c_status type bapi_mtype value 'S',
c_msg1 type msgnr value '177',
c_msg2 type msgnr value '178'.
data : v_jobcount like tbtcjob-jobcount.
ranges:
r_auart for vbak-auart,
r_wbstk for vbuk-wbstk,
r_mtart for mara-mtart,
r_reswk for ekko-reswk,
r_vtweg for vbak-vtweg.
call function 'JOB_OPEN'
exporting
jobname = c_jobname
importing
jobcount = v_jobcount
exceptions
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
others = 4.
if sy-subrc = 0.
Assignment of Ranges
append lines of:
distribution_channel to r_vtweg,
order_type_range to r_auart,
status_range to r_wbstk,
material_type_range to r_mtart,
plant_range to r_reswk.
Submit program in background
submit z_beve_salesorder_list
with p_spart = division
with p_file = file_name
with p_land1 = country
with s_vtweg in r_vtweg
with s_auart in r_auart
with s_wbstk in r_wbstk
with s_mtart in r_mtart
with s_reswk in r_reswk
via job c_jobname
number v_jobcount
and return.
Close the Job
call function 'JOB_CLOSE'
exporting
jobcount = v_jobcount
jobname = c_jobname
strtimmed = c_x
exceptions
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
invalid_target = 8
others = 9.
if sy-subrc = 0.
Status Message
return-type = c_status.
message id c_msgclass
type c_status
number c_msg1
into return-message
with c_jobname
sy-datum
sy-uzeit.
else.
Error Message
return-type = c_error.
message id c_msgclass
type c_error
number c_msg2
into return-message
with c_jobname.
endif.
endif.
Regards.
Maybe you are looking for
-
Need help on setting up and using IDE3&4 on my K7T turbo Limited edition. I have not used IDE 3&4 yet. How do I set it up as a raid config. Does my boot drive still stay at IDE1, or does it move to IDE3 or 4 . Is the some type of bios setting for th
-
IPOD sync causes Blue Screen of Death
Every time I plug in my IPOD to sync I get a message about Drive x not being present. options are cancel, retry or continue. Any option just produces the message again for approx. 3 tries then my entire system goes to Blue Screen of Death and starts
-
Need to know which exit to be used in me21
Hi Guys, i want to know which user exit to be used in me21 so that if the PO has a delivery address that is outside the US; then the tax code should be EX and the tax jurisdiction code should be 7777777770. i had found lots of user exits in me21 but
-
Hi, We have ERP 2004 on Windows 2003 with SQL 2005. Due to some corrections(config changes and abap corrections) were made directly made in our PRD System, we now need to completely refresh our DEV and QAS system with PRD. As we do not have enough sp
-
DS Open timeout in cRIO startup app
I have a cRIO application that upon startup opens a collection of Datasocket references to local NSV's. When running from the development environment everything works as designed. When I build and run as a startup app then I get Error 56 Timeout on