Strange behaviour in parallel processing (aRFC)

Hi,
I have programmed a data extraction program in SAP IS-U. Due to the sheer size of the tables (900 million+) if had to use parallel processing to keep the runtime acceptable.
When running in the QA-environment I see a funny behaviour. There are about 49 dialog processes available, but the program never uses more than around 15. In transaction SARFC the settings are, that the appserver may get a load of 100% processes.
Furthermore I see that in the first few minutes a lot of jobs are being created. Then for a few minutes almost nothing happens (maybe 2 or 3 are running) and then a few minutes later it's back to normal. This cycle repeats on and on and takes around 20 minutes. The Basis-people say the system load is not very high, neither is the DB-load.
My questions are:
1) Why does the job counter never exceed the 15 jobs, even though there are plenty available (65 in total, 49 on my app server)?
2) Why is the performance so wobbly? I would expect that the slots in SM51 should always be filled with fresh jobs.
With kind regards,
Crispian Stones
P.S.
The mechanism I use is similar to the following:
loop at tb_todo into wa_todo.
  call function 'SPBT_GET_CURR_RESOURCE_INFO'
   importing FREE_PBT_WPS = available.
  check available gt 1.
  call function 'Z_MY_EXTRACTOR'
    starting new task my_taskname
    in destination my_destination
    performing my_callback on end of task
    exporting
      i_data = wa_todo.
  if sy-subrc eq 0.
    add 1 to created.
  endif.
endloop.
wait until returned ge created.
form my_callback.
  add 1 to returned.
  receive results from function 'Z_MY_EXTRACTOR'.
endform.

Hello,
I am facing a similar issue in one of my || processing program as well. The program, when executed with a data-set of 10,000 records takes 65 minutes to complete. One would expect it to take 650 minutes (or even lesser) to process a data-set of app. 100,000 records.
However, when I run the program for a file with app. 100,000 records the program runs OK initially (i.e; I could see multiple dialog processes getting invoked in SM50) but, after a while it starts running on ONLY ONE dialog process. I am not quite sure where, when and why this PARALLEL to SEQUENTIAL switch is happening. Due to this, the program drags on and on and on. I would highly appreciate your suggestions/tips to put this bug to sleep.
Here is a summary of the logic used...
  w_group = 'BATCH_PARALLEL'.
  w_task  = w_task + 1.
  CALL FUNCTION 'SPBT_INITIALIZE'
   EXPORTING
     group_name                           = w_group
   IMPORTING
     max_pbt_wps                          = w_pr_total   "Total processes
     free_pbt_wps                         = w_pr_avl     "Avail processes
   EXCEPTIONS
     invalid_group_name                   = 1
     internal_error                       = 2
     pbt_env_already_initialized          = 3
     currently_no_resources_avail         = 4
     no_pbt_resources_found               = 5
     cant_init_different_pbt_groups       = 6
     OTHERS                               = 7.
  IF sy-subrc <> 0.
  Raise error mesage and quit
    w_wait = c_x.
If everything went well, continue processing
  ELSE.
    CLEAR: w_wait.
The subroutine that receives results from the parallel FMs will reduce
this counter and set the flag W_WAIT once the value is equal to ZERO
    w_count = LINES( data ).
Refresh the temporary table that will be populated for every partner
    REFRESH: t_data.
    LOOP AT data.
Keep appending data to the temporary table
      APPEND data TO t_data.
      AT END OF partner.
        CLEAR: w_subrc.
        CALL FUNCTION 'Z_PARALLEL_FUNCTION'
          STARTING NEW TASK w_task
          DESTINATION IN GROUP w_group
          PERFORMING process_return ON END OF TASK
          TABLES
            data                  = t_data
          EXCEPTIONS
            communication_failure = 1      "Mandatory for || processing
            system_failure        = 2      "Mandatory for || processing
            RESOURCE_FAILURE      = 3      "Mandatory for || processing
            OTHERS                = 4.
        w_subrc = sy-subrc.
Check if everything went well...
        CLEAR: w_rfcdest.
        CASE w_subrc.
          WHEN 0.
This variable keeps track of the number of threads initiated. In case
all the processes are busy, we should compare this with the variable
w_recd (set later in the subroutine 'PROCESS_RETURN'), and wait till
w_sent >= w_recd.
            w_sent = w_sent + 1.
Track all the tasks initiated.
            CLEAR: wa_tasklist.
            wa_tasklist-taskname = w_task.
            APPEND wa_tasklist TO t_tasklist.
          WHEN 1 OR 2.
Populate the error log table and continue to process the rest.
          WHEN OTHERS.
There might be a lack of resources. Wait till some processes
are freed again. Populate the records back to the main table
            CLEAR: wa_data.
            LOOP AT t_data INTO wa_data.
              APPEND wa_data TO data.
            ENDLOOP.
            WAIT UNTIL w_recd >= w_sent. "IS THIS THE CULPRIT?
        ENDCASE.
Increment the task number
        w_task = w_task + 1.
Refresh the temporary table
        REFRESH t_data.
      ENDAT.
    ENDLOOP.
  ENDIF.
Wait till all the records are returned.
  WAIT UNTIL w_wait = c_x UP TO '120' SECONDS.
FORM process_return USING p_taskname.                       "#EC CALLED
  REFRESH: t_data_tmp.
  CLEAR  : w_subrc.
Check the task for which this subroutine is processed!!!
  CLEAR: wa_tasklist.
  READ TABLE t_tasklist INTO wa_tasklist WITH KEY taskname = p_taskname.
If the task wasn't already processed...
  IF sy-subrc eq 0.
Delete the task from the table T_TASKLIST
    DELETE TABLE t_tasklist FROM wa_tasklist.
Receive the results back from the function module
    RECEIVE RESULTS FROM FUNCTION 'Z_PARALLEL_FUNCTION'
      TABLES
        address_data          = t_data_tmp
      EXCEPTIONS
        communication_failure = 1      "Mandatory for || processing
        system_failure        = 2      "Mandatory for || processing
        RESOURCE_FAILURE      = 3      "Mandatory for || processing
        OTHERS                = 4.
Store sy-subrc in a temporary variable.
    w_subrc = sy-subrc.
Update the counter (Number of tasks/jobs/threads received)
    w_recd = w_recd + 1.
Check the returned values
    IF w_subrc EQ 0.
Do necessary processing!!!
    ENDIF.
Subtract the number of records that were returned back from the
total number of records to be processed
    w_count = w_count - LINES( t_data_tmp ).
If the counter is ZERO, set W_WAIT.
    IF w_count = 0.
      w_wait = c_x.
    ENDIF.
  ENDIF.
ENDFORM.                    " process_return
Thanks,
Muthu

Similar Messages

  • Strange behaviour  Automatic Row Processing (DML) process

    Hi all,
    I'm executing a process with a fetch Automatic Row Processing (DML) over a synonym and it works perfectly but when i change the table owner it doesn't work anymore and give the error:
    ORA-06550: line 1, column 17: PL/SQL: ORA-00936: missing expression ORA-06550: line 1, column 9: PL/SQL: SQL Statement ignored
    Unable to fetch row.
    I thought it could be from the permissions of that owner over that synonym so i give it all grants, but still no luck.
    Does anyone knows if there are some limitations for the Automatic Row Processing (DML) process?

    Once again thanks for the reply Munky,
    The original table created on schema1 (ADMGIN) :
    SQL> desc MAN_ALT_TAB
    Name Null? Type
    ALT_ID NOT NULL NUMBER
    ALT_DES VARCHAR2(50)
    AAT_COD NOT NULL VARCHAR2(10)
    ALT_ID_REL NUMBER
    ALT_MUL_REG VARCHAR2(1)
    ALT_FOR_DES VARCHAR2(4000)
    The synonym created in schema2 (PORTAL) :
    CREATE OR REPLACE SYNONYM "PORTAL"."MAN_ALT_TAB" FOR "ADMGIN"."MAN_ALT_TAB";
    Grants on the schema1 (ADMGIN) owner:
    GRANT ALL ON MAN_ALT_TAB TO PORTAL;
    There isn't a new table in the schema2 only a synonym.
    The synonym isn't created in schema1 it was created in schema2.
    Regards Pedro.

  • Invalid character 0 ... error in xmlparsing??? strange behaviour

    Hello Everyone,
    I am experience a strange behaviour with XML processing in oracle. I have a xml that contains HTML as CDATA
    as the content of a node.
    When the HTML size is greater than 51 KB (or 51. something KB i was not able to find the exact boundary)
    it's giving an error.
    XML Parsing Failer
    LPX-00216: invalid character 0 (0x0)
    I tried to search for null character (chr(0)) but couldn't find one.
    The strangest part is when i am trying with HTML size as 48 KB/24 KB (anyting less than 51 KB) it's getting passed and
    the large HTML ( > 52KB ) is being build manually by copy pasting the small xml again and again. So if the small HTML
    is getting parsed what's wrong with the large html which consist of nothing but the small html again and again?
    When the HTML size is greater than 64KB oracle is throwing error saying node size cannot exceed 64KB which is fine.
    First i thought that it was a character set encoding problem. The HTML is encoded in UTF-8 and the database is in
    WE8MSWIN1252, but it seems that it is not the problem as i have explained above?
    Can anyone help me what am i missing in here?
    Thanks,
    Ru

    What database version are you on?
    Can you provide us an example of XML you are using?
    Can you show us the code you are using to parse it?
    Can you tell us what you are expecting as output?
    Based on your current description all we know is you have some XML and you're getting an error when you parse it. By itself that's pretty meaningless.

  • Parallel processing using arfc.

    Hi experts,
    Does any have a presntation on how to proceed with parallel processing with ARFC?
    Thanks in Advance.

    look at the piece of code ....
    FORM start_onhand_extract_task .
      DO.
        IF g_num_running < g_avail_wps.
          EXIT.
        ENDIF.
        WAIT UP TO 5 SECONDS.
      ENDDO.
    Creating the file name with task number
      ADD 1 TO g_task_num.
      CONCATENATE p_file1 g_task_num INTO g_task_name.
      CONCATENATE g_filename g_task_name  INTO task_tab-filename1.
      CONDENSE task_tab-filename1 NO-GAPS.
      task_tab-task_name    = g_task_name.
      APPEND task_tab.
      CLEAR g_msg_text.
      CALL FUNCTION 'ZMIO_GET_MARD_DATA'
        STARTING NEW TASK g_task_name
        DESTINATION IN GROUP p_grp
        PERFORMING decrease_wp ON END OF TASK
        EXPORTING
          i_filename = task_tab-filename1
        TABLES
          i_matnr    = r_matnr
          i_werks    = r_werks.
      CASE sy-subrc.
        WHEN 0.
          ADD 1 TO g_num_running.
          g_num_submitted = g_num_submitted + 1.
        WHEN 1.
          error_rec-task_name    = g_task_name.
          error_rec-filename1    = task_tab-filename1.
          APPEND error_rec.
          APPEND it_exp_t001w TO it_err_t001w.
          ADD 1 TO g_num_err.
          g_hold_num = g_num_running.
          WAIT UNTIL g_num_running < g_hold_num OR
                     g_hold_num = 0
                     UP TO 5 SECONDS.
        WHEN OTHERS.
          error_rec-task_name    = g_task_name.
          error_rec-filename1    = task_tab-filename1..
          error_rec-msg_text     = g_msg_text.
          APPEND error_rec.
          APPEND it_exp_t001w TO it_err_t001w.
          ADD 1 TO g_num_err.
      ENDCASE.
    ENDFORM.                    " start_onhand_extract_task

  • How to retrieve parallel process info (aRFC)

    Hi guys , I have a program that calls 2 RFC-enabled function modules and runs them in parallel. To my knowledge, each function modules is assigned with a unique task id when performing parallel processing.
    My question is, how do I retrieve the information on the individual process such as task name and its duration?
    say
    call function 'Z_XXX' starting new task 'A' performing 'Z_FUNC'  on end of task.....
    and
    call function 'Z_XXX' starting new task 'B' performing 'Z_FUNC'  on end of task .....
    then execute these functions and let it runs for a while, then how do i retrieve the task name of each process programmatically (A and B)?
    sorry I'm still pretty new when it comes to ABAP
    edit:-
    somehow my previous question was removed along with replies
    Edited by: afro100 on Aug 27, 2009 1:51 PM

    Hello,
    You can use following function module to get the id of transactional processing.
    CALL FUNCTION 'ID_OF_BACKGROUNDTASK'
    * EXPORTING
    *   DEST          = ' '
    * IMPORTING
    *   TID           =  --> collect ID from this varaible
    *   FNUM          =
    and for reteriving status you can use:
    CALL FUNCTION 'STATUS_OF_BACKGROUNDTASK'
      EXPORTING
        tid                 =
      tables
        errortab            =
    * EXCEPTIONS
    *   COMMUNICATION       = 1
    *   RECORDED            = 2
    *   ROLLBACK            = 3
    *   OTHERS              = 4
    IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    Hope this helps!
    Thanks,
    Augustin.

  • Strange responsetime with query triggering parallel processing

    Hi,
    Are there anyone who can run this SQL below on a RAC 11g R2, and give me feedback on how long time it took?
    In my environment it takes more than a minute, and I suspect there is a problem with the database and parallel processing.
    If I collect the values from the inner select and make a list of comma-separated values, it goes fast.
    Replace SCHEMA_NAME with an existing SCHEMA_NAME on you database before running.
    SELECT sa.*
      FROM gv$sqlarea sa
      WHERE sa.sql_id in (SELECT sql_id from gv$sqlarea where parsing_schema_name like '%SCHEMA_NAME%' and rownum < 100)
    Thanks!

    You are using the hint a bit incorrectly.
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements006.htm#SQLRF50805
    <quote>
    The NO_PARALLEL hint overrides a PARALLEL parameter in the DDL that created or altered the table. For example:
    SELECT /*+ NO_PARALLEL(hr_emp) */ last_name
    FROM employees hr_emp;
    <quote>
    Check Metalink note 267330.1 as well.

  • Strange behaviour of Runtime.getRuntime().exec(command)

    hello guys,
    i wrote a program which executes some commands in commandline (actually tried multiple stuff.)
    what did i try?
    open "cmd.exe" manually (administrator)
    type "echo %PROCESSOR_ARCHITECTURE%" and hit enter, which returns me
    "AMD64"
    type "java -version" and hit enter, which returns me:
    "java version "1.6.0_10-beta"
    Java(TM) SE Runtime Environment (build 1.6.0_10-beta-b25)
    Java HotSpot(TM) 64-Bit Server VM (build 11.0-b12, mixed mode)"
    type "reg query "HKLM\SOFTWARE\7-zip"" returns me:
    HKEY_LOCAL_MACHINE\SOFTWARE\7-zip
    Path REG_SZ C:\Program Files\7-Zip\
    i wrote two functions to execute an command
    1) simply calls exec and reads errin and stdout from the process started:
    public static String execute(String command) {
              String result = "";
              try {
                   // Execute a command
                   Process child = Runtime.getRuntime().exec(command);
                   // Read from an input stream
                   InputStream in = child.getInputStream();
                   int c;
                   while ((c = in.read()) != -1) {
                        result += ((char) c);
                   in.close();
                   in = child.getErrorStream();
                   while ((c = in.read()) != -1) {
                        result += ((char) c);
                   in.close();
              } catch (IOException e) {
              return result;
         }the second function allows me to send multiple commands to the cmd
    public static String exec(String[] commands) {
              String line;
              String result = "";
              OutputStream stdin = null;
              InputStream stderr = null;
              InputStream stdout = null;
              // launch EXE and grab stdin/stdout and stderr
              try {
                   Process process;
                   process = Runtime.getRuntime().exec("cmd.exe");
                   stdin = process.getOutputStream();
                   stderr = process.getErrorStream();
                   stdout = process.getInputStream();
                   // "write" the parms into stdin
                   for (int i = 0; i < commands.length; i++) {
                        line = commands[i] + "\n";
                        stdin.write(line.getBytes());
                        stdin.flush();
                   stdin.close();
                   // clean up if any output in stdout
                   BufferedReader brCleanUp = new BufferedReader(
                             new InputStreamReader(stdout));
                   while ((line = brCleanUp.readLine()) != null) {
                        result += line + "\n";
                   brCleanUp.close();
                   // clean up if any output in stderr
                   brCleanUp = new BufferedReader(new InputStreamReader(stderr));
                   while ((line = brCleanUp.readLine()) != null) {
                        result += "ERR: " + line + "\n";
                   brCleanUp.close();
              } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
              return result;
         }so i try to execute the commands from above (yes, i am using \\ and \" in java)
    (1) "echo %PROCESSOR_ARCHITECTURE%"
    (2) "java -version"
    (3) "reg query "HKLM\SOFTWARE\7-zip""
    the first function returns me (note that ALL results are different from the stuff above!):
    (1) "" <-- empty ?!
    (2) java version "1.6.0_11"
    Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
    Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
    (3) ERROR: The system was unable to find the specified registry key or value.
    the second function returns me:
    (1) x86 <-- huh? i have AMD64
    (2) java version "1.6.0_11"
    Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
    Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
    (3) ERROR: The system was unable to find the specified registry key or value.
    horray! in this version the java version is correct! processor architecture is not empty but totally incorrect and the reg query is still err.
    any help is wellcome
    note: i only put stuff here, which returns me strange behaviour, most things are working correct with my functions (using the Runtime.getRuntime().exec(command); code)
    note2: "reg query "HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0" /t REG_SZ" IS working, so why are "some" queries result in ERR, while they are working if typed by hand in cmd.exe?

    ok, i exported a jar file and execute it from cmd:
    java -jar myjar.jar
    now the output is:
    (1) "" if called by version 1, possible to retrieve by version 2 (no clue why!)
    (2) "java version "1.6.0_10-beta"
    Java(TM) SE Runtime Environment (build 1.6.0_10-beta-b25)
    Java HotSpot(TM) 64-Bit Server VM (build 11.0-b12, mixed mode)"
    (3) C:\Program Files\7-Zip\
    so all three problems are gone! (but its a hard way, as i need both functions and parse a lot of text... :/ )
    thanks for the tip, that eclipse changes variables (i really did not knew this one...)

  • Windows 8.1 Enterprise Evaluation- Strange behaviour of network adapter

    Hello there are discussions and questions around this community about network adapter dropping connection while system is running. But I have found unique problem with my network adapter driver.
    I have tried to state my problem as clearly as possible. Please ask if any detail is required.
    My network status shows no access on following occasions:
    1. On alternate system wakeups.
        eg:  
    a. System boots up 
    Internet accessible
    no problem
    b. I put system to sleep(first time) and wake it up
    No access to internet !!!
    When I check in network and sharing center not even adapter shows in disabled status.(See video from the link given below).
    c. Without restarting system or without installing network adapter again,  I put system to sleep again and wake it up (2nd time).
    Internet accessible
    d. I put system to sleep for (3rd time) and wakes it up.
    No access to internet!!
    If I put system to sleep again and wake it up definitly I get network access.
    2. If I switch off the modem before windows shutdown completely or in the process of shutdown, next time when I boot system, even though the modem is switched on before booting the system, No internet access tooltip will be shown on network
    sysbol.
    Another strange behaviour is on no internet access status, I start installing adapter, and it loads required files and prompt me to click "next" and "click" install.
    But the thing is before I go to "next" button, I will get network access as shown in this link
    http://youtu.be/sPlXVEiYBeo. Ignore virtualbox adapter. Same behaviour was there when there is no vbox adapter. Same was happening in Windows 8 Pro, but not in windows 7, so that there is no H/W problem I think. 
    Any idea on how to fix this or any alternate solution ? 

    Hi,
    Firstly, access your network adapter official website to get the proper driver applied to your system.
    Then going to Control Panel > Device Manager, right click your adapter > Properties. Under the Power Management tab, make sure "Allow the computer to turn off this device to save power" checkbox unchecked.
    If it still persists, try to disable "fast startup" as below steps:
    1.In Control Panel, open the Power Options item.
    2.Click the Choose what the power buttons do link.
    3.Clear the Turn on fast startup (recommended) check box.
    4.Click Save Settings.
    Karen Hu
    TechNet Community Support

  • Strange behaviour from new 2012R2 in old domain

    Hi all,
    At work (education level), I'm starting to take charge of windows admin, so beiing a noob admin I'm finding strange behaviours that I hope you can help me solve them all :-)
    We've one (big) domain with about 5000 computers (workers and students all together), and around 50000 users (again, workers and students all together) setup like this:
    DC-DOMAIN-1:
    Windows Server 2008R2
    Shares NETLOGON and SYSVOL
    DC-DOMAIN-2:
    Windows Server 2003 R2 x64
    Shares CertEnroll, NETLOGON, SMSLOGON, SYSVOL
    Checking RootDSE, I see 'domainControllerFunctionaly is Windows 2003' (DC-DOMAIN-2)
    So, with this setup, I've noticed these strange behaviours, hope list isn't too big  (guess there will be more behaviours but these seemed too odd):
    1) On DC-DOMAIN-2, WinServer 2003 eventlog, inside 'Directory Service', I found this warning event ID 1083 (Source NTDS Replication):
    Active Directory could not update the following object with changes received from the domain controller at the following network address because Active Directory was busy processing information.
    Object:CN=<an user name>, CN=Users, DC=DOMAIN
    Usually followed by an information event (eventid 1955) which says:
    ctive Directory encountered a write conflict when applying replicated changes to the following object.
    Object:
    <SAME USER OBJECT THAN PREVIOUS EVENT ID>
    Time in seconds:
    0
    Event log entries preceding this entry will indicate whether or not the update was accepted.
    A write conflict can be caused by simultaneous changes to the same object or simultaneous changes to other objects that have attributes referencing this object. This commonly occurs when the object represents a large group with many members, and the functional level of the forest is set to Windows 2000. This conflict triggered additional retries of the update. If the system appears slow, it could be because replication of these changes is occurring.
    User Action
    Use smaller groups for this operation or raise the functional level to Windows Server 2003.
    And having as result that user being blocked in domain.
    2) I've added a new print server based on Windows Server 2012R2 (running inside an updated ESX 5.5 with VMXNET3 ethernet adapter as recommended by vmware), and seen in the event viewer these warnings/errors:
    At System log:
    Error Event ID 5783, Source NETLOGON:
    The session setup to the Windows NT or Windows 2000 Domain Controller \\DC-DOMAIN-2.fulldns.name for the domain DOMAIN is not responsive. The current RPC call from Netlogon on \\PRINTSERVER to \\DC-DOMAIN-2.fulldns.name has been cancelled.
    I've seen Event ID 5783 with DC-DOMAIN-1 too....
    Error Event ID 5719, Source NETLOGON:
    This computer was not able to set up a secure session with a domain controller in domain DOMAIN due to the following:
    The remote procedure call failed and did not execute.
    This may lead to authentication problems. Make sure that
    this computer is connected to the network. If the problem persists, please contact your domain administrator.
    ADDITIONAL INFO:
    If this computer is a domain controller for the specified domain, it sets up the secure session to the primary domain controller emulator in the specified domain. Otherwise, this computer sets up the secure session to any domain controller in the specified domain.
    At Microsoft-Windows-TerminalServices-RemoteConnectinoManager/Admin found also this warning:
    Warning Event ID 20499 Source TerminalServices-RemoteConnectionManager:
    Remote Desktop Services has taken too long to load the user configuration from server \\DC-DOMAIN-2.fulldns.name for user administrator
    3) If I try Group Policy Modeling on DC-DOMAIN-1 (server 2008R2), everything works fine, no matter if I try it against DC-DOMAIN-1 or DC-DOMAIN-2, but if I try this from the Server 2012R2 (the one from point 2), I get this:
    Simulation against DC-DOMAIN-2: Gets executed, but all GPO show as inaccessible, empty or disabled.
    Simulation against DC-DOMAIN-1: Sometimes it gets executed as DC-DOMAIN-2, sometimes I get an error saying query can't be executed.
    4) From server 2012R2, I usually manage printing GPO. If I click on the domain root (GPMC, forest, Domains, DOMAIN-NAME-ROOT) right pane, I get a pop up saying: 
    'A processing error ocurred collecting data using this base domain controller. Please change the base domain controller and try again'
    After closing popup, right pane says something like 'DC-DOMAIN-2.fulldns.name' is the baseline domain controller for this domain.
    No infrastructure Status information exists for this domain.
    Click the Detect Now button below to gather infrastructure status from all of the domain controllers in this domain.
    Pressing 'Detect Now' does nothing, and trying to select New Baseline DC shows again same pop up than before.
    5) Last, but not least, I've feeling that GPO takes too much to apply. I've found scenarios in which even after executing 'gpupdate /force' correctly on client computer either local or domain admin, I can't see the new changes (gpresult says it has been
    updated though). But couldn't find anything on eventlog that informs about problems with GPOs...
    For all these strange behaviours I've noticed in last month that I started checking things as sys admin, I believe domain is damaged, or something is wrong there (not just my new server 2012R2, even if it's running inside an ESX, blehh), so please, any hint
    on what to check, what to change, what to fix, would be highly appreciated.
    Thanks in advance.

    Hi Paul,
    Honestly, I'm still trying to figure out all broken things reported by tests :( Guess Jesper's suggestion about adding a new 2008 DC to get rid of 2003 and start checking again after that may be best option.
    I'll try to summarize list of things I believe are wrong:
    running
    DCDIAG /V /C /D /E /s:yourdcname > c:\dcdiag.log  for every DC, shows different errors. They show things such as:
    another domain running here (not administered by us, only relationship is that our users are shared with that domain, nothing else) appear when Printing out pDsInfo (as if they were DC of our domain too, but they do not even share RootDomain). Guess it
    may be for a bug old sys admin had when clonning from his 2008R2 template, that forgot to change SID... I already noticed 1 year ago our print server shared SID with those DC, guess there may be more servers sharing SID too :-(
    Within Starting test: Replications, I see few messages at Replication Latency Check, such as the one for CN=Schema, CN=Configuration, DC=<ourdomain>: 
    Latency information for 35 entries in the vector were ignored.
                      35 were retired Invocations.  0 were either: read-only replicas and are not verifiably latent, or dc's no longer replicating this nc.  0 had no latency information (Win2K DC)
    On Services test, I see an 
       Invalid service type: RpcSs on DC-DOMAIN-3, current value
                WIN32_OWN_PROCESS, expected value WIN32_SHARE_PROCESS
    On SystemLog, I see LOTS of warnings/errors such as:
    A warning event occurred.  EventID: 0x80000002
                Time Generated: 07/28/2014   08:21:54
                (Event String (event log = System) could not be retrieved, error
                0x503)
             An error event occurred.  EventID: 0xC0000003
                Time Generated: 07/28/2014   08:22:18
                (Event String (event log = System) could not be retrieved, error
                0x3afc)
    Missing entries on DNS (we've a static DNS)
    netdiag.exe /v > c:\netdiag.log Showed again DNS problems such as our primary DNS pointing to all DC, secondary
    DNS pointing just to DC with FSMO roles,...
    repadmin.exe /showrepl * /verbose /all /intersite > c:\repl.txt  Gave no errors, now I must check in detail
    if every replica is correct
    And finally,
    dnslint /ad /s "ip address of your dc"  gave more DNS problems:
    One or more DNS servers may not be authoritative for the domain
    One or more DNS servers did not respond to UDP queries
    One or more zone files may have expired
    SOA record data was unavailable and/or missing on one or more DNS servers
    Sumarizing, guess it will be better to fix DNS problems, promote new 2008R2 DC to get rid of 2003 one, promote domain to 2008 too, check again for messages and relationship with other domain, and then come back here for support if needed 
    EDIT: Almost forgot to talk about SYSVOL folder. As said before, there are 426 GPO folders inside Policies. Of them, 375 have an inetres.adm files in it (smallest one 1398 KB, almost all of them 2307 or 2707 kb).... 

  • ABAP OO and parallel processing

    Hello ABAP community,
    I am trying to implement a ABAP OO scenario where i have to take into account parallel processing and processing logic in the sense of update function modules (TYPE V1).
    The szenario is definied as follows:
    Frame class X creates a instance of class Y and a instance of class Z.
    Classes Y and Z sould be processed in parallel, so class X calls classes Y and Z.
    Classes Y and Z call BAPIS and do different database changes.
    If classes Y or Z have finished, the status of processing is written into a status table by caller class X.
    The processing logic within class Y and class Z should be a SAP LUW in the sense of a update function module (TYP V1).
    Can i use events?
    (How) Should i use "call function in upgrade task"?
    (How) Should i use "call function starting new task"?
    What is the best method to realise that behaviour?
    Many thanks for your suggestions.

    Hallo Christian,
    I will describe you in detail, whow I have solved this
    problem. May be there is a newer way ... but it works.
    STEPS:
    I asume you have splitt your data in packages.
    1.) create a RFC-FM: Z_WAIT
    It return OK or NOT OK.
    This FM: does following:
    DO.
      call function TH_WPINFO -> until the WPINFO has more
    than a certain number of lines. (==> free tasks)
    ENDDO.
    If it is OK ==> free tasks are available
    call your FM (RFC!) like this:
    CALL FUNCTION <FM>
    STARTING NEW TASK ls_tasknam " Unique identifier!
    DESTINATION IN GROUP p_group
    PERFORMING return_info ON END OF TASK
    EXPORTING
    TABLES
    IMPORTING
    EXCEPTIONS
    *:--- Take care of the order of the exceptions!
    COMMUNICATION FAILURE = 3
    SYSTEM_FAILURE = 2
    UNFORCED_ERROR = 4
    RESOURCE_FAILURE = 5
    OTHERS = 1.
    *:--- Then you must check the difference between
    *:--- the started Calls and the received calls.
    *:--- If the number increases a certain value limit_tasks.
    wait until CALLED_TASK < LIMIT_TASKS up to '600' seconds.
    The value should be not greater then 20!
    DATA-Description:
    parameters: p_group like bdfields-rfcgr default 'Server_alle'. " For example. Use the F4 help
    if you have defined the report-parameter as above.
    ls_tasknam ==> Just the increasing number of RFC-Calls
    as Character.
    RETURN_INFO is a form routine in which You can check the results. Within this Form you must call:
    RECEIVE RESULTS FROM FUNCTION <FM>
    TABLES: ... " The tables of your <FM> exactly the same order!
    EXCEPTIONS
    COMMUNICATION FAILURE = 3
    SYSTEM_FAILURE = 2
    UNFORCED_ERROR = 4
    NO_ACTIVATE_INFOSTRUCTURE = 1.
    Her eyou must count the received Calls!
    And you can save them into a internal table for checking!
    I hope I could help you a little bit
    God luck
    Michael

  • How to delete duplicates in oracle 10g ( strange behaviour)

    Recently we migrated from oracel 8i to oralce 10g and we face this problem.
    When we try to delete duplicates using rowid ( analytical functions row_number()/
    or normal delete ) and commit the same , still we find some duplicates to be existing because of which we are not able to enable costriants and resulting in process failure.
    When we run the same delete statement next time it removes more duplicates than the required or sometimes required duplicates resulting in abnormal behaviour.
    I don not understand this strange behaviour after upgrading to oracle 10g.
    It'd be great if some one who has idea on this can throw light on the same.
    thanks

    Gasparotto,
    Thanks a lot for letting me know a new procedure to delete duplicates sing lead function.
    I've tried this code on a temp table and it worked, let me use the same query on the prodn side and test the same.
    Procedure for deletion of duplicates using lead analytical function.
    create table temp ( col1 number(2) , col2 number(2) , col3 number(2));
    insert into temp values ( 1,2,10);
    insert into temp values ( 1,2,20);
    insert into temp values ( 1,2,30);
    insert into temp values ( 3,2,10);
    insert into temp values ( 3,4,12);
    insert into temp values ( 3,4,45);
    commit;
    COL1 COL2 COL3
    1 2 10
    1 2 20
    1 2 30
    3 2 10
    3 4 12
    3 4 45
    select col1,col2 , col3, LEAD(rowid) OVER (PARTITION BY col1,col2 order by null) from temp;
    COL1 COL2 COL3 LEAD(ROWID)OVER(PA
    1 2 10 AAAVBjAApAAAFyGAAB
    1 2 20 AAAVBjAApAAAFyGAAC
    1 2 30
    3 2 10
    3 4 12 AAAVBjAApAAAFyGAAF
    3 4 45
    6 rows selected.
    select rowid , temp.* from temp ;
    ROWID COL1 COL2 COL3
    AAAVBjAApAAAFyGAAA 1 2 10
    AAAVBjAApAAAFyGAAB 1 2 20
    AAAVBjAApAAAFyGAAC 1 2 30
    AAAVBjAApAAAFyGAAD 3 2 10
    AAAVBjAApAAAFyGAAE 3 4 12
    AAAVBjAApAAAFyGAAF 3 4 45
    SQL> DELETE temp
    WHERE rowid IN
    ( SELECT LEAD(rowid) OVER (PARTITION BY col1, col2 ORDER BY null)
    FROM temp ); 2 3 4
    3 rows deleted.
    SQL> select rowid , temp.* from temp ;
    ROWID COL1 COL2 COL3
    AAAVBjAApAAAFyGAAA 1 2 10
    AAAVBjAApAAAFyGAAD 3 2 10
    AAAVBjAApAAAFyGAAE 3 4 12
    Thanks for the reply

  • Strange behaviour on reading procfs

    Hello,
    I have a strange behaviour reading process table from procfs. Some processes have a resident size and image size of 0 (zero). So I wrote a little test program and generated a 32bit binary. It gave me the same result. After I made a 64bit binary and this brought the expected results. Do anyone of you have an idea what i'm making wrong. Below you can find an output example and the code of the program.
    Every answer is appreciated
    erinda
    pfs.s32pid name nlwp %cpu %mem image resident
    1 init 1 0.00 0.03 2368 1184
    7 svc.startd 13 0.01 0.04 8696 1720
    649 snmpd 1 0.00 0.08 0 0
    24151 oracle 11 0.00 7.01 0 0
    pfs.s64pid name nlwp %cpu %mem image resident
    1 init 1 0.00 0.03 2368 1184
    7 svc.startd 13 0.01 0.04 8696 1720
    649 snmpd 1 0.00 0.08 9352 3440
    24151 oracle 11 0.00 7.01 330240 286664
    and here the program
    int main(int ac, char * av[])
    struct dirent * procEntry;
    char prcPath[PRARGSZ];
    psinfo_t prcInfo;
    pid_t pid;
    int rtc;
    DIR * procDir = opendir("/proc");
    if(procDir == NULL)
    printf("opendir(/proc) failed\n");
    return 1;
    printf(" pid name nlwp %%cpu %%mem image resident\n");
    printf("----------------------------------------------------------\n");
    rewinddir(procDir);
    while(procEntry = readdir(procDir))
    if(procEntry->d_name[0] == '.' || // skip "." and ".."
    procEntry->d_name[0] == '\0') // skip empty name
    continue;
    pid = atoi(procEntry->d_name);
    if(pid == 0 || pid == 2 || pid == 3)
    continue;
    size_t size = sizeof(psinfo_t);
    sprintf (prcPath, "/proc/%s/psinfo", procEntry->d_name);
    int pprocfs = open(prcPath, O_RDONLY);
    if (pprocfs < 0)
    return 2;
    else
    ssize_t bytesRead = read(pprocfs, &prcInfo, size);
    if (bytesRead != size)
    return 3;
    close (pprocfs);
    printf(" %5d %-15s %4d %5.2f %5.2f %8lu %8lu\n",
    prcInfo.pr_pid,
    prcInfo.pr_fname,
    prcInfo.pr_nlwp,
    (float)(100.0 * prcInfo.pr_pctcpu / 0x8000),
    (float)(100.0 * prcInfo.pr_pctmem / 0x8000),
    (ulong_t)prcInfo.pr_size,
    (ulong_t)prcInfo.pr_rssize);
    }

    Hello.
    If a 32 bit process reads from /proc different structures are returned as if a 64 bit process reads the same files.
    In the OpenSolaris sources this can be seen in http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/fs/proc/prvnops.c#2600 (line 2600).
    Unfortunately a 32 bit task cannot get all information about a 64 bit task - at least not in current Solaris version. I think this is a problem to be solved by Sun...
    Martin
    If anyone from Sun involved in the development of the procfs reads this: My proposal is:
    /proc/xxx/psinfo32 and psinfo64 and a symlink psinfo. The symlink's destination depends on the reading processes data model....
    (The same should be done with all files (lwpinfo...) in /proc).
    Another idea is a special IOCTL that controls if a 32 bit task wants to access the 64 bit structures...

  • Strange behaviour in ORacle Forms Webutil 106 / Error message WUC-14 WUC-12

    This is to inform you about a strange behaviour in Webutil V1.0.6
    Hosting environment is Oracle Application Server 10.1.2.0.2 on Unix Solaris 10
    Oracle Server 10.2.0.4.0 Enterprise Edition
    Client-envionment : Windows 2000, IE 6
    I created an Forms based application which reads in certain text files into the database using
    Webutil. The data will get changed using the application with logic and lateron a different textfile
    will be transmitted using either ftp or it may be created on the client side (again with Webutil).
    This solution worked perfect for some time (a year or so) using CLIENT_TEXT_IO...
    Hoewever, during the week, I recognized users coming up with the statement that the download
    to the local client does not worked anymore in certain situations. The system is producing an error-msg
    on the Form in the following sequence :
    WUC-14 [getFromObjectCache] ...
    WUC-14 [getFromObjectCache] ...
    WUC-12 [FileFunctions.newLine()] ...
    I traced the session and traced WebUtil, was able to reproduce the problem but could not find out the source
    of it in the first place.
    Hoewever, it came out, that part of the file being created on the client is a "¿" sign : hex :$BF
    This was already part of the file being read in the first place, so the value is stored in the database.
    There is no problem when reading a file having a content like this with CLIENT_TEXT_IO but there obviously is one
    when writing it to the local client.
    The file is getting processed on the client and gets closed with CLIENT_TEXT_IO.FCLOSE.
    After the FCLOSE statement is getting processed, the above errors occurs, The length of the produced file is then : 0 bytes ^^
    Whenever facing a problem like this check the content of the file you are trying to create.
    Workaround was :
    - set workingDirectory in formsweb.cfg
    - using Forms based TEXT_IO rather than CLIENT_TEXT_IO to create the file on the backend side (Apps-server)
    - implement WEBUTIL_FILE_TRANSFER.AS_To_Client_With_Progress to download the file to the client
    In order to make it a little bit "colourful" I implemented a bean with progressbar when creating the file on the back end side
    Works perfect... and looks nice :)

    XeM wrote:
    Hi Andreas,
    install.syslib.location.client.0=webutil\syslibi found the above line over google but when i check my webutility configuration file i didn't found it there. I added this line after the line i have mentioned in previous post but this also not worked. And then i worked on changing permission over folder.
    HI XeM
    Your adding location is ok. But i suggest try something different. Change the above line to
    /* i'm confuse with the \ or / *\
    install.syslib.location.client.0=\webutil
    or
    install.syslib.location.client.0=/webutilAnd do the following work In the client
    1. Close ALL open browsers.
    2. On the client machine search all directories for webutil.*properties and delete all instances of that file.
    3. Delete d2kwut60.dll, JNIsharedstubs.dll, and jacob.dll from the JRE\bin directory.
    4. Clear the JRE jar cache. This can be done several ways, but using the Java Control Panel is likely the easiest and safest.
    Now stop the OC4J instance and start again and try at client...
    Hope this works...
    If works... please post the solutions.
    Hamid

  • Strange behaviour when setting client_info and module in v$session

    Hello,
    I've tried to set the CLIENT_INFO field in V$SESSION using DBMS_APPLICATION_INFO.SET_CLIENT_INFO but found a strange behaviour.
    Normally the forms modules seems to set the field MODULE in V$SESSION to its name. If I use DBMS_APPLICATION_INFO.SET_CLIENT_INFO the CLIENT_INFO field is set correctly but the MODULE field is set to 'frmweb.exe' instead of the forms modules name.
    I also tried to set the MODULE using DBMS_APPLICATION_INFO.SET_MODULE but then strangely the MODULE and MODULE_HASH field of the original frmweb.exe (the main applet?) entry and the entry for the forms module were the same (set to the new module name). From now on every newly opened module had 'frmweb.exe' as the module entry until I closed the forms application.
    Example:
    Entries in V$SESSION:
    -- After start of forms application there is only one entry for the process:
    PROCESS           MODULE            MODULE_HASH            CLIENT_INFO
    1596:7204         frmweb.exe        854945150
    -- When a new forms module is opened it looks like this:
    PROCESS           MODULE            MODULE_HASH            CLIENT_INFO
    1596:7204         frmweb.exe        854945150
    1596:7204         my_module         1929284615
    -- When the modified forms module that sets the client_info/module is opened this happens:
    PROCESS           MODULE            MODULE_HASH            CLIENT_INFO
    1596:7204         mod_module        3097977240
    1596:7204         mod_module        3097977240             my client info
    1596:7204         my_module         1929284615As one can see the entry of the forms application seems to be overriden (at least the MODULE and MODULE_HASH fields) but the CLIENT_INFO only changes for one of the entries?
    The following code is responsible for the changes of CLIENT_INFO and MODULE:
        -- get client info
        client_info :=
            webutil_clientinfo.get_ip_address
            || ' (' ||
            webutil_clientinfo.get_user_name
            || ')'
        -- set client info
        DBMS_APPLICATION_INFO.SET_CLIENT_INFO(client_info);
        -- get module (set action to '')
        DBMS_APPLICATION_INFO.SET_MODULE(name_in('system.current_form'),''); I really don't understand, why it does not work properly.
    Any help is appreciated!
    Thanks in advance.

    This was an application module pooling, activation / passivation issue.
    After view objects had been set-up correctly, the problem disappeared.

  • Communication Channel Strange Behaviour

    Hi,
    We are facing a strange behaviour with communication channel monitoring in RWB for JMS Adapter.
    I am sending data from IDoc to JMS. Message is processed successfully inside Integration Engine of PI.Message monitoring in RWB shows status successful.But ,if I monitor communication channel in RWB, under cluster node --> cluster node for Channel 'X' shows status green & in short log - I got an message "JMS message processed successfully at 2009-04-17|05:25:06+0100;JMS & XI identifiers are ID :414d515 & 457e345 respectively".
    This information is always updated, when i run my interface & shows the latest three enteries there with information provided above in bold.
    But if i see the processing details for Cluster node (Where we usually see the processing of message with its Message ID), there is no entry with Time Stamp & message ID & explanation.
    Any idea why such a behaviour?
    Thanks,
    Venky

    Hi,
    hmmmm..........strange............
    just check if you have multiple server nodes and you are selecting the server node with msg processing and then whether in processing details you are seeing your msgs or not............
    also check if the msgs are processed just now or are processed some hours ago - if they are processed some hours ago then may be you do not have their processing details available currently but if they are processed just now, then you should be able to see their processing details..........
    if the problem remains, then ask your basis guys to restart your XI J2EE engine and see if you then able to get processing details for your new msgs.........
    Regards,
    Rajeev Gupta

Maybe you are looking for