Tải bản đầy đủ (.pdf) (10 trang)

OCA /OCP Oracle Database 11g A ll-in-One Exam Guide- P96 doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (707.06 KB, 10 trang )

OCA/OCP Oracle Database 11g All-in-One Exam Guide
906
Clicking the SQL Tuning Advisor task name or selecting the radio button next to
the task and clicking VIEW RESULT, you see the results of the analysis in Figure 25-8.
Note that the results include recommendations for user SQL (e.g., RJB) and for
system accounts (e.g., SYSMAN and DBSNMP). Each SQL statement has one or more
types of recommendation, including statistics gathering, creating a SQL Profile,
creating an index, or revising the SQL statement itself. You can implement the SQL
Profile recommendation by clicking IMPLEMENT ALL PROFILES.
Figure 25-7 Advisor Central task results
Chapter 25: Performance Tuning
907
PART III
Selecting the radio button for the fourth SQL statement in Figure 25-8, you can see
a detailed explanation of all recommendations for this SQL statement in Figure 25-9.
In Figure 25-9, you are advised to implement one of the recommendations, such
as saving a SQL Profile for future executions or creating an index on one of the tables
in the SQL query.
Figure 25-8 SQL Tuning Advisor recommendations summary
OCA/OCP Oracle Database 11g All-in-One Exam Guide
908
The SQL Tuning Advisor API:
the DBMS_SQLTUNE Package
If you need to have more control over your tuning tasks or want to run a specific set
of tuning tasks repeatedly, you can use the DBMS_SQLTUNE PL/SQL package to
create, run, and monitor a SQL Tuning Advisor job.
For a basic analysis of a SQL statement, you will use the following procedures
within DBMS_SQLTUNE:
• CREATE_TUNING_TASK Create a tuning task for a SQL statement or a SQL
Tuning Set.
• EXECUTE_TUNING_TASK Execute a tuning task created with CREATE_


TUNING_TASK.
• REPORT_TUNING_TASK Show the results and recommendations from the
SQL Tuning Advisor.
In addition, you can use the following data dictionary views to query the name
and status of tuning jobs:
• DBA_ADVISOR_LOG Task names, status, and execution statistics for all tasks
Figure 25-9 SQL Tuning Advisor detailed recommendations
Chapter 25: Performance Tuning
909
PART III
• DBA_/USER_ADVISOR_TASKS More detailed information about advisor
tasks, such as advisor name, user-specified description, and execution type for
the current user
• V$ADVISOR_PROGRESS More detailed information about the completion
status and time remaining for an advisor task
Exercise 25-3: Run the SQL Tuning Advisor for a SQL Statement In this
exercise, you will use DBMS_SQLTUNE to generate recommendations for one of the
SQL statements in Figure 25-8.
1. Connect to the database with SQL*Plus as user SYSTEM, and create the table
to be used in this exercise:
create table object_analysis as select * from all_objects;
2. These commands, executed at the SQL prompt, will create a variable to store the
name of the task, create a task to tune one statement, and then run the task:
variable vtask varchar2(100);
execute :vtask := dbms_sqltune.create_tuning_task(-
sql_text=>'select distinct object_id from object_analysis');
execute dbms_sqltune.execute_tuning_task(:vtask);
3. Retrieve the recommendations from the tuning task, first setting up SQL*Plus
to display them:
set long 10000

set longchunksize 10000
select dbms_sqltune.report_tuning_task(:vtask) from dual;
The illustration shows Steps 2 and 3.
4. Study the output of the tuning task, as retrieved in Step 3. Following the detail
of the task, there will be a recommendation to gather statistics on the table,
and an example of a procedure call to do this.
5. Tidy up:
drop table object_analysis;
OCA/OCP Oracle Database 11g All-in-One Exam Guide
910
The SQL Access Advisor
The SQL Access Advisor performs an analysis of overall SQL performance using a
workload specification, concentrating on the segment structures. The workload
specification can be one of the following:
• A single SQL statement
• A SQL statement tuning set
• Current SQL cache contents
• A hypothetical workload imputed from the DDL of a set of objects
Recommendations from the SQL Access Advisor include new indexes, materialized
views, and partitioning. There is a graphical interface through Enterprise Manager, and
a PL/SQL API.
Using the SQL Access Advisor with Database Control
The four steps to create a set of recommendations are as follows:
1. Create a task.
2. Define the workload.
3. Generate the recommendations.
4. Review and implement the recommendations.
From the SQL Advisors window in Figure 25-2, click the SQL Access Advisor link.
You will see the page shown in Figure 25-10, where you can perform one of two tasks:
verify that existing structures such as indexes and materialized views are being used,

or recommend new structures.
Figure 25-10 SQL Access Advisor options
Chapter 25: Performance Tuning
911
PART III
For this example, you want to find new access structures, so you select the second
radio button. If you select the Inherit Options check box, you can choose a template
that may fit your environment, such as OLTP or data warehousing. When you click
CONTINUE, you will see the first step of the wizard as in Figure 25-11.
For the source of the tuning activity, you can select one of three sources: recent SQL
from the cache, an existing SQL Tuning Set (such as the SQL Tuning Set created in the
SQL Tuning Advisor example earlier in this chapter), or a generated workload based
on the type of queries that appear likely given the structure of the objects in one or
more schemas. In this example, we want to analyze all current and recent SQL activity.
Therefore click the corresponding radio button and then click NEXT.
The next page, in Figure 25-12, lets you select which types of access structures that the
SQL Access Advisor should recommend: indexes, materialized views, and partitioning. In
addition, you can direct the SQL Access Advisor to perform a limited analysis on just
the high-cost statements—or perform a relatively time-consuming analysis on all
relationships between the tables in the specified workload. The Advanced Options
section lets you further refine the analysis based on disk space limitations as well as
specify alternate locations for recommended indexes and materialized views. Select
the Indexes and Materialized Views check boxes and select the Comprehensive radio
button. Finally, click NEXT.
The next page, in Figure 25-13, specifies the scheduling options for the tuning task.
As you can see, Enterprise Manager (EM) will automatically create the task for you.
Figure 25-11 Specify SQL Access Advisor workload source
OCA/OCP Oracle Database 11g All-in-One Exam Guide
912
Figure 25-12 Specifying SQL Access Advisor recommendation options

Figure 25-13 Specifying SQL Access Advisor scheduling options
Chapter 25: Performance Tuning
913
PART III
Other options on this page include how much logging the SQL Access Advisor generates,
how long the task will remain in the database, the total time allotted to this task, and
when to start the task.
In Figure 25-13, accept the default options and click NEXT to proceed to Step 4 of
the wizard, as you can see in Figure 25-14. Step 4 summarizes the options you have
chosen and gives you a chance to revise the options before submitting the job.
Note the SHOW SQL button in Figure 25-14. This will show the API calls being
generated by the wizard. This is a useful source of code for scripted tuning jobs
that can be incorporated into a batch job, which includes other SQL commands
or processes that you cannot easily perform repeatedly within EM.
Click the SUBMIT button shown in Figure 25-14 to start the analysis. From the Advisor
Central page, you can monitor the progress of the job. When the job completes, select
the job and click VIEW RESULT. The page in Figure 25-15 shows a summary of the
improvements you can make if you implement the recommendations in the second
tab. The SQL Statements tab shows you the statements analyzed and gives you the
option to implement the recommendations. The Details tab recaps the options you
chose to run this analysis. In this particular analysis, almost half of the recent SQL
statements may benefit dramatically if the recommendations are implemented.
Using the SQL Access Advisor with DBMS_ADVISOR
Using the SQL Access Advisor via the DBMS_ADVISOR package can get quite
complex. Using Enterprise Manager is an easier way to run most day-to-day analyses.
There is, however, one procedure designed to make the job easy. DBMS_ADVISOR.
Figure 25-14 Reviewing SQL Access Advisor options
OCA/OCP Oracle Database 11g All-in-One Exam Guide
914
QUICK_TUNE is straightforward and takes as input a single SQL statement to tune. As

a result, it performs much like the SQL Tuning Advisor but can perform a much more
in-depth analysis, producing more recommendations than the SQL Tuning Advisor,
such as materialized view recommendations. The procedure requires (as a minimum)
three arguments: the name of the advisor, the name of the task to be run, and the
statement. For example:
SQL> execute dbms_advisor.quick_tune(-
3 dbms_advisor.sqlaccess_advisor,-
4 'task1',-
5 'select distinct object_id from object_analysis'-
6 );-
7 /
PL/SQL procedure successfully completed.
SQL>
The results of the tuning effort reside in the data dictionary view USER_ADVISOR_
ACTIONS, but the output is not very readable. Therefore, you can use the procedure
CREATE_FILE to create the script you can use to implement the recommendations
Figure 25-15 SQL Access Advisor recommendation summary
Chapter 25: Performance Tuning
915
PART III
generated by the QUICK_TUNE procedure. First, create a directory object to point to
a file system directory to hold the script:
SQL> create directory tune_scripts as '/u06/tune_scripts';
Directory created.
SQL>
Next, use CREATE_FILE to create the script containing the implementation
recommendations:
SQL> begin
2 dbms_advisor.create_file
3 (dbms_advisor.get_task_script('task1'),

4 'TUNE_SCRIPTS',
5 'tune_fts.sql'
6 );
7 end;
8 /
PL/SQL procedure successfully completed.
SQL>
In this example, the file tune_fts.sql looks like this:
Rem SQL Access Advisor: Version 11.1.0.6.0 – Production
Rem
Rem Username: JON
Rem Task: task1
Rem Execution date:
Rem
CREATE MATERIALIZED VIEW LOG ON
"JON"."OBJECT_ANALYSIS"
WITH ROWID, SEQUENCE("OBJECT_ID")
INCLUDING NEW VALUES;
CREATE MATERIALIZED VIEW "JON"."MV$$_0BDC0000"
REFRESH FAST WITH ROWID
ENABLE QUERY REWRITE
AS SELECT JON.OBJECT_ANALYSIS.OBJECT_ID C1, COUNT(*) M1
FROM JON.OBJECT_ANALYSIS
GROUP BY JON.OBJECT_ANALYSIS.OBJECT_ID;
begin
dbms_stats.gather_table_stats
('"JON"','"MV$$_0BDC0000"',NULL,dbms_stats.auto_sample_size);
end;
/
The recommendations include creating a materialized view log, creating a

materialized view that can be used for query rewrite, and collecting statistics on
the materialized view.

×