Oracle 41億資料量表建立索引記錄
背景
生產系統一個流水錶,41億資料,有一列原先開發建立了bitmap index,由於該表為流水錶,有大量插入,alert日誌中一直報
dead lock,死鎖,由於點陣圖索引特殊性,即使在沒有任何約束情況下,由於該列的distinct值非常低,41億,只有170左右的distinct value,所以造成大量的dead lock,需要刪除bitmap index,改為global normal index。
該表為按天分割槽。
建索引語句
alter session set workarea_size_policy=MANUAL; alter session set db_file_multiblock_read_count=512; alter session set events ‘10351 trace name context forever, level 128’; alter session set sort_area_size=2147483648; alter session set “_sort_multiblock_read_count”=128; alter session enable parallel ddl; alter session enable parallel dml; set timing on create index idx_data_02 on data(xx) parallel 8 nologging [local];
大約耗時3個小時左右。
需要注意
temp表空間原先為60g,由於一開始開16個並行,所以導致報錯無法在temp擴充套件,臨時加大temp表空間到120g,順利建立索引。
參考
[oracle@rh2 ~]$ oerr ora 10351 10351, 00000, "size of slots" // *Cause: // *Action: sets the size of slots to use // *Comment: a slot is a unit of I/O and this factor controls the size // *Comment: of the IO. alter session set events '10351 trace name context forever, level 128'; level 128 -> direct path write max block 128 I generated a new run of the big testcase with event 10357, Patch 4417285 applied, manual workarea_size_policy, sort_area_size=50000000, db_file_multiblock_read_count=16 and event 10351 with level 128. I tried it with disk_asynch_io=TRUE and FALSE just to be certain this is not something related to the async. In the trace files I see something very peculiar. The slots size is 128 as expected and I see many writes of 128 blocks but not all of them are and they look like the they come in clusters. A few 128 writes, then a lot smaller of different sizes but mainly less than 16 blocks and then another cluster of big ones and so on. kcblcow: dba=100c91b, sz=128, blks=117, st=3, idx=14 kcblcow: dba=100c91b, sz=128, blks=117, st=3, idx=14 kcblcow: dba=100c991, sz=128, blks=1, st=3, idx=15 kcblcow: dba=100c91b, sz=128, blks=117, st=3, idx=14 kcblcow: dba=100c991, sz=128, blks=1, st=3, idx=15 kcblcow: dba=100c990, sz=128, blks=1, st=3, idx=0 kcblcow: dba=100c992, sz=128, blks=128, st=3, idx=1 kcblcow: dba=100c992, sz=128, blks=128, st=3, idx=1 kcblcow: dba=100ca12, sz=128, blks=39, st=3, idx=2 kcblcow: dba=100c992, sz=128, blks=128, st=3, idx=1 kcblcow: dba=100ca12, sz=128, blks=39, st=3, idx=2 kcblcow: dba=100ca3a, sz=128, blks=1, st=3, idx=3 kcblcow: dba=100ca12, sz=128, blks=39, st=3, idx=2 kcblcow: dba=100ca3a, sz=128, blks=1, st=3, idx=3 kcblcow: dba=100ca39, sz=128, blks=1, st=3, idx=4 but it is possible that there are other factor out of our control that forces Oracle to stop adding blocks to the slot and write small batches. In conclusion, in order to have the least ammount of direct operations and have the maximum possible read/write batches these are the parameters to set : alter session set events '10351 trace name context forever, level 128'; alter session set workarea_size_policy=manual; alter session set sort_area_size=50000000;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31439444/viewspace-2696415/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【手工建庫】手工方式建立 ORACLE資料庫全程記錄Oracle資料庫
- Oracle 對某列的部分資料建立索引Oracle索引
- oracle資料庫建立、刪除索引等操作Oracle資料庫索引
- ORACLE建立資料庫時無法建立目錄Oracle資料庫
- oracle海量表資料刪除及清理高效方法Oracle
- 資料庫之建立索引資料庫索引
- oracle實驗記錄 (oracle 資料字典)Oracle
- 【資料庫使用-oracle索引的建立和分類】二資料庫Oracle索引
- 【資料庫使用-oracle索引的建立和分類】一資料庫Oracle索引
- mongodb資料庫如何建立索引?MongoDB資料庫索引
- 為資料庫建立索引(轉)資料庫索引
- 資料庫建立索引的原則資料庫索引
- 14.3.1 用向量表示資料
- Oracle遷移資料庫過程記錄Oracle資料庫
- 資料安全警示錄——Oracle DBA手記4Oracle
- 【Oracle】-【索引】先查資料再建索引,還是先建索引再插資料?Oracle索引
- Oracle如何建立B樹索引Oracle索引
- Oracle大表快速建立索引Oracle索引
- oracle 索引的建立與管理Oracle索引
- oracle 繁忙時候建立索引Oracle索引
- oracle 建立所有分割槽索引Oracle索引
- 大量表格資料(>10萬條)使用PLSQL快速匯入OracleSQLOracle
- Dynamics 365 Web Api 建立與更新返回記錄ID及更新後的資料記錄WebAPI
- 【Oracle】-【建立索引】-建立索引的操作原理與一些體會Oracle索引
- magento2 建立資料表及新增索引索引
- 資料庫 - 索引、基本表建立與刪除資料庫索引
- Oracle 找出需要建立索引的表Oracle索引
- Oracle 手工建立資料庫Oracle資料庫
- 建立oracle資料庫(1)Oracle資料庫
- 手工建立oracle資料庫Oracle資料庫
- Oracle Standby資料庫建立Oracle資料庫
- Oracle資料庫索引管理規範Oracle資料庫索引
- Oracle資料庫索引使用及索引失效總結 轉Oracle資料庫索引
- RAW資料型別可以建立索引,但是不走索引測試(轉)資料型別索引
- elasticsearch: 指定索引資料的儲存目錄Elasticsearch索引
- oracle實驗記錄 (oracle 10G dataguard(8)rman 建立dg)Oracle
- mysql資料庫索引的建立以及效能測試MySql資料庫索引
- 資料庫索引設計與優化讀書筆記--《四》為SELECT語句建立理想的索引資料庫索引優化筆記