ORA-01555 caused by SQL statement below on production

Hi
i got ORA-01555 caused by SQL statement below on my prodution adn database undo_retention = 18000 what can i do my database performance is going down pls tail me what i do .
Regards
Digvijay

1) I don't see a SQL statement here
3) How did you determine that UNDO_RETENTION of 18000 was appropriate?
4) How much UNDO is your system generating?
6) Do you believe this is related to your performance problems? If so, why do you believe that?
At the risk of stating the obvious... You've told Oracle to try to maintain UNDO for 18,000 seconds (5 hours). You have a query that runs for roughly 6.25 hours. If, after running for 6.25 hours, that query needs a block that was modified, say, 6 hours ago, it may not find it because you've told Oracle you don't need it any longer.
Your UNDO_RETENTION needs to be greater than the longest-running query you expect to run. You can bump up UNDO_RETENTION if you'd like. However, I tend to believe that a query that died after 6.25 hours is probably a query that is in desparate need of tuning. If you reduce the query runtime to something less than 5 hours, you could keep UNDO_RETENTION at the current setting.
Justin

Similar Messages

  • ORA-01555 caused by SQL statement below - Kindly assist

    Hi,
    Version 9.2.0.7
    I have been getting lots of ORA-01555 error logged into my alert log since 10 hours ago, happening every second till now.
    The ORA-01555 is strange compared to those that have occured in my database before. From the error logged into the alert log, the statement is reflected as "table_4_200_c432_0_0_0". Any experts can advise what's exactly happening? The duration stated below seems really long.
    ORA-01555 caused by SQL statement below (Query Duration=1225798260 sec, SCN: 0x077a.e8ab9ae8):
    Tue Nov 4 19:31:00 2008
    table_4_200_c432_0_0_0
    thanks

    That event trace is helpful only when you are getting ORA-01555 in trace files without a query.
    Of course, you cannot get the diagnostic information for something that occurred in past (when diagnostics were not in place); so you have to wait till the next occurrence (if any) of ORA-01555 under similar conditions.

  • ORA-01555 caused by SQL statement below

    Dear all,
    How can I treat this error ?
    ORA-01555 caused by SQL statement below (SQL ID: 9kh4f608ty7un, Query Duration=88767 sec, SCN: 0x0000.db7b3cef): : Category 1
    Any ideas ? I did not touch the DB, so I am not sure why it came.
    Thanks in advance,
    Daniel.

    hi Daniel,
    You have to mentioned step by step solution (SQL statement) which you perform to resolve this issue.I am saying this for those sdn new users who have no S-user or access of SAP note.
    Thanks and Regards,
    majamil
    Danke???

  • ORA-04044 Error in SQL statement

    Hi All,
    I faced ORA-04044 in a SQL statement being written inside a shell script. I really don't know what is wrong with the script. Without shell variables is working ...
    Here is the excerpt:
    line=`sar -u 2 5 |tail -1`
    var_io=`echo "$line" | awk '{print $6}'`
    var_sys=`echo "$line" | awk '{print $5}'`
    var_user=`echo "$line" | awk '{print $3}'`
    var_idle=`echo "$line" | awk '{print $7}'`
    sqlplus $ora_access <<EOF
    select sysdate, a.hostid, a.inst_num, b.count1, c.count2, $var_user,$var_sys,$var_idle,$var_io
    from dual ,
    (select HOST_NAME hostid, INSTANCE_NUMBER inst_num from v$instance ) a,
    (select count(sid) count1 from v$session where username is not null) b,
    (select count(*) count2 from apps.fnd_concurrent_requests where phase_code ='R') c;
    EOF
    [b]Error Message:
    SQL*Plus: Release 10.2.0.2.0 - Production on Thu Apr 10 02:20:53 2008
    Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
    With the Partitioning, OLAP and Data Mining options
    SQL> 2 3 4 5 (select count(sid) count1 from v where username is not null) b,
    ERROR at line 4:
    ORA-04044: procedure, function, package, or type is not allowed here

    Thanks a lot for instant reply. It worked!!
    I forgot to use the escape character, but the error
    message was not revealing anything :-(If you look carefully you could have spotted it:
    SQL> 2 3 4 5 (select count(sid) count1 from[b] v where username is not null) b,

  • Snapshot too old ORA-01555 from select statement (discoverer)??

    Hi All
    Am I loosing the plot .. but we have a select statement run from discoverer which is causing the famous snapshot too old error.
    My understanding is that undo is generated from select/insert/update.
    So why is the following discoverer Select statement causing the error?
    from alert
    ORA-01555 caused by SQL statement below (SQL ID: gk0wxgqmx66sh, Query Duration=3866 sec, SCN: 0x001e.089cf3f9):
    SELECT  ( ROUND(( TO_DATE(SYSDATE)-o101038.HIRE_DATE )/365,2) ) as
      "  bla bla
    ORDER BY o101020.SUB_ORGANIZATION_NAME ASC
    Thanks in Advance

    simon.9999 wrote:
    Hi All
    Am I loosing the plot .. but we have a select statement run from discoverer which is causing the famous snapshot too old error.
    My understanding is that undo is generated from select/insert/update.
    So why is the following discoverer Select statement causing the error?
    from alert
    ORA-01555 caused by SQL statement below (SQL ID: gk0wxgqmx66sh, Query Duration=3866 sec, SCN: 0x001e.089cf3f9):
    SELECT  ( ROUND(( TO_DATE(SYSDATE)-o101038.HIRE_DATE )/365,2) ) as
      "  bla bla
    ORDER BY o101020.SUB_ORGANIZATION_NAME ASC
    Thanks in Advance
    The SELECT statement is the victim.
    Some session is doing DML against the same table against which the SELECT occurs & is likely doing COMMIT inside a LOOP.

  • ORA-01555 in Oracle 9.2.0.5

    we running Baan IV on a Oracle 9.2.0.5 database.
    Sometimes we got an error in the alert log file like:
    ORA-01555 caused by SQL statement below (Query Duration=60440 sec, SCN: 0x0001.a452e41c)
    Now, i want to know which user with which sql-statement (if possible) get this error.
    So this error is mostly at night, i try to write a trigger to get this information.
    But i don't know how to do this.
    Can somebody help me ?
    T.Kindermann

    Now, i want to know which user with which sql-statement (if possible) get this error.If you see the alert log file, you will also have the sql that caused ora-1555 errors along with time stamp.
    If you are using AUM (automatic Undo management), tune your undo parameters and tablespace using v$undostat. If you are using MUM (manual rollback segment), create a big rollback segment and assign to this transaction.
    Jaffar

  • ORA-01555 thrown at DB Startup

    Hello guys :)
    We have the following situation on one of our test DBs. We are trying to open a DB after restore from hot backup with no archivelogs. The situation is rather interesting, since we don't have a prerequisite for 100% data consistency. We just need to open up the DB after the restore.
    The restore finishes and now comes the tricky part. When we try to open the DB it throws the obvious "You need more recovery" error. OK, we startup nomount and recreate the controlfile. Still you need more DB recovery. OK, next option was putting this line in the init file
    ALLOWRESETLOGS_CORRUPTION=TRUE
    We can now open resetlogs! Yes, but no!
    alter database open resetlogs; crashes with ORA-01555
    Tue Aug 17 22:11:17 2010
    ORA-01555 caused by SQL statement below (SQL ID: 4krwuz0ctqxdt, Query Duration=1282072277 sec, SCN: 0x0012.8c929e0c):
    Tue Aug 17 22:11:17 2010
    select ctime, mtime, stime from obj$ where obj# = :1
    Tue Aug 17 22:11:17 2010
    Errors in file /appli/oracle/admin/???/udump/???_ora_3141812.trc:
    ORA-00704: bootstrap process failure
    ORA-00704: bootstrap process failure
    ORA-00604: error occurred at recursive SQL level 1
    ORA-01555: snapshot too old: rollback segment number 19 with name "_SYSSMU19$" too small
    Error 704 happened during db open, shutting down database
    USER: terminating instance due to error 704
    Instance terminated by USER, pid = 3141812
    ORA-1092 signalled during: alter database open resetlogs...
    So, next guess is to put this in the init file:
    corruptedrollback_segments=('_SYSSMU19$')
    and try to open up again.
    Have you ever tried such an approach and succeeded? Any suggestions and comments are greatly appreciated :)

    Beco wrote:
    Do you think putting the rollback segment offline and after that dropping it may help?
    It is just a suggestion, but if does not work I will have to restore the DB again :) So any thoughts?Dear Beco ,I can not say exactly what happen after implement offlinerollback_segments parameter.
    I before say there are two problem.When recovery process oracle need request(need get information of undo) undo tablespace.But undo segment actually corrupted therefore you got this error.To testing purpose you need on ly apply this one parameter(hidden) only one(in this case).You say that is test db then create new test db and shutdown abort then move online log to other location.Then you can implement ALLOWRESETLOGS_CORRUPTION.But never implement these parameters production database.

  • ORA-01555 & ORA-00704

    After restoring a cold backup I tried to start the DB and got the below mentioned error,
    ERROR at line 1:
    ORA-01092: ORACLE instance terminated. Disconnection forced
    In alert log,
    ORA-00704: bootstrap process failure
    ORA-00704: bootstrap process failure
    ORA-00604: error occurred at recursive SQL level 1
    ORA-01555: snapshot too old: rollback segment number 7 with name "_SYSSMU7$" too small
    Error 704 happened during db open, shutting down database
    USER: terminating instance due to error 704
    Instance terminated by USER, pid = 21163
    ORA-1092 signalled during: Alter database open...
    Please help. We do not have archival log backup and also backup files.

    I tried that option, still having the same problem.
    Mon Jan 2 23:04:08 2012
    alter database open resetlogs
    Mon Jan 2 23:04:08 2012
    RESETLOGS is being done without consistancy checks. This may result
    in a corrupted database. The database should be recreated.
    RESETLOGS after incomplete recovery UNTIL CHANGE 47645958449
    Resetting resetlogs activation ID 2847169495 (0xa9b45bd7)
    Mon Jan 2 23:04:37 2012
    Online log /stage2/donotdelete/Cold_untar_P2P/PSP2PATW/log02/log03a.dbf: Thread 1 Group 3 was previously cleared
    Online log /stage2/donotdelete/Cold_untar_P2P/PSP2PATW/log03/log03b.dbf: Thread 1 Group 3 was previously cleared
    Mon Jan 2 23:04:38 2012
    Setting recovery target incarnation to 3
    Mon Jan 2 23:04:39 2012
    Assigning activation ID 2847160009 (0xa9b436c9)
    Thread 1 opened at log sequence 1
    Current log# 1 seq# 1 mem# 0: /stage2/donotdelete/Cold_untar_P2P/PSP2PATW/log02/log01a.dbf
    Current log# 1 seq# 1 mem# 1: /stage2/donotdelete/Cold_untar_P2P/PSP2PATW/log03/log01b.dbf
    Successful open of redo thread 1
    Mon Jan 2 23:04:39 2012
    MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
    Mon Jan 2 23:04:39 2012
    SMON: enabling cache recovery
    Mon Jan 2 23:04:39 2012
    ORA-01555 caused by SQL statement below (SQL ID: 4krwuz0ctqxdt, SCN: 0x000b.17eba136):
    Mon Jan 2 23:04:39 2012
    select ctime, mtime, stime from obj$ where obj# = :1
    Mon Jan 2 23:04:39 2012
    Errors in file /usr/oracle/admin/RECOVER/udump/recover_ora_22114.trc:
    ORA-00704: bootstrap process failure
    ORA-00704: bootstrap process failure
    ORA-00604: error occurred at recursive SQL level 1
    ORA-01555: snapshot too old: rollback segment number 7 with name "_SYSSMU7$" too small
    Error 704 happened during db open, shutting down database
    USER: terminating instance due to error 704
    Instance terminated by USER, pid = 22114
    ORA-1092 signalled during: alter database open resetlogs...

  • How could I find the SQL statement who get this message ?

    ORA-01555 caused by SQL statement below (Query Duration=11191 sec, SCN: 0x0854.723b9c32)
    ... How could I find the SQL statement who got this message ?
    Thanks, Paul

    ORA-01555 means that the UNDO/ROLLBACK space is not large enough.
    This occurs because the SELECT statement is attempting to read the UNDO, but the UNDO has been released (transactions have committed or rolled back) and reused.
    The following are SOME of the reasons I have seen this to occur:
    1) Updates in a loop, with commits happening in the same loop
    - this will mark the UNDO available quickly and quickly reuse it. Then when the SELECT wants to rebuild a block, the UNDO used to rebuild the block has been reused (solution, make the UNDO bigger)
    2) A SELECT cursor used to control a loop in which updates are performed, and a 'done' flag is marked against the current cursor record, and commits are performed at the end of each loop, prior to fetching the next record
    - same problem as above, but it hits the current process. Same solution
    3) A 'month end' activity spike occurs, and all sorts of transactions create updates. There is a report that reports the activity - amusingly it needs to start at the beginning of all the work and updates periodically by doing a huge SELECT up front. This is then used to drive a loop which attempts to get information from the various transactions that have been updated and committed. After a while, the SELECT gets an ORA-01555
    - same problem as above and same solution. Get a bigger UNDO segment.
    You say this only happens once a month. That should give a hint.
    I wouldn't bother with which SELECT statement, as much as which APPLICATIONs are being run when it happens.
    One way around this - use 10g and set the guaranteed retention period. All sorts of other things will break, by no more 1555. <g>

  • [9.2.0.4.0] ORA-01555, how to get full text query?

    Hi all,
    my db version is 9.2.0.4.0.
    In alert log i found somehing like:
    ORA-01555 caused by SQL statement below (Query Duration=3429 sec, SCN: 0x0657.4e6b7e0c):
    Wed Jan 16 17:33:43 2008
    SELECT
          T1.CONFLICT_ID,
          T1.LAST_UPD,
          T1.CREATED,How can I get the full query?
    thanks a lot
    aldo

    If you can get the sql_id then use below query to find full text.
    SELECT
    SUBSTR(SQL_TEXT, 1 + (i - 1) * 80, 80) SQL_TEXT
    FROM
    DBA_HIST_SQLTEXT HST,
    (SELECT ROWNUM I FROM DBA_HIST_SQLTEXT WHERE ROWNUM <=
    60)
    WHERE
    HST.SQL_ID = '&SQL_ID'
    Rergards
    Jafar

  • ORA-01555 when UNDO Management is Auto

    Hi,
    I am using Oracle 10g 10.2.0.3 on linux 64 bit
    My UNDO_MANAGEMENT is AUTO and Tablespace size is Auto
    Undo_retention=15
    Today morning, I have received following error in Alert log
    ORA-01555 caused by SQL statement below (SQL ID: 9yfaam0vn51b5, Query Duration=1257324485 sec, SCN: 0x0000.084ad6ea):
    EM is showing following
    Snapshot Too Old Error detected: SQL ID 9yfaam0vn51b5, Snapshot SCN 0x0000.084ad6ea, Recent SCN 0x0000.084e39df, Undo Tablespace UNDOTBS1, Current Undo Retention 943.
    How dio i find that which query created a problem as SQL ID: 9yfaam0vn51b5 is not in table v$sql
    Do i need to do anything or Oracle will take care of UNDO?
    Regards

    a mock up
    SQL> select max(maxquerylen)
    2            from v$undostat;
    MAX(MAXQUERYLEN)
    62057
    SQL> show parameter undo
    NAME                                 TYPE        VALUE
    undo_management                      string      AUTO
    undo_retention                       integer     25000
    undo_tablespace                      string      UNDOTBS1
    SQL> select (62057/60)/60 query,(25000/60)/60 retention
      2    from dual
      3  /
         QUERY  RETENTION
    17.2380556 6.94444444Above query executing tenure is 17 hours while undo retention is approximate 7 hours,either change retention period to 20% extra with yours query execution tenure and then check yours query again.
    at least set undo retention to 75000,also better approach to tune query why its too taking so much time?
    Khurram

  • ORA-01555 in flashback

    Hello to all
    My database has bigfile undo tablespace that is autoextended and is retention guarantee
    and my disk has enough space
    undo_retention is equal 1800 when I execute
    select *
    from mdb.trde VERSIONS BETWEEN TIMESTAMP
    to_timestamp('08/11/2008 22:01:00','dd/mm/yyyy hh24:mi:ss') and
    to_timestamp('08/11/2008 22:02:00','dd/mm/yyyy hh24:mi:ss');
    I recieve ora-30052 error when i increase undo_retention to 172800 the query
    executes fine
    but while undo_retention=172800 I execute
    select count(*)
    from mdb.trde VERSIONS BETWEEN TIMESTAMP
    to_timestamp('08/11/2008 22:01:00','dd/mm/yyyy hh24:mi:ss') and
    to_timestamp('08/11/2008 22:02:00','dd/mm/yyyy hh24:mi:ss');
    I recieve ORA-01555 error, even I set undo_retention=2147483648 I recieve that error too
    I expect since the undo tablespace is autoextended and retention quarantee, it increased and I don't
    recieve ORA-01555 but it don't happened
    do you know what is problem?
    thanks
    Edited by: ARKH on Nov 9, 2008 3:12 AM

    Hi
    response to Aman
    Undo_retention is equal 172800 it's 48 hour my table has just 350163 record and that query is simple
    I expect that query complete in very short time
    don't oracle adjust Undo_retention when undo tablespace is autoextended
    and in alert i found it :
    Sun Nov 9 14:16:47 2008
    ORA-01555 caused by SQL statement below (SQL ID: b2gr2cx5acptt, Query Duration=0 sec, SCN: 0x0000.0e3e3068):
    Sun Nov 9 14:16:47 2008
    select count(*)
    from mdb.trde VERSIONS BETWEEN TIMESTAMP
    to_timestamp('08/11/2008 22:01:00','dd/mm/yyyy hh24:mi:ss') and
    to_timestamp('08/11/2008 22:02:00','dd/mm/yyyy hh24:mi:ss')
    Sun Nov 9 14:17:52 2008
    ALTER SYSTEM SET undo_retention=8388608 SCOPE=BOTH;
    Sun Nov 9 14:18:18 2008
    Thread 1 advanced to log sequence 406
    Current log# 3 seq# 406 mem# 0: /u01/app/oracle/oradata/tehrep/redo03.log
    Sun Nov 9 14:21:31 2008
    ALTER SYSTEM SET undo_retention=2147483647 SCOPE=BOTH;
    Sun Nov 9 14:21:38 2008
    ORA-01555 caused by SQL statement below (SQL ID: b2gr2cx5acptt, Query Duration=2 sec, SCN: 0x0000.0e3e3068):
    Sun Nov 9 14:21:38 2008
    select count(*)
    from mdb.trde VERSIONS BETWEEN TIMESTAMP
    to_timestamp('08/11/2008 22:01:00','dd/mm/yyyy hh24:mi:ss') and
    to_timestamp('08/11/2008 22:02:00','dd/mm/yyyy hh24:mi:ss')
    Sun Nov 9 14:27:43 2008
    ORA-01555 caused by SQL statement below (SQL ID: 56fdpt2h9nn33, Query Duration=0 sec, SCN: 0x0000.0e3dc5d9):
    Sun Nov 9 14:27:43 2008
    select count(*)
    from mdb.trde AS OF TIMESTAMP to_timestamp('08/11/2008 21:00:00','dd/mm/yyyy hh24:mi:ss')
    Sun Nov 9 14:37:49 2008
    Read of flashback database logfile 152, block 1958 found corrupted data.
    See trace file for more information.
    Reread of flashback database logfile 152, block 1958 found valid data.
    Sun Nov 9 14:49:42 2008
    Starting background process EMN0
    EMN0 started with pid=22, OS id=7975
    Sun Nov 9 14:49:46 2008
    Shutting down instance: further logons disabled
    Sun Nov 9 14:49:50 2008
    Stopping background process QMNC
    Sun Nov 9 14:49:50 2008
    Stopping background process CJQ0
    Sun Nov 9 14:49:52 2008
    Stopping background process MMNL
    Sun Nov 9 14:49:53 2008

  • Pass ORG_ID as sql statement for parameter in request set

    We are in a multi-org environment. We are running the request PRC: Generate Draft Revenue for a Single Project as part of the request set. We want the request to automatically fill in the open pa period as the accrue through date. We have been using the SQL Statement below as the value for the accrue through date parameter.
    select end_date
    from pa_periods_all
    where status = 'O'
    and current_pa_period_flag = 'Y'
    Unfortunately that does not limit to a specific company. We a company that still have DEC-05 while another has an open period of JAN-06. This is causing the program fits. How do I pass the org_id to the request? [in beginners terms please]
    Thanks.
    Anne

    No idea what might be wroong without more info...
    Do some output. Test the ${params.id} variable passed to the second jsp. If that is correct, then error is in the select statement or display of jsp2. If it is correct the error comes from jsp1.
    If I have to guess, then I would say the error comes from JSP1, and the ${row.vac_id} should only be called once. In which case I would do something like this:
    //in jsp 1
                <c:forEach var="row" items="${results.rows}"  varStatus="counter"  >
                    <c:set var="vac_id" value="${row.vac_id}" scope="page"/>
                    <tr>
                        <td>${vac_id}</td>
                        <td><a href="vacancydetails.jsp?id=${vac_id}">More</a></td>But that is a guess only...
    Errr... Hold on to that as reference, but the it is entirely likely that I misspelled ${params.id} It may be ${param.id} I forget and away from my machine right now...

  • How do I use SQL statements to perform calculations with form fields????

    Please help!!! I don't know how to use a SQL statement within my APEX form......
    My form is below. The user will enter the values in the form. Click on Submit. Then we need to run a SQL select statement with those values.
    Our form looks like this:
    Start_Date ____________
    Per_Period ____________
    Period ____________
    [Submit Button]
    The user will enter these 3 values in the form.
    This is an example of an user providing the values:
    Start_Date 03/14/08_______
    Per_Period $200.00________
    Period 4____________
    [Submit Button]
    Then they will click the Submit Button.
    The SQL statement (BELOW) returns output based on the users selections:
    START_DATE PER_PERIOD PERIOD
    14-MAR-2008 00:00 200 Week 1 of 4
    21-MAR-2008 00:00 200 Week 2 of 4
    28-MAR-2008 00:00 200 Week 3 of 4
    04-APR-2008 00:00 200 Week 4 of 4
    Total 800
    This is the full text of the SQL that makes the output above:
    with criteria as (select to_date('03/14/08', 'mm/dd/rr') as start_date,
    4 as periods,
    'Week' as period,
    200 per_period from dual),
    periods as (select 'Week' period, 7 days, 0 months from dual
    union all select 'BiWeek', 14, 0 from dual
    union all select 'Month', 0, 1 from dual
    union all select 'ByMonth', 0, 2 from dual
    union all select 'Quarter', 0, 3 from dual
    union all select 'Year', 0 , 12 from dual
    t1 as (
    select add_months(start_date,months*(level-1))+days*(level-1) start_date,
    per_period,
    c.period||' '||level||' of '||c.periods period
    from criteria c join periods p on c.period = p.period
    connect by level <= periods)
    select case grouping(start_date)
    when 1 then 'Total'
    else to_char(start_date)
    end start_date,
    sum(per_period) per_period,
    period
    from t1
    group by rollup ((start_date, period))
    THANKS VERY MUCH!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    You're just doing a parameterized report, where the input fields are your parameters.
    Check out the Advanced Tutorial titled Parameterized Report here:
    http://download.oracle.com/docs/cd/E10513_01/doc/appdev.310/e10497/rprt_query.htm#BGBEEBJA
    Good luck,
    Stew

  • Help needed in SQL statement

    Hi,
    From the SQL statement below, i need help in explaining what does the line "WHERE ( lims_sys.result.result_template_id = lims_sys.result_template_limit.result_template_id (+))" do?
    This statement was written by a vendor and now i have problem displaying some new data. Only a portion of what i need is displayed.
    SELECT "LIMS_SYS"."RESULT"."DESCRIPTION",
    "LIMS_SYS"."RESULT_TEMPLATE_LIMIT"."NUMERIC_LIMIT",
    "LIMS_SYS"."RESULT"."FORMATTED_RESULT",
    "LIMS_SYS"."RESULT"."CONCLUSION",
    "LIMS_SYS"."RESULT_USER"."U_RESULT_SEQUENCE" ,
    "LIMS_SYS"."RESULT"."RESULT_ID"
    FROM "LIMS_SYS"."RESULT",
    "LIMS_SYS"."RESULT_TEMPLATE_LIMIT",
    "LIMS_SYS"."RESULT_USER",
    "LIMS_SYS"."ALIQUOT",
    "LIMS_SYS"."SAMPLE",
    "LIMS_SYS"."SDG",
    "LIMS_SYS"."TEST"
    WHERE ( lims_sys.result.result_template_id = lims_sys.result_template_limit.result_template_id (+)) and
    ( "LIMS_SYS"."RESULT"."RESULT_ID" = "LIMS_SYS"."RESULT_USER"."RESULT_ID" ) and
    ( "LIMS_SYS"."SDG"."SDG_ID" = "LIMS_SYS"."SAMPLE"."SDG_ID" ) and
    ( "LIMS_SYS"."SAMPLE"."SAMPLE_ID" = "LIMS_SYS"."ALIQUOT"."SAMPLE_ID" ) and
    ( "LIMS_SYS"."ALIQUOT"."ALIQUOT_ID" = "LIMS_SYS"."TEST"."ALIQUOT_ID" ) and
    ( "LIMS_SYS"."TEST"."TEST_ID" = "LIMS_SYS"."RESULT"."TEST_ID" ) and
    ( ( LIMS_SYS."SDG"."SDG_ID" = :sdg_id ) AND
    ( LIMS_SYS."RESULT"."STATUS" <> 'X' ) AND
    ( LIMS_SYS."RESULT"."REPORTED" = 'T' ) AND
    ( LIMS_SYS."RESULT_USER"."U_RESULT_CATEGORY" in ( 'Metal' , 'Mean Metal', 'Range Metal')) )
    Thanks for all your help.

    Hi,
    After WHERE .......... is indicates an OUTER Join condition.
    In this type of join, system retrieves the data for matched and
    as well as unmatched.
    Example:
    EMP table have a column DEPTNO with the data 10, 20, 30 (total rows=14)
    DEPT table have a column DEPTNO with the data 10, 20, 30, 40, 50 (total rows=5)
    If the WHERE clause contained EMP.DEPTNO(+) = DEPT.DEPTNO
    then the output contain the data relative to 10, 20, 30, 40, 50 (total rows = 16)
    i.e. 14 rows (with matching data) and 2 rows (with unmatching data)
    Regards,
    Sailaja

Maybe you are looking for