1. Shared Pool查看
show parameter shared; 查看shared pool大小
alter system set shared_pool_size=600M; --修改shared pool大小

相关参数查看:
select * from v$sysstat;
select * from v$sysstat where name='parse count (hard)';
select * from v$sysstat where name like '%hard%';
注意其中的parse count (hard)对应的value值

alter system set cursor_sharing='similar';
alter system set cursor_sharing='exact';

2. 使用绑定变量
select * from emp where empno = &empno;

重要实验:
准备表:
create table m(x int);

步骤1: 创建2个存储过程
create or replace procedure proc1
as
begin
    for i in 1..100000
    loop
        execute immediate
        'insert into m values(:x)' using i;
    end loop;
end;
/

create or replace procedure proc2
as
begin
        for i in 1..100000
        loop
                execute immediate
                'insert into m values('||i||')';
        end loop;
end;
/

步骤2:开启计时器
set timing on

步骤3:执行第一个存储过程,查看执行时间
exec proc2;

步骤4:删除刚插入的语句
truncate table m;

步骤5:执行第二个存储过程,查看执行时间
exec proc1;

在oracle9上面的评测结果:
@>set timing on
@>exec proc2;

PL/SQL procedure successfully completed.

Elapsed: 00:00:15.28
@>select count(*) from m;

    COUNT(*)
----------
        100000

Elapsed: 00:00:00.01
@>truncate table m;

Table truncated.

Elapsed: 00:00:00.39
@>exec proc1;

PL/SQL procedure successfully completed.

Elapsed: 00:00:05.21

结论: 比较绑定变量与不绑定变量的差异, 发现不绑定变量比绑定变量消耗时间多3-5倍。