版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、技術(shù)創(chuàng)新,變革未來ORACLE數(shù)據(jù)庫雙活RAC實(shí)踐目錄1、多租戶數(shù)據(jù)庫2、12c R2 sharding3、IN Memory4、多LGWR進(jìn)程5、RMAN Recover Table6、DataPump的新特性7、在線遷移活躍數(shù)據(jù)文件8、表分區(qū)或子分區(qū)在線遷移9、不可見字段Upgrade To Oracle Database 12C云端的數(shù)據(jù)庫:多租戶OLTP 基準(zhǔn)比較僅 3 GB 內(nèi)存對比 20 GB 內(nèi)存 (用于 50 個數(shù)據(jù)庫)可插拔數(shù)據(jù)庫擴(kuò)展至 250 個以上,同時獨(dú)立數(shù)據(jù)庫實(shí)例最多為 50 個可插拔數(shù)據(jù)庫與獨(dú)立數(shù)據(jù)庫高效率:硬件資源降低到 1/6,可伸縮性提高 5 倍云端的數(shù)據(jù)庫:
2、多租戶Oracle正式的名稱是:Multitenant Architecture,多租戶。其他的名稱:因?yàn)镃DB中的C是Container,因此又被稱為容器數(shù)據(jù)庫。因?yàn)镻DB的P是Plugged,因此也被稱為可插拔數(shù)據(jù)庫。多租戶架構(gòu)目前最多可以支持 252 個 PDB對連接的客戶端用戶而言,無法分清使用的是 PDB 還是非 CDB多租戶容器數(shù)據(jù)庫根HCM12.1DW12.1CRM12.1ERP12.1可插拔數(shù)據(jù)庫 (PDB)PDBRootCDB云端的數(shù)據(jù)庫:多租戶簡單點(diǎn)說,多租戶就是在一個數(shù)據(jù)庫里塞多個數(shù)據(jù)庫。一個CDB可以有N個PDB(至少1個)。所有PDB共享同一個SGA,和一系列的后臺進(jìn)
3、程。每個PDB都是一個相對獨(dú)立的數(shù)據(jù)庫。有獨(dú)立的SYSTEM和數(shù)據(jù)文件。 但共享控制文件和Redo文件和UNDO表空間。當(dāng)CDB是OPEN狀態(tài)時,它里面的每個PDB可以是以下三種狀態(tài):MOUNTOPENOPEN Read OnlyCDBSGADBWRLGWRCKPTPMONPDB1 PDB2 UNDO表空間Redo File控制文件云端的數(shù)據(jù)庫:多租戶CDB$ROOT是CDB中的根PDB。它也是一個獨(dú)立數(shù)據(jù)庫。它的數(shù)據(jù)字典中包含其他PDB的信息。所以拔出某個PDB,可以說是從一個CDB的CDB$ROOT中拔出。而插入到另一個CDB,當(dāng)然就是插入到另一個CDB中的CDB$ROOT了。CDB$RO
4、OT中的配置,就是所有PDB的默認(rèn)配置。修改CDB$ROOT中的參數(shù)、配置,就是在整個CDB級修改。保存所有PDB信息的數(shù)據(jù)字典視圖是dba_pdbs:SQL col pdb_name for a20SQL select pdb_id, pdb_name, dbid, con_uid, guid, status, con_id from dba_pdbs;PDB_ID PDB_NAME DBID CON_UID GUID STATUS CON_ID- - - - - - - 2 PDB$SEED 3752187096 3752187096 257DA1860ED60599E054000C298
5、0BC24 NORMAL 2 3 PDBTEST4 2804740952 1883059466 258198A7A89F0D75E054000C2980BC24 NEW 3 4 PDBTEST2 3133277598 3133277598 25E2961874B803B0E054000C2980BC24 NORMAL 4云端的數(shù)據(jù)庫:多租戶PDB$SEED是種子PDB,它只能以只讀模式打開,不能手動關(guān)閉,只能隨CDB$ROOT一起打開或關(guān)閉。創(chuàng)建新的PDB時,就是Clone PDB$SEED為一個新的PDB。它只包含SYSTEM表空間和SYSAUX表空間,而且我們不能增減它的表空間,也不能在它
6、里面創(chuàng)建表、索引等對象。PDB$SEED只用來作Clone操作時的源,無法對它進(jìn)行任何操作。多租戶架構(gòu)多租戶架構(gòu)目前最多可以支持252個 PDBPDB 的使用感覺和操作與非CDB相同對連接的客戶端用戶而言,無法分清使用的是 PDB 還是非 CDB數(shù)據(jù)庫鏈接云端數(shù)據(jù)庫:多租戶拔出/插入然后插入到新 CDB 中在 CDB 之間移動 PDB 的一種簡單情況是移動PDB的元數(shù)據(jù)拔出的 PDB 攜帶者自身的信息、補(bǔ)丁、加密密鑰信息等等云端數(shù)據(jù)庫:多租戶拔出/插入示例alter pluggable database HCMunplug into /u01/app/oracle/oradata/hcm.xm
7、lcreate pluggable database My_PDBusing /u01/app/oracle/oradata/hcm.xml插入拔出云端數(shù)據(jù)庫:多租戶多租戶架構(gòu) 動態(tài)性PDB 共享公共 SGA 和后臺進(jìn)程前臺會話只看到自己連接到的 PDB云端數(shù)據(jù)庫:多租戶多租戶的可伸縮性添加其他PDB時,只需增加少量內(nèi)存云端數(shù)據(jù)庫:多租戶CDB 中的文件每個 PDB 都有自己的一組表空間,其中包括 SYSTEM 和 SYSAUXPDB 共享 UNDO、REDO 以及控制文件和 (s)pfile文件默認(rèn)情況下,CDB 有單個 TEMP 表空間,但是 PDB 可以創(chuàng)建自己的表空間命名空間云端數(shù)據(jù)庫
8、:多租戶實(shí)現(xiàn)功能云端數(shù)據(jù)庫:多租戶使用多租戶將多個數(shù)據(jù)庫作為一個管理統(tǒng)一備份多個數(shù)據(jù)庫;在可插拔數(shù)據(jù)庫級別執(zhí)行恢復(fù)DW12.1CRM12.1ERP12.1 一個備份對可插拔數(shù)據(jù)庫進(jìn)行時間點(diǎn)恢復(fù)多租戶容器數(shù)據(jù)庫云端數(shù)據(jù)庫:多租戶使用多租戶將多個數(shù)據(jù)庫作為一個管理所有可插拔數(shù)據(jù)庫使用同一個備用數(shù)據(jù)庫生產(chǎn)容器數(shù)據(jù)庫HCM12.1DW12.1CRM12.1ERP12.1備用容器數(shù)據(jù)庫HCM12.1DW12.1CRM12.1ERP12.1云端數(shù)據(jù)庫:多租戶多租戶簡化修補(bǔ)應(yīng)用更改后,所有可插拔數(shù)據(jù)庫都會更新多租戶容器數(shù)據(jù)庫DW12.1CRM12.1ERP12.112.x12.x12.x就地升級云端數(shù)據(jù)庫:
9、多租戶多租戶的升級提供靈活的數(shù)據(jù)庫修補(bǔ)和升級選擇原始容器數(shù)據(jù)庫 (12.1)升級后的容器數(shù)據(jù)庫 (12.X)DW12.xCRM12.xDW12.1CRM12.1ERP12.1云端數(shù)據(jù)庫:多租戶通過變化的負(fù)載提高敏捷性利擴(kuò)展集群支持靈活的整合模式節(jié)點(diǎn) 1CDB 實(shí)例 1節(jié)點(diǎn) 2CDB 實(shí)例 2多租戶容器數(shù)據(jù)庫 (CDB)CRMBIHCMERPDW服務(wù)每個CDB實(shí)例有一個SGA云端數(shù)據(jù)庫:多租戶多租戶供應(yīng)快速克隆PDB可以從同一個CDB內(nèi)克隆PDB可以從遠(yuǎn)程CDB克隆PDB云端數(shù)據(jù)庫:多租戶管理共享資源多租戶環(huán)境中的資源管理可以從同一個CDB內(nèi)克隆PDB可以從遠(yuǎn)程CDB克隆PDB多租戶容器數(shù)據(jù)庫高
10、優(yōu)先級中優(yōu)先級低優(yōu)先級DWCRMERP云端數(shù)據(jù)庫:多租戶管理CPUCDB資源計(jì)劃使有用共享指定如何在PDB之間分配CPU可拔插數(shù)據(jù)庫共享有保障的 CPU最大 CPUHCM22/4 = 50%100%CRM11/4 = 25%100%ERP11/4 = 25%100%2 個共享1 個共享1 個共享云端數(shù)據(jù)庫:多租戶多租戶架構(gòu)的優(yōu)勢降低資本支出和運(yùn)營支出,提高敏捷性,簡化使用每個應(yīng)用程序有獨(dú)立的 PDB應(yīng)用程序無需更改即可運(yùn)行快速供應(yīng)(通過克?。┮浦残裕ㄍㄟ^可插拔性)共享內(nèi)存和后臺進(jìn)程每個服務(wù)器運(yùn)行更多應(yīng)用程序公共操作在CDB 級別執(zhí)行將多個數(shù)據(jù)庫作為一個管理(升級、高可用、備份)粒度控制(如果適
11、用)容器數(shù)據(jù)庫Container Database云端數(shù)據(jù)庫:多租戶如何升級為多租戶云端數(shù)據(jù)庫:多租戶升級為多租戶第1步:就地升級數(shù)據(jù)庫12.1ERP12.1CRM12.1DW容器數(shù)據(jù)庫就地升級云端數(shù)據(jù)庫:多租戶升級為多租戶第2步:插入已升級的數(shù)據(jù)庫容器數(shù)據(jù)庫12.1ERP12.1CRM12.1DW云端數(shù)據(jù)庫:多租戶借助復(fù)制進(jìn)行遷移然后插入到新 CDB 中通過種子克隆新 PDB使用諸如 Oracle GoldenGate 或 Data Pump 等技術(shù)復(fù)制12.1 中的新功能,在單個 expdb 和 impdb 命令中就能夠最大限度的利用可傳輸表空間來完成用戶要求的完整數(shù)據(jù)庫導(dǎo)出和完整數(shù)據(jù)庫導(dǎo)
12、入。(向后移植到 11.2.0.3。)云端數(shù)據(jù)庫:多租戶1、多租戶測試和開發(fā)靈活、及時地為可插拔數(shù)據(jù)庫建立副本及快照生產(chǎn)容器數(shù)據(jù)庫 開發(fā)容器數(shù)據(jù)庫 DW12.1CRM12.1ERP12.1ERP 開發(fā)副本ERP 開發(fā)副本ERP 開發(fā)副本云端數(shù)據(jù)庫:多租戶2、整合不同的應(yīng)用程序內(nèi)存和進(jìn)程分?jǐn)傞_銷系統(tǒng)資源容器數(shù)據(jù)庫云端數(shù)據(jù)庫:多租戶Oracle多用戶客戶評價(jià)“Oracle 多租戶是一項(xiàng)技術(shù)進(jìn)步。該技術(shù)不但使我們能夠更好地控制模式和應(yīng)用程序并將其隔離,而且使我們能夠?qū)Πl(fā)揮的性能作出明確的陳述并能夠更好地管理更多數(shù)據(jù)庫?!盋arfax“現(xiàn)在,借助于 Oracle Database 12c,我們可以使用
13、可傳輸導(dǎo)出/導(dǎo)入將整個數(shù)據(jù)庫從一個實(shí)例復(fù)制到另一個實(shí)例。這能夠最大程度縮短遷移客戶端數(shù)據(jù)庫時的停機(jī)時?!盇ccenture“現(xiàn)在,借助于 Oracle Database 12c,我們可以使用可傳輸導(dǎo)出/導(dǎo)入將整個數(shù)據(jù)庫從一個實(shí)例復(fù)制到另一個實(shí)例。這能夠最大程度縮短遷移客戶端數(shù)據(jù)庫時的停機(jī)時?!盇ccenture“毫無疑問,Oracle Database 12c 最吸引人的功能就是支持整合。Oracle 多租戶可以共享內(nèi)存資源,由于這些數(shù)據(jù)庫仍舊是單個數(shù)據(jù)庫實(shí)例,因此能夠簡化管理。”Pythian云端數(shù)據(jù)庫:多租戶主要優(yōu)點(diǎn)優(yōu)勢實(shí)現(xiàn)的功能最大程度降低資本支出每臺服務(wù)器運(yùn)行更多應(yīng)用程序最大程度降低運(yùn)
14、營支出將多個數(shù)據(jù)庫作為一個管理標(biāo)準(zhǔn)化過程和服務(wù)級別快速供應(yīng)最大程度提高敏捷性為開發(fā)/測試而克隆通過“可插拔性”實(shí)現(xiàn)移植性 借助 RAC 實(shí)現(xiàn)可伸縮性易于使用應(yīng)用程序無需更改即可運(yùn)行云端數(shù)據(jù)庫:多租戶基本操作案例多租戶:創(chuàng)建CDB使用 DBCA手動創(chuàng)建,步驟同非CDB:準(zhǔn)備參數(shù)文件Nomount啟動實(shí)例執(zhí)行建庫命令運(yùn)行初始化腳本多租戶:創(chuàng)建CDBCREATE DATABASE CDBV4MAXINSTANCES 2MAXLOGHISTORY 1MAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 1024DATAFILE /export/home/oradb/ora
15、data/CDBV4/system01.dbf SIZE 300M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITEDEXTENT MANAGEMENT LOCALSYSAUX DATAFILE /export/home/oradb/oradata/CDBV4/sysaux01.dbf SIZE 200M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITEDSMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE /export/home/oradb/o
16、radata/CDBV4/temp01.dbf SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITEDSMALLFILE UNDO TABLESPACE UNDOTBS1 DATAFILE /export/home/oradb/oradata/CDBV4/undotbs01.dbf SIZE 100M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITEDCHARACTER SET WE8MSWIN1252NATIONAL CHARACTER SET AL16UTF16LOGFILE GROUP
17、 1 (/export/home/oradb/oradata/CDBV4/redo01.log) SIZE 100M,GROUP 2 (/export/home/oradb/oradata/CDBV4/redo02.log) SIZE 100M,GROUP 3 (/export/home/oradb/oradata/CDBV4/redo03.log) SIZE 100MUSER SYS IDENTIFIED BY Oracle1 USER SYSTEM IDENTIFIED BY Oracle1enable pluggable databaseseed file_name_convert=(/
18、export/home/oradb/oradata/CDBV4/system01.dbf,/export/home/oradb/oradata/CDBV4/pdbseed/system01.dbf,/export/home/oradb/oradata/CDBV4/sysaux01.dbf,/export/home/oradb/oradata/CDBV4/pdbseed/sysaux01.dbf,/export/home/oradb/oradata/CDBV4/temp01.dbf,/export/home/oradb/oradata/CDBV4/pdbseed/temp01.dbf);注意以下
19、選項(xiàng):enable pluggable database:啟用CDB。seed file_name_convert: 這是兩個選項(xiàng),SEED和FILE_NAME_CONVERT。建庫命令中所創(chuàng)建的SYSTEM、SYSAUX等等表空間、數(shù)據(jù)文件都屬于根PDB:CDB$ROOT,”seed”選項(xiàng)是聲明創(chuàng)建PDB$SEED。Oracle會從CDB$ROOT Clone SYSTEM表空間和SYSAUX表空間來創(chuàng)建PDB$SEED,file_name_convert選項(xiàng)指定Clone表空間時新數(shù)據(jù)文件的位置。此選擇的作用和用法類似Standby中的file_name_convert。多租戶:創(chuàng)建CDB
20、創(chuàng)建新的PDB:bash-3.2$ sqlplus / as sysdbaSQL CREATE PLUGGABLE DATABASE pdbtest1 ADMIN USER dba1 IDENTIFIED BY a file_name_convert=(/export/home/oradb/oradata/CDBV3/pdbseed/,/export/home/oradb/oradata/CDBV3/pdbtest1/);或SQL CREATE PLUGGABLE DATABASE pdbtest2 FROM pdbtest1 file_name_convert=(/export/home/o
21、radb/oradata/CDBV3/pdbtest1/,/export/home/oradb/oradata/CDBV3/pdbtest2/);多租戶:創(chuàng)建CDB連接到PDB的兩種方式:先進(jìn)入cdb$root,再alter session set container=.,進(jìn)入指定PDB(如需要使用sys連接某一個PDB,必須使用此方式)bash-3.2$ sqlplus / as sysdbaSQL show con_nameCON_NAME-CDB$ROOTSQL alter session set container=pdbtest2;Session altered.SQL show c
22、on_nameCON_NAME-PDBTEST2conn ./.TNS_NAME,使用tns_name直接進(jìn)入指定的PDBbash-3.2$ sqlplus system/Oracle1pdbtest2Connected to:SQL show con_nameCON_NAME-PDBTEST2多租戶:連接CDBTNS_NAME的配置:pdbtest2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = h3)(PORT = 1521) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME =
23、pdbtest2) ) )監(jiān)聽狀態(tài):bash-3.2$ lsnrctl statusLSNRCTL for Solaris: Version 12.1.0.2.0 - Production on 25-DEC-2015 16:46:10STATUS of the LISTENER-Services Summary.Service pdbtest2 has 1 instance(s). Instance CDBV3, status READY, has 1 handler(s) for this service.Service pdbtest4 has 1 instance(s). Instan
24、ce CDBV3, status READY, has 1 handler(s) for this service.The command completed successfully數(shù)據(jù)庫service_names參數(shù):SQL show parameter serviNAME TYPE VALUE- - -service_names string CDBV3PMON進(jìn)程會像監(jiān)聽中注冊所有已經(jīng)OPEN的PDB。云端的數(shù)據(jù)庫:數(shù)據(jù)字典視圖數(shù)據(jù)字典所有元數(shù)據(jù)存放在CDB$ROOT的SYSTEM中,PDB SYSTEM中的數(shù)據(jù)字典表只保存一個指針,指向CDB$ROOT中真正的元數(shù)據(jù)。AWR數(shù)據(jù)也是在
25、CDB$ROOT中。比如某個Oracle自身的存儲過程,其代碼只在CDB$ROOT的SYSTEM中存儲一份,其他PDB的SYSTEM中的指針全都指向CDB$ROOT中的存儲過程。這樣的目的有兩個,一是節(jié)省空間,二是升級的時候只需要修改CDB$ROOT的SYSTEM中的元數(shù)據(jù)即可。視圖的變化:CDB_ DBA_ ALL_ USER_增加CDB_系統(tǒng)數(shù)據(jù)字典視圖,可以在全局級別查看對象,所有有時候能看到這樣的情況:SQL col owner for a15SQL col table_name for a15SQL select owner, table_name from cdb_tables w
26、here table_name=T1;OWNER TABLE_NAME- -SYS T1SYS T1重復(fù)的對象。其實(shí)它們分屬不同的PDP。但在CDB視圖中,并無專門的列說明對象屬于哪個PDB。只有當(dāng)PDB OPEN時,才能在cdb_*視圖中查到相關(guān)PDB的對象。對于DBA_ ALL_ USER_系列視圖,在哪個PDB中發(fā)出查詢命令,顯示結(jié)果就是哪個PDB中信息。多租戶:打開與關(guān)閉PDB原來的打開數(shù)據(jù)庫方式,只是打開CDB$ROOT和PDB$SEED:bash-3.2$ sqlplus / as sysdbaConnected to an idle instance.SQL startupORA
27、CLE instance started.Total System Global Area 629145600 bytesFixed Size 3006784 bytesVariable Size 478154432 bytesDatabase Buffers 142606336 bytesRedo Buffers 5378048 bytesDatabase mounted.Database opened.SQL select con_id, name, open_mode from v$pdbs; CON_ID NAME OPEN_MODE- - - 2 PDB$SEED READ ONLY
28、 3 PDBTEST4 MOUNTED 4 PDBTEST2 MOUNTED多租戶:打開與關(guān)閉PDB打開其他PDB的方式:alter pluggable database PDB_NAME1,PDB_NAME2, open READ ONLY FORCE UPGRADE RESTRICTEDalter pluggable database PDB_NAME1,PDB_NAME2, close immediate; /不加immediate必須等待正在連接PDB的用戶退出。注意,沒有abort選項(xiàng)。因?yàn)閏lose只是把某個PDB從open狀態(tài)轉(zhuǎn)為mount狀態(tài),并不是關(guān)閉整個CDB,SGA內(nèi)存并
29、沒有釋放,因此不存在abort。其他的打開PDB的命令:ALTER PLUGGABLE DATABASE ALL OPEN;ALTER PLUGGABLE DATABASE ALL CLOSE IMMEDIATE;ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 OPEN;ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 CLOSE IMMEDIATE;另一種打開PDB的方式:bash-3.2$ sqlplus / as sysdbaConnected to:SQL alter session set container=pdbt
30、est2;Session altered.SQL alter database open;Database altered.多租戶:參數(shù)管理整個CDB只有一個SPFILE參數(shù)文件,有些參數(shù)在各個PDB中可以設(shè)置為不同值。spfile中只保存CDB的參數(shù)值(或者說只保存CDB$ROOT的值),猜想各PDB的參數(shù)值是保存在CDB的數(shù)據(jù)字典中。在某一個pdb中create pfile from spfile,結(jié)果文件中將只包含此pdb和CDB不同的參數(shù)(也就是單獨(dú)在此pdb中修改了的參數(shù))。SQL show con_nameCON_NAME-PDBTEST2SQL alter system set
31、open_cursors=1000;System altered.SQL show parameter open_curNAME TYPE VALUE- - -open_cursors integer 1000轉(zhuǎn)到CDB中:SQL show con_nameCON_NAME-CDB$ROOTSQL SQL show parameter open_curNAME TYPE VALUE- - -open_cursors integer 300轉(zhuǎn)到PDBTEST2中:SQL create pfile=/export/home/oracle/pdbtest2.ora from spfile;File
32、created.bash-3.2$ cat /export/home/oracle/pdbtest2.ora*.open_cursors=1000多租戶:參數(shù)管理有些參數(shù)不能在PDB級別修改,如內(nèi)存相關(guān)參數(shù):SQL alter system set memory_target=500m;alter system set memory_target=500m*ERROR at line 1:ORA-65040: operation not allowed from within a pluggable database所有PDB會共享SGA,無法限制某個PDB的內(nèi)存使用情況。因此,不必要也不能修
33、改某個PDB的內(nèi)存參數(shù)。內(nèi)存參數(shù)只能在CDB$ROOT中修改(或者說,只能在CDB級別修改):SQL show con_nameCON_NAME-CDB$ROOTSQL alter system set memory_target=500m;System altered.多租戶:表空間管理可以在PDB中創(chuàng)建表空間,每個PDB中的數(shù)據(jù)文件、表空間都是獨(dú)立的。多個PDB可以使用同一表空間名。查詢DBA_視圖,只能看到當(dāng)前PDB的信息:在根PDB CDB$ROOT:SQL select tablespace_name, file_name from dba_data_files;TABLESPACE
34、_NAME FILE_NAME- -SYSTEM /export/home/oradb/oradata/CDBV3/system01.dbfSYSAUX /export/home/oradb/oradata/CDBV3/sysaux01.dbfUSERS /export/home/oradb/oradata/CDBV3/users01.dbfUNDOTBS2 /export/home/oradb/oradata/CDBV3/undotbs2_1.dbf在PDBTEST2:SQL select tablespace_name, file_name from dba_data_files;TABL
35、ESPACE_NAME FILE_NAME- -SYSTEM /export/home/oradb/oradata/CDBV3/pdbtest2/system01.dbfSYSAUX /export/home/oradb/oradata/CDBV3/pdbtest2/sysaux01.dbfUSERS /export/home/oradb/oradata/CDBV3/pdbtest2/users01.dbf在PDBTEST4:SQL select tablespace_name, file_name from dba_data_files;TABLESPACE_NAME FILE_NAME-
36、-SYSTEM /export/home/oradb/oradata/CDBV3/pdbtest4/system01.dbfSYSAUX /export/home/oradb/oradata/CDBV3/pdbtest4/sysaux01.dbf多租戶:表空間管理但如果在CDB$ROOT中查詢V$視圖,可以看到所有PDB中表空間的信息:SQL select ts#,name,con_id from v$tablespace order by con_id; TS# NAME CON_ID- - - 0 SYSTEM 1 1 SYSAUX 1 3 TEMP 1 4 USERS 1 5 UNDOT
37、BS2 1 0 SYSTEM 2 1 SYSAUX 2 2 TEMP 2 1 SYSAUX 3 0 SYSTEM 3 2 TEMP 3 1 SYSAUX 4 2 TEMP 4 3 USERS 4 0 SYSTEM 415 rows selected.因此V$視圖中會增加CON_ID列,DBA_視圖中則沒有此列。這是因?yàn)槊總€PDB自己的SYSTEM表空間中保存自己的數(shù)據(jù)字典,因此DBA_視圖只有某個PDB的信息。而V$視圖中的信息則來自于控制文件,控制文件是所有PDB共享的。多租戶:用戶管理用戶分兩類:Common用戶和Local用戶。Common用戶一旦創(chuàng)建,將在每個PDB中都存在,可以說Co
38、mmon是全局用戶。Oracle的內(nèi)部用戶都是Common用戶,比如SYS和SYSTEM。DBA自已創(chuàng)建的Common用戶,必須以c#或C#開頭。Local用戶只存在某一個PDB內(nèi)。在cdb$root中創(chuàng)建用戶,同時以c#開頭,將是common用戶。在pdb中創(chuàng)建將是Local的,在cdb$root中創(chuàng)建用戶,不以c#開頭,也是Local的。Public也是一個Comman用戶, 在每個pdb中可以授于Public不同的權(quán)限。多租戶:角色管理角色也有common和local之分。Local的角色只能在某個PDB中使用。創(chuàng)建角色的規(guī)則同User。同一Common role,在不同pdb中可以有不
39、同的權(quán)限。多租戶:權(quán)限與角色Common用戶在不同PDB中可以有不同的權(quán)限。權(quán)限相關(guān)命令有兩個級別:當(dāng)前PDB和所有PDB,使用選項(xiàng)CONTAINER=current|ALL控制。“CONTAINER=all”只能針對common用戶使用。命令使用示例:在CDB$ROOT中創(chuàng)建c#u2用戶:SQL create user c#u2 identified by a;User created.SQL grant create session to c#u2 CONTAINER=all;Grant succeeded.在其他PDB中創(chuàng)建Common用戶將報(bào)出錯誤:SQL create user c#
40、u3 identified by a;create user c#u3 identified by a *ERROR at line 1:ORA-65094: invalid local user or role name多租戶:PDB的插拔1). 拔出alter pluggable database pdbtest1 close;alter pluggable database pdbtest1 unplug into /export/home/oracle/pdb/CDBV1.xml; XML文件中包含此PDB的如下信息:表空間數(shù)據(jù)文件Local用戶和Local角色針對此PDB修改過的參數(shù)
41、少量性能資料(CPU使用量、軟、硬解析次數(shù)、DB Block Changes等等)2). 備分PDB相關(guān)文件rman target /BACKUP FOR TRANSPORT AS COMPRESSED BACKUPSET PLUGGABLE DATABASE PDBTEST1 FORMAT /export/home/oracle/pdb/PDBTEST_%U.pdb; 3). 拷貝XML文件和RMAN備份集文件到目標(biāo)庫多租戶:PDB的插拔4). 在目標(biāo)庫上還原RAMN備份集:rman target /RESTORE FOREIGN DATAFILE 12 format /export/hom
42、e/oradb/oradata/CDBV3/pdbtest4/sysaux01.dbf, 11 format /export/home/oradb/oradata/CDBV3/pdbtest4/system01.dbf FROM BACKUPSET /export/home/oracle/pdb/PDBTEST_01qnvmlg_1_1.pdb ;和之前版本的還原命令不同的是,不要求控制文件中有備份集信息,可以使用選項(xiàng)“FROM BACKUPSET ”指定備份集位置。在目標(biāo)庫中運(yùn)行下面的PL/SQL,可以檢查XML對應(yīng)的PDB是否兼容當(dāng)前CDB:set serveroutput onDECLA
43、RE l_result BOOLEAN;BEGIN l_result := DBMS_PDB.check_plug_compatibility( pdb_descr_file = /export/home/oracle/pdb/CDBV3_test1.xml, pdb_name = pdbtest1); IF l_result THEN DBMS_OUTPUT.PUT_LINE(compatible); ELSE DBMS_OUTPUT.PUT_LINE(incompatible); END IF;END;/多租戶:PDB的插拔5). 將PDB插入到目標(biāo)數(shù)據(jù)庫:create pluggable
44、 database pdbtest3 using /export/home/oracle/pdb/CDBV3_test1.xmlsource_file_name_convert= (/export/home/oradb/oradata/CDBV3/pdbtest1/,/export/home/oradb/oradata/CDBV3/pdbtest3/) file_name_convert=NONE NOCOPY tempfile reuse ;6). 在目標(biāo)庫打開新的pdbalter pluggable database pdbtest1 open;7). 刪除源數(shù)據(jù)庫的PDB(此步不是必須的
45、)drop pluggable database pdbtest1;云端的數(shù)據(jù)庫:NoCDB轉(zhuǎn)換為CDB1) 以受限模式打開數(shù)據(jù)庫:shutdown immediate;startup restrict mount exclusive; alter database open read only; 2) 生成XML元數(shù)據(jù)描述文件:begin dbms_pdb.describe(PDB_DESCR_FILE = /u02/noncdb/orcl.xml); end; /3) 創(chuàng)建PDBcreate pluggable database orcl using /u02/noncdb/orcl.xm
46、l copy;4) 執(zhí)行noncdb_to_pdb腳本alter session set container=orcl;?/rdbms/admin/noncdb_to_pdb.sql12c R2 shardingSharding,中文名叫數(shù)據(jù)分片,是對數(shù)據(jù)進(jìn)行橫向擴(kuò)展的一種方式。數(shù)據(jù)量增加,我可以通過加一臺機(jī)器,來擴(kuò)展其容納能力和處理能力。Sharding的三個問題:一、數(shù)據(jù)的路由:數(shù)據(jù)庫告訴應(yīng)用程序,你讓我查的數(shù)據(jù)目前在哪個分片上,這條路怎么走過去。二、數(shù)據(jù)的分片:實(shí)際數(shù)據(jù)的存放地點(diǎn),往往每個分片就是一臺單獨(dú)的服務(wù)器(含存儲)。三、分片的元數(shù)據(jù)信息保存:分片的數(shù)據(jù)實(shí)際是被切割放在不同的機(jī)器上
47、,那么需要有個集中的地點(diǎn)存放數(shù)據(jù)分片的信息12c R2 shardingMongoDB的配置單:路由服務(wù)器(Router)解決路由問題分片服務(wù)器(Shard)存儲實(shí)際數(shù)據(jù)(可能還有副本和仲裁)以及配置服務(wù)器(Config Server)存放分片元數(shù)據(jù)MongoDB架構(gòu):12c R2 shardingoracle12C:就是GDS框架(GSM,shard directors)shard nodeshardcat數(shù)據(jù)庫12c R2 shardingSharding有哪些缺點(diǎn):1. 增加了SQL的復(fù)雜性。因?yàn)殚_發(fā)人員必須要寫更復(fù)雜的SQL來處理sharding的邏輯。2. Sharding本身帶來的
48、復(fù)雜性。sharding軟件需要照顧分區(qū),數(shù)據(jù)平衡,訪問協(xié)調(diào),數(shù)據(jù)完整性。3. 單點(diǎn)故障。一個shard損壞可能導(dǎo)致整張表不可訪問。4. 失效接管服務(wù)器也更復(fù)雜。因?yàn)樨?fù)責(zé)失效接管的服務(wù)器必須擁有任何可能損壞的shard上的數(shù)據(jù)。5. 備份也更復(fù)雜。多個shard可能都需要同時備份。6. 維護(hù)也更復(fù)雜。比如增加刪除索引,增減刪除字段,修改表定義等等,都變得更困難。12c R2 sharding Sharding最佳實(shí)踐:Shardcat是非常重要的一個模塊,上面不僅僅有分片的元數(shù)據(jù)信息,還有duplicated table的master table信息,另外,當(dāng)進(jìn)行cross shard que
49、ry的時候,他還起著coordinator database的作用。所以建議對這個部分搭建RAC+adg架構(gòu),避免shardcat的單點(diǎn)故障。shard node,單個shard node的失效,將導(dǎo)致整個表的不可用。所以我們也要對shard node建立高可用的副本,這里可以用ADG或者OGG的技術(shù)。Sharding架構(gòu)極其考驗(yàn)對應(yīng)用的熟悉程度,需要配合應(yīng)用進(jìn)行合理的分區(qū)和分片。另外,如sharding key必須建索引,sharding的方式可以有一致性hash,讓數(shù)據(jù)均勻分布,也還是可以是range或者list分區(qū),或者h(yuǎn)ash-range,hash-list的子分區(qū)。分片和分區(qū)方式需要
50、結(jié)合業(yè)務(wù),有些場景需要相關(guān)數(shù)據(jù)都在一個分區(qū),避免cross shard join,有些場景需要均勻分片,禁止集中分片,導(dǎo)致熱塊數(shù)據(jù)都在一個分片上(如序列增長,做range分區(qū),熱點(diǎn)數(shù)據(jù)將會都在一個分片上)。思考:一個10個shard node的環(huán)境,按照上述規(guī)劃,需要多少臺機(jī)器In-Memory Option詳解In-Memory Option:概述SGAIMCOSMCOWnnnIn-Memory Area1MIMCU(In Memory Compression Units)1M1M1M1M1M1M1MTX JournalBuffer cacheShare PoolLog Buffer其他PO
51、OL每個IMCU 1M大小左右,具體大小由Oracle自己決定。表的數(shù)據(jù)以列為單位保存在IMCU中。一個表至少占一個IMCU。我們不能指定只保存表的一部分列,Oracle把自動把表的所有列緩存在In-memory Area中。DML操作將同時針對表相關(guān)數(shù)據(jù)和緩存在IMCU中的數(shù)據(jù)。Tx Journal中記錄IMCU的前映象,以提供未提交事務(wù)的一致讀。IMCO:調(diào)度進(jìn)程,負(fù)責(zé)IM內(nèi)存數(shù)據(jù)的加載和重載的計(jì)劃調(diào)度,它每兩分鐘會觸發(fā)一次。SMCO/Wnnn:該兩個后臺進(jìn)程是實(shí)際去執(zhí)行IM對象加載和重載工作的進(jìn)程In-Memory Option詳解In-Memory Option詳解In-Memory
52、Option:加載優(yōu)先級加載優(yōu)先級優(yōu)先級含義critical最高優(yōu)先級,在數(shù)據(jù)庫啟動后,具有該優(yōu)先級的對象首先加載HIGH在所有的critical對象被加載完后仍有空間, 開始加載該級別對象MEDIUM在前兩個優(yōu)先級對象被加載完后仍有空間, 開始加載該級別對象LOW在前三個優(yōu)先級對象被加載完后仍有空間, 開始加載該級別對象NONE只有在該對象被訪問,并且IM依舊有足夠的空間情況下加載 非必要情況,盡可能選擇默認(rèn)的NONE級別,提升數(shù)據(jù)庫啟動過程的效率。 對于必要加載對象,可以選擇非繁忙時段,手工觸發(fā)加載,因?yàn)榧虞d過程會有較 高的CPU開銷。 In-Memory Option:壓縮級別壓縮級別壓
53、縮級別解釋NO MEMCOMPRESS不壓縮MEMCOMPRESS FOR DML兼顧DML性能的輕量級壓縮MEMCOMPRESS FOR QUERY LOW兼顧查詢性能的壓縮MEMCOMPRESS FOR QUERY HIGH同時兼顧節(jié)約空間和查詢性能的壓縮MEMCOMPRESS FOR CAPACITY LOW傾向于節(jié)約空間的壓縮MEMCOMPRESS FOR CAPACITY HIGH針對節(jié)約空間的壓縮SQLalter table sales inmemory memcompress for query low priority critical; IMO進(jìn)行列式壓縮后,大致可以獲得22
54、0倍的空間節(jié)省,不僅取決于壓縮級別選項(xiàng),同樣 依賴于數(shù)據(jù)本身的特點(diǎn)。 MEMCOMPRESS FOR CAPACITY HIGH雖然壓縮比最大,但在查詢性能上不會有太大的劣勢。 In-Memory Option:壓縮級別Wnnn數(shù) 表名 行數(shù) 表大?。?GB)緩存大?。?GB) 緩存類型 加載時間( s)壓縮比10 frank_test 206,609,165 46.61 40.09 NO MEMCOMPRESS 191 1.1610 frank_test 206,609,165 46.61 38.79 FOR DML 199 1.2010 frank_test 206,609,165 46.
55、61 18.59 FOR QUERY LOW 436 2.5110 frank_test 206,609,165 46.61 14.6 FOR QUERY HIGH 456 3.1910 frank_test 206,609,165 46.61 9.8 FOR CAPACITY LOW 612 4.7610 frank_test 206,609,165 46.61 7.16 FOR CAPACITY HIGH 692 6.51列式存儲加載壓縮測試: 以測試大表frank_test為例,各級別壓縮比為1.166.51,最大未及10倍壓縮。 從加載速度上來看,開啟10個加載進(jìn)程,加載速度與壓縮比呈
56、正比例上升趨勢。 In-Memory Option:開啟設(shè)置In Memory Area大?。篠QL alter system set inmemory_size=100m scope=spfile;System altered.重啟數(shù)據(jù)庫:SQL shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL startupORACLE instance started.Total System Global Area 629145600 bytesFixed Size 3006784
57、bytesVariable Size 452988608 bytesDatabase Buffers 62914560 bytesRedo Buffers 5378048 bytesIn-Memory Area 104857600 bytesDatabase mounted.Database opened.SQL In-Memory Option加載對象SQLalter table sales inmemory no memcompress priority critical;SQLALTER TABLESPACE ts_data INMEMORY;SQLALTER TABLE sales M
58、ODIFY PARTITION SALES_201501 INMEMORY;oracle支持對表,分區(qū)或表空間指定in memory屬性,也就是說in memory屬性是針對物理數(shù)據(jù)庫對象的,而不是邏輯數(shù)據(jù)庫對象的In-Memory Option:將表加載到內(nèi)存中SQL select count(*) from t2;Execution Plan-Plan hash value: 3321871023-| Id | Operation | Name | Rows | Cost (%CPU)| Time |-| 0 | SELECT STATEMENT | | 1 | 515 (1)| 00:0
59、0:01 | 1 | SORT AGGREGATE | | 1 | | | 2 | TABLE ACCESS FULL| T2 | 461K| 515 (1)| 00:00:01 |-Note- - dynamic statistics used: dynamic sampling (level=2)Statistics- 0 recursive calls 0 db block gets 1796 consistent gets 1788 physical reads 0 redo size 542 bytes sent via SQL*Net to client 551 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/f
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高跟鞋銷售心得總結(jié)
- 電子電器銷售工作總結(jié)
- 2024全新酒店集團(tuán)資產(chǎn)托管合作協(xié)議范本3篇
- 火箭升空課程設(shè)計(jì)
- 江蘇省高三語文試卷分類匯編文學(xué)類文本閱讀專題
- 幼兒美術(shù)小課程設(shè)計(jì)
- 新課標(biāo)2022科學(xué)解讀心得范文(7篇)
- 2024年一件代發(fā)運(yùn)動器材代理合同3篇
- 接受單位捐款感謝信(8篇)
- 師范生個人求職信范文
- 《慶澳門回歸盼祖國統(tǒng)一》主題班會教案
- 物流公司自然災(zāi)害、突發(fā)性事件應(yīng)急預(yù)案(2篇)
- 《視頻拍攝與制作:短視頻?商品視頻?直播視頻(第2版)》-課程標(biāo)準(zhǔn)
- 公司戰(zhàn)略與風(fēng)險(xiǎn)管理戰(zhàn)略實(shí)施
- 2024年-2025年《農(nóng)作物生產(chǎn)技術(shù)》綜合知識考試題庫及答案
- 廣東省廣州市白云區(qū)2022-2023學(xué)年八年級上學(xué)期物理期末試卷(含答案)
- 醫(yī)學(xué)細(xì)胞生物學(xué)(溫州醫(yī)科大學(xué))知到智慧樹章節(jié)答案
- XX小區(qū)春節(jié)燈光布置方案
- 《廣西壯族自治區(qū)房屋建筑和市政工程施工招標(biāo)文件范本(2023年版)》
- 誠信講堂課件教學(xué)課件
- 2024年二級建造師考試建筑工程管理與實(shí)務(wù)試題及解答參考
評論
0/150
提交評論