freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

运维日记|19c新特性自动索引
FreeBuf_345712 2020-07-15 10:23:56 69978

   相信大家都有过维护索引的经历,特别是庞大的数据库,管理这些索引是一个相当冗杂的工作。简直头疼到裂开!!

    但是大家不要慌,oracle也终于听到了我们的呐喊声,在19c当中就加入了自动管理索引的功能!

认识19c自动索引

    在Oracle Database 19c引进了新的特性。Automatic Indexing自动划索引功能,顾名思义就是数据库能够根据应用程序工作负载自动管理索引,比如说创建索引,删除索引,重构索引。需要格外注意的是,目前自动索引只支持Oracle Exadata平台。

以下就是新增的有关于自动索引的视图:

DBA_AUTO_INDEX_CONFIG :

19.1新增视图,描述当前自动索引的配置

DBA_INDEXES/ALL_INDEXES/USER_INDEXES:

新增加的AUTO列标识是自动索引(YES)还是手动索引(NO)

DBA_AUTO_INDEX_EXECUTIONS :

显示历史自动索引任务执行

DBA_AUTO_INDEX_STATISTICS:

显示与自动索引相关的统计信息

DBA_AUTO_INDEX_IND_ACTIONS:

显示在自动索引上执行的操作

DBA_AUTO_INDEX_SQL_ACTIONS:

显示在SQL上执行的验证自动索引的操作

(特殊说明:当前版本的索引指的是local B-tree 索引)

参数展示:

select * from DBA_AUTO_INDEX_CONFIG;

参数解释

让小编来给大家对这些参数做一个简短的说明:

AUTO_INDEX_MODE:

off表示自动索引的状态是否开启

IMPLEMENT表示自动创建创建、测试、并报告,最终索引是visible状态

REPORT ONLY 会创建索引但是invisible,不会影响SQL,只是意图生成报告

在开启自动索引功能之前,需要开启一个特殊参数并重启数据库,才能使用自动索引功能

alter system set “_exadata_feature_on”=true scope=spfile;

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');

开启自动索引功能

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');

关闭自动索引功能

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','OFF');

AUTO_INDEX_REPORT_RETENTION:

自动索引报告历史保留的天数 默认31天

手动设置报告保留天数为60天

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_REPORT_RETENTION', '60');

AUTO_INDEX_RETENTION_FOR_AUTO:

自动创建的索引从上次使用后多少天不再使用的索引可以删除,默认373天

手动修改为90天

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_RETENTION_FOR_AUTO', ' 90 ');

AUTO_INDEX_RETENTION_FOR_MANUAL:

手动创建的索引从上次使用后多少天不再使用的索引可以删除,默认永远

修改保存时间为60天

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_RETENTION_FOR_MANUAL', '60');

AUTO_INDEX_SCHEMA:

指定HR能够使用自动索引的用户

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', 'HR', NULL);

不允许HR用户使用自动索引

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', 'HR', FALSE);

AUTO_INDEX_SPACE_BUDGET:

自动索引可以使用表空间大小的百分比,默认 50%

修改为20%

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SPACE_BUDGET', '20');

当然我们也可以指定自动索引保存的表空间,方便管理

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_DEFAULT_TABLESPACE', 'MYAUTOTBS');

测试索引

既然打开了自动索引,那现在我们首先建一张大表来测试数据库是否会自动创建索引

插入后

update test set object_id=rownum;

commit;

多次执行以下语句,并静等15分钟查看相关试图是否有结果

select object_name from test where object_id=1;

select object_type from test where object_id=111;

select created from test where object_id=222;

select created from test where object_id=333;

select created from test where object_id=444;

select created from test where object_id=555;

等待15分钟以后,打开执行计划,再次查询

set autotrace on

select object_name from test where object_id=1;

可以清楚地看到走得是索引

    测试完毕,是不是没想到19c竟然有如此智能的功能,那以后面对如此繁多的大表,只要将自动索引功能一开,它就自动帮你管理并创建索引,提高查询速度,是不是省去了我们平时运维的很多时间!真是忍不住想快点升级19c。

美创运维中心数据库服务团队拥有Oracle ACE 1人、OCM 10余人、数十名Oracle OCP、MySQL OCP、红帽RHCA、中间件weblogic、tuxedo认证、达梦工程师 ,著有《Oracle DBA实战攻略》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》等多本数据运维优化书籍。目前运维各类数据库合计2000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、达梦等主流商业和开源数据库。并成为首批国内达梦战略合作伙伴之一,拥有海量经验和完善的人员培养体系。并同时提供超融合,私有云整体解决方案。

# 运维安全 # oracle # 数据库运维 # 自动化运维
本文为 FreeBuf_345712 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
数据库运维
FreeBuf_345712 LV.1
这家伙太懒了,还未填写个人描述!
  • 69 文章数
  • 2 关注者
运维日记|SQL server 那点事
2020-09-03
运维日记|做一个查找机器
2020-08-26
运维日记|做一个优雅搬运工
2020-08-25