您好,登錄后才能下訂單哦!
本篇內容介紹了“DM8 MPP的環境怎么搭建”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
DM8 MPP環境搭建
1. 準備環境
本例配置一個兩節點MPP。兩個節點都配置兩塊網卡,一塊接入內部網絡交換模塊,一塊接入到外部交換機。兩節點實例名分別為MEVI01和MEVI02,相關的IP、端口等規劃見下表。
實例名 | MAL_INST_HOST | MAL_INST_PORT | MAL_HOST | MAL端口 | MPP_SEQNO |
MEVI01 | 192.168.18.171 | 5236 | 192.168.10.171 | 5269 | 0 |
MEVI02 | 192.168.18.172 | 5236 | 192.168.10.172 | 5269 | 1 |
DM MPP 各 EP 使用的 DM 服務器版本應一致,同時還應注意各 EP 所在主機的操作系統位數、大小端模式、時區及時間設置都應一致,否則可能造成意想不到的錯誤。
2. 配置參數文件
1) 配置 dm.ini
首先,在 EP01 和 EP02 上分別創建數據庫,用戶可以使用 DM 的圖形化客戶端工具“數據庫配置助手”或命令行工具 dminit 創建數據庫。
在各 EP 上創建數據庫時,要求有些初始化參數必須所有 EP 都相同。我們建議各 EP 的數據庫初始化參數都保持一致,以免產生錯誤。
分別對兩個實例的 dm.ini 進行配置。
修改 EP01的 dm.ini 的以下幾個參數如下: INSTANCE_NAME = MEVI01 PORT_NUM = 5236 MAL_INI = 1 MPP_INI = 1 |
修改 EP02的 dm.ini 的以下幾個參數如下: INSTANCE_NAME = MEVI02 PORT_NUM = 5236 MAL_INI = 1 MPP_INI = 1 |
2) 配置 dmmal.ini
為兩個 EP 配置 dmmal.ini 如下,配置完全一樣,EP 間可互相拷貝。dmmal.ini 與dm.ini 放在相同的目錄下。
[MAL_INST1] MAL_INST_NAME = MEVI01 MAL_HOST = 192.168.10.171 MAL_PORT = 5269 MAL_INST_HOST = 192.168.18.171 MAL_INST_PORT = 5236
[MAL_INST2] MAL_INST_NAME = MEVI02 MAL_HOST = 192.168.10.172 MAL_PORT = 5269 MAL_INST_HOST = 192.168.18.172 MAL_INST_PORT = 5236 |
3) 配置 dmmpp.ctl
dmmpp.ctl 是一個二進制文件,用戶不能直接配置,需要先配置 dmmpp.ini。
配置 dmmpp.ini 如下:
[SERVICE_NAME1] MPP_SEQ_NO = 0 MPP_INST_NAME = MEVI01
[SERVICE_NAME2] MPP_SEQ_NO = 1 MPP_INST_NAME = MEVI02 |
使用dmctlcvt 工具將 dmmpp.ini 轉換成 dmmpp.ctl,dmctlcvt 工具在 DM 安裝目錄的“bin”子目錄中。轉換生成的 dmmpp.ctl 需要放在與 dm.ini 同一個目錄。
[dmdba@mpp1 ~]$ dmctlcvt TYPE=2 SRC=/dmdata/MEVI/dmmpp.ini DEST=/dmdata/MEVI/dmmpp.ctl
[dmdba@mpp2 ~]$ dmctlcvt TYPE=2 SRC=/dmdata/MEVI/dmmpp.ini DEST=/dmdata/MEVI/dmmpp.ctl
3. 運行 MPP
經過前面的步驟,DM MPP 環境已經配置完成了。分別啟動 MEVI01和 MEVI02的 DM 數據庫實例(順序不分先后),DM MPP 系統即能正常運行,用戶就可以登錄任一 EP 進行數據庫操作了。
[dmdba@mpp1 ~]$ DmServiceMEVI01 start
Starting DmServiceMEVI01: [ OK ]
[dmdba@mpp2 ~]$ DmServiceMEVI02 start
Starting DmServiceMEVI02: [ OK ]
4. 建立分布表
DM MPP 支持表數據的哈希分布、隨機分布、復制分布、范圍分布、LIST 分布類型,用戶可根據實際情況選擇合適的分布類型。
MPP 的數據分布類型和具體設置在建表時指定,語法如下:
CREATE [[GLOBAL] TEMPORARY] TABLE <表名定義> <表結構定義>; <表結構定義>::=<表結構定義1> | <表結構定義2> <表結構定義1>::= (<列定義> {,<列定義>} [,<表級約束定義>{,<表級約束定義>}]) [ON COMMIT <DELETE | PRESERVE> ROWS] [<PARTITION子句>][<空間限制子句>] [<STORAGE子句>][<壓縮子句>] [<ROW MOVEMENT子句>][<DISTRIBUTE子句>] <表結構定義2>::= [ON COMMIT <DELETE | PRESERVE> ROWS] [<空間限制子句>] [<STORAGE子句>] [<壓縮子句>]AS <不帶INTO的SELECT語句>[<DISTRIBUTE子句>]; <DISTRIBUTE子句>::=DISTRIBUTED[<RANDOMLY>|<FULLY>] |DISTRIBUTED BY [<HASH>](<列名> {,<列名>}) |DISTRIBUTED BY RANGE (<列名> {,<列名>})(<范圍分布項> {,<范圍分布項>}) |DISTRIBUTED BY LIST (<<列名> {,<列名>}>)(<LIST分布項> {,<LIST分布項>}) <范圍分布項>::= VALUES LESS THAN (<表達式>{,<表達式>}) ON <實例名> |VALUES EQU OR LESS THAN (<表達式>{,<表達式>})ON <實例名> <LIST分布項>::= VALUES (<表達式>{,<表達式>}) ON <實例名> |
測試:
#創建用戶和表空間: #以下操作在任意EP節點執行,所有EP節點都可見: SQL> create tablespace MEVI datafile '/dmdata/MEVI/MEVI01.DBF' size 64; SQL> create user mevi identified by "mevi123456" default tablespace mevi; SQL> grant RESOURCE,VTI to mevi; SQL> conn mevi/mevi123456 |
#創建哈希分布表 T_HASH,分布列為 C1。 SQL> create table t_hash(c1 int, c2 char(10)) distributed by hash (c1); |
#創建隨機分布表 T_RANDOM。 SQL> create table t_random(c1 int, c2 char(10)) distributed randomly; |
#創建復制分布表 T_FULLY。 SQL> create table t_fully(c1 int, c2 char(10)) distributed fully; |
#創建范圍分布表 T_RANGE,分布列為 C1。 SQL> create table t_range(c1 int, c2 char(10)) distributed by range (c1) (values equ or less than (100) on mevi01, values less than (maxvalue) on mevi02); |
#創建 LIST 分布表 T_LIST,分布列為 C1。 SQL> create table t_list(c1 int, c2 char(10)) distributed by list (c1) (values (6) on mevi01, values (8) on mevi02); |
#創建哈希分布表的范圍水平分區表。 create table t_hash_range_partition (c1 int, c2 char(10), c3 char(10)) partition by range (c1) ( partition part_1 values less than(0) , partition part_2 values less than(10) , partition part_3 values less than(100) , partition part_4 values less than(maxvalue) ) distributed by hash (c1); |
在創建分布表時,用戶應注意以下一些使用限制:
1) 單機模式下建的分布表和普通表一樣,但是不能創建指定實例名的分布表(如范圍分布表和LIST分布表);
2) 在MPP模式下創建分布表,如果未指定列則默認為RANDOMLY(隨機)分布表;
3) 分布列類型不支持BLOB、CLOB、IMAGE、TEXT、LONGVARCHAR、BIT、BINARY、VARBINARY、LONGVARBINARY、BFILE、時間間隔類型、虛擬列和用戶自定義類型;
4) HASH分布、RANGE分布、LIST分布允許更新分布列,并支持包含大字段列的表的分布列更新,但包含INSTEAD OF觸發器的表、堆表不允許更新分布列;
5) 對于FULLY(復制)分布表,只支持單表查詢的更新和刪除操作,并且查詢項或者條件表達式中都不能包含ROWID偽列表達式;
6) RANGE(范圍)分布表和LIST(列表)分布表,分布列與分布列值列表必須一致,并且指定的實例名不能重復;
7) 引用約束的引用列和被引用列都必需包含分布列,且分布情況完全相同;
8) 隨機分布表不支持UNIQUE索引。
5. 快速數據裝載
DM MPP特別適合于海量數據的存儲和處理,因此在應用中常常面臨將大量數據從某個或某些歷史數據庫中裝載到MPP系統的需求。為了滿足海量數據的快速裝載需求,DM提供了快速裝載工具dmfldr,能夠對DM單機版和MPP系統進行海量數據的快速裝載。
dmfldr為命令行工具,使用時必須指定必要的執行參數。
dmfldr支持MPP環境下的兩種數據加載模式:客戶端分發模式和本地分發模式,通過參數MPP_CLIENT進行設置。使用客戶端分發模式時,數據在dmfldr客戶端進行分發然后直接向指定EP發送數據;使用本地分發模式時,每個EP對應一個dmfldr和一份數據,每個dmfldr只選擇出對應本節點的數據并發送,不管其他節點的數據。默認使用客戶端分發模式。
6. 停止 MPP 系統
需要停止DM MPP系統的運行時,只需要停止每個EP的DM實例即可,沒有特別的順序要求。
若在DM MPP系統的運行過程中,某一EP發生故障停機,則整個MPP系統將處于不能正常服務的狀態。當前所有的用戶會話會被系統斷開,不能進行全局登錄,只能進行本地登錄。因此,為了保證MPP系統的高可用性,建議采用DM MPP與數據守護相結合的部署方案。
7. MPP的使用限制
DM MPP支持絕大多數單機版DM的功能,但在某些小的功能點使用上存在一些使用限制,具體如下:
1) MPP環境下,不支持創建SET NULL或SET DEFAULT約束檢查規則的引用約束;
2) MPP環境下不支持創建外部表、間隔分區表;
3) MPP環境下不支持修改表的ADD [COLUMN] <列名>[<IDENTITY子句>]子句;
4) MPP環境下不支持創建位圖索引、空間索引、數組索引;
5) MPP環境下位圖連接索引涉及的維度表需FULLY分布;
6) MPP環境下不支持索引的ONLINE選項;
7) MPP環境下不支持視圖的WITH CHECK OPTION操作;
8) MPP環境下不支持閃回查詢;
9) MPP環境下不支持物化視圖日志;
10) MPP各EP創建數據庫時指定的編碼格式應相同,否則可能造成亂碼問題;
11) MPP環境下INI參數MVCC_RETRY_TIMES無效,發生MVCC沖突時直接報錯;
12) MPP環境下不支持DBMS_JOB包;
13) MPP環境下日志輔助表不支持FULLY分布。
“DM8 MPP的環境怎么搭建”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。