首页 >数据库 >mysql教程 >如何使用分段顾问

如何使用分段顾问

WBOY
WBOY原创
2016-06-07 15:59:571215浏览

1、查看segment advisor 方法一: select * fromtable(dbms_space.asa_recommendations(TRUE,FALSE,FALSE)); dbms_space.asa_recommentdations的三个参数: all_runs TURE返回历次运行的结果,FALSE则返回最近一次运行的结果 show_manual TURE返回手工执行se

1、查看segment advisor

方法一:

select * fromtable(dbms_space.asa_recommendations('TRUE','FALSE','FALSE'));

dbms_space.asa_recommentdations的三个参数:

all_runs TURE返回历次运行的结果,FALSE则返回最近一次运行的结果

show_manual TURE返回手工执行segment advisor的执行结果,FALSE返回自动执行的segment advisor的执行结果

show_finding TURE仅显示结果不显示建议,FALSE显示结果和建议

方法二:

select f.task_name,

execution_start,

o.attr2,

o.type,

o.attr3,

f.message,

f.more_info

from dba_advisor_executions e,

dba_advisor_findings f,

dba_advisor_objects o

where o.task_id = f.task_id

and o.object_id = f.object_id

and f.task_id = e.task_id

and e.advisor_name = 'Segment Advisor'

order by f.task_name;

segment advisor会自动的定期执行,查看其执行情况的视图是dba_auto_segadv_summary

查看ora advisor的视图

dba_advisor_executions

dba_advisor_findings

dba_advisor_objects

2、手工生成segment advisor 

查看advisor name

select * fromdba_advisor_definitions; 

ADVISOR_IDADVISOR_NAME PROPERTY

---------------------------------------- ----------

1 ADDM 1

2 SQL Access Advisor 271

3 Undo Advisor 1

4 SQL Tuning Advisor 935

5 Segment Advisor 67

6 SQL Workload Manager 0

7 Tune MView 31

8 SQL Performance Analyzer 935

9 SQL Repair Advisor 679

10 Compression Advisor 3

生成segmentadvisor

DECLARE

my_task_id number;

obj_id number;

my_task_name varchar2(100);

my_task_desc varchar2(500);

BEGIN

my_task_name := 'BIG_TABLE Advice';

my_task_desc := 'Manual Segment Advisor Run';

-- Step 1创建一个任务

dbms_advisor.create_task(advisor_name =>'Segment Advisor',

task_id => my_task_id,

task_name => my_task_name,

task_desc => my_task_desc);

-- Step 2为这个任务分配一个对象

dbms_advisor.create_object(task_name => my_task_name,

object_type =>'TABLE',

attr1 => 'SYSTEM',

attr2 => 'AL_APPLY',

attr3 => NULL,

attr4 => NULL,

attr5 => NULL,

object_id => obj_id);

-- Step 3设置任务参数

dbms_advisor.set_task_parameter(task_name=> my_task_name,

parameter=> 'recommend_all',

value => 'TRUE');

-- Step 4执行这个任务

dbms_advisor.execute_task(my_task_name);

END;

/

说明:

Table 14-2 DBMS_ADVISOR packageprocedures relevant to the Segment Advisor

Package Procedure Name

Description

CREATE_TASK

Use this procedure to create the Segment Advisor task. Specify 'Segment Advisor' as the value of the ADVISOR_NAME parameter.

CREATE_OBJECT

Use this procedure to identify the target object for segment space advice. The parameter values of this procedure depend upon the object type. Table 14-3 lists the parameter values for each type of object.

Note: To request advice on an IOT overflow segment, use an object type of TABLE, TABLE PARTITION, or TABLE SUBPARTITION. Use the following query to find the overflow segment for an IOT and to determine the overflow segment table name to use with CREATE_OBJECT:

select table_name, iot_name, iot_type from dba_tables;

SET_TASK_PARAMETER

Use this procedure to describe the segment advice that you need. Table 14-4 shows the relevant input parameters of this procedure. Parameters not listed here are not used by the Segment Advisor.

EXECUTE_TASK

Use this procedure to execute the Segment Advisor task.

Package Procedure Name
Description
CREATE_TASK Use this procedure to create the Segment Advisor task. Specify 'Segment Advisor' as the value of the ADVISOR_NAME parameter.
CREATE_OBJECT Use this procedure to identify the target object for segment space advice. The parameter values of this procedure depend upon the object type. Table 14-3 lists the parameter values for each type of object. Note: To request advice on an IOT overflow segment, use an object type of TABLE, TABLE PARTITION, or TABLE SUBPARTITION. Use the following query to find the overflow segment for an IOT and to determine the overflow segment table name to use with CREATE_OBJECT: select table_name, iot_name, iot_type from dba_tables;
SET_TASK_PARAMETER Use this procedure to describe the segment advice that you need. Table 14-4 shows the relevant input parameters of this procedure. Parameters not listed here are not used by the Segment Advisor.
EXECUTE_TASK Use this procedure to execute the Segment Advisor task.

表 14-3 DBMS_ADVISOR.CREATE_OBJECT 的输入

表> 表 14-4 DBMS_ADVISOR.SET_TASK_PARAMETER 的输入

Input Parameter

 

 

 

 

OBJECT_TYPE

ATTR1

ATTR2

ATTR3

ATTR4

TABLESPACE

tablespace name

NULL

NULL

Unused. Specify NULL.

TABLE

schema name

table name

NULL

Unused. Specify NULL.

INDEX

schema name

index name

NULL

Unused. Specify NULL.

TABLE PARTITION

schema name

table name

table partition name

Unused. Specify NULL.

INDEX PARTITION

schema name

index name

index partition name

Unused. Specify NULL.

TABLE SUBPARTITION

schema name

table name

table subpartition name

Unused. Specify NULL.

INDEX SUBPARTITION

schema name

index name

index subpartition name

Unused. Specify NULL.

LOB

schema name

segment name

NULL

Unused. Specify NULL.

LOB PARTITION

schema name

segment name

lob partition name

Unused. Specify NULL.

LOB SUBPARTITION

schema name

segment name

lob subpartition name

Unused. Specify NULL.

输入参数

 

Input Parameter

Description

Possible Values

Default Value

time_limit

The time limit for the Segment Advisor run, specified in seconds.

Any number of seconds

UNLIMITED

recommend_all

Whether the Segment Advisor should generate findings for all segments.

TRUE: Findings are generated on all segments specified, whether or not space reclamation is recommended.

FALSE: Findings are generated only for those objects that generate recommendations for space reclamation.

TRUE

     
OBJECT_TYPE ATTR1 ATTR2 ATTR3 ATTR4
表空间 表空间名称 NULL NULL 未使用。指定 NULL。
桌子 架构名称 表名 NULL 未使用。指定 NULL。
索引 架构名称 索引名称 NULL 未使用。指定 NULL。
表分区 架构名称 表名 表分区名称 未使用。指定 NULL。
索引分区 架构名称 索引名称 索引分区名称 未使用。指定 NULL。
表子分区 架构名称 表名 表子分区名称 未使用。指定 NULL。
索引子分区 架构名称 索引名称 索引子分区名称 未使用。指定 NULL。
LOB 架构名称 分段名称 NULL 未使用。指定 NULL。
LOB 分区 架构名称 分段名称 lob 分区名称 未使用。指定 NULL。
LOB 子分区 架构名称 分段名称 lob 子分区名称 未使用。指定 NULL。
表>

示例:

变量 ID 号;
开始
声明
名称 varchar2(100);
描述 varchar2(500);
obj_id 编号;
开始
name:='Manual_Employees';
descr:='分段顾问示例';

dbms_advisor.create_task (
顾问名称=> “细分顾问”,
任务ID => :id,
任务名称=>名字,
任务描述=>描述);

dbms_advisor.create_object (
任务名称=>名字,
对象类型=> '表',
属性1 => '人力资源',
attr2 =>; “员工”,
attr3 =>;空,
attr4 =>;空,
attr5 =>;空,
object_id =>; obj_id);

dbms_advisor.set_task_parameter(
任务名称=>名字,
参数=> '全部推荐',
值=> '正确');

dbms_advisor.execute_task(名称);
结束;
结束;
/

查看segmentadvisor结果

选择

'分段建议 --------------------------'||chr(10) ||

'TABLESPACE_NAME:' ||表空间名称 || chr(10) ||

'SEGMENT_OWNER:'||段所有者|| chr(10) ||

'SEGMENT_NAME:' ||段名称 || chr(10) ||

'分配的空间:' ||分配空间|| chr(10) ||

'可回收空间:' ||可回收空间 ||chr(10) ||

'建议:' ||建议 || chr(10) ||

“解决方案 1:”|| c1 || chr(10) ||

“解决方案 2:”|| c2 || chr(10) ||

“解决方案 3:”|| c3 建议

来自

表(dbms_space.asa_recommendations('TRUE','TRUE', 'FALSE'));

或者:

选择

'任务名称:' || f.task_name || chr(10) ||

'段名称:' || o.attr2 || chr(10) ||

'段类型:' || o.类型 || chr(10) ||

'分区名称:' || o.attr3 || chr(10) ||

'消息:' || f.消息 || chr(10) ||

“更多信息:” || f.more_info TASK_ADVICE

FROMdba_advisor_findings

,dba_advisor_objects

其中 o.task_id =f.task_id

AND o.object_id =f.object_id

和 f.task_name 如“BIG_TABLE 建议”

ORDER BYf.task_name;

删除segmentadvisor

execdbms_advisor.delete_task('BIG_TABLE 建议');

释放未使用的空间

改变tabletablename启用行移动;

改变tabletablename收缩空间;

alter table 表名收缩空间级联;(级联收缩索引空间)

alter table tablename收缩空间紧凑;(只整理碎片,不调整高水位线)--如果整理碎片并降低高水位线费时间会很长,以便分开操作

输入参数 描述 可能的值 默认值
时间限制 Segment Advisor 运行的时间限制,以秒为单位指定。 任意秒数 无限
全部推荐 Segment Advisor 是否应生成所有细分的结果。 TRUE:无论是否建议空间回收,都会在所有指定的段上生成结果。 错误:仅针对那些生成空间回收建议的对象生成结果。 正确
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn