FREE Sign-Up with Gmail and Receive Pdf's and Updates via Mail -Click Here
Automatic
Workload Repository (AWR) serves as a repository where it collects , processes
and maintains performance statistics for problem detection & self-tuning
purposes.
The
AWR is used to collect performance statistics including:
Wait
events used to identify performance problems.
-Object
usage statistics.
-Resource
intensive SQL statements.
-Time
model statistics indicating the amount of DB time associated with a process
from the V$SESS_TIME_MODEL and V$SYS_TIME_MODEL views.
-ASH
statistics from the V$ACTIVE_SESSION_HISTORY view.
Some
system and session statistics from the V$SYSSTAT and V$SESSTAT views.
NOTE : User running AWR packages needs DBA role.
Initialization
parameters & Grants
Set STATISTICS_LEVEL = TYPICAL |
ALL
TYPICAL which ensures collection of all major
statistics required for database self-management functionality and provides
best overall performance. The default value should be adequate for most
environments
ALL, additional statistics are added to the set of statistics collected with the TYPICAL setting. The additional statistics are timed OS statistics and plan execution statistics.
BASIC disables the collection of many of the important statistics required by Oracle Database features and functionality, including:
How To Generate AWR report
Execute the
script
SQL>
@$ORACLE_HOME/rdbms/admin/awrrpt.sql
What are the
Common WAIT EVENTS in AWR report ?
If you want a quick instance wide
wait event status, showing which events are the biggest contributors to total
wait time, you can use the following query :
SQL> select event, total_waits,time_waited from V$system_eventwhere event NOT IN
('pmon timer', 'smon timer', 'rdbms ipc reply', 'parallel deque wait',
'virtual circuit', '%SQL*Net%', 'client message', 'NULL event')
order by time_waited desc;
EVENT TOTAL_WAITS TIME_WAITED
------------------------ ------------- -------------
db file sequential read 35051309 15965640
latch free 1373973 1913357
db file scattered read 2958367 1840810
enqueue 2837 370871
buffer busy waits 444743 252664
log file parallel write 146221 123435
1. DB File
Sequential Read.
Is
the wait that comes from the physical side of the database. This could indicate
poor joining order of tables or un-selective indexes in your SQL
It
related to memory starvation and non selective index use
·
To Overcome this, I/O for sequential reads
can be reduced by tuning SQL calls that result in full table scans and using
the partitioning option for large tables.
·
Check to ensure that index scans are
necessary, and check join orders for multiple table joins.
2. DB File Scattered Read.
That
generally happens during a full scan of a table or Fast Full Index Scans.
A
large number here indicates that your table may have missing indexes,
statistics are not updated or your indexes are not used.
Also,
IO system is overloaded and performing poorly, Hence IO operations are taking
too long
Solution :
·
You need to reduce the amount of full table
scans by tuning SQL statement
·
Try to cache small tables to avoid reading
them in over and over again, since a full table scan is put at the cold end of
the LRU (Least Recently Used) list.
·
You either need to reduce the cost of I/O,
e.g. by getting faster disks or by distributing your I/O load better,
3. Buffer Busy Waits.
A
buffer busy wait happens when multiple processes concurrently want to modify
the same block in the buffer cache. This typically happens during massive
parallel inserts if your tables do not have free lists and it can happen if you
have too few rollback segments.
Solution :
·
Buffer busy waits can be reduced by using
reverse-key indexes for busy indexes and by partitioning busy tables.
·
If the wait is on a data block, you can
move data to another block to avoid this hot block, increase the freelists on
the table
·
If the wait is on an index block, you should
rebuild the index, partition the index, or use a reverse key index.
·
If the wait is on an undo block, you need to
reduce the data density on the table driving this consistent read or increase
the DB_CACHE_SIZE
Note:
Buffer busy waits should not be greater than 1 percent.
4. Free Buffer Waits.
Occurs,
When a session needs a free buffer and cannot find one. (When there is no place
to put a new block in Buffer).
Solutions
:
·
This indicate that you need to increase the
DB_BUFFER_CACHE
·
also indicate that unselective SQL is causing
data to flood the buffer cache with index blocks
·
The Database Writer (DBWR) is not writing
quickly enough; the buffer cache could be full of multiple versions of the same
buffer, causing great inefficiency. To address this, you may want to consider accelerating
incremental checkpointing
Best
Way :
Increase
the DB_CACHE_SIZE; shorten the checkpoint; tune the code to get less dirty
blocks, faster I/O, use multiple DBWR’s.
5. Log File SYNc
Could
indicate excessive commits. A Log File Sync happens each time a commit (or
rollback) takes place.
log file
sync normally happens when the archiving is not transfer according to its
requirement speed, the logswitch waits for the arch process to write the
filled redo to archive log file..
To overcome
either we have to increase the archive processs so it write more faster else
we have to keep lag_target to zero else increase one more redo group.
OR Multiplex
different mount of archiving destination... keeping no longer any file in
hot bkp mode and also trying to solve
and reduce more redo generated file
• Tune LGWR
to get good throughput to disk eg: Do
not put redo logs on RAID5 (Because it
is very slow for applications that write a lot)
• Reduce
overall number of commits by batching transactions so that there are fewer
distinct COMMIT operations
6. Log File Switch
log
file switch (checkpoint incomplete): May indicate excessive db files or slow IO
subsystem
log
file switch (archiving needed):
Indicates archive files are written too slowly
log
file switch completion: May need more log files per
All
commit requests are waiting for "logfile switch (archiving needed)"
or "logfile switch (chkpt. Incomplete)."
To
Overcome this , Ensure that the archive disk is not full or slow. DBWR may be too
slow because of I/O. You may need to add more or larger redo logs, and you may
potentially need to add database writers if the DBWR is the problem.
AWR Baselines
·
A
baseline is defined as a range of snapshots that can be used to compare to
other pairs of snapshots.
·
The
main purpose of a baseline is to preserve typical runtime statistics in the AWR
repository, allowing you to run the AWR snapshot reports on the preserved
baseline snapshots at any time and compare them to recent snapshots contained
in the AWR.
·
This
allows you to compare current performance (and configuration) to established
baseline performance, which can assist in determining database performance
problems.
·
It
is frequently a good idea to create a baseline in the AWR.
How to Create
baselines ?
You can use the create_baseline procedure contained in the dbms_workload_repository stored PL/SQL package to create a baseline as seen in this example:
SQL> EXEC dbms_workload_repository.create_baseline (start_snap_id=>102, end_snap_id=>105, baseline_name=>'MY Baseline');
You can use the create_baseline procedure contained in the dbms_workload_repository stored PL/SQL package to create a baseline as seen in this example:
SQL> EXEC dbms_workload_repository.create_baseline (start_snap_id=>102, end_snap_id=>105, baseline_name=>'MY Baseline');
How To View the Baselines ?
Baselines
can be seen using the DBA_HIST_BASELINE view as seen in the following example:
SELECT baseline_id, baseline_name, start_snap_id, end_snap_id
FROM dba_hist_baseline;
BASELINE_ID BASELINE_NAME START_SNAP_ID END_SNAP_ID
----------- --------------- ------------- -----------
1 MY Baseline 102 105
SELECT baseline_id, baseline_name, start_snap_id, end_snap_id
FROM dba_hist_baseline;
BASELINE_ID BASELINE_NAME START_SNAP_ID END_SNAP_ID
----------- --------------- ------------- -----------
1 MY Baseline 102 105
You can remove a baseline using the
dbms_workload_repository.drop_baseline procedure as seen in this example that
drops the “MY Baseline” that we just created.
EXEC
dbms_workload_repository.drop_baseline (baseline_name=>'MY Baseline',
Cascade=>FALSE);
Note that the cascade parameter will cause all associated snapshots to be removed if it is set to TRUE;
Note that the cascade parameter will cause all associated snapshots to be removed if it is set to TRUE;
Otherwise, the snapshots will be cleaned up automatically by the AWR
automated processes.
There are other scripts too, here is
the full list:
REPORT NAME
|
SQL Script
|
Automatic Workload Repository Report
|
awrrpt.sql
|
Automatic Database Diagnostics Monitor Report
|
addmrpt.sql
|
ASH Report
|
ashrpt.sql
|
AWR Diff Periods Report
|
awrddrpt.sql
|
AWR Single SQL Statement Report
|
awrsqrpt.sql
|
AWR Global Report
|
awrgrpt.sql
|
AWR Global Diff Report
|
awrgdrpt.sql
|
The scripts prompt you to enter the followings
·
the
report format (html or text)
·
the
start snapshot id,
·
the
end snapshot id and
·
the
report filename.
This script looks like Statspack; it
shows all the AWR snapshots available and asks for two specific ones as
interval boundaries.
Q. How to Generate AWR Report Single
Select Statement ?
Run the awrsqrpt.sql script from
$ORACLE_HOME/rdbms/admin/ as a sys user
See Also :
Nice blog thanks for sharing your information.Oracle R12 Financials Training in Hyderabad
ReplyDeleteI will recommend anyone looking for Business loan to Le_Meridian they helped me with Four Million USD loan to startup my Quilting business and it's was fast When obtaining a loan from them it was surprising at how easy they were to work with. They can finance up to the amount of $500,000,000.000 (Five Hundred Million Dollars) in any region of the world as long as there 1.9% ROI can be guaranteed on the projects.The process was fast and secure. It was definitely a positive experience.Avoid scammers on here and contact Le_Meridian Funding Service On. lfdsloans@lemeridianfds.com / lfdsloans@outlook.com. WhatsApp...+ 19893943740. if you looking for business loan.
ReplyDeleteGood Post!
ReplyDelete