亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

作者介紹

顏廷義,中國(guó)農(nóng)業(yè)銀行研發(fā)中心系統(tǒng)支持部高級(jí)工程師,主要從事數(shù)據(jù)脫敏技術(shù)研究、數(shù)據(jù)庫(kù)管理與維護(hù)等相關(guān)工作。

Oracle 12C中一個(gè)重要特性多租戶特性被引入。12C之前,數(shù)據(jù)庫(kù)實(shí)例(Oracle Instance)與數(shù)據(jù)庫(kù)之間為多對(duì)一或一對(duì)一關(guān)系,若服務(wù)器上同時(shí)運(yùn)行多個(gè)Oracle數(shù)據(jù)庫(kù),必須同時(shí)運(yùn)行多個(gè)數(shù)據(jù)庫(kù)實(shí)例,資源耗費(fèi)非常大。

因此12C之前的版本中業(yè)務(wù)數(shù)據(jù)之間的隔離一般通過(guò)Schema-Tablespace模式實(shí)現(xiàn);而在12C多租戶體系中,一個(gè)數(shù)據(jù)庫(kù)實(shí)例下可以同時(shí)運(yùn)行和管理多個(gè)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)在更高級(jí)別實(shí)現(xiàn)了數(shù)據(jù)的隔離。

本文以實(shí)際工作中具體數(shù)據(jù)申請(qǐng)為背景,對(duì)多租戶體系下數(shù)據(jù)庫(kù)的備份與恢復(fù)技術(shù)進(jìn)行研究,形成一套詳細(xì)、可用的數(shù)據(jù)備份、恢復(fù)方法,該方法既可為生產(chǎn)系統(tǒng)管理員日常備份與恢復(fù)提供參考,也值得數(shù)據(jù)恢復(fù)人員借鑒。

一、基本概念

1、多租戶架構(gòu)

Oracle 12C引入的新特性,主要包括多租戶容器數(shù)據(jù)庫(kù)(CDB)和可插拔數(shù)據(jù)庫(kù)(PDB)。

CDB容器庫(kù)是多租戶架構(gòu)下數(shù)據(jù)與元數(shù)據(jù)的邏輯容器,每個(gè)CDB由一個(gè)根容器(CDB$ROOT)、一個(gè)種子容器(PDB$SEED)和多個(gè)可插拔數(shù)據(jù)庫(kù)(PDB)組成,可以在不同的PDB庫(kù)中存放各個(gè)系統(tǒng)的業(yè)務(wù)數(shù)據(jù),實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)的隔離。

每個(gè)PDB在CDB中是相互獨(dú)立存在的,在單獨(dú)使用PDB時(shí),與普通數(shù)據(jù)庫(kù)無(wú)區(qū)別。

2、RMAN

RMAN(Recovery Manager)是Oracle軟件自帶的備份與恢復(fù)工具,主要應(yīng)用于全庫(kù)或數(shù)據(jù)庫(kù)部件(如表空間,數(shù)據(jù)文件,控制文件等)進(jìn)行物理級(jí)備份與恢復(fù),備份方式一般分為全量備份和增量備份。

RMAN備份主要使用backup命令進(jìn)行,恢復(fù)包括restore和recover兩個(gè)過(guò)程,其中restore主要用于從備份集中將數(shù)據(jù)文件恢復(fù)至數(shù)據(jù)庫(kù)中,recover用于在restore基礎(chǔ)上使用日志重做事務(wù)。

3、表空間

表空間(TableSpace)是Oracle數(shù)據(jù)庫(kù)中的邏輯存儲(chǔ)結(jié)構(gòu),主要用于存放表,索引,視圖等數(shù)據(jù)庫(kù)對(duì)象。

在Oracle數(shù)據(jù)庫(kù)中,表空間由若干segment組成,segment包含若干extent,而一個(gè)extent又包含多個(gè)連續(xù)block。

數(shù)據(jù)文件是與表空間對(duì)應(yīng)的物理存儲(chǔ)結(jié)構(gòu),一個(gè)表空間一般包括一個(gè)或多個(gè)數(shù)據(jù)文件。

4、SCN

SCN(System Change Number)系統(tǒng)改變號(hào),Oracle數(shù)據(jù)庫(kù)中內(nèi)置的時(shí)間機(jī)制,主要用于記錄檢查點(diǎn)(checkpoint)、事務(wù)提交(commit)等重要事件發(fā)生的時(shí)間及先后順序,SCN值主要存放在控制文件、數(shù)據(jù)文件頭以及日志文件中,在數(shù)據(jù)庫(kù)備份、恢復(fù)與管理過(guò)程中起重要作用。

5、控制文件(control file)

Oracle數(shù)據(jù)庫(kù)中最重要的物理文件,記錄了數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)(如數(shù)據(jù)文件、日志文件的名稱與具體存儲(chǔ)位置)、檢查點(diǎn)等信息,控制文件在數(shù)據(jù)庫(kù)啟動(dòng)、運(yùn)行及恢復(fù)時(shí)起到很重要的作用。

鑒于其重要性,為防止控制文件損壞或丟失,強(qiáng)烈建議在數(shù)據(jù)庫(kù)中存儲(chǔ)多份備份。

二、問(wèn)題背景與分析

1、問(wèn)題背景

作者在受理測(cè)試數(shù)據(jù)申請(qǐng)時(shí)遇到數(shù)據(jù)恢復(fù)失敗問(wèn)題,當(dāng)按單租戶數(shù)據(jù)庫(kù)的恢復(fù)方法將生產(chǎn)數(shù)據(jù)恢復(fù)至脫敏環(huán)境時(shí)遇到大量報(bào)錯(cuò),具體恢復(fù)腳本與報(bào)錯(cuò)信息如下,由于篇幅問(wèn)題,在此只列出關(guān)鍵步驟:

RMAN>

run{

startup nomount pfile=/tmp/initPOOL1DB.ora ;(參數(shù)文件存放目錄為/tmp/initPOOL1DB.ora)

restore controlfile from ‘/data/backup/itapdb.cf’;

alter database mount;

catalog start with ’/data/backup/’;

set newname for database to '/data/itapdb/%U';-------------->指定恢復(fù)路徑

restore database ;

switch datafile all ;

recover database;

}

RMAN-03002: failure of restore command at 01/25/2018 17:39:54

RMAN-06026: some targets not found - aborting restore

RMAN-06023: no backup or copy of datafile 99 found to restore

RMAN-06023: no backup or copy of datafile 98 found to restore

RMAN-06023: no backup or copy of datafile 67 found to restore

從報(bào)錯(cuò)信息判斷似乎是一些數(shù)據(jù)文件找不到,在反復(fù)確定恢復(fù)操作無(wú)誤后初步判斷是備份數(shù)據(jù)不全導(dǎo)致。

在與生產(chǎn)系統(tǒng)管理員多次溝通后得知該項(xiàng)目生產(chǎn)上部署在Oracle12C的多租戶架構(gòu)下,具體生產(chǎn)部署架構(gòu)如下所示:

Oracle 12C多租戶架構(gòu)備份與恢復(fù)技術(shù)實(shí)踐

生產(chǎn)系統(tǒng)多租戶部署架構(gòu)

從上圖中可以看出,項(xiàng)目(圖中ITAPDB庫(kù))與其他多個(gè)項(xiàng)目部署在多租戶架構(gòu)下,每一個(gè)系統(tǒng)的業(yè)務(wù)數(shù)據(jù)分別存放在各自獨(dú)立的PDB數(shù)據(jù)庫(kù)中,所有PDB由一個(gè)容器庫(kù)(CDB)來(lái)管理,共享計(jì)算資源,生產(chǎn)管理員只負(fù)責(zé)備份自己管理的PDB數(shù)據(jù),主要備份腳本如下:

RMAN>backup as compressed backupset pluggable database itapdb format '/new/%d_itapdb_%t_%U_%p';

RMAN>backup archivelog all format '/new/arch%t_%s_%p';

RMAN>backup current controlfile format '/new/cf_%U';

2、問(wèn)題分析

從多租戶架構(gòu)的定義知道,所有PDB共享一個(gè)數(shù)據(jù)庫(kù)實(shí)例、一份控制文件、一份在線REDO日志文件和一組UNDO撤銷數(shù)據(jù)文件。

在控制文件中記錄了所有數(shù)據(jù)文件的記錄和數(shù)據(jù)庫(kù)的物理性更改(如新建表空間、數(shù)據(jù)文件備份、檢查點(diǎn)發(fā)生的SCN等)。

當(dāng)執(zhí)行restore database、recover database操作進(jìn)行全庫(kù)恢復(fù)時(shí),由于備份數(shù)據(jù)只包括ITAPDB數(shù)據(jù)庫(kù)的備份文件,那么恢復(fù)時(shí)自然會(huì)報(bào)數(shù)據(jù)文件找不到錯(cuò)誤。

為了驗(yàn)證分析,首先查詢控制文件中包含哪些數(shù)據(jù)文件:

RMAN> report schema;

從查詢結(jié)果發(fā)現(xiàn)報(bào)錯(cuò)信息中找不到的數(shù)據(jù)文件編號(hào)都是其他項(xiàng)目PDB數(shù)據(jù)庫(kù)中的數(shù)據(jù)文件,再查詢v$datafile_header動(dòng)態(tài)視圖:

SQL> select FILE#,CHECKPOINT_CHANGE# from v$datafile_header;

可以發(fā)現(xiàn)ITAPDB庫(kù)的相關(guān)數(shù)據(jù)文件的文件頭Checkpoint SCN值已經(jīng)變化,而其他庫(kù)的數(shù)據(jù)文件頭SCN為零,這說(shuō)明ITAPDB庫(kù)的相關(guān)數(shù)據(jù)文件已經(jīng)完成restore操作,SCN值已經(jīng)恢復(fù)到備份時(shí)的SCN,而其他PDB庫(kù)由于缺少數(shù)據(jù)文件備份,restore時(shí)報(bào)錯(cuò),因此SCN值還為0,這進(jìn)一步驗(yàn)證了分析的正確性。

對(duì)于上面的分析,有如下思考:

① 前面章節(jié)提到,在CDB容器庫(kù)中包括一個(gè)CDB$ROOT、一個(gè)PDB$SEED和多個(gè)PDB數(shù)據(jù)庫(kù),其中CDB$ROOT庫(kù)主要用于存儲(chǔ)元數(shù)據(jù)等管理數(shù)據(jù),PDB$SEED庫(kù)是只讀種子庫(kù),主要作為模板為其他PDB庫(kù)建立時(shí)提供模板。那么CDB$ROOT、PDB$SEED兩個(gè)庫(kù)的備份數(shù)據(jù)是否是數(shù)據(jù)恢復(fù)必需的?

② 控制文件中記錄了所有多租戶架構(gòu)下的數(shù)據(jù)文件、表空間等信息,當(dāng)只恢復(fù)ITAPDB數(shù)據(jù)庫(kù)時(shí)是否可以采用顯示跳過(guò)方式規(guī)避掉其他不需要恢復(fù)的數(shù)據(jù)文件?

三、多租戶備份、恢復(fù)方法研究

帶著上面的疑問(wèn),經(jīng)過(guò)多次數(shù)據(jù)恢復(fù)測(cè)試、問(wèn)題查找與研究,我們總結(jié)出一整套Oracle 12C多租戶數(shù)據(jù)庫(kù)的備份、恢復(fù)方法,具體步驟如下:

① 首先聯(lián)系生產(chǎn)管理員對(duì)CDB$ROOT、PDB$SEED和ITAPDB三個(gè)庫(kù)重新進(jìn)行備份,而不再只備份ITAPDB數(shù)據(jù)庫(kù)的數(shù)據(jù),備份腳本變?yōu)椋?/p>

RMAN>backup as compressed backupset pluggable database "CDB$ROOT","PDB$SEED",itapdb format '/new/%d_itapdb_%t_%U_%p';

RMAN>backup archivelog all format '/new/arch%t_%s_%p';

RMAN>backup current controlfile format '/new/cf_%U';

之后將將備份數(shù)據(jù)放置到脫敏環(huán)境指定目錄下(為便于后面說(shuō)明,假設(shè)目錄為/data/backup)。

② 創(chuàng)建數(shù)據(jù)庫(kù)參數(shù)文件并啟動(dòng)至nomount狀態(tài)。

參數(shù)文件中一般需要制定如下參數(shù):

Control_files

Sga_target

Db_name

Compatible

Diagnostic_dest

SQL> startup nomount pfile=/tmp/initPOOL1DB.ora ;(參數(shù)文件存放目錄為/tmp/initPOOL1DB.ora)

③ 恢復(fù)控制文件并將數(shù)據(jù)庫(kù)啟動(dòng)到mount狀態(tài)。

Rman> restore controlfile from ‘/data/backup/itapdb.cf’;

Rman> alter database mount;

④ 重新編目控制文件。

Rman>catalog start with ’/data/backup/’;

說(shuō)明:由于生產(chǎn)系統(tǒng)部署在ASM存儲(chǔ)+RAC架構(gòu)下,而脫敏環(huán)境為本地磁盤+非RAC架構(gòu),生產(chǎn)與恢復(fù)環(huán)境的數(shù)據(jù)存放目錄不一致,需要將備份文件編目至控制文件中。

⑤ 執(zhí)行restore恢復(fù)數(shù)據(jù)文件。

在開始restore恢復(fù)數(shù)據(jù)文件之前,可以使用crosscheck命令對(duì)備份集有效性進(jìn)行檢查,對(duì)于在控制文件中記錄而在數(shù)據(jù)庫(kù)服務(wù)器上沒(méi)有存儲(chǔ)的備份集會(huì)被標(biāo)記為expired狀態(tài)。

Rman>crosscheck backup;

之后開始進(jìn)行三個(gè)庫(kù)的數(shù)據(jù)文件恢復(fù),命令如下:

Rman>run{

set newname for database to '/data/itapdb/%U';-------------->指定恢復(fù)路徑

restore database root ; ----------------->CDB$ROOT

restore database "PDB$SEED"; ------------->PDB$SEED

restore database ITAPDB; --------------->ITAPDB

switch datafile all ;

}

⑥ 使用歸檔日志進(jìn)行數(shù)據(jù)恢復(fù)。

與單租戶數(shù)據(jù)恢復(fù)不同,由于控制文件中記錄了所有PDB數(shù)據(jù)庫(kù)及其表空間信息,如果在恢復(fù)時(shí)不跳過(guò)相應(yīng)PDB對(duì)應(yīng)的表空間,使用recover database恢復(fù)會(huì)報(bào)如下錯(cuò)誤:

RMAN-06067: RECOVER DATABASE required with a backup or created control file

通過(guò)顯式跳過(guò),可以offline并drop掉不需要恢復(fù)的PDB和對(duì)應(yīng)的表空間。具體恢復(fù)方法如下:

Rman> Run {

recover database skip forever tablespace

PDB2:SYSTEM,

PDB2:USER,

PDB2:SYSAUX,..... ; ----此處需要根據(jù)具體情況進(jìn)行修改

}

此外在恢復(fù)過(guò)程中可能會(huì)遇到restore或recover過(guò)程緩慢甚至停滯的問(wèn)題,主要表現(xiàn)為在alert<SID>.log日志文件中報(bào)大量ASMB進(jìn)程錯(cuò)誤,該問(wèn)題主要由Oracle bug導(dǎo)致,觸發(fā)條件一般為生產(chǎn)上部署架構(gòu)(ASM+RAC)與數(shù)據(jù)恢復(fù)環(huán)境(非RAC+本地磁盤)部署架構(gòu)不一致導(dǎo)致,針對(duì)該問(wèn)題可登錄MOS網(wǎng)站(My Oracle Support)下載相應(yīng)補(bǔ)丁并進(jìn)行打補(bǔ)丁操作。

啟動(dòng)數(shù)據(jù)庫(kù):

Rman> Alter database open resetlogs ;

最后通過(guò)resetlogs方式啟動(dòng)數(shù)據(jù)庫(kù),至此數(shù)據(jù)恢復(fù)成功。

四、問(wèn)題總結(jié)

本文就測(cè)試數(shù)據(jù)申請(qǐng)中遇到的具體問(wèn)題為切入點(diǎn),對(duì)Oracle12C多租戶架構(gòu)下的備份與還原方法進(jìn)行了研究和總結(jié),從整個(gè)過(guò)程來(lái)看,其備份與恢復(fù)方法與單租戶架構(gòu)恢復(fù)有較大差異,具體差異主要體現(xiàn)在以下三個(gè)方面:

① 在數(shù)據(jù)備份方面,除需備份存放有業(yè)務(wù)數(shù)據(jù)的PDB數(shù)據(jù)庫(kù)外,也許備份CDB$ROOT和PDB$SEED庫(kù)。

② 在restore恢復(fù)數(shù)據(jù)文件階段,由于多個(gè)PDB可插拔數(shù)據(jù)庫(kù)共用一份控制文件及存儲(chǔ)與計(jì)算資源,需在數(shù)據(jù)恢復(fù)時(shí)顯示指定需恢復(fù)的數(shù)據(jù)庫(kù)。

③ 在使用日志文件進(jìn)行數(shù)據(jù)恢復(fù)的過(guò)程中,需要使用recover database skip forever tablespace命令顯示跳過(guò)不需恢復(fù)的PDB對(duì)應(yīng)表空間。

目前,考慮到生產(chǎn)系統(tǒng)的重要性,生產(chǎn)系統(tǒng)基本都部署在物理機(jī)+RAC集群環(huán)境中。

若為數(shù)據(jù)量較小項(xiàng)目單獨(dú)提供物理機(jī)+RAC環(huán)境勢(shì)必會(huì)對(duì)服務(wù)器資源提出更高的要求。

Oracle 12C多租戶體系特性可以在一定程度上解決服務(wù)器資源瓶頸的問(wèn)題,可以考慮將多個(gè)數(shù)據(jù)量較小項(xiàng)目部署在多租戶架構(gòu)下,每個(gè)PDB數(shù)據(jù)庫(kù)獨(dú)立存放各自的業(yè)務(wù)數(shù)據(jù),多個(gè)PDB數(shù)據(jù)庫(kù)共享一個(gè)實(shí)例。

后期在Oracle多租戶逐漸成為主流的情況下,該方法具有較強(qiáng)的前瞻性,對(duì)Oracle數(shù)據(jù)庫(kù)的管理與維護(hù)是一個(gè)很好的補(bǔ)充,很值得生產(chǎn)管理員、數(shù)據(jù)導(dǎo)入與脫敏人員的借鑒。

分享到:
標(biāo)簽:租戶 架構(gòu) Oracle
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定