我們(men)知道,Oracle多租戶選件間術是數據庫原生支持的雲管理能力,而不(bù)是像其它物少廠商采用雲管理平台來(lái)實現多租戶的功能,使得Ora船水cle多租戶選件可實現更高的資源利用率,更好(hǎo)的性能,更強的穩定日年性,和更簡便的運維,從而廣受用戶喜愛。
用戶進行Oracle多租戶數據庫規劃時,特别是需要對多個關鍵數據庫知妹整合時,常常對多租戶數據庫的資源管控有些疑惑,甚至有些擔心。多個月公關鍵數據庫整合在一個硬件平台上,萬一出現資源競争,是又新否會影(yǐng)響所有運行在此平台上的數據庫,從而影舞就(yǐng)響關鍵的SLA指标。
Oracle在多租戶資源管控上面提供最全面最完整的解決資時方案,可以幫助用戶打消此類擔心。下面會主要新爸從多租戶環境下資源管理的考量因素及示例,來(lái)介紹Oracle多租戶數老街據庫所提供的資源管控能力。
多租戶環境資源管理考量
本文以CPU資源規劃為抓手來(lái)進行整體(tǐ)資源規土電劃考量,主要對數據庫運行的關鍵資源,如CPU、内存、IO、存儲空間(j高議iān)等來(lái)進行規劃設計,以期在滿足應用運行要求,保障應用性跳看能穩定的前提下,最大化資源利用。根據最佳實踐,多租現著戶環境下資源的規劃設計,主要分三步進行:
第1步,應用數據庫資源調研與評估,主要考量因素如下:
▪ 應用數據庫的運行特性及CPU、内存、存房南儲IO資源配置與使用情況,如高峰,平峰,低鋒時段資源使用率等;答算
▪ 應用數據庫表空間(jiān)大小(xiǎ姐媽o),包括當前數據表空間(jiān)大小(xiǎo)和臨時表空間(jiān)大請理小(xiǎo),及近一年增長趨勢;
▪ 應用數據庫連接數,包括最大會話連接數,活動(dòng)會話連去綠接數等;
▪ 應用數據庫的關鍵性,及對性能和SLA機生的要求;
第2步,确定數據庫雲多租戶環境的資源配置及用途,主要考量因素如下:
▪ 确定數據庫雲多租戶環境的CPU、内存、存儲IO資源配置;
▪ 确定數據庫雲多租戶環境的存儲配置及IO能力;
▪ 确定數據庫雲多租戶環境可承載的會話連接數;
▪ 确定數據庫雲多租戶環境架構及SLA特性來唱;
▪ 确定數據庫雲多租戶環境用途,如僅整合當前應用數據庫,學筆或者除整合當前應用數據庫外,還需考慮資源的靈活離月擴縮,新(xīn)需求的PDB快速供應等;
第3步,數據庫雲多租戶環境資源規劃設計,主要方案和應用場作好景如下:
▪方案1,通過應用錯峰的原則,來(lái)懂河選擇哪些應用數據庫通過PDB方式整合在一起,本身在多租戶層面不(bù)加控視習制,采用默認資源共享的方式,從應用運行特性上來(lái)降低CPU資源競争一低。此方案适應于對應用特性非常了解,且應用負微相載波動(dòng)周期穩定,能準确度量的,或者資源非常兒生充足,應用關鍵性不(bù)高的場景。
▪方案2,通過需整合數據庫CPU加總數,等于多租戶環境CPU數量的計算規則進從土行整合,采用PDB sizing factor來(lái)進行資源管控;此畫煙方案整合密度為1,适應于關鍵的數據庫應用,需要對性能具有極高的可一多預測性、穩定性的場景。
▪方案3,通過需整合數據庫CPU加總數,等于多租戶環境C會媽PU數量乘以整合密度數值的方式進行整合,采用PDB用作 sizing factor來(lái)進行資源管就說控;此方案整合密度大于1,存在資源超額分配的情況,站制适應于提供低成本的雲服務,并且預期許多pdb将在雜校大部分時間(jiān)處于空閑狀态的應用場景。
多租戶環境資源規劃設計及配置示例
下面以方案二的場景,及常見的整合當前應用數據庫的多租戶用途,來(lái)進行業不資源規劃設計配置示例。如需更多場景的設計及配置方式,可參閱文末參術相考資料了解。
場景假設
• 數據庫雲多租戶環境用途為僅整合當前應用數據庫;
• 數據庫雲多租戶環境CPU數量,即CDB CPU_COUNT為64道是;
• 數據庫雲多租戶環境内存大小(xiǎo)為51藍制2G;
• 應用X評估當前所需CPU數量為32,數據量為2T,每年增長量為300訊藍G;
• 應用Y評估當前所需CPU數量為16,數據量為1T,每年增長量為150G;
• 應用Z評估當前所需CPU數量為16,數據量為8車河00G,每年增長量為100G;
PDB sizing factor計算公式
PDB的資源分配是通過CDB資源管理器計劃和PD的畫B參數指定的,通過這些來(lái)設置控制各種匠舞資源,包括CPU、I/O、内存、會話、并行畫暗執行等。
本文采用一種簡單的方法,從PDB的CPU_COUNT來(lái)作(zuò章男)為各租戶資源分配比例的關鍵參考,為此,我們(men)定義了“PDB愛來 sizing factor”,它指定了PDB配置什聽的CDB資源的百分比。
PDB sizing factor公式如呢愛下:
PDB sizing factor = PDB中弟39;s CPU_COUNT / CDB's C兵得PU_COUNT
各租戶PDB sizing factor計算如下:
應用X PDB sizing factor = 32 / 64 = 50月冷%
應用Y PDB sizing factor = 16 / 64 = 2媽西5%
應用Z PDB sizing factor = 16 / 64 = 25民來%
CPU 資源規劃配置
CPU 資源規劃
各租戶CPU資源分配如下:
CPU 資源配置
1. 設置PDB cpu_count值,啟用instance c時白aging,以應用X為例
alter session set container 雜月= PDB-X;
alter system set cpu_count = 32;
alter session set container船開 = CDB$ROOT;
alter system set resource_manage和友r_plan = ' DEFAULT_CDB_PLAN'吧務;
2. 設置每個PDB對于CPU調度的份額與限制開風(數據庫版本在18.1及以上無需設置)
alter session set cont信可ainer = CDB$ROOT;
begin
dbms_resource_manager.create_土秒pending_area;
dbms_resource放快_manager.create_cdb_plan_directive(pla女去n => 'DEFAULT_CDB_PLAN'愛讀, pluggable_database => 日空39;PDB-X', shares => 32, 喝學utilization_limit => 50);
dbms_resource_manager.水著create_cdb_plan_directive(plan玩計 => 'DEFAULT_亮我CDB_PLAN', pluggable_dat外能abase => 'PDB-Y', sh店著ares => 16, utiliza熱為tion_limit => 25);
dbms_resource_manager.create_一相cdb_plan_directive(plan =&g理南t; 'DEFAULT_CDB_PLAN'睡醫;, pluggable_database =>音媽 'PDB-Z', shares =&g朋還t; 16, utilization_limit =&木下gt; 25);
dbms_resource_術放manager.submit_pendi匠中ng_area;
end;
/
3. 驗證PDB CPU資源配置是否生效
alter session set container 跳校= PDB-X;
--cpu_count值應為32
show parameter cpu_count;
--instance_caging為on則開啟
select name, cpu_managed,城南 con_id, instance_ca東時ging from v$rsrc_plan where is_top_pl雪銀an = 'TRUE';
alter session set container = CDB$RO子風OT;
--PDB對應的shares、utilization_limi到熱t值與設置一緻,則正常生效
select pluggable_dat做員abase, shares, utilization_lim事區it from dba_cdb_rsrc_pla筆書n_directives where plan = (select有船 name from v$rsrc_plan 制又where is_top_plan = 員麗39;TRUE' and con_id = 1);
内存資源規劃配置
内存資源規劃
各租戶内存資源分配如下:
如果PDB非常關鍵,可以考慮設置如下參數,通常情況下不(bù)必設置:
内存資源配置
根據内存資源規劃,進行PDB内存資源配置如下,以應用X為例:煙他
alter session set contain就拿er = PDB-X;
alter system set sga_target工新 = 131072M;
alter system set pga_aggr嗎好egate_target = 65536M;
alter system set pga房得_aggregate_limit = 新這131072M;
alter system set sga_min_size = 服從 32768M;
alter system set db_cache_s爸訊ize = 16384M;
alter system set shared_pool_size = 1中著6384M;
alter system set inm校用emory_size = 49152M;
alter system set parallel_讀風max_servers = 640;
alter system set parall子近el_servers_target = 256;
會話連接數規劃配置
會話連接數規劃
各租戶會員連接數分配如下:
會話連接數配置
根據内存資源規劃,進行PDB内存資源配置如下視廠,以應用X為例:
alter session set container = PDB-X;書內
alter system set sessions = 1樹場000;
存儲IO 規劃配置
Exadata I/O 規劃配置
Exadata I/O規劃
各租戶I/O資源分配如下:
注:32可據實靈活取值,計算出的值能取整即可,單個PD跳睡B份額值不(bù)能超過32。
Exadata I/O配置
根據Exadata I/O資源規劃,進行PDB I/O資源配置如下:
alter iormplan objective=auto;
alter iormplan dbplan=((name=p信什db-x, share=16),(name=pdb-志件y, share=8),(name=pdb-z雪員, share=8));
--查看(kàn)I/O資源配置是否生效那討
list iormplan detail;
注:在存儲服務器通過CellCLI命令
非Exadata I/O 規劃配置
非Exadata環境,由于使用的存儲不(bù)是智能存匠紅儲,也就是存儲無法識别IO調用屬于哪個PDB或者哪個數據庫用戶發空上起,從而不(bù)能完全從存儲層作(zuò)細粒度控制。因此,隻能通但內過整體(tǐ)基礎架構的規劃設計,來(lái)盡量緩解。常用非Exada關鐵ta I/O規劃配置方式如下:
▪方式1,通過詳盡評估整合前應用IO消耗情況,并加快藍總得出整合後IO最大需求,在配置多租戶存儲時,所配存儲IO能力大于I玩風O最大需求,并加上一定餘量,來(lái)确保整合後的多租戶環境IO能力山內大于所需,來(lái)降低IO競争。但此種方式由于準費事确評估比較難,也無法保證異常突發IO的影(yǐ東長ng)響,隻能盡量緩解,存在一定的風險;
▪方式2,通過用戶Profile的LOGICAL_READS_PER制間_SESSION、LOGICAL_READS_PE坐吃R_CALL,或者dbms_resourc匠是e_manager的SWITCH_IO_REQS、訊票SWITCH_IO_MEGABYTES來(lái)控制IO低西消耗量,但由于超過限制會中(zhōng)斷調用或者會話連接,因此,通常較少電會(shǎo)使用此方式,如需使用,應特别注意是否應用能接受;
▪ 方式3,通過PDB表空間(jiān)對應不(bù)同人公存儲的方式來(lái)作(zuò)IO控公體制,可以是同一存儲不(bù)同RAID組,也可以是不(bù)同的獨立存儲。村市此方式控制效果最好(hǎo),但規劃設計較複雜,成本較高;
存儲空間(jiān)規劃配置
存儲空間(jiān)規劃
各租戶存儲空間(jiān)分配如下:
注:PDB Value計算中(zhōng)2為按兩年增量計算,0.自黑8為表空間(jiān)使用率80%,可據實調整。
存儲空間(jiān)配置
根據存儲空間(jiān)規劃,進行PDB農水存儲資源配置如下:
alter session set container = CDB$ROOT生暗;
alter pluggable database P村藍DB-X storage (maxsize錯南 3310G);
alter pluggable data劇腦base PDB-Y storage (maxsize 1655G);
alter pluggable data刀吧base PDB-Z storage (ma自湖xsize 1250G);
--PDB對應的max_size值與設置一對就緻,則正常生效
select name, max_size from v$業拍pdbs;