Preformance tuning
Hi All,
Could you please tell me why this query is taking more time in a package where it is define under a item procedure, but when I not using this in my package which is a outbound taking data from oracle to staging table, this query execute fast and in 40 min I am getting more then 3 lakh+ records in the staging table but when I am include below code it taking more the 12 hours to fatch the records from oracle to staging table. please help how to optimize this query as I have created indexs for all the table.
SELECT distinct substr(TRIM(fds.short_text),instr(fds.short_text,'Rev:',1)+5,instr(fds.short_text,'UOM:',1)-instr(fds.short_text,'Rev:',1)-5)
INTO v_Drawing_Rev
FROM fnd_documents_tl fdt
,FND_DOCUMENTS_SHORT_TEXT fds
,fnd_attached_documents fad
WHERE 1=1
--AND (fdt.MEDIA_ID=14173223)
AND fdt.language = 'US'
AND fdt.MEDIA_ID = fds.MEDIA_ID
AND fad.pk2_value = r_get_data(i).inventory_item_id --to_char(msi.inventory_item_id)
AND fad.pk1_value = (SELECT to_char(organization_id)
FROM org_organization_definitions
WHERE organization_code = 'FLS')
AND fad.document_id = fdt.document_id
AND 'MTL_SYSTEM_ITEMS' = fad.ENTITY_NAME
AND ROWNUM =1;
EXCEPTION
WHEN OTHERS THEN
v_Drawing_Rev := NULL;
END;
}
Hi,
Please post the application release along with the database version and OS.
Do you run "Gather Schema Statistics" concurrent program on regular basis?
Please generate the explain plan and post it here -- See the links referenced in this thread for details.
Regarding Performance Tuning
Regarding Performance Tuning
Thanks,
Hussein
Similar Messages
-
Greeting all,
Using: Oracle 10.1.0.5.0
I seem to be having a bit of a problem wiht the length of time my queries take to run.
I'm reading the Preformance and Tuning manual, but am not having much luck ( making next to no since)
I ran the Hit/Miss ratio queries I found that were off linked in another post and they seem to be fine, but over the past month or two, queries that used to take 2 - 3 minutes to run are now taking 15 - 20 minutes. I've tried playing around with some hints, but they dont seem to do anything to help speed up the process. Any thoughts or idea would be muchly appericated.
-JosephDid you do a sql trace on the queries and used tkprof to analyze what is taking so long?
http://download-east.oracle.com/docs/cd/B10501_01/server.920/a96533/sqltrace.htm#1018 -
Preformance tuning,its urgent,i would appreciate ur help
hi
I have some problem with performance tuning
SELECT stlty
stlnr
stlkn
stpoz
idnrk
FROM stpo
INTO TABLE t_detail
FOR ALL ENTRIES IN t_header
*MOD04{
WHERE stlnr eq t_header-stlnr
AND postp EQ p_postp
AND lkenz NE c_pos
AND stlty NE c_null.
WHERE
stlty IN s_stlty
AND stlnr EQ t_header-stlnr
AND postp EQ p_postp
AND lkenz EQ space.
*}MOD04
*}MOD03
IF sy-subrc <> 0. "t_detail[] IS INITIAL.
MESSAGE s045. "No Data found for the given selection criteria
LEAVE LIST-PROCESSING.
ELSE.
SORT t_detail BY stlnr.
ENDIF. "t_detail[] IS INITIAL.
iam getting some problem in performance tuning,its displaying as fetch request as 65% from stpo
i have to use some other table other than stpo,there is no other table than stpo,how to do it.even i cheked the indexes used as well
i would be extremely thankfull for ur valuable answersHi,
chk this you might get some idea...
Performance Analysis
Interpreting and correcting performance violations
PURPOSE
Each and every rule is outlined that results in a performance violation and explained in detail as to what to avoid while coding a program and correcting such performance violations if they exist in the code.
It is a general practice to use Select * from <database> This statement populates all the values of the structure in the database.
The effect is many fold:-
It increases the time to retrieve data from database
There is large amount of unused data in memory
It increases the processing time from work area or internal tables
It is always a good practice to retrieve only the required fields. Always use the syntax Select f1 f2 fn from <database>
e.g. Do not use the following statement:-
Data: i_mara like mara occurs 0 with header line.
Data: i_marc like marc occurs 0 with header line.
Select * from mara
Into table i_mara
Where matnr in s_matnr.
Select * from marc
Into table i_marc
For all entries in i_mara
Where matnr eq i_mara-matnr.
Instead use the following statement:-
Data: begin of i_mara occurs 0,
Matnr like mara-matnr,
End of i_mara.
Data: begin of i_marc occurs 0,
Matnr like marc-matnr,
Werks like marc-werks,
End of i_marc.
Select matnr from mara
Into table i_mara
Where matnr in s_matnr.
The objective here is to identify all select statements in the program where there is a possibility to restrict the data retrieval from database. It identifies all select statements, which do not use the where condition effectively. It is a good practice to restrict the amount of data as this reduces the data retrieval time, improves the processing time and occupies less memory. Always use as many conditions in the where clause as possible.
e.g. Do not use the following statement:-
Select matnr from mara
Into table i_mara.
Loop at i_mara.
If i_mara-matnr+0(1) A.
Delete i_mara index sy-tabix.
Endif.
Endloop.
Instead use the following statement:-
Select matnr from mara
Into table i_mara
Where matnr like A%.
Limit the access to database as far as possible. Accessing the same table multiple times increases the load on the database and may affect other programs accessing the same table. It is a good practice to retrieve all the relevant data from database in a single select statement into an internal table. All the processing should be done with this internal table.
e.g. Do not use the following statement:-
Select vbeln vkorg from vbak
Into table i_vbak
Where vbeln in s_vbeln.
Loop at i_vbak.
Case i_vbak-vkorg.
When IJI1.
Select hkunnr from kunh
Into table i_kunh
Where vkorg = IJI1.
When IJI2.
Select hkunnr from kunh
Into table i_kunh
Where vkorg = IJI2.
When IJI3.
Select hkunnr from kunh
Into table i_kunh
Where vkorg = IJI3.
When IJI4.
Select hkunnr from kunh
Into table i_kunh
Where vkorg = IJI4.
Endcase.
Endloop.
Instead use the following statement:-
Select vbeln vkorg from vbak
Into table i_vbak
Where vbeln in s_vbeln.
Select hkunnr from kunh
Into table i_kunh
Where vkorg in (IJI1,IJI2,IJI3,IJI4).
Loop at i_vbak.
Case i_vvbak-vkorg.
When IJI1.
Read table i_kunh where vkorg = i_vbak-vkorg.
When IJI2.
Read table i_kunh where vkorg = i_vbak-vkorg.
When IJI3.
Read table i_kunh where vkorg = i_vbak-vkorg.
When IJI4.
Read table i_kunh where vkorg = i_vbak-vkorg.
Endcase.
Endloop.
When the size of the record or the number of records in the internal table is large, doing a linear search is time consuming. It is always a good practice to search a record by binary search (Always Sort the table before doing a binary search). The difference is felt especially in the production environment where the live data is usually huge. As of release 4.0 there are new types of internal tables like SORTED and HASHED which can be effectively used to further reduce the search time and processing time.
e.g. Do not use the following statement:-
Select matnr from mara
Into table i_mara
Where matnr in s_matnr.
Select matnr werks from marc
Into table i_marc
For all entries in i_mara
Where matnr eq i_mara-matnr.
Loop at I_mara.
Read table i_marc with key matnr = I_mara-matnr.
Endloop.
Instead use the following statement:-
Select matnr from mara
Into table i_mara
Where matnr in s_matnr.
Select matnr werks from marc
Into table i_marc
For all entries in i_mara
Where matnr eq i_mara-matnr.
Sort I_marc by matnr.
Loop at I_mara.
Read table i_marc with key
matnr = I_mara-matnr
binary search.
Endloop.
It is a good practice to search records from internal tables using a binary search. But extreme caution needs to be applied as it may either increase the time or may cause run time termination if it is not sorted.
Always the sort the internal table by the required keys before performing a binary search.
e.g. Do not use the following statement:-
Select matnr from mara
Into table i_mara
Where matnr in s_matnr.
Select matnr werks from marc
Into table i_marc
For all entries in i_mara
Where matnr eq i_mara-matnr.
Loop at I_mara.
Read table i_marc with key matnr = I_mara-matnr binary search.
Endloop.
Instead use the following statement:-
Select matnr from mara
Into table i_mara
Where matnr in s_matnr.
Select matnr werks from marc
Into table i_marc
For all entries in i_mara
Where matnr eq i_mara-matnr.
Sort I_marc by matnr.
Loop at I_mara.
Read table i_marc with key
matnr = I_mara-matnr
binary search.
Endloop.
It is a general practice to use Read table <itab> This statement populates all the values of the structure in the workarea.
The effect is many fold:-
It increases the time to retrieve data from internal table
There is large amount of unused data in work area
It increases the processing time from work area later
It is always a good practice to retrieve only the required fields. Always use the syntax Read table <itab> transporting f1 f2 FN If just a check is being performed for existence of a record use Read table <itab> transporting no fields
e.g. Do not use the following statement:-
data: i_vbak like vbak occurs 0 with header line.
data: i_vbap like vbap occurs 0 with header line.
Loop at i_vbak.
read table i_vbap with key
vbeln = i_vbak-vbeln binary search.
If sy-subrc = 0 and i_vbap-posnr = 00010.
endif.
Endloop.
Instead use the following statement:-
data: i_vbak like vbak occurs 0 with header line.
data: i_vbap like vbap occurs 0 with header line.
Loop at i_vbak.
read table i_vbap transporting posnr with key
vbeln = i_vbak-vbeln binary search.
If sy-subrc = 0 and i_vbap-posnr = 00010.
endif.
Endloop.
There are many ways in which a select statement can be optimized. Effective use of primary and secondary indexes is one of them. Very little attention is paid especially to the secondary indexes. The following points should be noted before writing a select statement:-
Always use the fields in the where clause in the same order as the keys in the database table
Define the secondary indexes in the database for the fields which are most frequently used in the programs
Always try to use the best possible secondary index in the where clause if it exists
Do not have many secondary indexes defined for a table
Use as many keys both primary and secondary as possible to optimize data retrieval
As of release 4.5 it is now possible to define the secondary index in the where clause using %_HINT.
e.g. Do not use the following statement:-
Assuming a secondary index is defined on the field vkorg in table vbak
Select vbeln vkorg from vbak
Into table i_vbak
Where vbeln in s_vbeln.
Loop at i_vbak.
Case i_vbak-vkorg.
When IJI1.
When IJI2.
Endcase.
Endloop.
Instead use the following statement:-
Select vbeln vkorg from vbak
Into table i_vbak
Where vbeln in s_vbeln and
Vkorg in (IJI1,IJI2).
Loop at i_vbak.
Case i_vbak-vkorg.
When IJI1.
When IJI2.
Endcase.
Endloop.
This rule identifies all select statements in the program which use Select UP TO 1 ROWS It is a general practice to use this syntax to retrieve a single record from database table. If all the primary keys of a table are used in the where clause it is a good practice to use Select SINGLE
e.g. Do not use the following statement:-
select matnr up to 1 rows from mara
into mara-matnr
where matnr = itab-matnr.
Instead use the following statement:-
select single matnr from mara
into mara-matnr
where matnr = itab-matnr.
Table buffering is used to optimize data access from database. However if buffering is used on tables which are updated frequently, it has an adverse effect. The buffer area is updated at regular intervals by the system. If selection is done from this table before the buffer is updated the values are fetched first from the buffer and then from the database as the buffer is outdated. This increases the load on the system and also the processing time.
It is always a good practice to bypass buffer in the select statement for tables, which are buffered but are updated at regular frequently.
e.g. Do not use the following statement:-
select matnr from mara
into table i_mara
where matnr in s_matnr.
Instead use the following statement:-
select matnr bypassing buffer
from mara
into table i_mara
where matnr in s_matnr.
Most of the performance issues are related to database. It should be an inherent practice to reduce the access to database as far as possible and use it in the most optimal manner.
Just as in select statements, database updates also affect the performance. When records are to be inserted in database table do it in once. Populate the internal table completely, with which the records are to be inserted. Then update the table from the internal table instead of updating it for each record within the loop.
e.g. Do not use the following statement:-
Loop at i_mara.
Insert into mara values i_mara.
Endloop.
Instead use the following statement:-
Loop at i_mara.
Modify i_mara.
Endloop.
Insert mara from table i_mara.
Read statement fetches the record from the internal table using implicit key or explicit key. When no key or index is specified for the search criteria the key in the WA of the internal table is used implicitly for searching. SAP recommends explicit search criteria. Here the key or index is explicitly specified which is used for searching the records from internal table. This is faster than an implicit search.
e.g. Do not use the following statement:-
Loop at i_mara.
i_marc-matnr = i_mara-matnr.
read table i_marc.
Endloop.
Instead use the following statement:-
Loop at i_mara.
read table i_marc with key
matnr = i_mara-matnr.
Endloop.
When an internal table is sorted without specifying the keys the default is used. This may affect he performance. Always specify the keys when sorting.
e.g. Do not use the following statement:-
Data : begin of i_mara occurs 0,
ersda like mara-ersda,
ernam like mara-ernam,
laeda like mara-laeda,
aenam like mara-aenam,
vpsta like mara-vpsta,
End of i_mara.
Sort i_mara.
Loop at i_mara.
Endloop.
Instead use the following statement:-
Data : begin of i_mara occurs 0,
ersda like mara-ersda,
ernam like mara-ernam,
laeda like mara-laeda,
aenam like mara-aenam,
vpsta like mara-vpsta,
End of i_mara.
Sort i_mara by matnr aenam.
Loop at i_mara.
Endloop.
Whenever values need to be passed in a subroutine have type declarations assigned to the formal parameters. If no specific type declaration is possible then use TYPE ANY. This improves the performance. It is also recommended by SAP and can be noticed during extended program check (EPC) for the program.
e.g. Do not use the following statement:-
perform type_test using p_var1 p_var2 p_var3.
form type_test using p_var1 p_var2 p_var3.
endform.
Instead use the following statement:-
perform type_test using p_var1 p_var2 p_var3.
form type_test using p_var1 type c
p_var2 type any
p_var3 like mara-matnr.
endform.
This is similar to type declarations for subroutines explained in Rule 13. Except that type declarations need to be maintained for field-symbols. More help is provided by SAP under TYPE ASSIGNMENTS.
e.g. Do not use the following statement:-
field-symbols: <fs1>, <fs2>, <fs3>.
Instead use the following statement:-
field-symbols: <fs1> type c,
<fs2> like mara-matnr,
<fs3> like marc-werks.
The Do Enddo loop does not have a terminating condition. This has to be handled explicitly within the loop construct. This has some affect on the performance. On the other hand While Endwhile loop has a condition to satisfy before entering the loop. Hence will improve the performance and is also safe to use.
e.g. Do not use the following statement:-
Do.
If count > 20.
Exit.
Endif.
Count = count + 1.
Enddo.
Instead use the following statement:-
While ( count < 20 ).
Endwhile.
Do not use the CHECK construct within Loop Endloop. The end condition for check statement varies with the type of loop structure. For example within loop endloop it moves to the next loop pass whereas in form endform it terminates the subroutine. Thus the outcome may not be as expected. It is always safe to use If Endif.
e.g. Do not use the following statement:-
Loop at i_mara.
Check i_mara-matnr = 121212
Endloop.
Instead use the following statement:-
Loop at i_mara.
If i_mara-matnr = 121212
Endif.
Endloop.
This rule is similar to rule 16 except that it is for Select Endselect statements. The affect is similar to that in loop endloop.
e.g. Do not use the following statement:-
Select matnr from mara
Into table i_mara.
Check i_mara-matnr = 121212
Endselect.
Instead use the following statement:-
Select matnr from mara
Into table i_mara.
If i_mara-matnr = 121212
Endif.
Endselect.
This feature is also available in SAP Tips & Tricks. As can be seen the time measured for the same logical units of code using if elseif endif is almost twice that of case endcase.
It is always advisable to use case endcase as far as possible.
e.g. Do not use the following statement:-
IF C1A = 'A'. WRITE '1'.
ELSEIF C1A = 'B'. WRITE '2'.
ELSEIF C1A = 'C'. WRITE '3'.
ELSEIF C1A = 'D'. WRITE '4'.
ELSEIF C1A = 'E'. WRITE '5'.
ELSEIF C1A = 'F'. WRITE '6'.
ELSEIF C1A = 'G'. WRITE '7'.
ELSEIF C1A = 'H'. WRITE '8'.
ENDIF.
Instead use the following statement:-
CASE C1A.
WHEN 'A'. WRITE '1'.
WHEN 'B'. WRITE '2'.
WHEN 'C'. WRITE '3'.
WHEN 'D'. WRITE '4'.
WHEN 'E'. WRITE '5'.
WHEN 'F'. WRITE '6'.
WHEN 'G'. WRITE '7'.
WHEN 'H'. WRITE '8'.
ENDCASE.
Sort by Clause should be used instead of Order by at database level especially in the cases where the number of records is less. When using Order by clause we need to ensure that it uses an index. This is not the case in sort by. Also the performance is significantly high for Sort by Clause especially for small number of records.
e.g. Do not use the following statement:-
SELECT * FROM SBOOK
WHERE
CARRID = 'LH ' AND
CONNID = '0400' AND
FLDATE = '19950228'
ORDER BY PRIMARY KEY.
ENDSELECT.
Instead use the following statement:-
SELECT * FROM SBOOK
WHERE
CARRID = 'LH ' AND
CONNID = '0400' AND
FLDATE = '19950228'
SORT BY PRIMARY KEY.
ENDSELECT.
It is observed that break points are hard coded in the program during testing. Some are soft break points some are hard coded and also user specific. These are left in the program during transports and cause production problems later. This rule helps you to identify all the hard coded break points that are left in the program.
This rule is self-explanatory. Hence no examples are provided. -
Hi
Working in oracle 9i AIX 5.3
I would like to calculate Buffer busy wait ratio
I knew the formula as
buffer busy waits/ logical reads
what would be the query agains this formula.
thanks
rangaHi;
Please see:
Question 1) i got warning about Parse to Execute Ratio,24,0397,2, (High parse to execute ratio), what is the cause of this? how can i solve?Troubleshooting and Diagnosing ORA-4031 Error [Video] [ID 396940.1]
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1594740500346667363
Question 2) which document should i read for understanding these informations?See below googling, you can see many good links on it
http://www.google.com.tr/#hl=tr&biw=1259&bih=793&q=preformance+tuning%2Boracle&aq=f&aqi=&aql=&oq=&fp=59bee11737e76a38
Question 3) i got 2 nodes RAC 11gr2. "sessions" parameter value is 1500, cursor is 400, processes 500... how can i optimize these values?Those are system parameter and you can modifiy them by observing your system by AWR,ASH etc..(also users error message)
http://oracleandunix.blogspot.com/2009/10/oracle-11gr2-database-parameters.html
Question 4) I didnt create any server pool. But my database server is working well. Why do i need server pool? What is the advantages of server pool technology?RAC Assurance Support Team: RAC and Oracle Clusterware Starter Kit and Best Practices (Generic) [ID 810394.1]
RAC: Frequently Asked Questions [ID 220970.1]
Regard
Helios -
RAR Web service violation limit setting does not seem to work
In RAR under config - preformance tuning one can configure the limit for violations of the webservice between RAR and CUP.
If I set this to 20000, 100000 or even 1.5 miillion I still get the message:
Risk analysis failed: EXCEPTION_FROM_THE_SERVICEViolations exceeds the threshold limit
Even though the CUP request only hold a very limited number of violations.
Does this setting require a server restart or a webservice restart before it works? Or is this a bug in AC 5.3 SP 11.2?
Edited by: S. Pados on Aug 12, 2010 10:45 AMThanks Sunny,
But info in the note is well known with us. We have set the parameter however it seems to be ignored as the user in CUP request has a low number of violations and we still get the error even though the threshold has a very high value. -
What r the steps to be taken before writing a query
Hi
What r the steps to be taken before writing a query
regdsFirst step is learn to write correctly more or less because in SQL you cannot write r inestead of are. Second step is read Oracle concepts manual (http://tahiti.oracle.com) to understand the basics of Oracle. And then continue with other docs like Preformance tuning guide, application developers guide etc. Probably then you can ask more precise question and others can provide more precise answers :)
-
can you give me the order for graphical,java,abap and xslt mappings in preformance point of view?
There are some unfortunate things about XI compared to other ESB EAI framework.
XI just use JAVA, J2EE and Web service technology for design and configuration phase. In run time ABAP engine is the main player which use J2EE engine as RFC destination to handle supporting work.
However other ESB EAI Engine such as Aqualogic, Websphere, Mule, TIBCO etc depend on JAVA as a core engine.
Regarding the view of a programmer who do not have a clue on the powe of JAVA and XSLT and at the same time have to depend on the burdon of some architectural flops in XI , it is nice to say that for the sake of goodness use ABAP mapping as much as possible for complicated mapping.
However provided that XI will one day use JAVA as a core engine and use JAVA technology as a main stream then XSLT and JAVA mapping can rock with even a 2 CPU production machine.
For example, I have a SAP Integration with 45 different plant system for a Telecom supply chain in USA where 2 instance of weblogic server with J2EE and JAVA can handle 35,000 master data changes (IDOCS) from SAP to all plants in 4 hours without breaking a single one. It took more than 3 days to load into the same SAP master data system using ABAP technologies and may be 60 CPU machines too.
If you know what is the power of XSLT, JAVA caching, power of JAVA POJOS, HEAP tuning and provided you have a right infrastructure supported by ESB EAI features such as transformation, translation, routing, then JAVA is the solution.
But if you are from a back ground of customization project, not much clue of software programming and dragged to certain believe then JAVA is not a solution.
I hope to see one day SAP platform use JAVA and J2EE technologies with its full power and keep the right steps SAP took with Netweaver platform.
Thanks -
Simple and reliable method to preform an OCR on a pdf? [SOLVED]
I have Acrobat at work which does a wonderful job preforming an OCR (optical character recognition) on scanned pdf files so that one can do keyword searching within the pdf. I have spent the past hour following-up various guides on the 'net at large which do not work for me. Can someone recommend a simple and reliable method to accomplish this?
Last edited by graysky (2014-03-30 13:50:34)I can second OCRFeeder. It can use different OCR engines, and the application doesn't hide the complexity of the options that these engines accept, so with a little fine tuning you should get reasonable results. For Latin text, that is. For non-Latin or mixed scripts, all FOSS engines are essentially useless (I've tried long and hard to get Japanese OCR to work).
To be honest, I myself only use Acrobat now because it's the only thing that produces consistently excellent results. For example, text selection will often not work smoothly because the FOSS tools don't group the text objects properly into lines or paragraphs. -
hello all
my one of query is returning result in 1-2 mins only for 1 lakh record but i am not sure if it showed me complete rows or not because when I an trying to get count of result ..its taking lot of time .when I am using this query on plsql code ..code is running slow so just wanted to confirm on query tuning point of view if its fine or not ..please look onto it and let me know if query is fine or not by explain plan .my oracle version is 11g
this is my query
SELECT ROWNUM , TRUNC(rownum/5000) + 20000 ,'FOR_UPDATE', sku_org.NAME ,
acct_promo_sku.src_num , acct_promo_sku.sub_type ,
promo_actual.sku_actual_pos
FROM siebel.s_src acct_promo_hdr,
siebel.s_src acct_title_format,
siebel.s_src acct_promo_sku,
siebel.s_src_x acct_promo_hdrx,
siebel.s_src_x acct_promo_skux,
siebel.s_prod_int prod,
siebel.s_bu promo_hdr_org,
siebel.s_bu sku_org,
siebelwb.stg_sbl_acct_promo_actuals2 promo_actual
WHERE acct_promo_hdr.sub_type = 'PLAN_ACCOUNT_PROMOTION'
AND acct_promo_hdr.row_id = acct_title_format.par_src_id
AND acct_title_format.sub_type = 'PLAN_ACCT_PROMOTION_CATEGORY'
AND acct_title_format.row_id = acct_promo_sku.par_src_id
AND acct_promo_sku.sub_type = 'PLAN_ACCOUNT_PROMOTION_PRODUCT'
AND acct_promo_hdr.row_id = acct_promo_hdrx.par_row_id
AND acct_promo_sku.row_id = acct_promo_skux.par_row_id(+)
AND acct_promo_sku.prod_id = prod.row_id
AND acct_promo_hdr.bu_id = promo_hdr_org.row_id
AND acct_promo_sku.bu_id = sku_org.row_id
AND prod.x_prod_material_num = promo_actual.material_number
and prod.X_PROD_SALES_ORG=promo_actual.sales_org
AND acct_promo_hdr.row_id = promo_actual.acct_promo_id
and nvl(acct_promo_hdr.pr_accnt_id,0)=nvl(promo_actual.acct_siebel_rowid,0)
and nvl(acct_promo_hdr.x_indirect_id,0)=nvl(promo_actual.indirect_acct_siebel_rowid,0)
AND promo_actual.load_date >= TRUNC(SYSDATE)
AND promo_actual.load_date < TRUNC(SYSDATE + 1)
explain plan
PLAN_TABLE_OUTPUT
Plan hash value: 3864590768
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 298 | 2300 (1)| 00:00:28 |
| 1 | COUNT | | | | | |
|* 2 | FILTER | | | | | |
| 3 | NESTED LOOPS | | | | | |
| 4 | NESTED LOOPS | | 1 | 298 | 2300 (1)| 00:00:28 |
| 5 | NESTED LOOPS OUTER | | 1 | 273 | 2298 (1)| 00:00:28 |
| 6 | NESTED LOOPS | | 1 | 263 | 2296 (1)| 00:00:28 |
| 7 | NESTED LOOPS | | 1 | 236 | 2295 (1)| 00:00:28 |
| 8 | NESTED LOOPS | | 1 | 165 | 2292 (1)| 00:00:28 |
| 9 | NESTED LOOPS | | 1 | 117 | 2289 (1)| 00:00:28 |
| 10 | NESTED LOOPS | | 1 | 109 | 2289 (1)| 00:00:28 |
| 11 | NESTED LOOPS | | 1 | 99 | 2287 (1)| 00:00:28 |
|* 12 | TABLE ACCESS FULL | STG_SBL_ACCT_PROMO_ACTUALS2 | 1 | 49 | 2285 (1)| 00:0
|* 13 | TABLE ACCESS BY INDEX ROWID| S_SRC | 1 | 50 | 2 (0)| 00:00:01 |
|* 14 | INDEX UNIQUE SCAN | S_SRC_P1 | 1 | | 1 (0)| 00:00:01 |
|* 15 | INDEX RANGE SCAN | S_SRC_X_U1 | 1 | 10 | 2 (0)| 00:00:01 |
|* 16 | INDEX UNIQUE SCAN | S_BU_P1 | 1 | 8 | 0 (0)| 00:00:01 |
|* 17 | TABLE ACCESS BY INDEX ROWID | S_SRC | 1 | 48 | 3 (0)| 00:00:01 |
|* 18 | INDEX RANGE SCAN | S_SRC_F2 | 2 | | 2 (0)| 00:00:01 |
|* 19 | TABLE ACCESS BY INDEX ROWID | S_SRC | 1 | 71 | 3 (0)| 00:00:01 |
|* 20 | INDEX RANGE SCAN | S_SRC_F2 | 2 | | 2 (0)| 00:00:01 |
| 21 | TABLE ACCESS BY INDEX ROWID | S_BU | 1 | 27 | 1 (0)| 00:00:01 |
|* 22 | INDEX UNIQUE SCAN | S_BU_P1 | 1 | | 0 (0)| 00:00:01 |
|* 23 | INDEX RANGE SCAN | S_SRC_X_U1 | 1 | 10 | 2 (0)| 00:00:01 |
|* 24 | INDEX UNIQUE SCAN | S_PROD_INT_P1 | 1 | | 1 (0)| 00:00:01 |
|* 25 | TABLE ACCESS BY INDEX ROWID | S_PROD_INT | 1 | 25 | 2 (0)| 00:00:
Predicate Information (identified by operation id):
2 - filter(TRUNC(SYSDATE@!)<TRUNC(SYSDATE@!+1))
12 - filter("PROMO_ACTUAL"."LOAD_DATE">=TRUNC(SYSDATE@!) AND "PROMO_ACTUAL"."LOAD_DATE"<TRUNC(SYSD
13 - filter("ACCT_PROMO_HDR"."SUB_TYPE"='PLAN_ACCOUNT_PROMOTION' AND
NVL("ACCT_PROMO_HDR"."PR_ACCNT_ID",'0')=NVL("PROMO_ACTUAL"."ACCT_SIEBEL_ROWID",'0') AND
NVL("ACCT_PROMO_HDR"."X_INDIRECT_ID",'0')=NVL("PROMO_ACTUAL"."INDIRECT_ACCT_SIEBEL_ROWID",'0'
14 - access("ACCT_PROMO_HDR"."ROW_ID"="PROMO_ACTUAL"."ACCT_PROMO_ID")
15 - access("ACCT_PROMO_HDR"."ROW_ID"="ACCT_PROMO_HDRX"."PAR_ROW_ID")
16 - access("ACCT_PROMO_HDR"."BU_ID"="PROMO_HDR_ORG"."ROW_ID")
17 - filter("ACCT_TITLE_FORMAT"."SUB_TYPE"='PLAN_ACCT_PROMOTION_CATEGORY')
18 - access("ACCT_PROMO_HDR"."ROW_ID"="ACCT_TITLE_FORMAT"."PAR_SRC_ID")
19 - filter("ACCT_PROMO_SKU"."PROD_ID" IS NOT NULL AND
"ACCT_PROMO_SKU"."SUB_TYPE"='PLAN_ACCOUNT_PROMOTION_PRODUCT')
20 - access("ACCT_TITLE_FORMAT"."ROW_ID"="ACCT_PROMO_SKU"."PAR_SRC_ID")
22 - access("ACCT_PROMO_SKU"."BU_ID"="SKU_ORG"."ROW_ID")
23 - access("ACCT_PROMO_SKU"."ROW_ID"="ACCT_PROMO_SKUX"."PAR_ROW_ID"(+))
24 - access("ACCT_PROMO_SKU"."PROD_ID"="PROD"."ROW_ID")
25 - filter("PROD"."X_PROD_MATERIAL_NUM" IS NOT NULL AND
"PROD"."X_PROD_MATERIAL_NUM"="PROMO_ACTUAL"."MATERIAL_NUMBER" AND
"PROD"."X_PROD_SALES_ORG"="PROMO_ACTUAL"."SALES_ORG")
55 rows selected.
thanksHi,
the plan you posted has the cost of 2300, i.e. 2300 single-block reads or equivalent number f multi-block reads. Even if none of the blocks is found in cache, 2300 reas shouldn't take more than a couple of minutes, beacause for most of the hard drives available today a disk read is typically within 5-10 ms.
This means that if there is a problem, we will never find out about it by looking in the plan. And it's quite likely that there is, in fact, a problem, because the plan contains a bunch of nested joins, and the cost of each nested join is directly proportional to the cardinality of the previous nested loop. I.e. it suffices to make one bad mistake in estimating the number of rows coming fom one of the nested rows to screw up the entire plan and get all remaining estimates (including the total cost of the query) completely wrong.
In order for us to be able to tell more, we need to see the plan with rowsource statistics, and please don't forget to use tags to preserve formatting (use the preview tab to make sure the posted plan is actually readable).
Best regards,
Nikolay -
HOW TO: Post a SQL statement tuning request - template posting
This post is not a question, but similar to Rob van Wijk's "When your query takes too long ..." post should help to improve the quality of the requests for SQL statement tuning here on OTN.
On the OTN forum very often tuning requests about single SQL statements are posted, but the information provided is rather limited, and therefore it's not that simple to provide a meaningful advice. Instead of writing the same requests for additional information over and over again I thought I put together a post that describes how a "useful" post for such a request should look like and what information it should cover.
I've also prepared very detailed step-by-step instructions how to obtain that information on my blog, which can be used to easily gather the required information. It also covers again the details how to post the information properly here, in particular how to use the \ tag to preserve formatting and get a fixed font output:
http://oracle-randolf.blogspot.com/2009/02/basic-sql-statement-performance.html
So again: This post here describes how a "useful" post should look like and what information it ideally covers. The blog post explains in detail how to obtain that information.
In the future, rather than requesting the same additional information and explaining how to obtain it, I'll simply refer to this HOW TO post and the corresponding blog post which describes in detail how to get that information.
*Very important:*
Use the \ tag to enclose any output that should have its formatting preserved as shown below.
So if you want to use fixed font formatting that preserves the spaces etc., do the following:
\ This preserves formatting
\And it will look like this:
This preserves formatting
. . .Your post should cover the following information:
1. The SQL and a short description of its purpose
2. The version of your database with 4-digits (e.g. 10.2.0.4)
3. Optimizer related parameters
4. The TIMING and AUTOTRACE output
5. The EXPLAIN PLAN output
6. The TKPROF output snippet that corresponds to your statement
7. If you're on 10g or later, the DBMS_XPLAN.DISPLAY_CURSOR output
The above mentioned blog post describes in detail how to obtain that information.
Your post should have a meaningful subject, e.g. "SQL statement tuning request", and the message body should look similar to the following:
*-- Start of template body --*
The following SQL statement has been identified to perform poorly. It currently takes up to 10 seconds to execute, but it's supposed to take a second at most.
This is the statement:
select
from
t_demo
where
type = 'VIEW'
order by
id;It should return data from a table in a specific order.
The version of the database is 11.1.0.7.
These are the parameters relevant to the optimizer:
SQL>
SQL> show parameter optimizer
NAME TYPE VALUE
optimizer_capture_sql_plan_baselines boolean FALSE
optimizer_dynamic_sampling integer 2
optimizer_features_enable string 11.1.0.7
optimizer_index_caching integer 0
optimizer_index_cost_adj integer 100
optimizer_mode string ALL_ROWS
optimizer_secure_view_merging boolean TRUE
optimizer_use_invisible_indexes boolean FALSE
optimizer_use_pending_statistics boolean FALSE
optimizer_use_sql_plan_baselines boolean TRUE
SQL>
SQL> show parameter db_file_multi
NAME TYPE VALUE
db_file_multiblock_read_count integer 8
SQL>
SQL> show parameter db_block_size
NAME TYPE VALUE
db_block_size integer 8192
SQL>
SQL> show parameter cursor_sharing
NAME TYPE VALUE
cursor_sharing string EXACT
SQL>
SQL> column sname format a20
SQL> column pname format a20
SQL> column pval2 format a20
SQL>
SQL> select
2 sname
3 , pname
4 , pval1
5 , pval2
6 from
7 sys.aux_stats$;
SNAME PNAME PVAL1 PVAL2
SYSSTATS_INFO STATUS COMPLETED
SYSSTATS_INFO DSTART 01-30-2009 16:25
SYSSTATS_INFO DSTOP 01-30-2009 16:25
SYSSTATS_INFO FLAGS 0
SYSSTATS_MAIN CPUSPEEDNW 494,397
SYSSTATS_MAIN IOSEEKTIM 10
SYSSTATS_MAIN IOTFRSPEED 4096
SYSSTATS_MAIN SREADTIM
SYSSTATS_MAIN MREADTIM
SYSSTATS_MAIN CPUSPEED
SYSSTATS_MAIN MBRC
SYSSTATS_MAIN MAXTHR
SYSSTATS_MAIN SLAVETHR
13 rows selected.Here is the output of EXPLAIN PLAN:
SQL> explain plan for
2 -- put your statement here
3 select
4 *
5 from
6 t_demo
7 where
8 type = 'VIEW'
9 order by
10 id;
Explained.
Elapsed: 00:00:00.01
SQL>
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
Plan hash value: 1390505571
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 60 | 0 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| T_DEMO | 1 | 60 | 0 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | IDX_DEMO | 1 | | 0 (0)| 00:00:01 |
Predicate Information (identified by operation id):
2 - access("TYPE"='VIEW')
14 rows selected.Here is the output of SQL*Plus AUTOTRACE including the TIMING information:
SQL> rem Set the ARRAYSIZE according to your application
SQL> set autotrace traceonly arraysize 100
SQL> select
2 *
3 from
4 t_demo
5 where
6 type = 'VIEW'
7 order by
8 id;
149938 rows selected.
Elapsed: 00:00:02.21
Execution Plan
Plan hash value: 1390505571
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 60 | 0 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| T_DEMO | 1 | 60 | 0 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | IDX_DEMO | 1 | | 0 (0)| 00:00:01 |
Predicate Information (identified by operation id):
2 - access("TYPE"='VIEW')
Statistics
0 recursive calls
0 db block gets
149101 consistent gets
800 physical reads
196 redo size
1077830 bytes sent via SQL*Net to client
16905 bytes received via SQL*Net from client
1501 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
149938 rows processed
SQL>
SQL> disconnect
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsThe TKPROF output for this statement looks like the following:
TKPROF: Release 11.1.0.7.0 - Production on Mo Feb 23 10:23:08 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Trace file: orcl11_ora_3376_mytrace1.trc
Sort options: default
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
select
from
t_demo
where
type = 'VIEW'
order by
id
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1501 0.53 1.36 800 149101 0 149938
total 1503 0.53 1.36 800 149101 0 149938
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 88
Rows Row Source Operation
149938 TABLE ACCESS BY INDEX ROWID T_DEMO (cr=149101 pr=800 pw=0 time=60042 us cost=0 size=60 card=1)
149938 INDEX RANGE SCAN IDX_DEMO (cr=1881 pr=1 pw=0 time=0 us cost=0 size=0 card=1)(object id 74895)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
SQL*Net message to client 1501 0.00 0.00
db file sequential read 800 0.05 0.80
SQL*Net message from client 1501 0.00 0.69
********************************************************************************The DBMS_XPLAN.DISPLAY_CURSOR output:
SQL> -- put your statement here
SQL> -- use the GATHER_PLAN_STATISTICS hint
SQL> -- if you're not using STATISTICS_LEVEL = ALL
SQL> select /*+ gather_plan_statistics */
2 *
3 from
4 t_demo
5 where
6 type = 'VIEW'
7 order by
8 id;
149938 rows selected.
Elapsed: 00:00:02.21
SQL>
SQL> select * from table(dbms_xplan.display_cursor(null, null, 'ALLSTATS LAST'));
PLAN_TABLE_OUTPUT
SQL_ID d4k5acu783vu8, child number 0
select /*+ gather_plan_statistics */ * from t_demo
where type = 'VIEW' order by id
Plan hash value: 1390505571
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads |
| 0 | SELECT STATEMENT | | 1 | | 149K|00:00:00.02 | 149K| 1183 |
| 1 | TABLE ACCESS BY INDEX ROWID| T_DEMO | 1 | 1 | 149K|00:00:00.02 | 149K| 1183 |
|* 2 | INDEX RANGE SCAN | IDX_DEMO | 1 | 1 | 149K|00:00:00.02 | 1880 | 383 |
Predicate Information (identified by operation id):
2 - access("TYPE"='VIEW')
20 rows selected.I'm looking forward for suggestions how to improve the performance of this statement.
*-- End of template body --*
I'm sure that if you follow these instructions and obtain the information described, post them using a proper formatting (don't forget about the \ tag) you'll receive meaningful advice very soon.
So, just to make sure you didn't miss this point:Use proper formatting!
If you think I missed something important in this sample post let me know so that I can improve it.
Regards,
Randolf
Oracle related stuff blog:
http://oracle-randolf.blogspot.com/
SQLTools++ for Oracle (Open source Oracle GUI for Windows):
http://www.sqltools-plusplus.org:7676/
http://sourceforge.net/projects/sqlt-pp/Alex Nuijten wrote:
...you missed the proper formatting of the Autotrace section ;-)Alex,
can't reproduce, does it still look unformatted? Or are you simply kidding? :-)
Randolf
PS: Just noticed that it actually sometimes doesn't show the proper formatting although the code tags are there. Changing to the \ tag helped in this case, but it seems to be odd.
Edited by: Randolf Geist on Feb 23, 2009 11:28 AM
Odd behaviour of forum software -
Need help in tuning a procedure
DECLARE
CURSOR Cur_sub_rp IS
SELECT A.SUB_ACCOUNT, B.PH_basic_srv,B.PH_Salesman,A.SUB_SSN
FROM STG_SUB_MASTER_MONTH_HISTORY A, STG_PHN_MASTER_MONTH_HISTORY
B
WHERE A.SUB_ACCOUNT = B.PH_ACCOUNT (+)
AND A.MONTH_ID = B.MONTH_ID ;
TYPE t_values_tab IS TABLE OF cur_sub_rp%rowtype ;
values_tab t_values_tab := t_values_tab() ;
BEGIN
OPEN Cur_sub_rp ;
LOOP
FETCH Cur_sub_rp BULK COLLECT INTO Values_tab
LIMIT 1000;
EXIT WHEN Cur_sub_rp%NOTFOUND ;
END LOOP ;
CLOSE Cur_sub_rp;
FORALL i IN VALUES_TAB.first..values_tab.last
INSERT INTO SUB_PHN_1 VALUES VALUES_TAB(i);
commit;
END;
The tables used here has 9 million records each.
The total process takes around 19 minutes.
Need your help in optimizing the process.i have tried using
Create table as SELECT A.SUB_ACCOUNT, B.PH_basic_srv,B.PH_Salesman,A.SUB_SSN
FROM STG_SUB_MASTER_MONTH_HISTORY A, STG_PHN_MASTER_MONTH_HISTORY
B
WHERE A.SUB_ACCOUNT = B.PH_ACCOUNT (+)
AND A.MONTH_ID = B.MONTH_ID (+);But still taking long time(apprx 15 min).
so used this...
help me in tuning the query in either of this.
DECLARE
CURSOR Cur_sub_rp IS
SELECT A.SUB_ACCOUNT, B.PH_basic_srv,B.PH_Salesman,A.SUB_SSN
FROM STG_SUB_MASTER_MONTH_HISTORY A, STG_PHN_MASTER_MONTH_HISTORY
B
WHERE A.SUB_ACCOUNT = B.PH_ACCOUNT (+)
AND A.MONTH_ID = B.MONTH_ID (+);
TYPE t_values_tab IS TABLE OF cur_sub_rp%rowtype ;
values_tab t_values_tab := t_values_tab() ;
BEGIN
OPEN Cur_sub_rp ;
LOOP
FETCH Cur_sub_rp BULK COLLECT INTO Values_tab
LIMIT 1000;
EXIT WHEN Cur_sub_rp%NOTFOUND ;
END LOOP ;
CLOSE Cur_sub_rp;
FORALL i IN VALUES_TAB.first..values_tab.last
INSERT INTO SUB_PHN_1 VALUES VALUES_TAB(i);
commit;
END;Message was edited by:
Vakeel
Message was edited by:
Vakeel -
Real Instruments, Enhance Tuning, Enhance Timing, Etc?
Hi,
I am having trouble getting to the Real Instruments, Enhance Tuning, Enhance Timing, area of GB3.
I see the window partially, but not enough to move the sliders, while seeing there placement..
I'm sure there's something I'm unaware of to get the full view, and I've snapped a screen shot to show what I'm talking about, if anyone is interested..
Thanks For Any Help,
EricHang-
I have a work around I kind of stumbled onto..
http://members.aol.com/unkie/GB3-pict-2.gif
After you select the Real Instrument track you'd like to correct the pitch or timing of, you hit the "I" for track information, then you can click on the region arrow,(?) and the Enhancing area opens up properly.
Check out the picture linked above, and below I will place the before shot link..
The preference not coming up seems to be linked to using iChat, believe it or not..
I read it here in the forum.
If you open iChat, and then Garageband 3, your preference pane may not open up, until you reboot your computer.
Strange but true..
HangTime, Thanks for "Hanging" in there with me through this dilemma..
Take Care,
Eric
Before Link: http://members.aol.com/unkie/GB3.gif
G4 Desktop (QuickSilver) Dual 1 Gig Processors Mac OS X (10.4.3) 1.5 Gigs of RAM -
Help me in Report(RDF) Performance tuning
Hi Viewers,
I need some steps related to report ( RDF) perfomance tune.
here is my following question.
(Q). A report for 100,000+ lines/records is taking 20 hours to run – what steps should be taken to resolve / tune
Thanks in advance.
newHello,
Have you followed the "tips" in the documents ?
Oracle® Application Server Reports Services Publishing Reports to the Web
10g Release 2 (10.1.2)
B14048-02
20 Tuning Oracle Reports
http://download-uk.oracle.com/docs/cd/B14099_17/bi.1012/b14048/pbr_tune.htm
Regards -
Report running for long time & performance tuning
Hi All,
(1). WebI report is running for long time.so what are the steps i need to check for it ?
(2). Can you tell me about performance tuning in BO ?
please help me.....
Thanks
Kumar(1). WebI report is running for long time.so what are the steps i need to check for it ?
The first step is to see if the problem lies in the query on the data source or in webi itself. Depending on the data source there are different ways to extract the query and try to run it against the database. Which source does your report uses?
(2). Can you tell me about performance tuning in BO ?
I would recommend to start by reading the administrator's guide. There is a section about how to improve performance.
Regards,
Stratos -
Need Help in Breaking a big view into multiple small views or tuning the vw
Hi
I have the following view can some one help me in breaking the view in small views or any recommendations for tuning it.
CODE
CREATE OR REPLACE FORCE VIEW "CRUVPD"."PX16_CHK_VW_SUMMARY_VW" ("CIDN", "BATCH_NUMBER", "BUSINESS_UNIT", "CHECK_VOUCHER_NUMBER", "CHECK_VOUCHER_CODE", "CHECKVIEW_CLOCK_NUMBER", "COMPANY_CHECKVIEW_HOME_DEPT", "PERIOD_END_DATE", "FEDERAL_TAX", "GROSS_PAY"
, "HOME_DEPARTMENT", "HOME_DEPARTMENT_DESC", "LIVED_LOCAL_TAX_CODE", "LIVED_STATE_TAX_CODE", "LIVED_LOCAL_TAX", "LIVED_STATE_TAX", "MEDICARE_TAX", "NET_PAY", "DEPARTMENT_WORKED_IN", "PAY_TO_COMPANY_INDICATOR", "PAY_DATE", "PAYROLL_NUMBER", "SCHOOL_DISTRIC
T_TAX", "CHECKVIEW_SCHOOL_DISTRICT", "SOCIAL_SECURITY_TAX", "SUI_SDI_TAX", "SUI_SDI_TAX_CODE", "VOID_CHECK_INDICATOR", "WEEK_NUMBER", "WORKED_LOCAL_TAX_CODE", "WORKED_STATE_TAX_CODE", "WORKED_LOCAL_TAX", "WORKED_STATE_TAX", "YEAR", "COMPANY_CODE", "FILE_N
UMBER", "FIRST_NAME", "LAST_NAME", "LAST_NAME_FIRST_NAME", "SOCIAL_SECURITY_NUMBER", "STATUS", "OVERTIME_EARNINGS", "OVERTIME_HOURS", "REGULAR_EARNINGS", "REGULAR_HOURS", "VIEWPK", "HOME_COST_NUMBER", "TAX_FREQUENCY", "COMPANY_COST_NUMBER", "COST_NUMBER_W
ORKED_IN", "DISTRIBUTION_NUMBER", "TOTAL_DEDUCTIONS_AMOUNT", "TOTAL_HOURS_AMOUNT", "TOTAL_MEMO_AMOUNT", "TOTAL_OTHER_EARNINGS", "TOTAL_OTHER_HOURS", "CHECK_SEQ_NO", "JOINKEY", "CHECK_REVERSAL_INDICATOR") AS
with user_security_homedept
AS
(select /*+ INLINE */ distinct cg.cidn,co_code,asso.oid,asso.name,department_Access ,t2.column_value dep,cg.oid
from px16_cocodegroup cg ,
px16_associate asso ,
px16_securityobject so,
px16_cocodegrp_securitygrp cs,
px16_security_group sg ,
TABLE(f_str2tbl_px16(cg.department_access)) t2
where cg.USEROID = asso.OID
and cg.co_code = substr(so.name,8,3)
and upper(asso.name) = upper(sys_context('payx_r16_app_context', 'app_userid'))
and cg.oid = cs.cocodegroupoid
and cs.securitygroupoid = sg.oid
and cg.cidn = asso.cidn
and cg.cidn = so.cidn
and cg.cidn = cs.cidn
and cs.cidn = sg.cidn
order by 2,1
user_security_cost_no
AS
(select /*+ INLINE */
cg.cidn,co_code,count(distinct cd.code)cost_no,cd.code
from px16_cocodegroup cg ,
px16_associate asso ,
px16_securityobject so,
px16_cocodegrp_securitygrp cs,
px16_security_group sg ,
px16_customaccessdetail cd
where cg.USEROID = asso.OID
and cg.co_code = substr(so.name,8,3)
and upper(asso.name) = upper(sys_context('payx_r16_app_context', 'app_userid'))
and cg.oid = cs.cocodegroupoid
and cs.securitygroupoid = sg.oid
and cg.oid = cd.cocodegroupoid(+)
and cg.cidn = cd.cidn(+)
and cg.cidn = asso.cidn
and cg.cidn = so.cidn
and cg.cidn = cs.cidn
and cs.cidn = sg.cidn
group by cg.cidn,co_code,cd.code
order by 2,1
super_user_check as
(SELECT
distinct a.cidn su_cidn,1 as su_user
FROM
px16_LINK LN
, px16_userprofile up
, px16_ASSOCIATE a
, px16_pcp_user pu
WHERE
a.oid = pu.oid
AND pu.userprofileoid = up.oid
AND LN.parentoid = up.oid
AND a.active = 1
AND a.cidn=pu.cidn
AND pu.cidn=up.cidn
AND ln.cidn=up.cidn
AND upper(a.name) = upper(sys_context('payx_r16_app_context', 'app_userid'))
AND upper(up.name) = upper('Super user')
nonsuper_user_check as
SELECT distinct a.cidn s_cidn , 1 as non_user
FROM
px16_LINK LN
, px16_userprofile up
, px16_ASSOCIATE a
, px16_pcp_user pu
WHERE
a.oid = pu.oid
AND pu.userprofileoid = up.oid
AND LN.parentoid = up.oid
AND a.active = 1
AND a.cidn=pu.cidn
AND pu.cidn=up.cidn
AND ln.cidn=up.cidn
AND upper(a.name) = upper(sys_context('payx_r16_app_context', 'app_userid'))
AND LN.childoid IN ( 'SYS:5:7478')
SELECT distinct
cidn
,batch_number Batch_Number
, business_unit Business_Unit
, check_voucher_number Check_Voucher_Number
, check_voucher_code Check_Voucher_Code
, clock_number CheckView_Clock_Number
, company_code_or_dept Company_CheckView_Home_Dept
, period_end_date Period_End_Date
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, 1, (INSTR(taxes_and_rates, '~', 1, 1) -1)), CHR(155), NULL)) Federal_Tax
, gross_pay Gross_Pay
, home_department Home_Department
, home_department_descr Home_Department_Desc
, SUBSTR(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 1) +1)
, INSTR(taxes_and_rates, '~', 1, 2) - (INSTR(taxes_and_rates, '~', 1, 1) +1)), CHR(155), NULL), 1, 32) Lived_Local_Tax_Code
, SUBSTR(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 2) +1)
, INSTR(taxes_and_rates, '~', 1, 3) - (INSTR(taxes_and_rates, '~', 1, 2) +1)), CHR(155), NULL), 1, 32) Lived_State_Tax_Code
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 3) +1)
, INSTR(taxes_and_rates, '~', 1, 4) - (INSTR(taxes_and_rates, '~', 1, 3) +1)), CHR(155), NULL)) Lived_Local_Tax
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 4) +1)
, INSTR(taxes_and_rates, '~', 1, 5) - (INSTR(taxes_and_rates, '~', 1, 4) +1)), CHR(155), NULL)) Lived_State_Tax
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 5) +1)
, INSTR(taxes_and_rates, '~', 1, 6) - (INSTR(taxes_and_rates, '~', 1, 5) +1)), CHR(155), NULL)) Medicare_Tax
, net_pay Net_Pay
, department_paid Department_Worked_In
, to_pay_indicator Pay_to_Company_Indicator
, pay_date Pay_Date
, payroll_number Payroll_Number
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 6) +1)
, INSTR(taxes_and_rates, '~', 1, 7) - (INSTR(taxes_and_rates, '~', 1, 6) +1)), CHR(155), NULL)) School_District_Tax
, SUBSTR(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 7) +1)
, INSTR(taxes_and_rates, '~', 1, 8) - (INSTR(taxes_and_rates, '~', 1, 7) +1)), CHR(155), NULL), 1, 32) CheckView_School_District
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 8) +1)
, INSTR(taxes_and_rates, '~', 1, 9) - (INSTR(taxes_and_rates, '~', 1, 8) +1)), CHR(155), NULL)) Social_Security_Tax
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 9) +1)
, INSTR(taxes_and_rates, '~', 1, 10) - (INSTR(taxes_and_rates, '~', 1, 9) +1)), CHR(155), NULL)) SUI_SDI_Tax
, SUBSTR(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 10) +1)
, INSTR(taxes_and_rates, '~', 1, 11) - (INSTR(taxes_and_rates, '~', 1, 10) +1)), CHR(155), NULL), 1, 32) SUI_SDI_Tax_Code
, void_check_indicator Void_Check_Indicator
, week_number Week_Number
, SUBSTR(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 11) +1)
, INSTR(taxes_and_rates, '~', 1, 12) - (INSTR(taxes_and_rates, '~', 1, 11) +1)), CHR(155), NULL), 1, 32) Worked_Local_Tax_Code
, SUBSTR(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 12) +1)
, INSTR(taxes_and_rates, '~', 1, 13) - (INSTR(taxes_and_rates, '~', 1, 12) +1)), CHR(155), NULL), 1, 32) Worked_State_Tax_Code
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 13) +1)
, INSTR(taxes_and_rates, '~', 1, 14) - (INSTR(taxes_and_rates, '~', 1, 13) +1)), CHR(155), NULL)) Worked_Local_Tax
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 14) +1)
, INSTR(taxes_and_rates, '~', 1, 15) - (INSTR(taxes_and_rates, '~', 1, 14) +1)), CHR(155), NULL)) Worked_State_Tax
, year Year
, company_code Company_Code
, file_number File_Number
, first_name First_Name
, last_name Last_Name
, name Last_Name_First_Name
, ssn Social_Security_Number
, status Status
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 15) +1)
, INSTR(taxes_and_rates, '~', 1, 16) - (INSTR(taxes_and_rates, '~', 1, 15) +1)), CHR(155), NULL)) Overtime_Earnings
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 16) +1)
, INSTR(taxes_and_rates, '~', 1, 17) - (INSTR(taxes_and_rates, '~', 1, 16) +1)), CHR(155), NULL)) Overtime_Hours
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 17) +1)
, INSTR(taxes_and_rates, '~', 1, 18) - (INSTR(taxes_and_rates, '~', 1, 17) +1)), CHR(155), NULL)) Regular_Earnings
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 18) +1)
, INSTR(taxes_and_rates, '~', 1, 19) - (INSTR(taxes_and_rates, '~', 1, 18) +1)), CHR(155), NULL)) Regular_Hours
, (company_code || '/' || ssn || '/' || file_number || '/' || TO_CHAR(payroll_number) || '/'
|| TO_CHAR(year) || '/' || TO_CHAR(week_number) || '/' || check_voucher_number
|| '/' || to_char(check_seq_num) || '/' || TO_CHAR(distribution_number)) Viewpk
, home_costnumber_desc Home_Cost_Number
, tax_frequency Tax_Frequency
, co_chkv_home_cost_no Company_Cost_Number
, cost_no_worked_in Cost_Number_Worked_In
, distribution_number Distribution_Number
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 19) +1)
, INSTR(taxes_and_rates, '~', 1, 20) - (INSTR(taxes_and_rates, '~', 1, 19) +1)), CHR(155), NULL)) Total_Deductions_Amount
, NVL(TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 20) +1)
, INSTR(taxes_and_rates, '~', 1, 21) - (INSTR(taxes_and_rates, '~', 1, 20) +1)), CHR(155), NULL)), 0) Total_Hours_Amount
, NVL(TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 21) +1)
, INSTR(taxes_and_rates, '~', 1, 22) - (INSTR(taxes_and_rates, '~', 1, 21) +1)), CHR(155), NULL)), 0) Total_Memo_Amount
, NVL(TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 22) +1)
, INSTR(taxes_and_rates, '~', 1, 23) - (INSTR(taxes_and_rates, '~', 1, 22) +1)), CHR(155), NULL)), 0) Total_Other_Earnings
, TO_NUMBER(REPLACE(SUBSTR(taxes_and_rates, (INSTR(taxes_and_rates, '~', 1, 23) +1)), CHR(155), NULL)) Total_Other_Hours
, check_seq_num Check_Seq_No
, (NVL(company_code, '~') || CHR(155) || NVL(file_number, '~') || CHR(155) || NVL(ssn, '~') || CHR(155) || NVL(TO_CHAR(year), '~') || CHR(155)
|| NVL(TO_CHAR(week_number), '~') || CHR(155) || NVL(TO_CHAR(payroll_number), '~')
|| CHR(155) || NVL(check_voucher_number, '~') || CHR(155) || NVL(TO_CHAR(check_seq_num), '~') || CHR(155) || NVL(TO_CHAR(distribution_number), '~')) Joinkey
, chk_reverse Check_Reversal_Indicator
FROM
SELECT
ch.cidn cidn
/*BATCH NUMBER*/
, ch.batch_nb batch_number
, /*BUSINESS UNIT*/
(select asso.description
from px16_appointment ap,
px16_jobposition jp,
px16_corporation co,
px16_associate asso,
px16_payrollagreement pa,
px16_payrollgroup pg
where
ch.cidn = pg.cidn
AND ch.cidn = pa.cidn
AND pa.cidn = pg.cidn
AND pa.cidn = ap.cidn
AND em.cidn = ap.cidn
AND ap.cidn = jp.cidn
and jp.cidn = co.cidn
and co.cidn = asso.cidn
and ch.co_code=pg.co_code
and ch.file_nb=pa.file_number
and pa.cocodeoid=pg.oid
and pa.appointmentoid=ap.oid
and em.oid=ap.employmentoid
and ap.jobpositionoid=jp.oid
and jp.corporationoid=co.oid
and co.oid=asso.oid) business_unit
, /*CHECK/VOUCHER NUMBER*/
ch.check_nb check_voucher_number
, /*CHECK/VOUCHER CODE*/
SUBSTR(f_type_px16(ch.cidn,ch.chkvchcodeoid, 'NAME'), 1, 255) check_voucher_code
, /*CLOCK NUMBER*/
ch.clock_id clock_number
, /* COMPANY CODE OR DEPT*/
ch.co_code||'/'||substr(ch.home_dept_code,1,20) company_code_or_dept
, /*PERIOD END DATE*/
ch.payroll_ending_date period_end_date
, /*GROSS PAY*/
NVL(chd.gross_pay_amt,0) gross_pay
, /*HOME DEPARTMENT*/
ch.home_dept_code home_department
, /*HOME DEPARTMENT DESCRIPTION*/
(select ty.description
from px16_type ty,px16_securityobject sc
where
ch.cidn = sc.cidn
and ty.cidn in ('COMMON', ch.cidn)
and ch.home_dept_code=ty.name
and ty.category='T_CO_DEPT'
and ty.securityoid=sc.oid
and ch.co_code=substr(sc.name,8)) home_department_descr
, /*NET PAY*/
nvl(chd.net_pay_amt,0) net_pay
, /*DEPARTMENT PAID*/
-- ch.paid_in_debt_code department_paid
chd.worked_in_dept department_paid
, /*TO PAY INDICATOR*/
decode(to_char(ch.pay_to_co),'1','Y','0','N',to_char(ch.pay_to_co)) to_pay_indicator
, /*PAY DATE*/
ch.pay_date pay_date
, /*PAYROLL NUMBER*/
to_char(ch.payroll_nb) payroll_number
, /*VOID CHECK INDICATOR*/
decode(to_char(ch.void_flag),'1','Y','0','N',to_char(ch.void_flag)) void_check_indicator
, /*WEEK NUMBER*/
TO_number(ch.week) week_number
, /*YEAR*/
to_char(ch.year) year
, /*COMPANY CODE*/
ch.co_code company_code
, /*FILE NUMBER*/
LPAD(ch.file_nb,6,0) file_number
, /*FIRST NAME*/
pe.first_name first_name
, /*LAST NAME*/
pe.last_name last_name
, /*NAME*/
pe.last_name||', '||pe.first_name name
, /*SSN*/
payx_r16_principal_info.masked_ssn(pe.unique_id, ch.cidn) ssn
, /*STATUS*/
(SELECT SUBSTR(f_type_px16(ap.cidn,ap.currentstatusoid, 'DESC'), 1, 255)
from
px16_appointment ap,
/*context co_ap,*/
px16_payrollagreement pa,
px16_payrollgroup pg
where
pg.cidn=ch.cidn
and pa.cidn=ch.cidn
and ap.cidn=pa.cidn
and ap.cidn = em.cidn
and ap.employmentoid=em.oid
and ap.active=1
and ap.oid=pa.appointmentoid
and lpad(to_char(pa.file_number),6,0)=ch.file_nb
and pa.cocodeoid=pg.oid
and pg.co_code=ch.co_code) status
-- FED TAX
-- , LIVED LOCAL TAX CODE, LIVED STATE TAX CODE, LIVED LOCAL TAX, LIVED STATE TAX, MEDICARE TAX
-- , SCHOOL DISTRICT TAX, SCHOOL DISTRICT, SOCIAL SECURITY TAX, SUI SDI TAX, SUI SDI TAX CODE
-- , WORKED LOCAL TAX CODE, WORKED STATE TAX CODE, WORKED LOCAL TAX, WORKED STATE TAX
-- , OVERTIME EARNINGS, OVERTIME HOURS, REGULAR EARNINGS, REGULAR HOURS
NVL (
(SELECT
TO_CHAR(NVL(SUM(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:2982', NVL(ci.amount,0), 0), 0) ), 0)) || '~'
|| NVL(MAX(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:2984', ci.code, NULL), NULL)), CHR(155)) || '~'
|| NVL(MAX(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:2987', DECODE(ci.code,'XX',null,ci.code), NULL), NULL)), CHR(155)) || '~'
|| TO_CHAR(NVL(SUM(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:2984', NVL(ci.amount,0), 0), 0) ), 0)) || '~'
|| TO_CHAR(NVL(SUM(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:2987', NVL(ci.amount,0), 0), 0) ), 0)) || '~'
|| TO_CHAR(NVL(SUM(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:4118', NVL(ci.amount,0), 0), 0) ), 0)) || '~'
|| TO_CHAR(NVL(SUM(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:4114', NVL(ci.amount,0), 0), 0) ), 0)) || '~'
|| NVL(MAX(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:4114', ci.code, NULL), NULL)), CHR(155)) || '~'
|| TO_CHAR(NVL(SUM(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:2988', NVL(ci.amount,0), 0), 0) ), 0)) || '~'
|| TO_CHAR(NVL(SUM(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:2989', NVL(ci.amount,0), 0), 0) ), 0)) || '~'
|| NVL(MAX(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:2989', ci.code, NULL), NULL)), CHR(155)) || '~'
|| NVL(MAX(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:2983', ci.code, NULL), NULL)), CHR(155)) || '~'
|| NVL(MAX(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:2986', ci.code, NULL), NULL)), CHR(155)) || '~'
|| TO_CHAR(NVL(SUM(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:2983', NVL(ci.amount,0), 0), 0) ), 0)) || '~'
|| TO_CHAR(NVL(SUM(DECODE(ci.histtypeoid, 'SYS:4:3709', DECODE(ci.taxcodeoid, 'SYS:4:2986', NVL(ci.amount,0), 0), 0) ), 0)) || '~'
|| TO_CHAR(NVL(SUM(DECODE(ci.histtypeoid, 'SYS:4:3713', NVL(ci.amount,0), 0)), 0)) || '~'
|| TO_CHAR(NVL(SUM(DECODE(ci.histtypeoid, 'SYS:4:3727', NVL(ci.amount,0), 0)), 0)) || '~'
|| TO_CHAR(NVL(SUM(DECODE(ci.histtypeoid, 'SYS:4:3715', NVL(ci.amount,0), 0)), 0)) || '~'
|| TO_CHAR(NVL(SUM(DECODE(ci.histtypeoid, 'SYS:4:3716', NVL(ci.amount,0), 0)), 0)) || '~'
-- R16 columns.
-- Total Deductions Amount === Other Deductions on UI screen.
|| TO_CHAR(NVL(SUM(DECODE(chcat.name, 'DeductionHistory'
, DECODE(NVL(ci.statutory_ded, 0), 0
, DECODE(ci.taxcodeoid, NULL
, DECODE(ci.code, NULL, 0, NVL(ci.amount,0)), 0), 0), 0)), 0)) || '~' -- "Total Deductions Amount"
|| TO_CHAR(NVL(SUM(DECODE(chcat.name, 'OvertimeHours', NVL(ci.amount,0)
, 'AdditionalHours', NVL(ci.amount,0), 'RegularHours', NVL(ci.amount,0), 0)), 0)) || '~' -- "Total Hours Amount"
|| TO_CHAR(NVL(SUM(DECODE(chcat.name, 'Memo', NVL(ci.amount,0), 0)), 0)) || '~' -- "Total Memo Amount"
|| TO_CHAR(NVL(SUM(DECODE(chcat.name, 'AdditionalEarnings', NVL(ci.amount,0), 0)), 0)) || '~' -- "Total Other Earnings"
|| TO_CHAR(NVL(SUM(DECODE(chcat.name, 'AdditionalHours', NVL(ci.amount,0), 0)), 0)) -- "Total Other Hours"
FROM
px16_checkhistoryitem ci
, px16_sys_type chcat
WHERE
ci.cidn=chd.cidn
AND ci.checkhistorydistributionoid = chd.oid
AND chcat.category = 'CheckHistoryItem'
AND chcat.oid = ci.histtypeoid
-- AND ci.histtypeoid IN ('SYS:4:3713', 'SYS:4:3727', 'SYS:4:3715', 'SYS:4:3716', 'SYS:4:3709')
), '0' || '~' || CHR(155) || '~' || CHR(155)
|| '0~0~0~0~' || CHR(155) || '~0~0~' || CHR(155) || '~' || CHR(155) || '~'
|| CHR(155) || '~0~0~0~0~0~0'
) taxes_and_rates
, ch.check_seq_num check_seq_num
, ch.home_cost_number home_costnumber_desc
, SUBSTR(f_type_px16(ch.cidn,ch.payfrequencyoid, 'NAME'), 1, 255) tax_frequency
, (ch.co_code || '/' || ch.home_cost_number) co_chkv_home_cost_no
, chd.worked_in_cost_number cost_no_worked_in
, chd.distribution_number distribution_number
, DECODE(NVL(ch.reversed_flag, 0), 1, 'Y', 'N') chk_reverse
FROM
px16_checkhistory ch
, px16_employment em
, px16_person pe
, px16_payrollgroup pg
, px16_checkhistory_dist chd
, px16_appointment ap
WHERE
ch.cidn = em.cidn
and em.cidn = pe.cidn
and pg.cidn = ch.cidn
and ch.cidn = chd.cidn
and ap.cidn(+) = em.cidn
and ch.employmentoid=em.oid
AND em.personoid=pe.oid
AND pg.co_code = ch.co_code
AND ch.active = 1
AND ch.oid = chd.checkhistoryoid
AND ap.employmentoid(+) = em.oid
AND DECODE(ap.oid, NULL, 1, NVL((SELECT 1 FROM px16_payrollagreement pa
WHERE
pa.cidn = ap.cidn
and pa.cidn = ch.cidn
and pa.cidn = pg.cidn
and pa.appointmentoid = ap.oid
AND pa.file_number = ch.file_nb
AND pa.cocodeoid = pg.oid), 0)) = 1
and ch.cidn in (select distinct s_cidn from nonsuper_user_check)
AND ( sys_context('payx_r16_app_context', 'app_role') in ('ADP', 'CSR')
or (exists (select 1 from super_user_check where su_cidn =ch.cidn))
or (ch.cidn,ch.co_code,ch.home_dept_code) in (select cidn,co_code,dep from user_security_homedept)
or (ch.cidn,ch.co_code,ch.home_cost_number) in (select cidn,co_code,code from user_security_cost_no)
or ( exists(select co_code from user_security_homedept where cidn=ch.cidn and co_code = ch.co_code and dep is null)
and exists(select co_code from user_security_cost_no where cidn=ch.cidn and co_code = ch.co_code and cost_no = 0) )
Explain plan
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
| 0 | SELECT STATEMENT | | 1 | 7519 | 99 (2)|
| 1 | VIEW | PX16_CHK_VW_SUMMARY_VW | 1 | 7519 | |
| 2 | SORT UNIQUE | | 1 | 445 | 78 (0)|
|* 3 | FILTER | | | | |
| 4 | NESTED LOOPS OUTER | | 1 | 445 | 63 (2)|
| 5 | NESTED LOOPS | | 1 | 414 | 58 (2)|
| 6 | NESTED LOOPS | | 1 | 362 | 53 (2)|
| 7 | NESTED LOOPS | | 1 | 331 | 48 (3)|
| 8 | NESTED LOOPS | | 1 | 306 | 43 (3)|
| 9 | NESTED LOOPS | | 1 | 253 | 38 (3)|
| 10 | NESTED LOOPS | | 1 | 120 | 23 (5)|
| 11 | NESTED LOOPS | | 1 | 79 | 18 (6)|
| 12 | NESTED LOOPS | | 1 | 53 | 13 (8)|
|* 13 | INDEX FAST FULL SCAN | USERPROFILE_GG_U | 5 | 110 | 11 (0)|
|* 14 | INDEX RANGE SCAN | UQ_LINK | 1 | 31 | |
| 15 | TABLE ACCESS BY INDEX ROWID | PCP_USER | 1 | 26 | 6 (17)|
|* 16 | INDEX RANGE SCAN | XIF3PCP_USER | 1 | | |
|* 17 | TABLE ACCESS BY INDEX ROWID | ASSOCIATE | 1 | 41 | 6 (17)|
|* 18 | INDEX UNIQUE SCAN | ASSOCIATE_GG_U | 1 | | |
|* 19 | TABLE ACCESS BY INDEX ROWID | CHECKHISTORY | 1 | 133 | 16 (7)|
|* 20 | INDEX RANGE SCAN | J_CO_CODE | 13 | | 2 (0)|
| 21 | TABLE ACCESS BY INDEX ROWID | CHECKHISTORYDISTRIBUTION | 1 | 53 | 6 (17)|
|* 22 | INDEX RANGE SCAN | TMP_IDX11 | 1 | | |
| 23 | TABLE ACCESS BY INDEX ROWID | PAYROLLGROUP | 1 | 25 | 6 (17)|
|* 24 | INDEX RANGE SCAN | PAYROLLGROUP_IDX2 | 1 | | |
| 25 | TABLE ACCESS BY INDEX ROWID | EMPLOYMENT | 1 | 31 | 6 (17)|
|* 26 | INDEX UNIQUE SCAN | EMPLOYMENT_GG_U | 1 | | |
| 27 | TABLE ACCESS BY INDEX ROWID | PERSON | 1 | 52 | 6 (17)|
|* 28 | INDEX UNIQUE SCAN | PERSON_GG_U | 1 | | |
| 29 | TABLE ACCESS BY INDEX ROWID | APPOINTMENT | 1 | 31 | 6 (17)|
|* 30 | INDEX RANGE SCAN | XIF12APPOINTMENT | 1 | | |
|* 31 | FILTER | | | | |
|* 32 | TABLE ACCESS BY INDEX ROWID | PAYROLLAGREEMENT | 1 | 34 | 21 (5)|
|* 33 | INDEX RANGE SCAN | UQ_FILE_NO_COCODE | 1 | | 3 (0)|
|* 34 | FILTER | | | | |
| 35 | NESTED LOOPS | | 1 | 130 | 27 (4)|
| 36 | NESTED LOOPS | | 1 | 89 | 22 (5)|
| 37 | NESTED LOOPS | | 1 | 63 | 17 (6)|
|* 38 | TABLE ACCESS BY INDEX ROWID | USERPROFILE | 1 | 41 | 16 (7)|
|* 39 | INDEX RANGE SCAN | XIF1USERPROFILE | 1 | | 2 (0)|
|* 40 | INDEX RANGE SCAN | LINK_IDX2 | 1 | 22 | |
| 41 | TABLE ACCESS BY INDEX ROWID | PCP_USER | 1 | 26 | 6 (17)|
|* 42 | INDEX RANGE SCAN | XIF3PCP_USER | 1 | | |
|* 43 | TABLE ACCESS BY INDEX ROWID | ASSOCIATE | 1 | 41 | 6 (17)|
|* 44 | INDEX UNIQUE SCAN | ASSOCIATE_GG_U | 1 | | |
|* 45 | FILTER | | | | |
| 46 | NESTED LOOPS | | 1 | 144 | 48 (3)|
| 47 | MERGE JOIN CARTESIAN | | 1 | 142 | 37 (3)|
| 48 | NESTED LOOPS | | 1 | 116 | 32 (4)|
| 49 | NESTED LOOPS | | 1 | 96 | 31 (4)|
| 50 | NESTED LOOPS | | 1 | 72 | 26 (4)|
|* 51 | TABLE ACCESS BY INDEX ROWID | COCODEGROUP | 1 | 34 | 21 (5)|
|* 52 | INDEX RANGE SCAN | XIF1COCODEGROUP | 9 | | 2 (0)|
|* 53 | TABLE ACCESS BY INDEX ROWID | ASSOCIATE | 1 | 38 | 6 (17)|
|* 54 | INDEX UNIQUE SCAN | ASSOCIATE_GG_U | 1 | | |
|* 55 | INDEX RANGE SCAN | COSEC_IDX_GG | 1 | 24 | 1 (0)|
|* 56 | INDEX UNIQUE SCAN | SECURITY_GROUP_GG_U | 1 | 20 | |
| 57 | BUFFER SORT | | 1 | 26 | 35 (0)|
|* 58 | INDEX RANGE SCAN | UQ_SECURITYOBJECT | 1 | 26 | 1 (0)|
|* 59 | COLLECTION ITERATOR PICKLER FETCH | F_STR2TBL_PX16 | | | |
|* 60 | FILTER | | | | |
| 61 | SORT GROUP BY | | 1 | 183 | 66 (0)|
| 62 | NESTED LOOPS | | 1 | 183 | 51 (2)|
| 63 | NESTED LOOPS | | 1 | 163 | 50 (2)|
|* 64 | HASH JOIN OUTER | | 1 | 139 | 45 (3)|
| 65 | NESTED LOOPS | | 1 | 96 | 42 (3)|
|* 66 | HASH JOIN | | 1 | 58 | 37 (3)|
| 67 | TABLE ACCESS BY INDEX ROWID | SECURITYOBJECT | 13 | 338 | 16 (7)|
|* 68 | INDEX RANGE SCAN | SECURITYOBJECT_IDX1 | 13 | | 2 (0)|
| 69 | TABLE ACCESS BY INDEX ROWID | COCODEGROUP | 9 | 288 | 21 (5)|
|* 70 | INDEX RANGE SCAN | XIF1COCODEGROUP | 1 | | 2 (0)|
|* 71 | TABLE ACCESS BY INDEX ROWID | ASSOCIATE | 1 | 38 | 6 (17)|
|* 72 | INDEX UNIQUE SCAN | ASSOCIATE_GG_U | 1 | | |
|* 73 | TABLE ACCESS FULL | CUSTOMACCESSDETAIL | 9 | 387 | 2 (0)|
|* 74 | INDEX RANGE SCAN | COSEC_IDX_GG | 1 | 24 | 1 (0)|
|* 75 | INDEX UNIQUE SCAN | SECURITY_GROUP_GG_U | 1 | 20 | |
| 76 | VIEW | | 1 | 2032 | |
| 77 | SORT UNIQUE | | 1 | 144 | 63 (0)|
|* 78 | FILTER | | | | |
| 79 | NESTED LOOPS | | 1 | 144 | 48 (3)|
| 80 | NESTED LOOPS | | 1 | 142 | 37 (3)|
| 81 | NESTED LOOPS | | 1 | 104 | 32 (4)|
| 82 | NESTED LOOPS | | 1 | 84 | 31 (4)|
| 83 | NESTED LOOPS | | 1 | 60 | 26 (4)|
|* 84 | TABLE ACCESS BY INDEX ROWID | COCODEGROUP | 1 | 34 | 21 (5)|
|* 85 | INDEX RANGE SCAN | XIF1COCODEGROUP | 9 | | 2 (0)|
|* 86 | INDEX RANGE SCAN | UQ_SECURITYOBJECT | 1 | 26 | 1 (0)|
|* 87 | INDEX RANGE SCAN | COSEC_IDX_GG | 1 | 24 | 1 (0)|
|* 88 | INDEX UNIQUE SCAN | SECURITY_GROUP_GG_U | 1 | 20 | |
|* 89 | TABLE ACCESS BY INDEX ROWID | ASSOCIATE | 1 | 38 | 6 (17)|
|* 90 | INDEX UNIQUE SCAN | ASSOCIATE_GG_U | 1 | | |
|* 91 | COLLECTION ITERATOR PICKLER FETCH| F_STR2TBL_PX16 | | | |
| 92 | VIEW | | 1 | 43 | |
|* 93 | FILTER | | | | |
| 94 | SORT GROUP BY | | 1 | 183 | 55 (0)|
|* 95 | FILTER | | | | |
| 96 | NESTED LOOPS | | 1 | 183 | 40 (3)|
| 97 | NESTED LOOPS | | 1 | 163 | 39 (3)|
|* 98 | HASH JOIN OUTER | | 1 | 139 | 34 (3)|
| 99 | NESTED LOOPS | | 1 | 96 | 31 (4)|
| 100 | NESTED LOOPS | | 1 | 58 | 26 (4)|
|*101 | TABLE ACCESS BY INDEX ROWID | COCODEGROUP | 1 | 32 | 21 (5)|
|*102 | INDEX RANGE SCAN | XIF1COCODEGROUP | 9 | | 2 (0)|
|*103 | INDEX RANGE SCAN | UQ_SECURITYOBJECT | 1 | 26 | 1 (0)|
|*104 | TABLE ACCESS BY INDEX ROWID | ASSOCIATE | 1 | 38 | 6 (17)|
|*105 | INDEX UNIQUE SCAN | ASSOCIATE_GG_U | 1 | | |
|*106 | TABLE ACCESS FULL | CUSTOMACCESSDETAIL | 9 | 387 | 2 (0)|
|*107 | INDEX RANGE SCAN | COSEC_IDX_GG | 1 | 24 | 1 (0)|
|*108 | INDEX UNIQUE SCAN | SECURITY_GROUP_GG_U | 1 | 20 | |
Predicate Information (identified by operation id):
3 - filter(DECODE("SYS_ALIAS_19"."OID",NULL,1,NVL( (SELECT /*+ */ 1 FROM "PAYX_R16"."PAYROLLAGREEMENT"
"PX16_PAYROLLAGREEMENT" WHERE :B1='C69C1Y' AND :B2=:B3 AND :B4=:B5 AND
"PX16_PAYROLLAGREEMENT"."FILE_NUMBER"=TO_NUMBER(:B6) AND "PX16_PAYROLLAGREEMENT"."COCODEOID"=:B7 AND
"PX16_PAYROLLAGREEMENT"."CIDN"=:B8 AND "PX16_PAYROLLAGREEMENT"."APPOINTMENTOID"=:B9),0))=1 AND
(SYS_CONTEXT('payx_r16_app_context','app_role')='ADP' OR
SYS_CONTEXT('payx_r16_app_context','app_role')='CSR' OR EXISTS (SELECT /*+ */ 0 FROM
"PAYX_R16"."PCP_USER" "PX16_PCP_USER","PAYX_R16"."ASSOCIATE" "PX16_ASSOCIATE","PAYX_R16"."USERPROFILE"
"PX16_USERPROFILE","PAYX_R16"."LINK" "PX16_LINK" WHERE :B10='C69C1Y' AND
"PX16_LINK"."PARENTOID"="PX16_USERPROFILE"."OID" AND "PX16_LINK"."CIDN"='C69C1Y' AND
"PX16_LINK"."CIDN"=:B11 AND "PX16_USERPROFILE"."CIDN"='C69C1Y' AND UPPER("PX16_USERPROFILE"."NAME")='SUPER
USER' AND "PX16_USERPROFILE"."CIDN"=:B12 AND "PX16_ASSOCIATE"."CIDN"=:B13 AND
"PX16_ASSOCIATE"."OID"="PX16_PCP_USER"."OID" AND "PX16_ASSOCIATE"."ACTIVE"=1 AND
UPPER("PX16_ASSOCIATE"."NAME")=UPPER(SYS_CONTEXT('payx_r16_app_context','app_userid')) AND
"PX16_PCP_USER"."USERPROFILEOID"="PX16_USERPROFILE"."OID" AND "PX16_PCP_USER"."CIDN"='C69C1Y' AND
"PX16_PCP_USER"."USERPROFILEOID" IS NOT NULL AND "PX16_PCP_USER"."CIDN"=:B14) OR EXISTS (SELECT /*+ */ 0
FROM TABLE("CRUVPD"."F_STR2TBL_PX16"("PX16_COCODEGROUP"."DEPARTMENT_ACCESS"))
"KOKBF$","PAYX_R16"."SECURITY_GROUP" "PX16_SECURITY_GROUP","PAYX_R16"."COCODEGROUP_SECURITYGROUP"
"PX16_COCODEGRP_SECURITYGRP","PAYX_R16"."SECURITYOBJECT" "PX16_SECURITYOBJECT","PAYX_R16"."ASSOCIATE"
"PX16_ASSOCIATE","PAYX_R16"."COCODEGROUP" "PX16_COCODEGROUP" WHERE :B15='C69C1Y' AND
"PX16_COCODEGROUP"."CIDN"=:B16 AND "PX16_COCODEGROUP"."CO_CODE"=:B17 AND "PX16_ASSOCIATE"."CIDN"='C69C1Y'
AND "PX16_COCODEGROUP"."USEROID"="PX16_ASSOCIATE"."OID" AND
UPPER("PX16_ASSOCIATE"."NAME")=UPPER(SYS_CONTEXT('payx_r16_app_context','app_userid')) AND
"PX16_ASSOCIATE"."CIDN"=:B18 AND "PX16_SECURITYOBJECT"."CIDN"='C69C1Y' AND
SUBSTR("PX16_SECURITYOBJECT"."NAME",8,3)=:B19 AND "PX16_SECURITYOBJECT"."CIDN"=:B20 AND
"PX16_COCODEGROUP"."OID"="PX16_COCODEGRP_SECURITYGRP"."COCODEGROUPOID" AND
"PX16_COCODEGRP_SECURITYGRP"."CIDN"=:B21 AND "PX16_COCODEGRP_SECURITYGRP"."CIDN"='C69C1Y' AND
"PX16_SECURITY_GROUP"."CIDN"='C69C1Y' AND "PX16_COCODEGRP_SECURITYGRP"."SECURITYGROUPOID"="PX16_SECURITY_GR
OUP"."OID" AND "PX16_SECURITY_GROUP"."CIDN"=:B22 AND VALUE(KOKBF$)=:B23) OR EXISTS (SELECT /*+ */ 0 FROM
"PAYX_R16"."CUSTOMACCESSDETAIL" "PX16_CUSTOMACCESSDETAIL","PAYX_R16"."SECURITY_GROUP"
"PX16_SECURITY_GROUP","PAYX_R16"."COCODEGROUP_SECURITYGROUP"
"PX16_COCODEGRP_SECURITYGRP","PAYX_R16"."SECURITYOBJECT" "PX16_SECURITYOBJECT","PAYX_R16"."ASSOCIATE"
"PX16_ASSOCIATE","PAYX_R16"."COCODEGROUP" "PX16_COCODEGROUP" WHERE "PX16_COCODEGROUP"."CIDN"='C69C1Y' AND
"PX16_COCODEGROUP"."CIDN"="PX16_SECURITYOBJECT"."CIDN" AND
"PX16_COCODEGROUP"."CO_CODE"=SUBSTR("PX16_SECURITYOBJECT"."NAME",8,3) AND "PX16_ASSOCIATE"."CIDN"='C69C1Y'
AND "PX16_COCODEGROUP"."USEROID"="PX16_ASSOCIATE"."OID" AND
UPPER("PX16_ASSOCIATE"."NAME")=UPPER(SYS_CONTEXT('payx_r16_app_context','app_userid')) AND
"PX16_COCODEGROUP"."CIDN"="PX16_ASSOCIATE"."CIDN" AND "PX16_SECURITYOBJECT"."CIDN"='C69C1Y' AND
"PX16_COCODEGROUP"."OID"="PX16_COCODEGRP_SECURITYGRP"."COCODEGROUPOID" AND
"PX16_COCODEGROUP"."CIDN"="PX16_COCODEGRP_SECURITYGRP"."CIDN" AND
"PX16_COCODEGRP_SECURITYGRP"."CIDN"='C69C1Y' AND "PX16_SECURITY_GROUP"."CIDN"='C69C1Y' AND
"PX16_COCODEGRP_SECURITYGRP"."SECURITYGROUPOID"="PX16_SECURITY_GROUP"."OID" AND
"PX16_COCODEGRP_SECURITYGRP"."CIDN"="PX16_SECURITY_GROUP"."CIDN" AND
"PX16_COCODEGROUP"."CIDN"="PX16_CUSTOMACCESSDETAIL"."CIDN"(+) AND
"PX16_COCODEGROUP"."OID"="PX16_CUSTOMACCESSDETAIL"."COCODEGROUPOID"(+) AND
"PX16_CUSTOMACCESSDETAIL"."CIDN"(+)='C69C1Y' GROUP BY
"PX16_COCODEGROUP"."CIDN","PX16_COCODEGROUP"."CO_CODE","PX16_CUSTOMACCESSDETAIL"."CODE" HAVING
"PX16_COCODEGROUP"."CIDN"=:B24 AND "PX16_COCODEGROUP"."CO_CODE"=:B25 AN)
13 - filter("PX16_USERPROFILE"."CIDN"='C69C1Y')
14 - access("PX16_LINK"."CIDN"='C69C1Y' AND "PX16_LINK"."CHILDOID"='SYS:5:7478' AND
"PX16_LINK"."PARENTOID"="PX16_USERPROFILE"."OID")
filter("PX16_LINK"."CIDN"="PX16_USERPROFILE"."CIDN")
16 - access("PX16_PCP_USER"."CIDN"='C69C1Y' AND "PX16_PCP_USER"."USERPROFILEOID"="PX16_USERPROFILE"."OID"
filter("PX16_PCP_USER"."USERPROFILEOID" IS NOT NULL AND
"PX16_PCP_USER"."CIDN"="PX16_USERPROFILE"."CIDN")
17 - filter("PX16_ASSOCIATE"."ACTIVE"=1 AND UPPER("PX16_ASSOCIATE"."NAME")=UPPER(SYS_CONTEXT('payx_r16_ap
p_context','app_userid')))
18 - access("PX16_ASSOCIATE"."OID"="PX16_PCP_USER"."OID" AND "PX16_ASSOCIATE"."CIDN"='C69C1Y')
filter("PX16_ASSOCIATE"."CIDN"="PX16_PCP_USER"."CIDN")
19 - filter("SYS_ALIAS_32"."ACTIVE"=1)
20 - access("SYS_ALIAS_32"."CIDN"='C69C1Y')
filter("SYS_ALIAS_32"."CIDN"="PX16_ASSOCIATE"."CIDN")
22 - access("SYS_ALIAS_15"."CIDN"='C69C1Y' AND "SYS_ALIAS_32"."OID"="SYS_ALIAS_15"."CHECKHISTORYOID")
filter("SYS_ALIAS_32"."CIDN"="SYS_ALIAS_15"."CIDN")
24 - access("SYS_ALIAS_21"."CIDN"='C69C1Y' AND "SYS_ALIAS_21"."CO_CODE"="SYS_ALIAS_32"."CO_CODE")
filter("SYS_ALIAS_21"."CIDN"="SYS_ALIAS_32"."CIDN")
26 - access("SYS_ALIAS_32"."EMPLOYMENTOID"="SYS_ALIAS_11"."OID" AND "SYS_ALIAS_11"."CIDN"='C69C1Y')
filter("SYS_ALIAS_32"."CIDN"="SYS_ALIAS_11"."CIDN")
28 - access("SYS_ALIAS_11"."PERSONOID"="PX16_PERSON"."OID" AND "PX16_PERSON"."CIDN"='C69C1Y')
filter("SYS_ALIAS_11"."CIDN"="PX16_PERSON"."CIDN")
30 - access("SYS_ALIAS_19"."CIDN"(+)='C69C1Y' AND "SYS_ALIAS_19"."EMPLOYMENTOID"(+)="SYS_ALIAS_11"."OID")
filter("SYS_ALIAS_19"."CIDN"(+)="SYS_ALIAS_11"."CIDN")
31 - filter(:B1='C69C1Y' AND :B2=:B3 AND :B4=:B5)
32 - filter("PX16_PAYROLLAGREEMENT"."APPOINTMENTOID"=:B1)
33 - access("PX16_PAYROLLAGREEMENT"."CIDN"=:B1 AND "PX16_PAYROLLAGREEMENT"."COCODEOID"=:B2 AND
"PX16_PAYROLLAGREEMENT"."FILE_NUMBER"=TO_NUMBER(:B3))
34 - filter(:B1='C69C1Y')
38 - filter(UPPER("PX16_USERPROFILE"."NAME")='SUPER USER')
39 - access("PX16_USERPROFILE"."CIDN"='C69C1Y')
filter("PX16_USERPROFILE"."CIDN"=:B1)
40 - access("PX16_LINK"."CIDN"='C69C1Y' AND "PX16_LINK"."PARENTOID"="PX16_USERPROFILE"."OID")
filter("PX16_LINK"."CIDN"=:B1)
42 - access("PX16_PCP_USER"."CIDN"='C69C1Y' AND "PX16_PCP_USER"."USERPROFILEOID"="PX16_USERPROFILE"."OID"
filter("PX16_PCP_USER"."USERPROFILEOID" IS NOT NULL AND "PX16_PCP_USER"."CIDN"=:B1)
43 - filter("PX16_ASSOCIATE"."ACTIVE"=1 AND UPPER("PX16_ASSOCIATE"."NAME")=UPPER(SYS_CONTEXT('payx_r16_ap
p_context','app_userid')))
44 - access("PX16_ASSOCIATE"."OID"="PX16_PCP_USER"."OID" AND "PX16_ASSOCIATE"."CIDN"=:B1)
45 - filter(:B1='C69C1Y')
51 - filter("PX16_COCODEGROUP"."CO_CODE"=:B1)
52 - access("PX16_COCODEGROUP"."CIDN"=:B1)
53 - filter(UPPER("PX16_ASSOCIATE"."NAME")=UPPER(SYS_CONTEXT('payx_r16_app_context','app_userid')))
54 - access("PX16_COCODEGROUP"."USEROID"="PX16_ASSOCIATE"."OID" AND "PX16_ASSOCIATE"."CIDN"='C69C1Y')
filter("PX16_ASSOCIATE"."CIDN"=:B1)
55 - access("PX16_COCODEGROUP"."OID"="PX16_COCODEGRP_SECURITYGRP"."COCODEGROUPOID" AND
"PX16_COCODEGRP_SECURITYGRP"."CIDN"='C69C1Y')
filter("PX16_COCODEGRP_SECURITYGRP"."CIDN"=:B1 AND "PX16_COCODEGRP_SECURITYGRP"."CIDN"='C69C1Y')
56 - access("PX16_COCODEGRP_SECURITYGRP"."SECURITYGROUPOID"="PX16_SECURITY_GROUP"."OID" AND
"PX16_SECURITY_GROUP"."CIDN"='C69C1Y')
filter("PX16_SECURITY_GROUP"."CIDN"=:B1)
58 - access("PX16_SECURITYOBJECT"."CIDN"='C69C1Y')
filter(SUBSTR("PX16_SECURITYOBJECT"."NAME",8,3)=:B1 AND "PX16_SECURITYOBJECT"."CIDN"=:B2)
59 - filter(VALUE(KOKBF$)=:B1)
60 - filter("PX16_COCODEGROUP"."CIDN"=:B1 AND "PX16_COCODEGROUP"."CO_CODE"=:B2 AND
"PX16_CUSTOMACCESSDETAIL"."CODE"=:B3)
64 - access("PX16_COCODEGROUP"."OID"="PX16_CUSTOMACCESSDETAIL"."COCODEGROUPOID"(+) AND
"PX16_COCODEGROUP"."CIDN"="PX16_CUSTOMACCESSDETAIL"."CIDN"(+))
66 - access("PX16_COCODEGROUP"."CO_CODE"=SUBSTR("PX16_SECURITYOBJECT"."NAME",8,3) AND
"PX16_COCODEGROUP"."CIDN"="PX16_SECURITYOBJECT"."CIDN")
68 - access("PX16_SECURITYOBJECT"."CIDN"='C69C1Y')
70 - access("PX16_COCODEGROUP"."CIDN"='C69C1Y')
71 - filter(UPPER("PX16_ASSOCIATE"."NAME")=UPPER(SYS_CONTEXT('payx_r16_app_context','app_userid')))
72 - access("PX16_COCODEGROUP"."USEROID"="PX16_ASSOCIATE"."OID" AND "PX16_ASSOCIATE"."CIDN"='C69C1Y')
filter("PX16_COCODEGROUP"."CIDN"="PX16_ASSOCIATE"."CIDN")
73 - filter("PX16_CUSTOMACCESSDETAIL"."CIDN"(+)='C69C1Y')
74 - access("PX16_COCODEGROUP"."OID"="PX16_COCODEGRP_SECURITYGRP"."COCODEGROUPOID" AND
"PX16_COCODEGRP_SECURITYGRP"."CIDN"='C69C1Y')
filter("PX16_COCODEGROUP"."CIDN"="PX16_COCODEGRP_SECURITYGRP"."CIDN" AND
"PX16_COCODEGRP_SECURITYGRP"."CIDN"='C69C1Y')
75 - access("PX16_COCODEGRP_SECURITYGRP"."SECURITYGROUPOID"="PX16_SECURITY_GROUP"."OID" AND
"PX16_SECURITY_GROUP"."CIDN"='C69C1Y')
filter("PX16_COCODEGRP_SECURITYGRP"."CIDN"="PX16_SECURITY_GROUP"."CIDN")
78 - filter('C69C1Y'=:B1)
84 - filter("PX16_COCODEGROUP"."CO_CODE"=:B1)
85 - access("PX16_COCODEGROUP"."CIDN"='C69C1Y')
86 - access("PX16_SECURITYOBJECT"."CIDN"='C69C1Y')
filter(SUBSTR("PX16_SECURITYOBJECT"."NAME",8,3)=:B1 AND
"PX16_COCODEGROUP"."CIDN"="PX16_SECURITYOBJECT"."CIDN")
87 - access("PX16_COCODEGROUP"."OID"="PX16_COCODEGRP_SECURITYGRP"."COCODEGROUPOID" AND
"PX16_COCODEGRP_SECURITYGRP"."CIDN"='C69C1Y')
filter("PX16_COCODEGROUP"."CIDN"="PX16_COCODEGRP_SECURITYGRP"."CIDN" AND
"PX16_COCODEGRP_SECURITYGRP"."CIDN"='C69C1Y')
88 - access("PX16_COCODEGRP_SECURITYGRP"."SECURITYGROUPOID"="PX16_SECURITY_GROUP"."OID" AND
"PX16_SECURITY_GROUP"."CIDN"='C69C1Y')
filter("PX16_COCODEGRP_SECURITYGRP"."CIDN"="PX16_SECURITY_GROUP"."CIDN")
89 - filter(UPPER("PX16_ASSOCIATE"."NAME")=UPPER(SYS_CONTEXT('payx_r16_app_context','app_userid')))
90 - access("PX16_COCODEGROUP"."USEROID"="PX16_ASSOCIATE"."OID" AND "PX16_ASSOCIATE"."CIDN"='C69C1Y')
filter("PX16_COCODEGROUP"."CIDN"="PX16_ASSOCIATE"."CIDN")
91 - filter(VALUE(KOKBF$) IS NULL)
93 - filter(COUNT(DISTINCT "PX16_CUSTOMACCESSDETAIL"."CODE")=0)
95 - filter('C69C1Y'=:B1)
98 - access("PX16_COCODEGROUP"."OID"="PX16_CUSTOMACCESSDETAIL"."COCODEGROUPOID"(+) AND
"PX16_COCODEGROUP"."CIDN"="PX16_CUSTOMACCESSDETAIL"."CIDN"(+))
101 - filter("PX16_COCODEGROUP"."CO_CODE"=:B1)
102 - access("PX16_COCODEGROUP"."CIDN"='C69C1Y')
103 - access("PX16_SECURITYOBJECT"."CIDN"='C69C1Y')
filter(SUBSTR("PX16_SECURITYOBJECT"."NAME",8,3)=:B1 AND
"PX16_COCODEGROUP"."CIDN"="PX16_SECURITYOBJECT"."CIDN")
104 - filter(UPPER("PX16_ASSOCIATE"."NAME")=UPPER(SYS_CONTEXT('payx_r16_app_context','app_userid')))
105 - access("PX16_COCODEGROUP"."USEROID"="PX16_ASSOCIATE"."OID" AND "PX16_ASSOCIATE"."CIDN"='C69C1Y')
filter("PX16_COCODEGROUP"."CIDN"="PX16_ASSOCIATE"."CIDN")
106 - filter("PX16_CUSTOMACCESSDETAIL"."CIDN"(+)='C69C1Y')
107 - access("PX16_COCODEGROUP"."OID"="PX16_COCODEGRP_SECURITYGRP"."COCODEGROUPOID" AND
"PX16_COCODEGRP_SECURITYGRP"."CIDN"='C69C1Y')
filter("PX16_COCODEGROUP"."CIDN"="PX16_COCODEGRP_SECURITYGRP"."CIDN" AND
"PX16_COCODEGRP_SECURITYGRP"."CIDN"='C69C1Y')
108 - access("PX16_COCODEGRP_SECURITYGRP"."SECURITYGROUPOID"="PX16_SECURITY_GROUP"."OID" AND
"PX16_SECURITY_GROUP"."CIDN"='C69C1Y')
filter("PX16_COCODEGRP_SECURITYGRP"."CIDN"="PX16_SECURITY_GROUP"."CIDN")
277 rows selected.
Really need advice on it.Without formatting using [ PRE ] and [ /PRE ] tags it is nearly impossible to read much less provide help.
But what is it you hope to accomplish by breaking it up into smaller views?
Improvements in ease of maintenance will likely be offset by poorer performance.
Maybe you are looking for
-
How can I make signature darker when I print the report?
I need to put my manager's signature on the report. The signature is too light, How can I make it darker when I print the report? I used file link and OLE, both did't make it. Thanks.
-
Hi All, I have a SQL database. I am finding it hard to list the colums names of a particular table in my DB. can someone please tell me how i can see just the colum names in the table? using SELECT * FROM <TABLENAME> from the command line is not help
-
Hello all. I'm trying to sync an animation in Flash with a piece of music I created in Reason 4. The audio is at 120BPM and the Flash movie is currently set to 24FPS - I haven't actually created the animation yet - I've merely imported the audio into
-
Why does "ken burns" increase speed going in/out?
If you've used Flash, you know that you can control the motion by 'easing in/out', that is, the constant and consistent motion of a picture or object can be emphasized at the start or end of a tween (move slow and increases in motion speed towards th
-
Struggling to sync, match calendars, contacts and I need HELP!
HI Please help me, techie people! I received my iPhone 3G S yesterday (my first iPhone) and hardly got any sleep last night through trying to resolve some syncing issues. These are my problems: All my contacts mixed up en route into my iPhone, so con