Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Access Advisor. Кто проведёт за руку?  [new]
mayton
Member

Откуда: loopback
Сообщений: 49734
Добрый день уважаемые DBA и разработчики?

Возникла ситуация, когда требуется срочная оптимизация двух запросов. Tunning Advisor выполнил свою работу и на двух отчётах пишет примерно следующее:

- Consider running the Access Advisor to improve the physical schema design
or creating the recommended index.


Access advisor - штука достаточно сложная и использовать его оголтело как-то не хочется. Я хочу понять саму сущность его работы. Что это? Иммитационное моделирование? Как это работает? Что такое workload? и.д.

Использовать для этой-цели em конечно-же хочется, однако у меня были ситуации, когда em больше подбрасывал новых проблем чем решал текущих. Поэтому очень хотелось бы прокрутить тестовые примеры в консоли SQL*Plus с комментариями. А потом я уж как нибудь разберусь с em.

Читал следующие статьи

1) Performance Tunning Enhancements in Oracle 10g
2) SQL Access Advisor in Oracle10g
3) Automatic SQL Tunning in Oracle Database 10g
4) Документация - Oracle Database Performance Tunning Guide - Глава 12
4) Документация - Oracle Database Performance Tunning Guide - Глава 17 - SQL Access Advisor

однако мало чего понятно. Слишком много непонятных терминов и нет рекомендаций для практических случаев. Трудно также с русскоязычными переводами. Говоря проще их просто нет.

Поэтому прошу ораклоидов оказать консультативную помощь по АccessAdvisor. Речь не идёт об обучении. Просто о помощи в разборе мануала и пошаговом выполнении примеров в документации.

Спасибо всем, кто откликнулся.
26 мар 08, 13:04    [5461069]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
ERROR MESSAGE
Member

Откуда: Москва
Сообщений: 376
Мил человек, ты забыл пообещать етому руковедущему
конкретику повышения его материального благосостояния
Или ты не спишь, но видишь, как тебя за ручку ета нянька будет даром водить? ))

Пожалуйста тебе кликнувшему ))
26 мар 08, 14:18    [5461791]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
mayton
Member

Откуда: loopback
Сообщений: 49734
Ладно. У меня цель - разобратся с Advisor. Я буду потихоньку выкладывать логи своих действий и если кто-то чего-то добавит или посоветует - буду не против.
26 мар 08, 14:22    [5461819]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
mayton
Member

Откуда: loopback
Сообщений: 49734
Вот первый запрос.

RECOMENDATIONS                                                                  
--------------------------------------------------------------------------------
GENERAL INFORMATION SECTION                                                     
------------------------------------------------------------------------------- 
Tuning Task Name                  : mayton-68-7gsh7jvjc0ncg                   
Tuning Task Owner                 : SYS                                         
Scope                             : COMPREHENSIVE                               
Time Limit(seconds)               : 7200                                        
Completion Status                 : COMPLETED                                   
Started at                        : 03/24/2008 12:26:40                         
Completed at                      : 03/24/2008 13:01:22                         
Number of Index Findings          : 1                                           
Number of SQL Restructure Findings: 1                                           
                                                                                
------------------------------------------------------------------------------- 
Schema Name: ORAUSR                                                             
SQL ID     : 7gsh7jvjc0ncg                                                      
SQL Text   : 

SELECT   c.vname, nf.vcodetech, s.nserv_id, s.dbegin, s.nsum
    FROM bs.bstechnic t,
         bs.bstechsubs ts,
         bs.bsservinst si,
         bs.bsservsubs ss,
         bs.bsservice s,
         bs.bsservnotfound nf,
         bs.bscalcchar c
   WHERE t.vcode LIKE :b1
     AND ts.ntech = t.ntech_id
     AND si.ntechsubs = ts.ntechsubs_id
     AND ss.nssubs_id = si.nssubs
     AND ss.nservt IN (SELECT NCHAR
                         FROM bs.bscchar2catcchar
                        WHERE ncatcchar = :b2)
     AND s.nssinst = si.nssinst_id
     AND s.vstate <> 'D'
     AND nf.nserv_id = s.nserv_id
     AND c.nchar_id = s.nservt
ORDER BY 1, 2, 4

             
                                                                                
------------------------------------------------------------------------------- 
FINDINGS SECTION (2 findings)                                                   
------------------------------------------------------------------------------- 
                                                                                
1- Index Finding (see explain plans section below)                              
--------------------------------------------------                              
  The execution plan of this statement can be improved by creating one or more  
  indices.                                                                      
                                                                                
  Recommendation (estimated benefit: 100%)                                      
  ----------------------------------------                                      
  - Consider running the Access Advisor to improve the physical schema design   
    or creating the recommended index.                                          
    create index BS.IDX$$_E2B20001 on BS.BSTECHNIC('VCODE');                    
                                                                                
  - Consider running the Access Advisor to improve the physical schema design   
    or creating the recommended index.                                          
    create index BS.IDX$$_E2B20002 on BS.BSTECHSUBS('NTECH');                   
                                                                                
  - Consider running the Access Advisor to improve the physical schema design   
    or creating the recommended index.                                          
    create index BS.IDX$$_E2B20003 on BS.BSSERVICE('NSSINST');                  
                                                                                
  Rationale                                                                     
  ---------                                                                     
    Creating the recommended indices significantly improves the execution plan  
    of this statement. However, it might be preferable to run "Access Advisor"  
    using a representative SQL workload as opposed to a single statement. This  
    will allow to get comprehensive index recommendations which takes into      
    account index maintenance overhead and additional space consumption.        
                                                                                
2- Restructure SQL finding (see plan 1 in explain plans section)                
----------------------------------------------------------------                
  Predicate "S"."VSTATE"<>'D' used at line ID 19 of the execution plan is an    
  inequality condition on indexed column "VSTATE". This inequality condition    
  prevents the optimizer from efficiently using indices on table                
  "BS"."BSSERVICE".                                                             
                                                                                
  Recommendation                                                                
  --------------                                                                
  - Rewrite the predicate into an equivalent form to take advantage of          
    indices.                                                                    
                                                                                
  Rationale                                                                     
  ---------                                                                     
    The optimizer is unable to use an index if the predicate is an inequality   
    condition or if there is an expression or an implicit data type conversion  
    on the indexed column.                                                      
                                                                                
------------------------------------------------------------------------------- 
EXPLAIN PLANS SECTION                                                           
------------------------------------------------------------------------------- 
                                                                                
1- Original                                                                     
-----------                                                                     
Plan hash value: 93241295                                                       
                                                                                
----------------------------------------------------------------------------------------------------------------------------------------                        
| Id  | Operation                                  | Name                      | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |                        
----------------------------------------------------------------------------------------------------------------------------------------                        
|   0 | SELECT STATEMENT                           |                           |     1 |   146 |  3376   (1)| 00:00:41 |       |       |                        
|   1 |  SORT ORDER BY                             |                           |     1 |   146 |  3376   (1)| 00:00:41 |       |       |                        
|   2 |   NESTED LOOPS                             |                           |     1 |   146 |  3375   (1)| 00:00:41 |       |       |                        
|   3 |    NESTED LOOPS                            |                           |     1 |   111 |  3374   (1)| 00:00:41 |       |       |                        
|   4 |     NESTED LOOPS                           |                           |   617 | 59232 |  3066   (1)| 00:00:37 |       |       |                        
|   5 |      NESTED LOOPS SEMI                     |                           |    13 |   845 |   457   (0)| 00:00:06 |       |       |                        
|   6 |       NESTED LOOPS                         |                           |   328 | 17712 |   456   (0)| 00:00:06 |       |       |                        
|   7 |        NESTED LOOPS                        |                           |   328 | 14104 |   292   (0)| 00:00:04 |       |       |                        
|   8 |         NESTED LOOPS                       |                           |    99 |  2475 |    44   (0)| 00:00:01 |       |       |                        
|   9 |          TABLE ACCESS BY GLOBAL INDEX ROWID| BSTECHNIC                 |     5 |    65 |     4   (0)| 00:00:01 | ROWID | ROWID |                        
|* 10 |           INDEX RANGE SCAN                 | BSTECHNIC_UNQ             |     5 |       |     2   (0)| 00:00:01 |       |       |                        
|  11 |          TABLE ACCESS BY GLOBAL INDEX ROWID| BSTECHSUBS                |    21 |   252 |     8   (0)| 00:00:01 |     1 |     1 |                        
|* 12 |           INDEX RANGE SCAN                 | BSTECHSUBS_TECHSUBS_IND   |    21 |       |     1   (0)| 00:00:01 |       |       |                        
|  13 |         TABLE ACCESS BY GLOBAL INDEX ROWID | BSSERVINST                |     3 |    54 |     3   (0)| 00:00:01 | ROWID | ROWID |                        
|* 14 |          INDEX RANGE SCAN                  | BSSERVINST_TECHSUBS_FK    |     5 |       |     1   (0)| 00:00:01 |       |       |                        
|  15 |        TABLE ACCESS BY GLOBAL INDEX ROWID  | BSSERVSUBS                |     1 |    11 |     1   (0)| 00:00:01 | ROWID | ROWID |                        
|* 16 |         INDEX UNIQUE SCAN                  | PK_BSSERVSUBS             |     1 |       |     1   (0)| 00:00:01 |       |       |                        
|* 17 |       INDEX UNIQUE SCAN                    | BSCHAR2CATCHAR_UNQ        |     1 |    11 |     1   (0)| 00:00:01 |       |       |                        
|  18 |      PARTITION RANGE ALL                   |                           |    49 |  1519 |   201   (0)| 00:00:03 |     1 |    51 |                        
|  19 |       TABLE ACCESS BY LOCAL INDEX ROWID    | BSSERVICE                 |    49 |  1519 |   201   (0)| 00:00:03 |     1 |    51 |                        
|* 20 |        INDEX RANGE SCAN                    | BSSERVICE_SSINSTSTATE_IND |   299 |       |    49   (0)| 00:00:01 |     1 |    51 |                        
|  21 |     PARTITION RANGE ITERATOR               |                           |     1 |    15 |     1   (0)| 00:00:01 |   KEY |   KEY |                        
|  22 |      TABLE ACCESS BY LOCAL INDEX ROWID     | BSSERVNOTFOUND            |     1 |    15 |     1   (0)| 00:00:01 |   KEY |   KEY |                        
|* 23 |       INDEX UNIQUE SCAN                    | PK_BSSERVNOTFOUND         |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |                        
|  24 |    TABLE ACCESS BY INDEX ROWID             | BSCALCCHAR                |     1 |    35 |     1   (0)| 00:00:01 |       |       |                        
|* 25 |     INDEX UNIQUE SCAN                      | PK_BSCALCCHAR             |     1 |       |     1   (0)| 00:00:01 |       |       |                        
----------------------------------------------------------------------------------------------------------------------------------------                        
                                                                                
Predicate Information (identified by operation id):                             
---------------------------------------------------                             
                                                                                
  10 - access("T"."VCODE" LIKE :B1)                                             
       filter("T"."VCODE" LIKE :B1)                                             
  12 - access("TS"."NTECH"="T"."NTECH_ID")                                      
  14 - access("SI"."NTECHSUBS"="TS"."NTECHSUBS_ID")                             
  16 - access("SS"."NSSUBS_ID"="SI"."NSSUBS")                                   
  17 - access("SS"."NSERVT"="NCHAR" AND "NCATCCHAR"=:B2)                        
  20 - access("S"."NSSINST"="SI"."NSSINST_ID")                                  
       filter("S"."VSTATE"<>'D')                                                
  23 - access("NF"."NSERV_ID"="S"."NSERV_ID")                                   
  25 - access("C"."NCHAR_ID"="S"."NSERVT")                                      
                                                                                
2- Using New Indices                                                            
--------------------                                                            
Plan hash value: 2878298201                                                     
                                                                                
-------------------------------------------------------------------------------------------------------------------------------------                           
| Id  | Operation                                  | Name                   | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |                           
-------------------------------------------------------------------------------------------------------------------------------------                           
|   0 | SELECT STATEMENT                           |                        |     1 |   146 |  1991   (1)| 00:00:24 |       |       |                           
|   1 |  SORT ORDER BY                             |                        |     1 |   146 |  1991   (1)| 00:00:24 |       |       |                           
|   2 |   NESTED LOOPS                             |                        |     1 |   146 |  1990   (1)| 00:00:24 |       |       |                           
|   3 |    NESTED LOOPS                            |                        |     1 |   111 |  1989   (1)| 00:00:24 |       |       |                           
|   4 |     NESTED LOOPS                           |                        |   617 | 59232 |  1681   (1)| 00:00:21 |       |       |                           
|   5 |      NESTED LOOPS SEMI                     |                        |    13 |   845 |   438   (0)| 00:00:06 |       |       |                           
|   6 |       NESTED LOOPS                         |                        |   328 | 17712 |   437   (0)| 00:00:06 |       |       |                           
|   7 |        NESTED LOOPS                        |                        |   328 | 14104 |   273   (0)| 00:00:04 |       |       |                           
|   8 |         NESTED LOOPS                       |                        |    99 |  2475 |    25   (0)| 00:00:01 |       |       |                           
|   9 |          TABLE ACCESS BY GLOBAL INDEX ROWID| BSTECHNIC              |     5 |    65 |     3   (0)| 00:00:01 | ROWID | ROWID |                           
|* 10 |           INDEX RANGE SCAN                 | IDX$$_E2B20001         |     5 |       |     2   (0)| 00:00:01 |       |       |                           
|  11 |          TABLE ACCESS BY GLOBAL INDEX ROWID| BSTECHSUBS             |    21 |   252 |     5   (0)| 00:00:01 |     1 |     1 |                           
|* 12 |           INDEX RANGE SCAN                 | IDX$$_E2B20002         |    21 |       |     1   (0)| 00:00:01 |       |       |                           
|  13 |         TABLE ACCESS BY GLOBAL INDEX ROWID | BSSERVINST             |     3 |    54 |     3   (0)| 00:00:01 | ROWID | ROWID |                           
|* 14 |          INDEX RANGE SCAN                  | BSSERVINST_TECHSUBS_FK |     5 |       |     1   (0)| 00:00:01 |       |       |                           
|  15 |        TABLE ACCESS BY GLOBAL INDEX ROWID  | BSSERVSUBS             |     1 |    11 |     1   (0)| 00:00:01 | ROWID | ROWID |                           
|* 16 |         INDEX UNIQUE SCAN                  | PK_BSSERVSUBS          |     1 |       |     1   (0)| 00:00:01 |       |       |                           
|* 17 |       INDEX UNIQUE SCAN                    | BSCHAR2CATCHAR_UNQ     |     1 |    11 |     1   (0)| 00:00:01 |       |       |                           
|* 18 |      TABLE ACCESS BY GLOBAL INDEX ROWID    | BSSERVICE              |    49 |  1519 |    96   (0)| 00:00:02 | ROWID | ROWID |                           
|* 19 |       INDEX RANGE SCAN                     | IDX$$_E2B20003         |   449 |       |     1   (0)| 00:00:01 |       |       |                           
|  20 |     PARTITION RANGE ITERATOR               |                        |     1 |    15 |     1   (0)| 00:00:01 |   KEY |   KEY |                           
|  21 |      TABLE ACCESS BY LOCAL INDEX ROWID     | BSSERVNOTFOUND         |     1 |    15 |     1   (0)| 00:00:01 |   KEY |   KEY |                           
|* 22 |       INDEX UNIQUE SCAN                    | PK_BSSERVNOTFOUND      |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |                           
|  23 |    TABLE ACCESS BY INDEX ROWID             | BSCALCCHAR             |     1 |    35 |     1   (0)| 00:00:01 |       |       |                           
|* 24 |     INDEX UNIQUE SCAN                      | PK_BSCALCCHAR          |     1 |       |     1   (0)| 00:00:01 |       |       |                           
-------------------------------------------------------------------------------------------------------------------------------------                           
                                                                                
Predicate Information (identified by operation id):                             
---------------------------------------------------                             
                                                                                
  10 - access("T"."VCODE" LIKE :B1)                                             
       filter("T"."VCODE" LIKE :B1)                                             
  12 - access("TS"."NTECH"="T"."NTECH_ID")                                      
  14 - access("SI"."NTECHSUBS"="TS"."NTECHSUBS_ID")                             
  16 - access("SS"."NSSUBS_ID"="SI"."NSSUBS")                                   
  17 - access("SS"."NSERVT"="NCHAR" AND "NCATCCHAR"=:B2)                        
  18 - filter("S"."VSTATE"<>'D')                                                
  19 - access("S"."NSSINST"="SI"."NSSINST_ID")                                  
  22 - access("NF"."NSERV_ID"="S"."NSERV_ID")                                   
  24 - access("C"."NCHAR_ID"="S"."NSERVT")                                      
                                                                                
------------------------------------------------------------------------------- 
26 мар 08, 14:59    [5462148]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
mayton
Member

Откуда: loopback
Сообщений: 49734
Следующую картинку я взял из документации. Насколько я понимаю, это последовательность шагов которые я должен выполнить для использования Ассess Advisor

К сообщению приложен файл. Размер - 0Kb
26 мар 08, 15:39    [5462487]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
mayton
Member

Откуда: loopback
Сообщений: 49734
SQL> declare
  2     ntask_id number:=0;
  3     vtask_name varchar2(50):='maytons_task1';
  4  begin
  5          dbms_advisor.create_task(advisor_name=>'SQL Access Advisor', task_id=>ntask_id, task_name=>vtask_
name);
  6     dbms_output.put_line('task_id='||ntask_id);
  7  end;
  8  /
declare
*
ERROR at line 1:
ORA-13600: error encountered in Advisor
ORA-13635: The value provided for parameter ADJUSTED_SCALEUP_GREEN_THRESH
cannot be converted to a number.
ORA-06512: at "SYS.PRVT_ADVISOR", line 3902
ORA-06512: at "SYS.DBMS_ADVISOR", line 102
ORA-06512: at line 5

Хм...
26 мар 08, 17:29    [5463415]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
Alex_D
Member

Откуда:
Сообщений: 988
Версия Oracle 10g: специалисты по настройке запросов больше не нужны ...
26 мар 08, 17:47    [5463575]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
mayton
Member

Откуда: loopback
Сообщений: 49734
Alex_D
Версия Oracle 10g: специалисты по настройке запросов больше не нужны ...


Я уже эти шаги выполнил. Репорт, который я привёл выше - это результат работы SQL Tunning Advisor.
26 мар 08, 17:50    [5463596]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
NH
Member

Откуда:
Сообщений: 55
Alex_D
Версия Oracle 10g: специалисты по настройке запросов больше не нужны ...


угу )))
26 мар 08, 18:00    [5463671]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
Alex_D
Member

Откуда:
Сообщений: 988
mayton
SQL> declare
  2     ntask_id number:=0;
  3     vtask_name varchar2(50):='maytons_task1';
  4  begin
  5          dbms_advisor.create_task(advisor_name=>'SQL Access Advisor', task_id=>ntask_id, task_name=>vtask_
name);
  6     dbms_output.put_line('task_id='||ntask_id);
  7  end;
  8  /
declare
*
ERROR at line 1:
ORA-13600: error encountered in Advisor
ORA-13635: The value provided for parameter ADJUSTED_SCALEUP_GREEN_THRESH
cannot be converted to a number.
ORA-06512: at "SYS.PRVT_ADVISOR", line 3902
ORA-06512: at "SYS.DBMS_ADVISOR", line 102
ORA-06512: at line 5

Хм...
Это лечится ... Выдачей команды alter session set nls_numeric_characters='.,';
SQL> 

declare
     ntask_id number:=0;
     vtask_name varchar2(50):='maytons_task1';
begin
  dbms_advisor.create_task(advisor_name=>'SQL Access Advisor', task_id=>ntask_id, task_name=>vtask_name);
  dbms_output.put_line('task_id='||ntask_id);
end;

ORA-13600: возникла ошибка в Advisor
ORA-13635: Значение, указанное для параметра ADJUSTED_SCALEUP_GREEN_THRESH, невозможно преобразовать в число.
ORA-06512: на  "SYS.PRVT_ADVISOR", line 3902
ORA-06512: на  "SYS.DBMS_ADVISOR", line 102
ORA-06512: на  line 5

SQL> alter session set nls_numeric_characters='.,';

Session altered

SQL> 
SQL> declare
  2       ntask_id number:=0;
  3       vtask_name varchar2(50):='maytons_task1';
  4  begin
  5    dbms_advisor.create_task(advisor_name=>'SQL Access Advisor', task_id=>ntask_id, task_name=>vtask_name);
  6    dbms_output.put_line('task_id='||ntask_id);
  7  end;
  8  /

PL/SQL procedure successfully completed
p.s. с предыдущей ссылкой погорячился ... Приношу извинения.
27 мар 08, 10:38    [5465713]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
mayton
Member

Откуда: loopback
Сообщений: 49734
Спасибо Алекс. Щас буду пробовать.
27 мар 08, 12:34    [5466863]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
mayton
Member

Откуда: loopback
Сообщений: 49734
Прошу прощения за отсутствие... были дела. Так.. побежал дальше по примеру из статьи.

alter session set nls_numeric_characters='.,';

SQL>
SQL> declare
  2         ntask_id number:=0;
  3         vtask_name varchar2(50):='maytons_task1';
  4  begin
  5      dbms_advisor.create_task(advisor_name=>'SQL Access Advisor', task_id=>ntask_id, ta
);
  6      dbms_output.put_line('task_id='||ntask_id);
  7  end;
  8  /

PL/SQL procedure successfully completed.

Elapsed: 00:00:01.46


SQL> exec dbms_advisor.reset_task('maytons_task1');

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.35


SQL> declare
  2     wkld_name varchar2(30):='maytons_workload1';
  3  begin
  4     dbms_advisor.create_sqlwkld(workload_name=>wkld_name);
  5  end;
  6  /

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.45
27 мар 08, 17:44    [5469554]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
mayton
Member

Откуда: loopback
Сообщений: 49734
Мой task не единственный.

SQL> select owner,task_id,advisor_name,created,status,how_created,advisor_id from dba_advis
_name='maytons_task1';

OWNER                             TASK_ID ADVISOR_NAME
------------------------------ ---------- ------------------------------
CREATED        STATUS      HOW_CREATED                    ADVISOR_ID
-------------- ----------- ------------------------------ ----------
SYS                                 58348 SQL Access Advisor
20080327155316 INITIAL     CMD                                     2

Elapsed: 00:00:00.03

SQL> select count(*) from dba_advisor_tasks;

  COUNT(*)
----------
      2489

Elapsed: 00:00:00.01


Остальные принадлежат либо ADDM либо SegmentAdvisor.

Любопытно, что ADDM каждый час создаёт запись с описанием типа 'ADDM auto run: snapshots [80, 81], instance 1, database id 125096956'.
27 мар 08, 17:55    [5469657]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
mayton
Member

Откуда: loopback
Сообщений: 49734
Продолжаю. Следующий скрипт из статьи "SQL Access Advisor in Oracle Database 10g". Я его еще не выполнял. Это уже близко к моей цели, однако в скрипте нет привязки к конкретному SQL_ID=7gsh7jvjc0ncg.

declare

	l_saved_rows NUMBER:=0;
	l_failed_rows NUMBER:=0;
	l_num_found NUMBER;

begin
	dbms_advisor.set_sqlwkld_parameter('maytons_workload1','ACTION_LIST',DBMS_ADVISOR.ADVISOR_UNUSED);
	dbms_advisor.set_sqlwkld_parameter('maytons_workload1','MODULE_LIST',DBMS_ADVISOR.ADVISOR_UNUSED);
	dbms_advisor.set_sqlwkld_parameter('maytons_workload1','SQL_LIMIT',DBMS_ADVISOR.ADVISOR_UNLIMITED);
	dbms_advisor.set_sqlwkld_parameter('maytons_workload1','ORDER_LIST','PRIORITY,OPTIMIZER_COST');
	dbms_advisor.set_sqlwkld_parameter('maytons_workload1','USERNAME_LIST',DBMS_ADVISOR.ADVISOR_UNUSED);
	dbms_advisor.set_sqlwkld_parameter('maytons_workload1','VALID_TABLE_LIST',DBMS_ADVISOR.ADVISOR_UNUSED);

	dbms_advisor.import_sqlwkld_sqlcache('maytons_workload1','REPLACE',2,l_saved_rows,l_failed_rows);

	dbms_advisor.set_task_parameter('maytons_task1','_MARK_IMPLEMENTATION','FALSE');
	dbms_advisor.set_task_parameter('maytons_task1','EXECUTION_TYPE','INDEX_ONLY');
	dbms_advisor.set_task_parameter('maytons_task1','MODE','COMPREHENSIVE');
	dbms_advisor.set_task_parameter('maytons_task1','STORAGE_CHANGE',DBMS_ADVISOR.ADVISOR_UNLIMITED);
	dbms_advisor.set_task_parameter('maytons_task1','DML_VOLATILITY','TRUE');
	dbms_advisor.set_task_parameter('maytons_task1','ORDER_LIST','PRIORITY,OPTIMIZER_COST');
	dbms_advisor.set_task_parameter('maytons_task1','WORKLOAD_SCOPE','PARTIAL');

	dbms_advisor.set_task_parameter('maytons_task1','DEF_INDEX_TABLESPACE',DBMS_ADVISOR.ADVISOR_UNUSED);
	dbms_advisor.set_task_parameter('maytons_task1','DEF_INDEX_OWNER',DBMS_ADVISOR.ADVISOR_UNUSED);
	dbms_advisor.set_task_parameter('maytons_task1','DEF_INDEX_MVIEW_TABLESPACE',DBMS_ADVISOR.ADVISOR_UNUSED);
	dbms_advisor.set_task_parameter('maytons_task1','DEF_INDEX_MVIEW_OWNER',DBMS_ADVISOR.ADVISOR_UNUSED);

	dbms_advisor.execute_task('maytons_task1');

end;
/

Как его привязать - вот в чем вопрос.
28 мар 08, 17:05    [5474674]     Ответить | Цитировать Сообщить модератору
 Re: Access Advisor. Кто проведёт за руку?  [new]
DimaR
Member

Откуда:
Сообщений: 1570
Так к слову,
скажите мне одному показалось?
автор
AND ss.nservt IN (SELECT NCHAR
FROM bs.bscchar2catcchar
WHERE ncatcchar = :b2)

оно может оракл и разрешает, но наверно нестоит так называть столбцы
28 мар 08, 17:23    [5474777]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить