Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: long runtimes cured by cutting hash_area_size by 90% - ???
Attached are 3 PLANs output by tkprof after SQL_TRACE. This is Oracle 8.1.7.4 on Sun Solaris, NO parallel query.
Attached also are
Queries are generated by a tool, Cognos.
Note: table RI_XLR_T has 1.8M rows, others are ALL under 60k.
tkprof PLANS -
13 secs., fastest w/ 1Meg HASH_AREA_SIZE.
(Similar times seen for 2Meg, 500k)
6 mins. 35 secs., slowest w/ 100Meg HASH_AREA_SIZE. There’s a killer HASH JOIN at the innermost point of the PLAN .. (Similar times seen for 8Meg, 10Meg, 20Meg)
Hash_Area_Size runtime (faster when smaller):
> 10,000,000 6:16 ( 6+ mins )
> 1,000,000 0:15 ( 16 secs)
This does NOT use parallel query.
It is repeatable.
Table Rowcounts:
xlr: 1.8M xcp: 61k mcp: 44k xru: 30k xrx: 30k
In advance thanks if you can shed light on the mysteries of CBO, etc. etc.
TKPROF: Release 8.1.7.4.0 - Production on Fri Apr 11 14:47:29 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Trace file: rkr_uat_ora_20156.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 ********************************************************************************
alter session set SQL_TRACE = TRUE
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 1 0.00 0.00 0 0 0 0
Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 18
select 'CHRISBARR kq2 count: '||count(1) from (
select T1.RRSHNA, T2.LONA, T1.PSNA, T5.UDDA, T6.RITYNA, T6.AMTYNA, T6.AM, T7.UDTYNA, T7.UDDA, T8.EVAM, TO_DATE(RTRIM(T8.EVDA) ,'YYYY-MM-DD' ), SUBSTR(T5.UDDA,1 ,INSTR(T5.UDDA,'#' )-1), T1.TKSHNA, T6.FRDA, T6.TODA from RICOS.RI_REX_T T12, RICOS.RI_REX_T T13, RICOS.RI_XRX_T T2, RICOS.RI_XRU_T T5, RICOS.RI_XCP_T T1, RICOS.RI_XLR_T T6, RICOS.T_LEV_TEMP T8, RICOS.RI_MCP_T T11, RICOS.RI_UDL_T T7
and T1.SU=T6.CPSU(+) and T6.CPSU=T8.SU(+) and T6.RITYNA=T8.NNDXKE2(+)
and T2.TYNA='CPY' and T2.TYNA='CPY' and T2.TODA=99991231 and T1.SCTYNA='FLEET1' and T1.TODA=99991231 and T6.CFFL='Y' and T6.RITYNA in ('TCE', 'DDL') and T5.UDTYNA='Primary Officer' and T1.CPTYNA='OBE-CPY-FAC ' and T13.RIENGEID=T11.RRRIENGEID and T12.RIENGEID=T11.TKRIENGEID and T13.RIENSHNA=T1.RRSHNA
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.01 0 0 0 0 Execute 1 0.13 0.12 0 0 0 0 Fetch 2 395.43 395.43 0 204595 41 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 395.56 395.56 0 204595 41 1
Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 18
Rows Row Source Operation
------- --------------------------------------------------- 1 SORT AGGREGATE
12348 NESTED LOOPS OUTER 12348 NESTED LOOPS 12350 NESTED LOOPS 12350 NESTED LOOPS 31485 HASH JOIN 15449 TABLE ACCESS FULL RI_REX_T 94289063 HASH JOIN 12349 TABLE ACCESS FULL RI_XCP_T 44817 TABLE ACCESS FULL RI_MCP_T 43833 TABLE ACCESS BY INDEX ROWID RI_REX_T 62968 INDEX UNIQUE SCAN (object id 82245) 24698 TABLE ACCESS BY INDEX ROWID RI_XRX_T 24698 INDEX RANGE SCAN (object id 82223) 24696 INDEX RANGE SCAN (object id 82197) 7039 INDEX RANGE SCAN (object id 82228) 91292 INLIST ITERATOR 91292 INDEX RANGE SCAN (object id 82166)8386 TABLE ACCESS FULL T_LEV_TEMP
alter session set SQL_TRACE = FALSE
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.01 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.01 0.00 0 0 0 0
Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 18
OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 2 0.01 0.01 0 0 0 0 Execute 3 0.13 0.12 0 0 0 0 Fetch 2 395.43 395.43 0 204595 41 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 7 395.57 395.56 0 204595 41 1
Misses in library cache during parse: 1
OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0 Execute 0 0.00 0.00 0 0 0 0 Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 0 0.00 0.00 0 0 0 0
Misses in library cache during parse: 0
3 user SQL statements in session.
0 internal SQL statements in session.
3 SQL statements in session.
1 session in tracefile. 3 user SQL statements in trace file. 0 internal SQL statements in trace file. 3 SQL statements in trace file. 3 unique SQL statements in trace file. 109 lines in trace file.
TKPROF: Release 8.1.7.4.0 - Production on Fri Apr 11 14:47:42 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Trace file: rkr_uat_ora_18217.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 ********************************************************************************
alter session set SQL_TRACE = TRUE
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0 Execute 1 0.00 0.01 0 0 0 0 Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 1 0.00 0.01 0 0 0 0
Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 18
select 'CHRISBARR kq2 count: '||count(1) from (
select T1.RRSHNA, T2.LONA, T1.PSNA, T5.UDDA, T6.RITYNA, T6.AMTYNA, T6.AM, T7.UDTYNA, T7.UDDA, T8.EVAM, TO_DATE(RTRIM(T8.EVDA) ,'YYYY-MM-DD' ), SUBSTR(T5.UDDA,1 ,INSTR(T5.UDDA,'#' )-1), T1.TKSHNA, T6.FRDA, T6.TODA from RICOS.RI_REX_T T12, RICOS.RI_REX_T T13, RICOS.RI_XRX_T T2, RICOS.RI_XRU_T T5, RICOS.RI_XCP_T T1, RICOS.RI_XLR_T T6, RICOS.T_LEV_TEMP T8, RICOS.RI_MCP_T T11, RICOS.RI_UDL_T T7
and T1.SU=T6.CPSU(+) and T6.CPSU=T8.SU(+) and T6.RITYNA=T8.NNDXKE2(+)
and T2.TYNA='CPY' and T2.TYNA='CPY' and T2.TODA=99991231 and T1.SCTYNA='FLEET1' and T1.TODA=99991231 and T6.CFFL='Y' and T6.RITYNA in ('TCE', 'DDL') and T5.UDTYNA='Primary Officer' and T1.CPTYNA='OBE-CPY-FAC ' and T13.RIENGEID=T11.RRRIENGEID and T12.RIENGEID=T11.TKRIENGEID and T13.RIENSHNA=T1.RRSHNA
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 2 12.86 13.55 5809 204595 41 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 12.86 13.55 5809 204595 41 1
Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 18
Rows Row Source Operation
------- --------------------------------------------------- 1 SORT AGGREGATE
12348 NESTED LOOPS OUTER 12348 NESTED LOOPS 12350 NESTED LOOPS 12350 NESTED LOOPS 31485 HASH JOIN 12349 TABLE ACCESS FULL RI_XCP_T 42951 HASH JOIN 15449 TABLE ACCESS FULL RI_REX_T 44817 TABLE ACCESS FULL RI_MCP_T 43833 TABLE ACCESS BY INDEX ROWID RI_REX_T 62968 INDEX UNIQUE SCAN (object id 82245) 24698 TABLE ACCESS BY INDEX ROWID RI_XRX_T 24698 INDEX RANGE SCAN (object id 82223) 24696 INDEX RANGE SCAN (object id 82197) 7039 INDEX RANGE SCAN (object id 82228) 91292 INLIST ITERATOR 91292 INDEX RANGE SCAN (object id 82166)8386 TABLE ACCESS FULL T_LEV_TEMP
alter session set SQL_TRACE = FALSE
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 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.00 0.00 0 0 0 0
Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 18
OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 2 0.00 0.00 0 0 0 0 Execute 3 0.00 0.01 0 0 0 0 Fetch 2 12.86 13.55 5809 204595 41 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 7 12.86 13.56 5809 204595 41 1
Misses in library cache during parse: 0
OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0 Execute 0 0.00 0.00 0 0 0 0 Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 0 0.00 0.00 0 0 0 0
Misses in library cache during parse: 0
3 user SQL statements in session.
0 internal SQL statements in session.
3 SQL statements in session.
1 session in tracefile. 3 user SQL statements in trace file. 0 internal SQL statements in trace file. 3 SQL statements in trace file. 3 unique SQL statements in trace file. 109 lines in trace file.
SQL> select name,value from v$parameter where value not like '%/users/oracle/%' order by name;
NAME VALUE ----------------------------------- ----------------------------------- O7_DICTIONARY_ACCESSIBILITY TRUE always_anti_join NESTED_LOOPS always_semi_join STANDARD aq_tm_processes 0 audit_file_dest ?/rdbms/audit audit_trail NONE background_core_dump partial backup_tape_io_slaves FALSE bitmap_merge_area_size 1048576 blank_trimming FALSE commit_point_strength 1 compatible 8.1.7 control_file_record_keep_time 7 create_bitmap_area_size 8388608 cursor_sharing EXACT cursor_space_for_time FALSE db_block_buffers 123070 db_block_checking FALSE db_block_checksum FALSE db_block_lru_latches 4 db_block_max_dirty_target 123070 db_block_size 8192 db_file_direct_io_count 64 db_file_multiblock_read_count 4 db_files 400 db_writer_processes 1 dblink_encrypt_login FALSE dbwr_io_slaves 0 disk_asynch_io TRUE distributed_transactions 61 dml_locks 988 enqueue_resources 1408 fast_start_io_target 123070 fast_start_parallel_rollback LOW gc_defer_time 10 gc_releasable_locks 0 gc_rollback_locks 0-1024=32!8REACH global_names TRUE hash_area_size 100000000 hash_join_enabled TRUE hash_multiblock_io_count 8 hi_shared_memory_address 0 hs_autoregister TRUE instance_number 0 java_max_sessionspace_size 0 java_pool_size 20000K java_soft_sessionspace_limit 0 job_queue_interval 60 job_queue_processes 0 large_pool_size 100000000 license_max_sessions 0 license_max_users 0 license_sessions_warning 0 lm_locks 12000 lm_ress 6000 lock_sga FALSE log_archive_dest_1 location=/rkr_data/rkr_prd/arch/par ch1 mandatory log_archive_dest_2 SERVICE=rkr_prd_stby OPTIONAL REOPE N=120 log_archive_dest_state_1 ENABLE log_archive_dest_state_2 ENABLE log_archive_dest_state_3 enable log_archive_dest_state_4 enable log_archive_dest_state_5 enable log_archive_format arch_log%t_%s.dbf log_archive_max_processes 1 log_archive_min_succeed_dest 1 log_archive_start TRUE log_archive_trace 1 log_buffer 3276800 log_checkpoint_interval 220000000 log_checkpoint_timeout 0 log_checkpoints_to_alert FALSE max_commit_propagation_delay 700 max_dump_file_size 10240 max_enabled_roles 30 max_rollback_segments 49 mts_circuits 0 mts_max_dispatchers 5 mts_max_servers 20 mts_multiple_listeners FALSE mts_servers 0 mts_sessions 0 nls_language AMERICAN nls_territory AMERICA object_cache_max_size_percent 10 object_cache_optimal_size 102400 open_cursors 300 open_links 4 open_links_per_instance 4 optimizer_features_enable 8.1.7 optimizer_index_caching 0 optimizer_index_cost_adj 100 optimizer_max_permutations 80000 optimizer_mode CHOOSE optimizer_percent_parallel 0 oracle_trace_collection_path ?/otrace/admin/cdf oracle_trace_collection_size 5242880 oracle_trace_enable FALSE oracle_trace_facility_name oracled oracle_trace_facility_path ?/otrace/admin/fdf os_roles FALSE parallel_adaptive_multi_user FALSE parallel_automatic_tuning FALSE parallel_broadcast_enabled FALSE parallel_execution_message_size 2148 parallel_max_servers 8 parallel_min_percent 0 parallel_min_servers 0 parallel_server FALSE parallel_server_instances 1 parallel_threads_per_cpu 2 partition_view_enabled FALSE plsql_v2_compatibility FALSE pre_page_sga FALSE processes 200 query_rewrite_enabled FALSE query_rewrite_integrity enforced read_only_open_delayed FALSE recovery_parallelism 0 remote_dependencies_mode TIMESTAMP remote_login_passwordfile NONE remote_os_authent FALSE remote_os_roles FALSE replication_dependency_tracking TRUE resource_limit FALSE rollback_segments r01, r02, r03, r04, rbsbig row_locking always serial_reuse DISABLE serializable FALSE session_cached_cursors 0 session_max_open_files 10 sessions 225 shadow_core_dump partial shared_memory_address 0 shared_pool_reserved_size 51200000 shared_pool_size 1024000000 sort_area_retained_size 2048000 sort_area_size 88064000 sort_multiblock_read_count 2 sql92_security FALSE sql_trace FALSE sql_version NATIVE standby_archive_dest ?/dbs/arch star_transformation_enabled FALSE tape_asynch_io TRUE text_enable FALSE thread 0 timed_os_statistics 0 timed_statistics TRUE transaction_auditing TRUE transactions 247 transactions_per_rollback_segment 5 use_indirect_data_buffers FALSE
158 rows selected.
SQL> quit
select 'kq1 count: '||count(1) from (
select T1.RRSHNA, T2.LONA, T1.PSNA, T5.UDDA, T6.RITYNA, T6.AMTYNA, T6.AM, T7.UDTYNA, T7.UDDA, T8.EVAM, TO_DATE(RTRIM(T8.EVDA) , 'YYYY-MM-DD' ), SUBSTR(T5.UDDA, 1 , INSTR(T5.UDDA, '#' )-1), T1.TKSHNA, T6.FRDA, T6.TODA from REX_T T12, REX_T T13, XRX_T T2, XRU_T T5, XCP_T T1, XLR_T T6, T_LEV_TEMP T8, MCP_T T11, UDL_T T7
and T1.SU = T6.CPSU(+) and T6.CPSU = T8.SU(+) and T6.RITYNA = T8.NNDXKE2(+)
and T2.TYNA = 'AGY' and T2.TYNA = 'AGY' and T2.TODA = 99991231 and T1.SCTYNA = 'HASP1' and T1.TODA = 99991231 and T6.CFFL = 'Y' and T6.RITYNA in ('COR','AGL','GEN') and T5.UDTYNA = 'Primary Contact' and T1.CPTYNA = 'YR-AGY-FAC ' and T13.RIENGEID = T11.RRRIENGEID and T12.RIENGEID = T11.TKRIENGEID and T13.RIENSHNA = T1.RRSHNA
-- Please see the official ORACLE-L FAQ: http://www.orafaq.net -- Author: C. Barr INET: cbarr_at_hotpop.com Fat City Network Services -- 858-538-5051 http://www.fatcity.com San Diego, California -- Mailing list and web hosting services --------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).Received on Fri Apr 11 2003 - 16:43:54 CDT
![]() |
![]() |