對於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";
對於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";