- Find SQL statements with high IO and some wait metrics that can give us more insight into what Oracle is doing behind the scenes to access the object.
Solution: Create indexes, force use with hints
- Find "unused indexes".
Solution: Enable collecting statistics on indexes
- Find large table scans.
- Find small full table scans and counts
Solution:Pin those hit tables to buffer pool as KEEP
- Find index range scans and counts
Solution:Pin those hit indexes to buffer pool as KEEP
- Find index unique scans and counts
Solution:Pin those hit indexes to buffer pool as KEEP
- Check for many indexes on data buffer cache
Solution: Adjust parameters OPTIMIZER_INDEX_COST_ADJ=20 and
OPTIMIZER_INDEX_CACHING with the % of indexes on data buffer
cache
- Analyze indexes with compute (or estimate if the you have more than 100,000 rows in your table). If the PCT_DELETED is 20% or higher, the index is candidate for rebuilding. Leaving indexes with high PCT_DELETED without rebuild might cause excessive redo allocation on some systems.
- Check for skewed indexes which happen when there are lots of DML activities in tables. If BLEVEL is higher than 3, those indexes should be re-builded.
- Enable index monitoring feature on the database to monitor which index are rarely used or never used. Accordingly, tune or remove those indexes.
- Detect fragmentation on database objects.
- Identify the amount of memory needed to maintain estimated performance. Solution: DB_CACHE_ADVICE = ON
- Find hard parsed SQL statements frequently and advice programmers to tune them.
- Find invalidated SQL statements which cause certain hard parses, and advice programmers to tune them.
- Find top SQL statements which use high amounts of sharable memory. Also monitor invalidation rate of those statements, and advice programmers to find a solution how those SQL statements can release those shared memories unless they are in use.
- As many users are connected at a time and only a few of them are active (let's say that they are using a thin-thinking application), we have to make sure database is not using static PGA memory size. Setting PGA_Aggregate_Target will save a lot of memory.
0 yorum:
Yorum Gönder