13 copyright © 2005, oracle. all rights reserved. using the sql access advisor
Post on 26-Mar-2015
223 Views
Preview:
TRANSCRIPT
13Copyright © 2005, Oracle. All rights reserved.
Using the SQL Access Advisor
13-2 Copyright © 2005, Oracle. All rights reserved.
Objectives
After completing this lesson, you should be able to do the following:
• Use the SQL Access Advisor to optimize yourentire workload
• Use the Enterprise Manager SQL Access Advisor Wizard
• Use the DBMS_ADVISOR procedures
13-3 Copyright © 2005, Oracle. All rights reserved.
What Does the SQL Access Advisor Do?
• Recommends the proper set of materialized views, materialized view logs, and indexes for a given workload
• Recommends bitmap, function-based, and B-tree indexes
• Recommends how to optimize materialized views so that they can be fast refreshable and take advantage of general query rewrite
13-4 Copyright © 2005, Oracle. All rights reserved.
SQL Access Advisor: Overview
Workload
SQL Access Advisor
Solution
Component of optimizer
Provides implementation
script
No expertiserequired
DBA
What indexes and materialized views
do I need to optimize my
entire workload?
13-6 Copyright © 2005, Oracle. All rights reserved.
SQL Access Advisor: Usage Model
Indexes Materializedviews
Materializedview logs
SQL Access Advisor
User-defined
Hypothetical
SQL cache
Filter options
STS
Workload
13-7 Copyright © 2005, Oracle. All rights reserved.
Possible Recommendations
Recommendation Comprehensive Limited
Add new index on table or materialized view. YES YES
Drop an unused index. YES NO
Modify an existing index by changing the index type.
YES NO
Modify an existing index by adding columns at the end.
YES YES
Add a new materialized view. YES YES
Drop an unused materialized view. YES NO
Add a new materialized view log. YES YES
Modify an existing materialized view log to add new columns or clauses.
YES YES
13-8 Copyright © 2005, Oracle. All rights reserved.
Using the SQL Access Advisor
• Invoke the SQL Access Advisor Wizard in Enterprise Manager.
• Use procedures in the DBMS_ADVISOR package.
13-9 Copyright © 2005, Oracle. All rights reserved.
SQL Access Advisor Repository
• Contains all information needed and generated by the SQL Access Advisor
• Part of the database dictionary
13-10 Copyright © 2005, Oracle. All rights reserved.
Privileges Needed to Use the SQL Access Advisor
• ADVISOR system privilege
• SELECT privileges on tables targeted for materialized view analysis
13-11 Copyright © 2005, Oracle. All rights reserved.
Invoking the SQL Access Advisor Wizard
13-12 Copyright © 2005, Oracle. All rights reserved.
SQLAccessAdvOptions.gif
Setting Initial Options
13-13 Copyright © 2005, Oracle. All rights reserved.
Specifying the Workload Source
13-14 Copyright © 2005, Oracle. All rights reserved.
Specifying Recommendation Options
13-15 Copyright © 2005, Oracle. All rights reserved.
Specifying Recommendation Options
13-17 Copyright © 2005, Oracle. All rights reserved.
Viewing Results
13-18 Copyright © 2005, Oracle. All rights reserved.
Reviewing Recommendations
13-19 Copyright © 2005, Oracle. All rights reserved.
Using the DBMS_ADVISOR Package
1. Create a task and define parameters.
2. Define the workload.
3. Generate the recommendations.
4. View and implement the recommendations.
13-20 Copyright © 2005, Oracle. All rights reserved.
SQL Access Advisor Procedure Flow
SQLWkldobject
SQLAccesstask
CREATE_TASKDELETE_TASKUPDATE_TASK…CREATE_SQLWKLDDELETE_SQLWKLDQUICK_TUNE
SET_TASK_PARAMETERSET_SQLWKLD_PARAMETERRESET_TASKRESET_SQLWKLD
IMPORT_SQLWKLD…ADD_SQLWKLD_STAT…DELETE_SQLWKLD_STAT…UPDATE_SQLWKLD_STAT…
ADD_SQLWKLD_REFDELETE_SQLWKLD_REFEXECUTE_TASKINTERRUPT/CANCEL_TASKMARK_RECOMMENDATIONUPDATE_REC_ATTRIBUTES GET_TASK_REPORT
Create/manage tasks and data.
Gather and manage workload.Prepare tasks.
Prepare and analyze data.Scripts
13-21 Copyright © 2005, Oracle. All rights reserved.
Creating a Task
• Define parameters for the task using DBMS_ADVISOR.SET_TASK_PARAMETER.
• Create a task using DBMS_ADVISOR.CREATE_TASK.
VARIABLE task_id NUMBER;VARIABLE task_name VARCHAR2(255);EXECUTE :task_name := 'MYTASK';EXECUTE DBMS_ADVISOR.CREATE_TASK ('SQL Access Advisor', :task_id, :task_name);
13-22 Copyright © 2005, Oracle. All rights reserved.
Setting SQL Access Advisor Parameters
• Set parameters using the DBMS_ADVISOR procedures:– SET_TASK_PARAMETER – SET_SQLWKLD_PARAMETER
• Types of parameters:– Workload filtering parameters– Task configuration parameters– Schema attributes parameters
13-23 Copyright © 2005, Oracle. All rights reserved.
Using Templates
• Created by:– Setting the template attribute when creating the
task– Using the UPDATE_TASK_ATTRIBUTE procedure
• Specified when using CREATE_TASK:VARIABLE template_id NUMBER;VARIABLE template_name VARCHAR2(255);EXECUTE :template_name := 'MY_TEMPLATE';EXECUTE DBMS_ADVISOR.CREATE_TASK('SQL Access Advisor',:template_id, -:template_name, is_template => 'TRUE');
13-24 Copyright © 2005, Oracle. All rights reserved.
Setting Template Parameters
Use DBMS_ADVISOR.SET_TASK_PARAMETER to set template parameters:
EXECUTE DBMS_ADVISOR.SET_TASK_PARAMETER ( -:template_name,'INDEX_NAME_TEMPLATE',
-'SH_IDX$$_<SEQ>');EXECUTE DBMS_ADVISOR.SET_TASK_PARAMETER ( -:template_name, 'MVIEW_NAME_TEMPLATE', -
'SH_MV$$_<SEQ>');
13-25 Copyright © 2005, Oracle. All rights reserved.
Using a Template to Create a Task
Specify the template when using DBMS_ADVISOR.CREATE_TASK:
VARIABLE task_id NUMBER;VARIABLE task_name VARCHAR2(255);EXECUTE :task_name := 'MYTASK';EXECUTE DBMS_ADVISOR.CREATE_TASK('SQL Access Advisor', :task_id, -:task_name, template=>'MY_TEMPLATE');
13-26 Copyright © 2005, Oracle. All rights reserved.
Defining the Workload
• Created using DBMS_ADVISOR.CREATE_SQLWKLD
• Linked to a task using DBMS_ADVISOR.ADD_SQLWKLD_REF
13-27 Copyright © 2005, Oracle. All rights reserved.
Defining Workload Contents
• SQL Tuning Sets
• User-defined workloads
• SQL cache workloads
• Hypothetical workloads
• Oracle Database 9i Summary Advisor workloads
13-28 Copyright © 2005, Oracle. All rights reserved.
Importing a SQL Tuning Set
VARIABLE sqlsetname VARCHAR2(30);VARIABLE workload_name VARCHAR2(30);VARIABLE saved_stmts NUMBER;VARIABLE failed_stmts NUMBER;EXECUTE :sqlsetname := 'MY_STS_WORKLOAD';EXECUTE :workload_name := 'MY_WORKLOAD';EXECUTE DBMS_ADVISOR.CREATE_SQLWKLD
(:workload_name);EXECUTE DBMS_ADVISOR.IMPORT_SQLWKLD_STS
(:workload_name , -:sqlsetname, 'NEW',
1, :saved_stmts, :failed_stmts);
13-29 Copyright © 2005, Oracle. All rights reserved.
Loading User-Defined Workloads
VARIABLE saved_stmts NUMBER;VARIABLE failed_stmts NUMBER;EXECUTE DBMS_ADVISOR.IMPORT_SQLWKLD_USER( -'MYWORKLOAD', 'NEW', 'SH',
'USER_WORKLOAD', :saved_stmts, :failed_stmts);
13-30 Copyright © 2005, Oracle. All rights reserved.
Loading SQL Cache Workloads
VARIABLE saved_stmts NUMBER;VARIABLE failed_stmts NUMBER;EXECUTE DBMS_ADVISOR.IMPORT_SQLWKLD_SQLCACHE
(-'MYWORKLOAD', 'APPEND',
2, :saved_stmts, :failed_stmts);
13-31 Copyright © 2005, Oracle. All rights reserved.
Using Hypothetical Workloads
VARIABLE workload_name VARCHAR2(255);VARIABLE saved_stmts NUMBER;VARIABLE failed_stmts NUMBER;EXECUTE :workload_name := 'SCHEMA_WKLD';EXECUTE
DBMS_ADVISOR.CREATE_SQLWKLD(:workload_name);
EXECUTE DBMS_ADVISOR.SET_SQLWKLD_PARAMETER (:workload_name, -
VALID_TABLE_LIST, 'SH');EXECUTE DBMS_ADVISOR.IMPORT_SQLWKLD_SCHEMA
( -:workload_name, 'NEW',
2, :saved_stmts, :failed_stmts);
13-32 Copyright © 2005, Oracle. All rights reserved.
Adding SQL Statements to a Workload
VARIABLE sql_text VARCHAR2(400);EXECUTE :sql_text := 'SELECT AVG(amount_sold)
FROM sales';EXECUTE DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT
( -'MYWORKLOAD', 'MONTHLY', 'ROLLUP',
priority=>1, executions=>10, -username => 'SH', sql_text => :sql_text);
13-33 Copyright © 2005, Oracle. All rights reserved.
Removing Workloads
EXECUTE DBMS_ADVISOR.DELETE_SQLWKLD ('MYWORKLOAD');
13-34 Copyright © 2005, Oracle. All rights reserved.
Linking the Workload to a Task
EXECUTE DBMS_ADVISOR.ADD_SQLWKLD_REF('MYTASK', 'MYWORKLOAD');
13-35 Copyright © 2005, Oracle. All rights reserved.
Generating Recommendations
• Generate recommendations by using DBMS_ADVISOR.EXECUTE_TASK.
• Recommendations are stored in the SQL Access Advisor Repository.
13-36 Copyright © 2005, Oracle. All rights reserved.
Viewing and Implementing Recommendations
• Use catalog views: DBA/USER_ADVISOR_RECOMMENDATIONS
• Generate a script by using: DBMS_ADVISOR.GET_TASK_SCRIPT
13-37 Copyright © 2005, Oracle. All rights reserved.
SQL Access Advisor Actions
• CREATE|DROP|RETAIN MATERIALIZED VIEW• CREATE|ALTER|RETAIN MATERIALIZED VIEW LOG• CREATE|DROP|RETAIN INDEX• GATHER STATS
13-38 Copyright © 2005, Oracle. All rights reserved.
Generating SQL Scripts
• Generate a CLOB containing the script for the recommendations:
• Save the Advisor script CLOB to a file:
EXECUTE DBMS_ADVISOR.CREATE_FILE(DBMS_ADVISOR.GET_TASK_SCRIPT('MYTASK'), -'ADVISOR_RESULTS', 'advscript.sql');
CREATE DIRECTORY ADVISOR_RESULTS AS '/mydir';GRANT READ ON DIRECTORY ADVISOR_RESULTS TO
PUBLIC;GRANT WRITE ON DIRECTORY ADVISOR_RESULTS TO
PUBLIC;
13-39 Copyright © 2005, Oracle. All rights reserved.
Performing a Quick Tune
VARIABLE task_name VARCHAR2(255);VARIABLE sql_stmt VARCHAR2(4000);EXECUTE :sql_stmt := 'SELECT COUNT(*) FROM customers WHERE cust_state_province=''CA''';EXECUTE :task_name := 'MY_QUICKTUNE_TASK';EXECUTE DBMS_ADVISOR.QUICK_TUNE(DBMS_ADVISOR.SQLACCESS_ADVISOR, -:task_name, :sql_stmt);
Tune a single SQL statement by using the QUICK_TUNE procedure:
13-40 Copyright © 2005, Oracle. All rights reserved.
Tuning Materialized Views for Fast Refresh and Query Rewrite
• DBMS_MVIEW.EXPLAIN_MVIEW procedure: Advises whether a materialized view is fast refreshable or eligible for general query rewrite
• DBMS_MVIEW.EXPLAIN_REWRITE procedure: Advises whether query rewrite will occur
• DBMS_ADVISOR.TUNE_MVIEW procedure: Advises how to optimize your CREATE MATERIALIZED VIEW statement
13-41 Copyright © 2005, Oracle. All rights reserved.
Using DBMS_ADVISOR.TUNE_MVIEW
TUNE_MVIEW takes two input parameters:
• TASK_NAME: A user-provided task identifier used to access the output results
• MV_CREATE_STMT: A complete CREATE MATERIALIZED VIEW statement
DBMS_ADVISOR.TUNE_MVIEW (task_name IN OUT VARCHAR2, mv_create_stmt IN
[CLOB | VARCHAR2])
13-42 Copyright © 2005, Oracle. All rights reserved.
TUNE_MVIEW Output Results
• Implementation: For implementing materialized views and required components
• Undo: For dropping materialized views and rewrite equivalences
13-43 Copyright © 2005, Oracle. All rights reserved.
Implementation Process Output
• CREATE MATERIALIZED VIEW LOG statements
• ALTER MATERIALIZED VIEW LOG FORCE statements
• One or more CREATE MATERIALIZED VIEW statements
• BUILD_SAFE_REWRITE_EQUIVALENCE statement
13-44 Copyright © 2005, Oracle. All rights reserved.
Undo Process Output
• DROP MATERIALIZED VIEW statements
• DROP_REWRITE_EQUIVALENCE statement
13-45 Copyright © 2005, Oracle. All rights reserved.
Accessing TUNE_MVIEW Output Results
• Script generation using the DBMS_ADVISOR.GET_TASK_SCRIPT function and the DBMS_ADVISOR.CREATE_FILE procedure
• USER_TUNE_MVIEW or DBA_TUNE_MVIEW views
13-46 Copyright © 2005, Oracle. All rights reserved.
Summary
In this lesson, you should have learned how to:
• Use the SQL Access Advisor to optimize yourentire workload
• Use the Enterprise Manager SQL Access Advisor Wizard
• Use the DBMS_ADVISOR procedures
13-47 Copyright © 2005, Oracle. All rights reserved.
Practice 13: Overview
This practice covers using the SQL Access Advisor to tune a series of ad hoc queries.
top related