回覆列表
  • 1 # 使用者8108804039310

    對於SQL的執行計劃,一般儘量避免TABLE ACCESS FULL的出現,那怎樣去定位,系統裡面哪些SQL指令碼存在TABLE ACCESS FULL行為,對於9i及以後版本,使用以下語句即可

    select *

    from v$sql_plan v

    where v.operation = "TABLE ACCESS"

    and v.OPTIONS = "FULL"

    and v.OBJECT_OWNER="MS";--指定使用者下

    查詢得到SQL_ID,以及ADDRESS,HASH_VALUE,PLAN_HASH_VALUE,OBJECT_NAME後,就可以定位到具體的SQL語句了。

    如:

    select s.SQL_TEXT

    from v$sqlarea s

    where s.SQL_ID = "4dpd97jh2gzsd"

    and s.HASH_VALUE = "1613233933"

    and s.PLAN_HASH_VALUE = "3592287464";

    或者

    select s.SQL_TEXT from v$sqlarea s where s.ADDRESS = "00000000A65D2318";

  • 中秋節和大豐收的關聯?
  • 明知道吸菸有害健康,為什麼有的人依然在吸?你有什麼看法?