Oracle数据库采用严格匹配策略共享SQL语句。这意味着要使两条SQL语句共享,它们必须完全相同,包括空格和换行。

满足共享的SQL语句必须符合以下三个条件:

  1. 字符级比较: 当前执行的语句与共享池中的语句必须完全相同。例如,SELECT * FROM ATABLE; 与以下任何SQL语句都不同:

    • SELECT * from ATABLE
    • Select * From Atable;
  2. 语句所指对象必须完全相同: 两条SQL语句操作的数据库对象必须相同。

  3. 语句中必须使用相同命名的绑定变量: 例如,以下第一组中的两个SQL语句相同,可以共享;而第二组中的两个语句不同,即使在运行时为不同的绑定变量赋予相同的值:

    • 第一组
    • select pin, name from people where pin = :blk1.pin;
    • select pin, name from people where pin = :blk1.pin;

    • 第二组

    • select pin, name from people where pin = :blk1.ot_jnd;
    • select pin, name from people where pin = :blk1.ov_jnd;