wolong 发表于 2018-9-21 10:43:56

ORACLE SQL TUNING ADVISOR-ORACLE

  sql tunning advisor 使用的主要步骤:
  1 建立tunning task
  2 执行task
  3 显示tunning 结果
  4 根据建议来运行相应的调优方法   ----ADVISOR授权
  1 基于SQL文本建立任务
  FUNCTION create_tuning_task(
  sql_text    IN CLOB,
  bind_list   IN sql_binds := NULL,
  user_name   IN VARCHAR2:= NULL,
  scope       IN VARCHAR2:= SCOPE_COMPREHENSIVE,
  time_limitIN NUMBER    := TIME_LIMIT_DEFAULT,
  task_name   IN VARCHAR2:= NULL,
  description IN VARCHAR2:= NULL)
  RETURN VARCHAR2;
  2 基于sql_id建立任务
  FUNCTION create_tuning_task(
  sql_id          IN VARCHAR2,
  plan_hash_value IN NUMBER   := NULL,
  scope         IN VARCHAR2 := SCOPE_COMPREHENSIVE,
  time_limit      IN NUMBER   := TIME_LIMIT_DEFAULT,
  task_name       IN VARCHAR2 := NULL,
  description   IN VARCHAR2 := NULL)
  RETURN VARCHAR2;
  3 基于AWR快照间隔以及相应SQL_ID建立任务
  FUNCTION create_tuning_task(
  begin_snap      IN NUMBER,
  end_snap      IN NUMBER,
  sql_id          IN VARCHAR2,
  plan_hash_value IN NUMBER   := NULL,
  scope         IN VARCHAR2 := SCOPE_COMPREHENSIVE,
  time_limit      IN NUMBER   := TIME_LIMIT_DEFAULT,
  ask_name       IN VARCHAR2 := NULL,
  description   IN VARCHAR2 := NULL)
  RETURN VARCHAR2;
  案例:
  DECLARE
  MY_TASK_NAME VARCHAR2(30);
  MY_SQLTEXT CLOB;
  BEGIN
  MY_SQLTEXT :='SELECT 1 from dual';
  MY_TASK_NAME := DBMS_SQLTUNE.CREATE_TUNING_TASK(SQL_TEXT => MY_SQLTEXT,
  BIND_LIST=>SQL_BINDS(ANYDATA.CONVERTNUMBER(9)),
  USER_NAME => 'NOAP',
  SCOPE=>'COMPREHENSIVE',
  TIME_LIMIT => 600,
  TASK_NAME =>'SQL_TUNING_TEST',
  DESCRIPTION=>'TUNING TASK'
  );
  END;
  BEGIN DBMS_SQLTUNE.EXECUTE_TUNING_TASK('SQL_TUNING_TEST'); END;
  SELECT status FROM USER_ADVISOR_TASKS WHERE task_name ='SQL_TUNING_TEST';
  SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('SQL_TUNING_TEST') FROM DUAL;
  BEGINdbms_sqltune.drop_tuning_task('SQL_TUNING_TEST'); END;

页: [1]
查看完整版本: ORACLE SQL TUNING ADVISOR-ORACLE