Db_writer_processes value

I have lots of waits for the free buffer waits events.
i need to increase the db_writer_processes parameter.
My disk_asynch_io is set to true.
Architecture:
oracle version: 10.2.0.1
os linux x86:
# cpu: 2 dual core
ram:3gig
# disk: 3: data on disk 1
index on disk 2
archive on disk 3
What value should i increase my db_writer_processes parameter?

as a general rule, you have 1 database writer and as many asynch IO servers as required. You may have other issues which need to be looked at if you are experiencing 'waits'.
rgds
alan.

Similar Messages

  • BR0978W Database profile alert

    Hi,
    DB02-----> Check DB it's showing these warnings.
    Please checks it and suggest me.
    BR0978W Database profile alert - level: WARNING, parameter: DB_WRITER_PROCESSES, value: 4 (<> 1)                
    BR0978W Database profile alert - level: WARNING, parameter: LOG_CHECKPOINT_INTERVAL, value: 0 (< 300000)        
    BR0978W Database profile alert - level: WARNING, parameter: OPTIMIZER_FEATURES_ENABLE, value: 9.2.0 (<> 8.1.7)  
    Regards
    S.Prasad

    Hello Prasad,
    Well the parameter recommendation is depends on the database version and SAP release version.
    Using the relevant parameter notes for the affected system (Oracle 9i  and lower: Note 124361 and 180605 (BW); Oracle 10g and higher: 830576),  check whether the settings (<curr_val>) you are using are actually  correct. If so, use transaction DB17 to change the <check_val> test  values for the affected parameters to the correct <curr_val> value, to  avoid future unjustified warnings. Alternatively, you can also deactivate or delete the checks in DB17 (Active = "N").
    If warnings are issued correctly, you must adjust the parameter settings  in init<sid>.ora (and, if necessary, the other configuration files included there using IFILE).
    Best Regards,
    Madhukar

  • DB_WRITER_PROCESSES in Oracle 10.2.0.4 HP UX

    Hi all,
    I noticed that asynchronous i/o cannot be used with regular filesystem on HP UX (only raw devices).
    As far as I know what I can do is to configure multiple db writers with DB_WRITER_PROCESSES parameter.
    DB has CPU_COUNT in 16, but 2 db writers (default value = CPU_COUNT / 8).
    Will I have any benefit by increasing DB_WRITER_PROCESSES?
    Or only if there is a bottleneck in writing dirty buffers?
    Thanks

    >
    If bottleneck exists it would be at the disk end & not the CPU end.
    Server processes are at least 1000 times faster than mechanical disk drives.
    a single DB_WRITER could keep 10 disk controllers busy & not be a bottleneck.Well, then why does Oracle default to 1 process every 8 cpus?
    DBWn also handles checkpoints, file open synchronization, and logging of Block Written records, according to [url http://docs.oracle.com/cd/E11882_01/server.112/e25513/bgprocesses.htm#BBBDIIHC]the docs. On hp-ux Oracle does file handles oddly - see MOS How to Disable Asynch_io on HP to Avoid Ioctl Async_config Error Errno = 1 [ID 302801.1] if you (the OP) haven't already.
    So on hp-ux you have a potential problem of the architecture assuming asyncronicity but the dickering between dbw, lgwr and ckpt turning into bickering. Just because something is 1000 times faster doesn't mean it isn't doing 1000 more operations. In real life, you wind up with Oracle telling you to ignore Private strand flush not complete errors, because there are no actual lgwr problems unless switches are slow.

  • Initial Parameter DB_WRITER_PROCESSES Doesn't work

    I set the initial parameter DB_WRITER_PROCESSES as 5 in init.ora file. But when I restarted the database, I found the parameter show as 1 and only DBW0 existed.
    I don't know the reason, would you please help me?
    Thanks and Best Regards,
    Su Qian

    Did you get a message in the alert log about starting dbwr processes failed?No, I havn't gotten the message.
    Also, having multiple writers on a single cpu system could bring performance down. I think one rule of thumb is to have 4 cpus per writer.Thanks for your message. I will not re-set the parameter.
    First, I'd like to let you know that the environment of my production database are as follows:
    OS: HP-UX
    Database Version: Oracle8 Enterprise Edition Release 8.0.4.2.1 - Production
    The setting of DB Block: 2K
    The main problem I come across is when running application the response speed of DB is very slow.
    The first step I adopted was checking free space. After checking I thought it was sufficient. But when I adopted the second step checking v$system_event, I found the wait time of following events is high.
    EVENT TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED AVERAGE_WAIT
    db file parallel write 471 1 128370 272.547771
    log file parallel write 30307 0 51440 1.69729765 (For reference)
    pmon timer 37189 36806 11111071 298.773051
    rdbms ipc message 142737 112253 66295957 464.462312
    rdbms ipc reply 296 0 7167 24.2128378
    smon timer 372 369 11082933 29792.8306
    write complete waits 75 37 5149 68.6533333
    According to the above message, I decided to tune I/O first. Is my thought right?
    If dbwr is rather slow, these events should give som hints: free buffer waits, rdbms ipc reply, log file switch (checkpoint incomplete).Yes, when I had a look at the alert.log I found the error message: checkpoint incomplete. So I created a new log group.Perhaps the problem was too few log groups and not dbwr. If you do not have high free buffer waits dbwr should be ok :)I agree with you. I havn't high free buffer waits, so the main problem could be too few log groups. But I don't understand two points as follows.
    1. Last Friday I had 4 log groups and the size of every group is 2M. when getting the message "Thread 1 cannot allocate new log, sequence 87816 Checkpoint not complete", I created a new log group of 2M. Normally, this operation should improve performance, but when I observed the statistics I found the average wait time of "db file parallel write" became more longer. (Please refer to the following list)
    EVENT TOTAL_WAITS TIME_WAITED AVERAGE_WAIT DATE LOG_GROUPS
    db file parallel write 471 128370 272.547771 2002-08-05 5
    db file parallel write 798 88568 110.987469 2002-08-03 4
    2. I think the shortage of log groups is caused by the archive of log group don't complete before overwirting. From the alert.log file I found the time of log switch is about 20 minutes. From my viewpoint 20 minutes is enough for log archive. Why is the log groups still short?
    In addition, according to the setting of checkpoint parameters I think the checkpoint should occur only at the time of log switch.
    NAME TYPE VALUE
    db_block_checkpoint_batch integer 8
    log_checkpoint_interval integer 1000000
    log_checkpoint_timeout integer 0
    db_block_max_dirty_target integer 4294967294
    db_block_buffers integer 153600 (For reference)
    Do you know the meaning db_block_checkpoint_batch? (I can't find it in the document of 8i, because it is obsoleted.)
    From the alert.log file, I got the following errors.
    1. Fri Aug 2 17:10:36 2002
    Errors in file /lims/oradata/lab1/udump/ora_10976.trc:
    ORA-00600: internal error code, arguments: [1237], [], [], [], [], []
    (I got the error message occasionally.)
    2. Fri Aug 2 16:57:37 2002
    ORA-1652: unable to extend temp segment by 256 in tablespace TEMP
    (I don't understand it clearly, because the size of temporary tablespace is 400M. I think it is large enough.)     
    3. Fri Jul 26 12:00:17 2002
    Thread 1 cannot allocate new log, sequence 87816
    Checkpoint not complete
    Current log# 1 seq# 87815 mem# 0: /u02/oradata/lab1/db/redolab101.log
    Looking forward your reply.
    Thanks and Best Regards,
    Su Qian

  • Db_writer_processes alert log message

    Oracle 11.2.0.3 running on HP-UX Itanium RX8640 with 16 CPUs and OS B.11.31
    Upgraded to 11.2.0.3 last night and now I am receiving the following message in alert.log when starting database:
    "NOTE: db_writer_processes has been changed from 4 to 1 due to NUMA requirements"
    Any thoughts on what this means?

    Is your system NUMA-enabled?
    In a NUMA-enabled box, the minimum number of DBWR process is the number of processor groups, oracle MUST start this minimum of DBWR no matter the parameter you set.
    You seem to have the opposite case, as in oracle is forcing it to 1. In this case, I'm led to believe that maybe oracle is mistakenly identifiying your system as NUMA perphaps.
    Upload the results for this:
    select  a.ksppinm  "Parameter",
    b.ksppstvl "Session Value",
    c.ksppstvl "Instance Value"
    from x$ksppi a, x$ksppcv b, x$ksppsv c
    where a.indx = b.indx and a.indx = c.indx
    and a.ksppinm = '_db_block_numa';You may try to do this:
    - Set the following OS variable in your database OS owner user profile: DISABLE_NUMA = true
    - Set the DBWR to 4 in the SPFILE and bounce the database.
    - Verify if the issue continues. In the OS: ps -ef | grep dbwr to see how many dbwr the instance spawned.

  • MAX DB_WRITER_PROCESSES in 10g

    Hi All,
    I read the doc (Problem statement: [bug# 2441217]) from the metalink on the # of DBWRs. It says that Oracle changed the default # of DBWRs and MAX DBWRs since 9iR2.
    Default: (CPU_COUNT + 7) / 8
    Max: Min (CPU_COUNT / 2, 20)
    Is it right? I tested this on HP
    CPU_COUNT = 16, DB_WRITER_PROCESSES = 14
    Based on the new algorithm MAX DBWRs are 8. But there are 14 DBWR processes up and running.
    I think Oracle uses the privious aloghrithm even in 10g, which is based on dbblock_lru_latches.
    Any idea?

    Hi Sean,
    As I understand it, db_block_lru_latches defaults to the following formula :
    (CPU_COUNT x 6) or (DB_BLOCK_BUFFERS/50), whichever is less.
    In earlier releases it defaulted to CPU_COUNT/2. If you set DB_BLOCK_LRU_LATCHES higher than this max value on systems where it is available (<9i) or set the undocumented parameter DBBLOCK_LRU_LATCHES higher, then Oracle just ignores this and sets it internally to the above calculated value. However it will be set to Num_pools x (CPU_COUNT/2) if multiple buffer pools (default, recycle, keep and any of the multi-block size pools) are setup.
    More notes shere:
    http://www.dba-oracle.com/oracle_tips_cpu_count_wrong.htm

  • Oracle db_writer_processes

    Hi,
    When one of process ran in 11.5.10.2, DBWR0 process get loaded since that process execute INSERT internally. I'm thinking to increase db_writer_processes process to 3. The current parameter value is 1.
    Does this help ?
    or in what situation we need to have more db_writer_processes processes.
    Thanks

    Hi,
    Please refer to the following documents for guidelines about setting this parameter.
    Note: 164768.1 - Diagnosing High CPU Utilization
    Note: 62172.1 - Understanding and Tuning Buffer Cache and DBWR
    Note: 97291.1 - DB_WRITER_PROCESSES or DBWR_IO_SLAVES?
    Note: 67422.1 - Init.ora Parameter "DB_WRITER_PROCESSES" Reference Note
    Regards,
    Hussein

  • Increasinf : db_writer_processes

    How can increase db_writer_processes  in ORACLE DATABASE  & How can i find out the existing parameter value for it
    Rgds
    PR

    as orasid
    sqlplus> show parameter db_writer_processes
    sqlplus>alter system set db_writer_processes=xx scope=spfile;
    If you are not using spfile modify the value manually in initSID.ora
    The parameter is not dynamic it will take effect after the DB restart
    Thanks,

  • How can i to change parameters db_writer_processes

    deal all,
    db_writer_processes,the value of the parameters is default 1,I want to change it, and want to know what value is the best?

    Aman.... wrote:
    Well, the parameter can be changed by the alter system but why you want to do it? Why you want to enable more dbwr;s in the first place?
    Aman....I want to change the value more than 1 and improve the dbwr efficiency? but I don't know wether can do this.

  • Db_writer_processes data sets

    Hi All,
    Can you please educate me on below things. Also, please correct me if i am wrong
    1.
    db_writer_processes controls number of db writers that are been started when instance is initialized. So, once DB is up lets say we have 6 dbwriter process then your buffer cache is splitted in 6 working data sets. Can you please explain what is this datasets are ? or may be if i am wrong .
    2.
    If so this is true how can we find that which dataset is used by which dbwrite processes. I mean how to find one to one mapping for say 0x address- to 0y address is been worked by dbwr1 process and so on. how to find this
    3.
    If we have multiple buffer cache like db_16k and db_32k then how do we map this.
    Reason behind this we are using 12 dbwriter process for we have 12gb of sga and 10gb of pga. Some time we are getting buffer busy waits. So, need to find that we are using multiple buffer pools. So, if it is from there then i can suggest management to use only default block size and not multiple. I already know that multiple buffer pool have overhead of managing one more memory structure so need to investigate and learn from you.
    My idea is to reduce this and then start adding processes if necessary

    Hi Jonathan,
    Thank you very much so here are the things which we can conclude from this. Please correct me if i am wrong as i am new to this whole thing.
    1.
    Excessive db writer processes can be overhead due to each working set requires it's own db lru latches.
    2.
    Excessive db writer processes can slow down I/O due to they need to acquire CPU and then run. But one question here is does all db writer process simultinouses compete for cpu or it waits for one to complete and then go to other cpu. As, i can understand cpu uses serialize mechanism but lets say we have 12 dbwriter among one is writing using one cpu and other cpu is free. So, other process can move to that or db writer process is also serial ?
    3.
    Also, this can lead to wrong buffer waits situation as we can have free buffer in other sets and in one set it won't and process acquire that dbwriter so that it will post this wait event but actually we have other free buffers available. How to find this as how many buffers are available, dirty or in other state for each working set ?
    4.
    NAME TYPE VALUE
    db_32k_cache_size big integer 32M
    So, it means that for 32MB scanning of memory we need 12 data working sets or this 32k block size dbwriter data sets can be used by 16k also ?
    And here is the output from our environment
    SQL> select bfp.bp_blksz,
           bfp.bp_name,
           bfp.bp_size,
           wds.indx wds_index,
           wds.dbwr_num,
           wds.FBWAIT,
           wds.BBWAIT,
           wds.set_latch,
           l.gets,
           l.MISSES,
           l.SLEEPS
        from x$kcbwbpd bfp, x$kcbwds wds, v$latch_children l
    where bfp.bp_size != 0
       and wds.set_id between bfp.bp_lo_sid and bfp.bp_hi_sid
       and l.ADDR = wds.set_latch
    order by bfp.bp_blksz, bfp.bp_name, wds.indx;
      BP_BLKSZ BP_NAME                 BP_SIZE  WDS_INDEX   DBWR_NUM     FBWAIT     BBWAIT SET_LATCH              GETS     MISSES     SLEEPS
         16384 DEFAULT                  370845         24          0       8753       6822 000000053D44E478    2088984        724         39
         16384 DEFAULT                  370845         25          1       8721       7027 000000053D44E9D0    2093594        962         29
         16384 DEFAULT                  370845         26          2       8543       4382 000000053D44EF28    2491595        962         29
         16384 DEFAULT                  370845         27          3       7907       4836 000000053D44F480    2155756       1042         43
         16384 DEFAULT                  370845         28          4       7655       5722 000000053D44F9D8    2131806        978         30
         16384 DEFAULT                  370845         29          5       7270       4440 000000053D44FF30    2117001       1074         34
         16384 DEFAULT                  370845         30          6       8350       2804 000000053D450488    2087645        930         35
         16384 DEFAULT                  370845         31          7       7841       6987 000000053D4509E0    2145802        908         37
         16384 DEFAULT                  370845         32          8       8699       4890 000000053D450F38    2119788        928         35
         16384 DEFAULT                  370845         33          9       8074       4679 000000053D451490    2167632        925         29
         16384 DEFAULT                  370845         34         10       8666       5068 000000053D4519E8    2103990        902         27
         16384 DEFAULT                  370845         35         11      12503       7753 000000053D451F40    2150953        991         38
      BP_BLKSZ BP_NAME                 BP_SIZE  WDS_INDEX   DBWR_NUM     FBWAIT     BBWAIT SET_LATCH              GETS     MISSES     SLEEPS
         32768 DEFAULT                    1012         84          0   11205160   11401610 000000053D462518   37611275     129971       1188
         32768 DEFAULT                    1012         85          1    9643066   11547834 000000053D462A70   36582915     106640       1157
         32768 DEFAULT                    1012         86          2   10446003   11583563 000000053D462FC8   37427372     102028       1088
         32768 DEFAULT                    1012         87          3   10573808   11563144 000000053D463520   37295902     104804       1058
         32768 DEFAULT                    1012         88          4   10408529   11452657 000000053D463A78   37088311     102178       1169
         32768 DEFAULT                    1012         89          5   10339793   11544617 000000053D463FD0   37020968     102712       1097
         32768 DEFAULT                    1012         90          6   10385856   11522059 000000053D464528   37197322     101601       1084
         32768 DEFAULT                    1012         91          7   10379007   11495563 000000053D464A80   37131610      99125        982
         32768 DEFAULT                    1012         92          8   10388032   11491618 000000053D464FD8   37119317     100206       1081
         32768 DEFAULT                    1012         93          9   10437875   11557976 000000053D465530   37188171     100933       1108
         32768 DEFAULT                    1012         94         10   10004858   11523490 000000053D465A88   36865058      89088       1075
         32768 DEFAULT                    1012         95         11   11481299   11509310 000000053D465FE0   38390757     127075       1088
    24 rows selected.Edited by: Taral Desai on Jun 4, 2009 1:25 PM

  • Get all values from request.getParameter

    In ASP, I can do something like that...
    For each item in Request.Form
    Response.write "Name is:" & item & " value is:" & Request(item)
    Next
    How about in JSP? How do i get the names and values of the form using a loop?

    You can use request.getParameterNames() which will return an enumeration, then you can iterate through the enumeration and use request.getParameterValue(String paramName) method to get the values.

  • Error while assigning a character value to a numeric variable.

    I fire a sql statement and check the number of rows returned by the sql.
    I check this result with the application logs.
    The application logs keeps the sqls fired by the application and the no of rows returned, in the example below the sql returned 8454 rows.
    My script compares the two results.
    ***********Application Log***********
    4/14/2008 11:15:01 AM: 0059 SQL SELECT "CLUSTER_CD",
    4/14/2008 11:15:01 AM: 0060 "PRODUCT_DESC",
    4/14/2008 11:15:01 AM: 0061 "TEAM_CD"
    4/14/2008 11:15:01 AM: 0062 FROM "OPS$TMS"."MAP_CLUSTER_TEAM_PROD"
    4/14/2008 11:15:01 AM:      3 fields found: CLUSTER_CD, PRODUCT_DESC, TEAM_CD, 8,454 lines fetched
    ***********Application Log***********
    My script:
    #!/bin/ksh
    typeset -i resA
    typeset -i resB
    opstms_conn_string="abc/[email protected]"
    set `sqlplus -s $opstms_conn_string << EOF
    set pages 0
    WHENEVER SQLERROR CONTINUE
    SELECT count(*)
    FROM MAP_CLUSTER_TEAM_PROD;
    exit
    EOF`
    resA=$1 ##returns 8454
    resB=`grep '3 fields found: CLUSTER_CD, PRODUCT_DESC, TEAM_CD,' BCVP_Main_Loader.qvw.log | awk '{print $10}'`
    ##resB returns 8,454
    ## here i get syntax error
    if [ $resA -eq $resB ]; then
    echo "QA passed for sql1"
    else
    echo "QA failed for sql1"
    fi
    The problem is as resB is integer variable it does not accept character value: 8,454 so returns a syntax error:
    How do I change the value assigned to resB into a numeric variable?
    error:
    + grep 3 fields found: CLUSTER_CD, PRODUCT_DESC, TEAM_CD, BCVP_Main_Loader.qvw.log
    run.ksh[52]: 8,454: syntax error

    Change:
    resB=`grep '3 fields found: CLUSTER_CD, PRODUCT_DESC, TEAM_CD,' BCVP_Main_Loader.qvw.log | awk '{print $10}'`
    to this:
    resB=`grep '3 fields found: CLUSTER_CD, PRODUCT_DESC, TEAM_CD,' BCVP_Main_Loader.qvw.log | awk '{print $10}' | tr -d ,`
    to drop the comma. Or you could do it in awk(1):
    resB=`grep '3 fields found: CLUSTER_CD, PRODUCT_DESC, TEAM_CD,' BCVP_Main_Loader.qvw.log | awk '{ gsub( /,/, "", $10 ); print $10}'`
    Or you could to it all in awk(1):
    resB=`awk '
    /3 fields found: CLUSTER_CD, PRODUCT_DESC, TEAM_CD/ {
    gsub( /,/, "", $10 )
    print $10
    ' BCVP_Main_Loader.qvw.log`
    (This example was not tested, it's just for a model.)
    Someone more of an SQL guru than I can probably tell you how to change your numeric locale to avoid presenting those commas in the first place and avoid the problem.
    HTH

  • Issue in Creation of new Value Field in CO-PA

    Hi,
    I have a query in CO-PA Value Field Linking.
    In my Development Client,
    1. Created a New Value Field (No Transport Request Generated)
    2. Linked to the above to new Conditon type created in SD. (Tranport request was generated) i.e. in Flow of Actual Values->Transfer of Billing Documents->Assign Value Fields
    However then i try creating a new Value Field in my Production Client it throws a message 'You have no authorization to change Fields".
    Is this an issue with authorization or i need to transport the Value field too from Development to Production client.
    Please Advise.
    Thanks in Advance,
    Safi

    Thanks Phaneendra for the response.
    The creation of Value field did not create any tranportation request. Will this too be transported if i transport the Operating Concern.
    Please Advise.
    Thanks,
    Safi

  • Query help : Query to get values SYSDATE-1 18:00 hrs to SYSDATE 08:00 hrs

    Hi Team
    I want the SQl query to get the data for the following comparison : -
    Order Created is a Date Column , and i want to find out all the values from (SYSDATE-1) 18:00 hours to SYSDATE 08:00 hours
    i.e.
    (SYSDATE-1) 18:00:00 < Order.Created < SYSDATE 08:00:00.
    Regards

    Hi, Rohit,
    942281 wrote:
    If i want the data in the below way i.e.
    from (SYSDATE-1) 18:00 hours to SYSDATE 17:59 hours ---> (SYSDATE-1) 18:00:00 < Order.Created < SYSDATE 07:59:00.If you want to include rows from exactly 18:00:00 yesterday (but no earlier), and exclude rows from exatly 08:00:00 today (or later), then use:
    WHERE   ord_dtl.submit_dt  >= TRUNC (SYSDATE) - (6 / 24)
    AND     ord_dtl.submit_dt  <  TRUNC (SYSDATE) + (8 / 24)
    So can i use the below format : -
    ord_dtl.submit_dt BETWEEN trunc(sysdate)-(6/24) and trunc(sysdate)+(7.59/24) . Please suggest . .59 hours is .59 * 60 * 60 = 2124 seconds (or .59 * 60 = 35.4 minutes), so the last time included in the range above is 07:35:24, not 07:59:59.
    If you really, really want to use BETWEEN (which includes both end points), then you could do it with date arithmentic:
    WHERE   ord_dtl.submit_dt  BETWEEN  TRUNC (SYSDATE) - (6 / 24)
                      AND         TRUNC (SYSDATE) + (8 / 24)
                                               - (1 / (24 * 60 * 60))but it would be simpler and less error prone to use INTERVALs, as Karthick suggested earlier:
    WHERE   ord_dtl.submit_dt  BETWEEN  TRUNC (SYSDATE) - INTERVAL '6' HOUR
                      AND         TRUNC (SYSDATE) + INTERVAL '8' HOUR
                                               - INTERVAL '1' SECONDEdited by: Frank Kulash on Apr 17, 2013 9:36 AM
    Edited by: Frank Kulash on Apr 17, 2013 11:56 AM
    Changed "- (8 /24)" to "+ (8 /24)" in first code fragment (after Blushadown, below)

  • Unable to capture return values in web services api

    At the time of login to web services if my server is down ,
    it returns following error :
    java.lang.StringIndexOutOfBoundsException: String index out of range: -1
            at java.lang.String.substring(String.java:1438)
            at java.lang.String.substring(String.java:1411)
    I want to capture this error so that i can try another server to login. how do i capture this error
    Another place where i want to capture the return Value is when i look for a report on the server
    rh = boBIPlatform.get("path://InfoObjects/Root Folder/"src_folder"/" + reportName +
                               "@SI_SCHEDULEINFO,SI_PROCESSINFO" ,oGetOptions);
    oInfoObjects = rh.getInfoObjects();
    CrystalReport = (CrystalReport)oInfoObjects.getInfoObject(0);
    Here if the report is not there on the server , it returns a null handler exception.
    but if i try catching it by checking my responsehandler is null  like rh == null  it does not catch it.
    Any help will be appreciated
    thanks
    Rakesh Gupta

    Ted : i have two cases
    1)   server = server_st.nextToken();
        providerURL = "http://"server"/dswsbobje/services";
        sessConnURL = new URL(providerURL + "/session");
       Connection boConnection = new Connection(sessConnURL);
       Session boSession = new Session(boConnection);
      EnterpriseCredential boEnterpriseCredential = new    EnterpriseCredential();
                  boEnterpriseCredential.setLogin(userid);
      boEnterpriseCredential.setPassword(pwd);
      boEnterpriseCredential.setAuthType(auth);
    SessionInfo boSI = boSession.login(boEnterpriseCredential);
    I have got a list of servers running web servcies stored in my tokens. when i pass the first server name say " test:8080" and that server is down , i want to catch somewhere in the code above that it did not get the connection so that i can loop back and try with the second server say test1:8080
    This is for failover purposes.
    at present when i was trying to capture return value of boSI it  breaks giving the error
    java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(String.java:1438)
    at java.lang.String.substring(String.java:1411)
    2nd case :
    I am geeting reports from the server and scheduling them:
    i run the following code which works fine if reports is there
    rh = boBIPlatform.get("path://InfoObjects/Root Folder/"src_folder"/" + reportName +
    "@SI_SCHEDULEINFO,SI_PROCESSINFO" ,oGetOptions);
    oInfoObjects = rh.getInfoObjects();
    CrystalReport = (CrystalReport)oInfoObjects.getInfoObject(0);
    Here if  the  report  is not there on the server  then i should be able to catch from the response handle rh that it has got a null value.
    but rh does not return a null value 
    the code ultimately throws a null handle at the following line
    CrystalReport = (CrystalReport)oInfoObjects.getInfoObject(0);
    i am not able to catch the null value there also.
    hope you got my issue.

Maybe you are looking for