【Oracle】ORACLE 12c DB In-Memory簡述及啟用____Oracle

來源:互聯網
上載者:User

    Oracle DB In-Memory是預裝在Oracle Database 12c(12.1.0.2之後的版本)中的,不需要安裝其他軟體或者是重新編譯現有的的資料庫軟體。這是因為In-Memory選項是作為SGA的一個新組件無縫整合在Oracle Database軟體核心中的,所以如果Oracle Database已經安裝,則Oracle DB In-Memory同時也已安裝。In-Memory store預設是不開啟的,但是可以簡單通過幾個步驟來開啟改功能。

    比較重要的一點是DB In-Memory的開啟是在執行個體層級的,同時對於要儲存到In-memory的objects需要手動指定,否則是不會自動儲存到In-Memory Area的。

    In-Memory Area是SGA中用列式儲存的方式來儲存資料的一個靜態池。在沒有這個特性之前,oracle的資料全部採用行形式進行儲存(除EHCC壓縮之外),而在In-Memory Area中資料以列式進行儲存,通過這種儲存方式在某些業務情境中提升掃描效能,如:出報表等。

    In-Memory Area的大小通過參數INMEMORY_SIZE來進行控制的,改參數預設為0,表示DB In-Memory被禁用。

    資料庫當前正在使用的INMEMORY_SIZE參數可以通過v$parameter視圖進行查看,同時在v$sga視圖中也可以看到。In-Memory column儲存在一個靜態池當中,所以對於INMEMORY_SIZE參數的所有調整都只在該instance重啟之後才會生效。同時In-Memory pool的大小也不會受到自動記憶體管理(AMM)的影響。如果啟用DB In-Memory特性,INMEMORY_SIZE最小需要設定為100M。

 

下面我們來看一下和In-Memory相關的參數:

SQL> show parameter INMEMORY

 

NAME                                 TYPE        VALUE

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

inmemory_clause_default              string

inmemory_force                       string      DEFAULT

inmemory_max_populate_servers        integer     0

inmemory_query                       string      ENABLE

inmemory_size                        big integer 0

inmemory_trickle_repopulate_servers_    integer     1

percent

optimizer_inmemory_aware             boolean     TRUE

    這7個含有INMEMORY首碼的參數分別控制著In-Memory功能的各個方面。比如INMEMORY_QUERY參數控制著在system和session層級上使用者查詢是否可以使用列式儲存的資料。其他參數也會在之後的文章中一一介紹。

    在當前的參數設定中可以看到INMEMORY_SIZE參數被設定為0,這代表著DB In-Memory功能未啟用,未在SGA中分配相關空間。

    我們同樣可以通過v$sga進行查看,In-Memory Area沒有被分配空間。

SQL> select name,value from v$sga;

 

NAME                      VALUE

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

Fixed Size              2929160

Variable Size         469765624

Database Buffers     2600468480

Redo Buffers           13844480

 

開啟DB In-Memory過程如下:

1.修改INMEMORY_SIZE參數:

SQL> ALTER SYSTEM SET INMEMORY_SIZE=1G SCOPE=SPFILE;

 

System altered.

注意:INMEMORY_SIZE最小為100M。

2.檢查sga參數的設定,確保在設定完inmemroy_size參數之後資料庫執行個體還可以正常啟動。如果資料庫使用了ASMM,則需要檢查sga_target參數。如果使用了AMM,則需要檢查MEMORY_TARGET參數,同時也需要檢查SGA_MAX_TARGET(或MEMORY_MAX_TARGET)。

3.重啟資料庫執行個體

SQL> shutdown immediate;

SQL> startup 

4.檢查重啟後的資料庫參數設定:

SQL> show parameter INMEMORY_SIZE

 

NAME                                 TYPE        VALUE

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

inmemory_size                        big integer 1G

同時也可通過v$sga視圖查詢In-Memory Area的分配:

SQL> select name,value from v$sga;

 

NAME                      VALUE

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

Fixed Size              2929160

Variable Size         469765624

Database Buffers     1526726656

Redo Buffers           13844480

In-Memory Area       1073741824

 

在In-Memory Area中又被分為兩個小的pool,分別為:

1.1M pool(IMCU pool)

2.64KB pool(SMU pool)

具體分配的大小我們可以通過V$INMEMORY_AREA視圖進行查看:

SQL> select pool,alloc_bytes,used_bytes from v$inmemory_area;

 

POOL                       ALLOC_BYTES USED_BYTES

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

1MB POOL                     854589440          0

64KB POOL                    201326592          0

可以看到絕大部分的In-Memory Area被分配為1MB pool。在沒有手工指定In-Memory的表時,USED_BYTES為0。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.