Oracle Exadata性能优化
上QQ阅读APP看书,第一时间看更新

2.5 跟踪存储索引

在一些极端案例中,有可能需要跟踪存储索引的使用情况,来诊断存储索引方面相关的问题。可以在数据库或存储节点这两个层面来跟踪存储索引。

1.数据库层面跟踪存储索引特性

在数据库的系统级或会话级设置_kcfis_storageidx_diag_mode隐含参数来实现存储索引跟踪。参数值为2,表示开启存储索引跟踪功能;参数值为0或1,则表示关闭存储索引跟踪功能。

下面通过示例来展现如何在数据库层面跟踪存储索引特性,具体见代码清单2.5。

代码清单2.5 数据库层面跟踪存储索引特性(1)

在会话级别设置隐含参数_kcfis_storageidx_diag_mode的值为2,也即开启存储索引的诊断模式。执行完SQL语句,v$mystat视图中的cell physical IO bytes saved by storage index指标值大于0,表明存储索引特性已生效。

登录存储节点,查看生成的日志文件。如果日志文件中存在关键字RIDX,表示是刚生成的存储索引的跟踪日志。存储索引的跟踪日志文件内容如下。

下面对跟踪日志文件中的一些关键字段进行说明。

(1)RIDX:Region Index的缩写。

(2)SQLID fm0m55mhym3gb:SQL_ID为fm0m55mhym3gb的SQL语句利用了存储索引特性。

(3)id{82830 36 195867650}:其中的82830表示数据对象,与dba_objects视图中的data_object_id字段对应;36表示表空间的ID号,与ts$视图中的ts#字段对应;195867650表示数据库ID,与x$ksqdn视图中的ksqdngunid字段对应。

(4)size 1048576:每一个存储区域的大小为1MB。

(5)Col:具体哪个字段。

(6)lo:最小值。

(7)hi:最大值。

代码清单2.5 数据库层面跟踪存储索引特性(2)

通过obj$和col$视图进行关联,可以得知存储索引中已经缓存了哪些列信息。

2.存储层面跟踪存储索引特性

在存储软件的配置文件cellinit.ora中设置_cell_storage_index_diag_mode隐含参数来实现存储索引跟踪。该隐含参数默认为false,表示关闭存储索引跟踪功能。可以将该隐含参数设置为true,来开启存储索引跟踪,但这种方式需要重启存储节点,才能使隐含参数生效。

随着存储软件版本的更新,存储节点的隐含参数_cell_storage_index_diag_mode的值发生了变化;默认值为0,表示关闭存储索引跟踪功能;如果将该隐含参数设置为2,则表示开启存储索引跟踪功能。

3.DUMP存储索引信息

在一些特殊的情况下,可能需要分析存储节点内存中的存储索引信息。这时可以通过存储节点的cellsrv.cellsrv_storidx事件将存储节点内存中的存储索引信息打印出来,具体命令如下。

该命令会将存储索引信息保存到trace日志文件中。如果存储索引信息太多,则有可能会达到trace日志文件大小的上限。此时可以动态修改trace日志文件大小的上限,具体命令如下。

该命令将存储节点trace日志文件的大小上限设置为10GB。