[oracle@localhost ~]$ cat basicbind.sql alter session set session_cached_cursors = 0; set feedback off heading off timing on declare v_cust_id varchar2(30); begin for i in 1..200000 loop execute immediate 'select user_name from james_t where id = :id ' into v_cust_id using i; end loop; end; / exit; [oracle@localhost ~]$ cat nobind.sql alter session set session_cached_cursors = 0; set feedback off heading off timing on declare v_cust_id varchar2(30); begin for i in 1..200000 loop execute immediate 'select user_name from james_t where id = ' || i || '' into v_cust_id; end loop; end; / exit; [oracle@localhost ~]$ cat enhancedbind.sql set feedback off heading off timing on declare v_cust_id varchar2(30); begin for i in 1..200000 loop execute immediate 'select user_name from james_t where id = :id ' into v_cust_id using i; end loop; end; / exit; [oracle@localhost ~]$ cat noparse.sql set heading off feedback off timing on declare card_cur integer; v_cust_id varchar2(30); ignore integer; begin card_cur := dbms_sql.open_cursor; dbms_sql.parse(card_cur, 'select user_name from james_t where id = :id ',dbms_sql.native); for i in 1..200000 loop dbms_sql.define_column_char(card_cur, 1, v_cust_id,30); dbms_sql.bind_variable(card_cur, ':id', i); ignore := dbms_sql.execute(card_cur); end loop; dbms_sql.close_cursor(card_cur); end; / exit; [oracle@localhost ~]$ [oracle@localhost ~]$ cat stress.sh echo "stree $1 concurrency" for num in `seq 1 $1`; do sqlplus -S james/james @$2 & done wait 847 for SEQ in `seq 1 6`; do stress.sh $SEQ noparse.sql; done 848 for SEQ in `seq 1 6`; do stress.sh $SEQ enhancedbind.sql; done 849 for SEQ in `seq 1 6`; do stress.sh $SEQ basicbind.sql; done 850 for SEQ in `seq 1 6`; do stress.sh $SEQ nobind.sql; done