- Oracle Exadata性能優化
- 石云華 陳浩 饒冰
- 946字
- 2020-05-21 18:00:35
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。
- Java異步編程實戰
- Getting started with Google Guava
- C# 2012程序設計實踐教程 (清華電腦學堂)
- Java從入門到精通(第4版)
- Access 2010數據庫基礎與應用項目式教程(第3版)
- aelf區塊鏈應用架構指南
- Python應用輕松入門
- 人人都是網站分析師:從分析師的視角理解網站和解讀數據
- Mastering AndEngine Game Development
- 實戰Java高并發程序設計(第3版)
- Windows內核編程
- PHP編程基礎與實例教程
- Learning Docker Networking
- Python Deep Learning
- Hands-On Dependency Injection in Go