本申請涉及Jaebock Lee等人于2012年9月28日提交的申請?zhí)枮?3,631,815的美國專利申請、Andre Kruglikov等人于2013年3月15日提交的申請?zhí)枮?3/841,272的美國專利申請、J.William Lee等人于2013年3月14日提交的申請?zhí)枮?3/830,349的美國專利申請以及Vasanth Rajamani等人于2013年7月24日提交的申請?zhí)枮?3/950,207的美國專利申請。本段中列出的美國專利申請?jiān)诖送ㄟ^引用被并入。
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)庫系統(tǒng)整合,并且特別地,涉及在數(shù)據(jù)庫系統(tǒng)之間傳輸數(shù)據(jù)庫。
背景技術(shù):
本部分描述的方法是可以被實(shí)行的方法,但不一定是以前已經(jīng)被構(gòu)思或?qū)嵭械姆椒?。因此,除非另外指示,否則不應(yīng)當(dāng)假設(shè)本部分所描述的方法中的任何方法僅僅由于它們包含在本部分中而被認(rèn)定為現(xiàn)有技術(shù)。
數(shù)據(jù)庫整合包括在多個(gè)數(shù)據(jù)庫之間分配和共享硬件平臺(tái)的計(jì)算機(jī)資源。數(shù)據(jù)庫整合的重要目標(biāo)之一是可傳輸性??蓚鬏斝允窃谥鳈C(jī)間高效地移動(dòng)數(shù)據(jù)庫的能力??蓚鬏斝员阌谠诒徽系臄?shù)據(jù)庫之間分配計(jì)算機(jī)資源。
本文描述的是用于提高可傳輸性的技術(shù)。
附圖說明
在附圖中:
圖1A是描繪了根據(jù)本發(fā)明的實(shí)施例的容器DBMS的示意圖。
圖1B是描繪了根據(jù)本發(fā)明的實(shí)施例的容器DBMS的示意圖。
圖2是示出了根據(jù)本發(fā)明的實(shí)施例的為了傳輸可插拔數(shù)據(jù)庫而執(zhí)行的操作的流程圖。
圖3是示出了根據(jù)本發(fā)明的實(shí)施例的為了傳輸可插拔數(shù)據(jù)庫而執(zhí)行的操作的流程圖。
圖4是描繪了在本發(fā)明的實(shí)施例中可以被使用的計(jì)算機(jī)系統(tǒng)的示意圖。
具體實(shí)施方式
在下面的描述中,出于解釋的目的,闡述了許多具體細(xì)節(jié)以便于提供對本發(fā)明的深入理解。然而,明顯可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐本發(fā)明。在其他實(shí)例中,結(jié)構(gòu)和設(shè)備以框圖形式被示出以避免不必要地使本發(fā)明模糊。
總體概述
本文描述的是用于在容器數(shù)據(jù)庫管理系統(tǒng)(“容器DBMS”)之間傳輸數(shù)據(jù)庫的方法。容器DBMS管理容器數(shù)據(jù)庫。容器數(shù)據(jù)庫可以包含多個(gè)分開的隔離的數(shù)據(jù)庫,它們在本文中被稱為可插拔數(shù)據(jù)庫。每個(gè)可插拔數(shù)據(jù)庫由其自身的分開的數(shù)據(jù)庫字典定義并且在某種程度上與容器數(shù)據(jù)庫內(nèi)的其他可插拔數(shù)據(jù)庫隔離。
可插拔數(shù)據(jù)庫以最小化可插拔數(shù)據(jù)庫的停機(jī)時(shí)間的方式在源DBMS和目的地DBMS之間被傳輸。當(dāng)在目的地DBMS處進(jìn)行可插拔數(shù)據(jù)庫的拷貝時(shí),在源DBMS處事務(wù)繼續(xù)針對可插拔數(shù)據(jù)庫執(zhí)行并且這些事務(wù)改變可插拔數(shù)據(jù)庫。最終,事務(wù)終止或停止執(zhí)行。為事務(wù)生成的重做(redo)記錄在源DBMS處被應(yīng)用到可插拔數(shù)據(jù)庫的拷貝。為事務(wù)中的至少一些事務(wù)生成的撤銷(undo)記錄可以被存儲(chǔ)在分開的撤銷日志中并且被傳輸?shù)侥康牡谼BMS。被傳輸?shù)目刹灏螖?shù)據(jù)庫在目的地DBMS處被同步到“可插入就緒狀態(tài)”,在“可插入就緒狀態(tài)”中被傳輸?shù)目刹灏螖?shù)據(jù)庫可以被插入到目的地容器DBMS中。
容器數(shù)據(jù)庫管理系統(tǒng)
圖1A描繪了在其上可以實(shí)現(xiàn)實(shí)施例的示例DBMS。參照圖1A,它描繪了容器DBMS 100,容器DBMS 100包括數(shù)據(jù)庫服務(wù)器102和容器數(shù)據(jù)庫104,容器數(shù)據(jù)庫104包含多個(gè)可插拔數(shù)據(jù)庫。數(shù)據(jù)庫服務(wù)器102管理容器數(shù)據(jù)庫104以及包含在容器數(shù)據(jù)庫104中的可插拔數(shù)據(jù)庫。
數(shù)據(jù)庫服務(wù)器102表示在管理容器數(shù)據(jù)庫104的一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)上的軟件和資源的組合。下文在數(shù)據(jù)庫系統(tǒng)概述部分中描述了數(shù)據(jù)庫服務(wù)器以及數(shù)據(jù)庫服務(wù)器可以運(yùn)行在其上的計(jì)算機(jī)系統(tǒng)的示例,然而本發(fā)明的實(shí)施例不限于此。雖然圖1A僅描繪了特定數(shù)量的各個(gè)元件,但是實(shí)施例可以具有更多的圖1A中示出的元件中的每個(gè)元件。
圖1B描繪了根據(jù)本發(fā)明的實(shí)施例的容器數(shù)據(jù)庫104的更詳細(xì)的視圖。容器數(shù)據(jù)庫104包含由數(shù)據(jù)庫服務(wù)器102托管(host)和管理的多個(gè)數(shù)據(jù)庫。數(shù)據(jù)庫包括Pluggable Database(可插拔數(shù)據(jù)庫)PDB 120、可插拔數(shù)據(jù)庫PDB 130、可插拔數(shù)據(jù)庫PDB 140和根數(shù)據(jù)庫110。根數(shù)據(jù)庫110是由數(shù)據(jù)庫服務(wù)器102使用以全局地管理容器數(shù)據(jù)庫104以及存儲(chǔ)元數(shù)據(jù)的數(shù)據(jù)庫,所述元數(shù)據(jù)定義可插拔數(shù)據(jù)庫和/或定義對于多個(gè)可插拔數(shù)據(jù)庫的用戶可訪問的“公共數(shù)據(jù)庫對象”。
每個(gè)可插拔數(shù)據(jù)庫包括其自身的數(shù)據(jù)庫字典??刹灏螖?shù)據(jù)庫PDB 120包括數(shù)據(jù)庫字典121,可插拔數(shù)據(jù)庫PDB 130包括數(shù)據(jù)庫字典131,而可插拔數(shù)據(jù)庫PDB 140包括數(shù)據(jù)庫字典141。類似于可插拔數(shù)據(jù)庫,根數(shù)據(jù)庫110包括數(shù)據(jù)庫字典111。數(shù)據(jù)庫字典111包含定義管理(administer)容器數(shù)據(jù)庫104以及包含在其中的可插拔數(shù)據(jù)庫所需要的容器數(shù)據(jù)庫104的各個(gè)方面的元數(shù)據(jù),所述元數(shù)據(jù)包括定義可插拔數(shù)據(jù)庫PDB 120、可插拔數(shù)據(jù)庫PDB 130和可插拔數(shù)據(jù)庫PDB 140的元數(shù)據(jù)。
重做和撤銷記錄
容器數(shù)據(jù)庫104包含重做日志150和全局撤銷日志152。重做日志150存儲(chǔ)由容器DBMS 100執(zhí)行的事務(wù)生成的重做記錄,而全局撤銷日志152存儲(chǔ)由事務(wù)生成的撤銷記錄。重做記錄記錄足夠的信息以使得可以對數(shù)據(jù)庫重做數(shù)據(jù)庫改變,而撤銷記錄記錄關(guān)于數(shù)據(jù)庫改變的足夠的信息以使得數(shù)據(jù)庫中的改變可以被撤銷。
根據(jù)實(shí)施例,重做日志150為容器數(shù)據(jù)庫104內(nèi)的多個(gè)數(shù)據(jù)庫保存重做記錄。這些數(shù)據(jù)庫包括可插拔數(shù)據(jù)庫PDB 120、可插拔數(shù)據(jù)庫PDB 130和可插拔數(shù)據(jù)庫PDB 140,以及根數(shù)據(jù)庫110。
DBMS生成許多重做記錄。重做日志具有有限的大小,并且僅可以被用于有限的時(shí)間段以在DBMS生成重做記錄時(shí)存儲(chǔ)新的重做記錄。通常,當(dāng)重做日志達(dá)到閾值大小時(shí),重做日志不再被用于存儲(chǔ)重做記錄。作為替代,當(dāng)重做記錄被生成時(shí),新的重做記錄被存儲(chǔ)在另一個(gè)重做日志中。當(dāng)新的重做記錄被生成時(shí)在其中存儲(chǔ)該新的重做記錄的重做日志在此被稱為當(dāng)前重做日志。一旦重做日志不再被用于存儲(chǔ)新的重做日志,則該重做日志被稱為歸檔的重做日志。
撤銷記錄可以被用于各種目的,諸如回滾(roll back)事務(wù)、恢復(fù)數(shù)據(jù)庫、提供讀一致性等。全局撤銷日志152具有有限的大小。不同于重做記錄,撤銷記錄不可以被保留在歸檔日志中。當(dāng)事務(wù)執(zhí)行時(shí)數(shù)據(jù)庫服務(wù)器102可以覆寫(overwrite)撤銷記錄以節(jié)省存儲(chǔ)空間。
當(dāng)覆寫撤銷記錄時(shí),“最小撤銷可用性”被維持。最小撤銷可用性確保至少只要相應(yīng)的事務(wù)是活動(dòng)的情況下撤銷記錄的可用性,從而保證回滾中止(abort)的事務(wù)所需要的撤銷記錄是可用的。數(shù)據(jù)庫服務(wù)器102還可以保留撤銷記錄至超出比為了最小撤銷可用性所需要的更長的時(shí)間,從而為更長的運(yùn)行的查詢提供讀一致性。
根據(jù)實(shí)施例,全局撤銷日志152為容器數(shù)據(jù)庫104內(nèi)的多個(gè)數(shù)據(jù)庫保存撤銷記錄。這些數(shù)據(jù)庫包括可插拔數(shù)據(jù)庫PDB 120、可插拔數(shù)據(jù)庫PDB 130和可插拔數(shù)據(jù)庫PDB 140,以及根數(shù)據(jù)庫110。
在快速可插拔數(shù)據(jù)庫傳輸?shù)姆椒ㄖ?,為正在傳輸?shù)目刹灏螖?shù)據(jù)庫生成的撤銷記錄不是存儲(chǔ)在全局撤銷日志152中,而是作為替代被分開地存儲(chǔ)在被稱為相對于可插拔數(shù)據(jù)庫的本地撤銷日志的撤銷日志中。如將以更多細(xì)節(jié)解釋的,在快速可插拔數(shù)據(jù)庫傳輸?shù)姆椒ǖ哪骋浑A段期間,本地撤銷日志142保存用于對可插拔數(shù)據(jù)庫PDB 140做出的改變的、由數(shù)據(jù)庫服務(wù)器102生成的撤銷記錄,但是不保存用于對容器DBMS 100中的其他可插拔數(shù)據(jù)庫做出的改變的撤銷記錄。
重做記錄和撤銷記錄記錄除數(shù)據(jù)庫改變之外的事件。這些事件包括事務(wù)相關(guān)事件,諸如事務(wù)的開始、提交或中止。
重做記錄或撤銷記錄保存反映各自記錄的事件或改變相對于由其他重做記錄和撤銷記錄記錄的其他事件和改變發(fā)生的順序的邏輯時(shí)間或以其他方式與該邏輯時(shí)間相關(guān)聯(lián)。另外,事務(wù)還與表示事務(wù)何時(shí)開始的邏輯時(shí)間相關(guān)聯(lián);重做記錄被生成以記錄事務(wù)的開始。邏輯時(shí)間的示例是系統(tǒng)改變號(hào)(SCN)。然而,本發(fā)明不限制于以SCN的形式的邏輯時(shí)間。
快速可插拔數(shù)據(jù)庫傳輸
圖2是描繪了根據(jù)本發(fā)明的實(shí)施例的用于快速可插拔數(shù)據(jù)庫傳輸?shù)姆椒ǖ倪M(jìn)程的流程圖。該進(jìn)程被執(zhí)行以將可插拔數(shù)據(jù)庫從“源容器DBMS”傳輸?shù)健澳康牡厝萜鱀BMS”,其中源容器DBMS是容器DBMS 100。目的地容器DBMS未示出。進(jìn)程完成后,被傳輸?shù)目刹灏螖?shù)據(jù)庫是“可插入就緒的”,即可插拔數(shù)據(jù)庫處于要被插入到目的地容器DBMS中所需要的數(shù)據(jù)庫狀態(tài)中。正在使用快速可插拔數(shù)據(jù)庫傳輸被傳輸?shù)目刹灏螖?shù)據(jù)庫在此被稱為被傳輸?shù)目刹灏螖?shù)據(jù)庫。
參照圖2,在205處,可傳輸?shù)目刹灏螖?shù)據(jù)庫Pluggable Database PDB 140的熱拷貝在目的地容器DBMS中被創(chuàng)建。因?yàn)楫?dāng)可傳輸?shù)目刹灏蜳DB 140被復(fù)制到目的地容器DBMS時(shí),在源容器DBMS 100處對可插拔數(shù)據(jù)庫PDB 140的改變是允許的,所以可傳輸?shù)目刹灏螖?shù)據(jù)庫PDB 140的拷貝在此被稱為熱拷貝。因此,當(dāng)可插拔數(shù)據(jù)庫PDB 140正在被拷貝時(shí),事務(wù)被執(zhí)行并且事務(wù)的改變被提交到可插拔數(shù)據(jù)庫PDB 140。在可插拔數(shù)據(jù)庫PDB 140的一部分已經(jīng)被復(fù)制到目的地容器DBMS之后,該部分可以由事務(wù)改變。如將以更多細(xì)節(jié)解釋的,通過在目的地容器DBMS處應(yīng)用重做記錄來使改變的部分成為“最新的”。熱拷貝可以包括多個(gè)文件。
諸如可插拔數(shù)據(jù)庫之類的數(shù)據(jù)庫與表示邏輯時(shí)間的檢查點(diǎn)相關(guān)聯(lián),在該邏輯時(shí)間處,在該邏輯時(shí)間處或在該邏輯時(shí)間之前的任何數(shù)據(jù)庫改變已經(jīng)被持久地寫入到數(shù)據(jù)庫。當(dāng)熱拷貝的創(chuàng)建開始時(shí),被傳輸?shù)目刹灏螖?shù)據(jù)庫PDB 140的檢查點(diǎn)被記錄為熱拷貝檢查點(diǎn)。
在步驟210處,源容器DBMS進(jìn)入完全事務(wù)靜默模式。在完全事務(wù)靜默模式中,沒有針對被傳輸?shù)目刹灏螖?shù)據(jù)庫的新事務(wù)被啟動(dòng),并且源容器DBMS等待直到達(dá)到完全事務(wù)非活動(dòng)性為止。當(dāng)達(dá)到可插拔數(shù)據(jù)庫的完全事務(wù)非活動(dòng)性時(shí),沒有活動(dòng)的事務(wù)正在針對可插拔數(shù)據(jù)庫執(zhí)行;在進(jìn)入完全事務(wù)靜默模式時(shí)活動(dòng)的事務(wù)已經(jīng)終止,即,這些事務(wù)已經(jīng)被提交或中止。源容器DBMS 100阻止或以其他方式不允許針對被傳輸?shù)目刹灏螖?shù)據(jù)庫PDB 140啟動(dòng)新事務(wù)。
進(jìn)入完全事務(wù)靜默模式還需要設(shè)置事務(wù)靜默界限。事務(wù)靜默界限是某一邏輯時(shí)間,在該邏輯時(shí)間處(1)在該邏輯時(shí)間處或在該邏輯時(shí)間之前啟動(dòng)的、針對被傳輸?shù)目刹灏螖?shù)據(jù)庫的所有事務(wù)被終止并且(2)沒有新事務(wù)被啟動(dòng)。
在步驟220處,源容器DBMS維持在完全事務(wù)靜默模式中,等待活動(dòng)的事務(wù)終止。同時(shí),針對其他可插拔數(shù)據(jù)庫(例如,可插拔數(shù)據(jù)庫PDB 120和可插拔數(shù)據(jù)庫PDB 130)發(fā)起的事務(wù)允許被啟動(dòng)和執(zhí)行。
當(dāng)操作210和220被執(zhí)行時(shí),在215處,通過應(yīng)用“相關(guān)(pertinent)重做記錄”將熱拷貝同步到被傳輸?shù)目刹灏螖?shù)據(jù)庫Pluggable Database PDB 140。相關(guān)重做記錄是記錄需要被應(yīng)用到數(shù)據(jù)庫或以其他方式重放以將數(shù)據(jù)庫的狀態(tài)同步到特定的邏輯時(shí)間的改變和事件的記錄。在當(dāng)前進(jìn)程中,相關(guān)重做記錄是具有在熱拷貝檢查點(diǎn)上或在熱拷貝檢查點(diǎn)之后的邏輯時(shí)間的重做記錄。在步驟215中,在直至事務(wù)靜默界限的邏輯時(shí)間處啟動(dòng)的事務(wù)的相關(guān)重做記錄被應(yīng)用到熱拷貝。
可以存在相關(guān)記錄的若干源。一些相關(guān)重做記錄可以存在于歸檔重做日志中。目的地容器DBMS訪問包含相關(guān)重做記錄的任何歸檔日志以應(yīng)用到熱拷貝。一些相關(guān)重做記錄可以存在于當(dāng)前重做日志中。目的地容器DBMS訪問具有相關(guān)重做記錄的當(dāng)前重做日志以將這些重做記錄應(yīng)用到熱拷貝。來自當(dāng)前重做日志的一些或所有相關(guān)重做日志可以由源容器DBMS運(yùn)送到目的地容器DBMS,而不用目的地容器DBMS直接地訪問當(dāng)前重做日志。當(dāng)同步熱拷貝時(shí),源數(shù)據(jù)庫可以生成可能需要被應(yīng)用的相關(guān)重做記錄。這些相關(guān)重做記錄被運(yùn)送到目的地容器DBMS或者由目的地容器DBMS從當(dāng)前重做日志中訪問。
一旦用于在事務(wù)靜默界限之前啟動(dòng)的事務(wù)的相關(guān)重做記錄被應(yīng)用,則熱拷貝是可插入就緒的并且它可以被插入到目的地容器DBMS中。一旦熱拷貝被插入,目的地DBMS允許針對熱拷貝在目的地容器DBMS上執(zhí)行新事務(wù),熱拷貝實(shí)際上成為可插拔數(shù)據(jù)庫Pluggable Database PDB 140,但是它現(xiàn)在由目的地容器DBMS托管。
達(dá)到完全事務(wù)非活動(dòng)性是用于快速可插拔數(shù)據(jù)庫傳輸?shù)囊陨线M(jìn)程的重要特征。在源容器數(shù)據(jù)庫中達(dá)到完全事務(wù)非活動(dòng)性的益處是,一旦被傳輸?shù)目刹灏螖?shù)據(jù)庫在目標(biāo)容器DBMS處被打開,就為針對被傳輸?shù)目刹灏螖?shù)據(jù)庫在目的地容器DBMS處執(zhí)行的事務(wù)確保了最小撤銷可用性。因?yàn)樵诒粋鬏數(shù)目刹灏螖?shù)據(jù)庫在目的地容器DBMS處被打開以用于事務(wù)的執(zhí)行之前,在源容器DBMS處達(dá)到了完全事務(wù)非活動(dòng)性,所以針對被傳輸?shù)目刹灏螖?shù)據(jù)庫在目的地容器DBMS處執(zhí)行的任何事務(wù)必須已經(jīng)在目的地容器DBMS處啟動(dòng),并且因此為事務(wù)生成的所有撤銷記錄在目的地容器DBMS處被生成并且是可用的。缺點(diǎn)是在完全事務(wù)靜默模式期間針對被傳輸?shù)目刹灏螖?shù)據(jù)庫的新事務(wù)都不能被發(fā)起,并且因此對于新事務(wù)來說在某一時(shí)間段內(nèi)被傳輸?shù)目刹灏螖?shù)據(jù)庫是不可用的。
部分事務(wù)靜默
圖3示出了用于快速可插拔數(shù)據(jù)庫傳輸?shù)倪M(jìn)程,該進(jìn)程實(shí)現(xiàn)被傳輸?shù)目刹灏螖?shù)據(jù)庫不可用于啟動(dòng)事務(wù)的時(shí)間段的最小化。在快速可插拔數(shù)據(jù)庫傳輸期間,進(jìn)程使用本地撤銷日志用于被傳輸?shù)目刹灏螖?shù)據(jù)庫。進(jìn)程被執(zhí)行以將可插拔數(shù)據(jù)庫從源容器DBMS傳輸?shù)侥康牡厝萜鱀BMS,其中源容器DBMS是容器DBMS 100。目的地容器DBMS未示出。正在被傳輸?shù)目刹灏螖?shù)據(jù)庫是可插拔數(shù)據(jù)庫PDB 140。
參照圖3,可傳輸?shù)目刹灏螖?shù)據(jù)庫Pluggable Database PDB 140的熱拷貝在目的地容器DBMS中被創(chuàng)建。當(dāng)熱拷貝的創(chuàng)建開始時(shí),被傳輸?shù)目刹灏螖?shù)據(jù)庫PDB 140的檢查點(diǎn)被記錄為熱拷貝檢查點(diǎn)。
在步驟310處,源容器DBMS 100進(jìn)入用于可插拔數(shù)據(jù)庫PDB 140的本地撤銷日志記錄模式。對于當(dāng)源容器DBMS處于本地撤銷日志記錄模式時(shí)針對可插拔數(shù)據(jù)庫PDB 140啟動(dòng)的事務(wù),撤銷記錄被存儲(chǔ)在可插拔數(shù)據(jù)庫PDB 140的本地撤銷日志,即本地撤銷日志142中。然而,對于當(dāng)源容器DBMS 100進(jìn)入本地撤銷日志模式時(shí)已經(jīng)活動(dòng)的事務(wù),撤銷記錄被存儲(chǔ)在全局撤銷日志152中。
當(dāng)容器DBMS 100進(jìn)入本地撤銷日志記錄模式時(shí),容器DBMS 100設(shè)置本地撤銷日志記錄界限。本地撤銷日志記錄界限是一邏輯時(shí)間,在該邏輯時(shí)間處對于針對被傳輸?shù)目刹灏螖?shù)據(jù)庫在該邏輯時(shí)間之前啟動(dòng)的所有事務(wù),撤銷記錄被存儲(chǔ)在全局撤銷日志152中,而對于在該邏輯時(shí)間后啟動(dòng)的事務(wù),撤銷記錄被存儲(chǔ)在本地撤銷日志142中。在本地撤銷日志記錄界限數(shù)據(jù)庫之前針對被傳輸?shù)目刹灏螖?shù)據(jù)庫啟動(dòng)的活動(dòng)事務(wù)在此被稱為先本地日志記錄(pre-local-logging)事務(wù),而在本地撤銷日志記錄界限數(shù)據(jù)庫之后針對被傳輸?shù)目刹灏螖?shù)據(jù)庫啟動(dòng)的事務(wù)在此被稱為后本地日志記錄(post-local-logging)事務(wù)。因此,即使可插拔數(shù)據(jù)庫PDB 140已經(jīng)進(jìn)入本地撤銷日志記錄模式,在本地撤銷日志記錄模式期間用于由先本地日志記錄事務(wù)做出的改變的撤銷記錄也存儲(chǔ)在全局撤銷日志152中。
在320處,處于本地撤銷日志記錄模式中的源容器DBMS 100等待先本地日志記錄事務(wù)終止。然而,在撤銷本地日志記錄界限后啟動(dòng)的事務(wù)被允許執(zhí)行。
在330處,源容器DBMS 100檢測到先本地日志記錄事務(wù)已經(jīng)終止。響應(yīng)于檢測到先本地日志記錄事務(wù)已經(jīng)終止,源容器DBMS暫停對傳輸?shù)目刹灏螖?shù)據(jù)庫PDB 140執(zhí)行事務(wù),從而阻止對可插拔數(shù)據(jù)庫PDB 140的進(jìn)一步改變。
在步驟340處,源容器DBMS 100設(shè)置“拔出界限”。拔出界限是在源容器DBMS 100處對傳輸?shù)目刹灏螖?shù)據(jù)庫沒有做出進(jìn)一步改變的邏輯時(shí)間。源容器DBMS 100生成“拔出重做記錄”以記錄拔出界限的產(chǎn)生和拔出界限的邏輯時(shí)間。
在步驟350處,本地撤銷日志通過例如源容器DBMS 100將本地撤銷日志142發(fā)送到目的地容器DBMS而被傳輸?shù)侥康牡厝萜鱀BMS。
當(dāng)步驟310到步驟350被執(zhí)行時(shí),在315處,通過應(yīng)用“相關(guān)重做記錄”將熱拷貝同步到被傳輸?shù)目刹灏螖?shù)據(jù)庫Pluggable Database PDB 140。熱拷貝的同步類似于步驟215中所描述地被執(zhí)行,除了相關(guān)重做記錄被應(yīng)用到直至拔出重做記錄。一旦目的地容器DBMS達(dá)到拔出重做記錄,則目的地容器DBMS停止應(yīng)用重做記錄。
一旦熱拷貝的同步完成并且本地撤銷日志142被傳輸?shù)侥康牡厝萜鱀BMS,則熱拷貝是可插入就緒的。
一旦熱拷貝是可插入就緒的,則它可以被插入到目的地容器DBMS中。一旦熱拷貝被插入其中,則在拔出界限處活動(dòng)的后本地日志記錄事務(wù)可以開始在目的地容器DBMS處執(zhí)行;如果需要,則用于這些先本地日志記錄事務(wù)的撤銷記錄是可用的。新事務(wù)也可以開始執(zhí)行。
在一個(gè)實(shí)施例中,本地撤銷日志是熱拷貝的部分,該熱拷貝被拷貝到目的地容器DBMS中并且通過在目的地容器DBMS處將重做記錄應(yīng)用到本地撤銷日志而被帶入到可插入就緒狀態(tài)。
數(shù)據(jù)庫系統(tǒng)概述
本發(fā)明的實(shí)施例在DBMS的背景下使用。因此,DBMS的描述是有用的。
DBMS管理一個(gè)或多個(gè)數(shù)據(jù)庫。DBMS可以包括一個(gè)或多個(gè)數(shù)據(jù)庫服務(wù)器。數(shù)據(jù)庫包括存儲(chǔ)在諸如一組硬盤之類的永久性存儲(chǔ)器機(jī)構(gòu)上的數(shù)據(jù)庫數(shù)據(jù)和數(shù)據(jù)庫字典。數(shù)據(jù)庫數(shù)據(jù)可以存儲(chǔ)在一個(gè)或多個(gè)數(shù)據(jù)容器中。每個(gè)容器包含記錄。每個(gè)記錄內(nèi)的數(shù)據(jù)被組織到一個(gè)或多個(gè)字段中。在關(guān)系DBMS中,數(shù)據(jù)容器被稱為表,記錄被稱為行,字段被稱為列。在面向?qū)ο蟮臄?shù)據(jù)庫中,數(shù)據(jù)容器被稱為對象類,記錄被稱為對象,字段被稱為屬性。其他數(shù)據(jù)庫架構(gòu)可以使用其他術(shù)語。
用戶通過向數(shù)據(jù)庫服務(wù)器提交命令來與DBMS的數(shù)據(jù)庫服務(wù)器交互,該命令使得數(shù)據(jù)庫服務(wù)器對數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù)執(zhí)行操作。用戶可以是在與數(shù)據(jù)庫服務(wù)器交互的客戶機(jī)計(jì)算機(jī)上運(yùn)行的一個(gè)或多個(gè)應(yīng)用。多個(gè)用戶還可以在此被統(tǒng)稱為用戶。
數(shù)據(jù)庫命令可以是以遵循數(shù)據(jù)庫語言的數(shù)據(jù)庫語句的形式。用于表達(dá)數(shù)據(jù)庫命令的一種數(shù)據(jù)庫語言是結(jié)構(gòu)化查詢語言(SQL)。存在許多不同的SQL版本,一些版本是標(biāo)準(zhǔn)的而一些是專有的,并且存在各種擴(kuò)展。數(shù)據(jù)定義語言(“DDL”)命令被發(fā)送到數(shù)據(jù)庫服務(wù)器以創(chuàng)建或配置數(shù)據(jù)庫對象,諸如表、視圖或復(fù)雜數(shù)據(jù)類型。SQL/XML是當(dāng)在對象關(guān)系數(shù)據(jù)庫中操縱XML數(shù)據(jù)時(shí)使用的SQL的常見擴(kuò)展。
多節(jié)點(diǎn)數(shù)據(jù)庫管理系統(tǒng)由共享對相同數(shù)據(jù)庫或多個(gè)相同數(shù)據(jù)庫的訪問的互連節(jié)點(diǎn)組成。通常,節(jié)點(diǎn)經(jīng)由網(wǎng)絡(luò)互連并且在不同程度上共享對共享存儲(chǔ)的訪問,例如對一組盤驅(qū)動(dòng)器以及在其上存儲(chǔ)的數(shù)據(jù)塊的共享訪問。節(jié)點(diǎn)之間共享訪問的不同程度可以包括無共享、共享一切、節(jié)點(diǎn)對數(shù)據(jù)庫分區(qū)的排他訪問或者它們的某些組合。多節(jié)點(diǎn)數(shù)據(jù)庫系統(tǒng)中的節(jié)點(diǎn)可以以經(jīng)由網(wǎng)絡(luò)互連的一組計(jì)算機(jī)(例如,工作站、個(gè)人計(jì)算機(jī))的形式??商娲兀?jié)點(diǎn)可以是網(wǎng)格的節(jié)點(diǎn),該網(wǎng)格由以在機(jī)架(rack)上與其他服務(wù)器刀片(blade)互連的服務(wù)器刀片形式的節(jié)點(diǎn)組成。
多節(jié)點(diǎn)數(shù)據(jù)庫系統(tǒng)中的每個(gè)節(jié)點(diǎn)托管數(shù)據(jù)庫服務(wù)器。諸如數(shù)據(jù)庫服務(wù)器之類的服務(wù)器是集成的軟件部件和諸如存儲(chǔ)器、節(jié)點(diǎn)以及用于在處理器上執(zhí)行集成的軟件部件的節(jié)點(diǎn)上的過程之類的計(jì)算資源的分配的組合,所述軟件和計(jì)算資源的組合專用于代表一個(gè)或多個(gè)客戶機(jī)執(zhí)行特定功能。
來自多節(jié)點(diǎn)數(shù)據(jù)庫系統(tǒng)中的多個(gè)節(jié)點(diǎn)的資源可以被分配以運(yùn)行特定數(shù)據(jù)庫服務(wù)器的軟件。軟件和來自節(jié)點(diǎn)的資源的分配的每個(gè)組合是在此被稱為“服務(wù)器實(shí)例”或“實(shí)例”的服務(wù)器。數(shù)據(jù)庫服務(wù)器可以包括多個(gè)數(shù)據(jù)庫實(shí)例,這些數(shù)據(jù)庫實(shí)例中的一些或全部數(shù)據(jù)庫實(shí)例在包括分開的服務(wù)器刀片的分開的計(jì)算機(jī)上運(yùn)行。
硬件概述
根據(jù)一個(gè)實(shí)施例,本文描述的技術(shù)由一個(gè)或多個(gè)專用計(jì)算設(shè)備實(shí)現(xiàn)。專用計(jì)算設(shè)備可以被硬連線以執(zhí)行技術(shù),或者可以包括被永久編程以執(zhí)行技術(shù)的諸如一個(gè)或多個(gè)專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)之類的數(shù)字電子設(shè)備,或者可以包括被編程以根據(jù)固件、存儲(chǔ)器、其他存儲(chǔ)或者組合中的程序指令來執(zhí)行技術(shù)的一個(gè)或多個(gè)通用硬件處理器。這樣的專用計(jì)算設(shè)備還可以用定制編程將定制的硬連線邏輯、ASIC或FPGA組合以實(shí)現(xiàn)技術(shù)。專用計(jì)算設(shè)備可以是將硬連線的和/或程序邏輯結(jié)合以實(shí)現(xiàn)技術(shù)的桌上型計(jì)算機(jī)系統(tǒng)、便攜式計(jì)算機(jī)系統(tǒng)、手持設(shè)備、聯(lián)網(wǎng)(networking)設(shè)備或任何其他設(shè)備。
例如,圖4是示出在其上可以實(shí)現(xiàn)本發(fā)明的實(shí)施例的計(jì)算機(jī)系統(tǒng)400的框圖。計(jì)算機(jī)系統(tǒng)400包括用于傳送信息的總線402或其他通信機(jī)構(gòu),以及用于處理信息的、與總線402耦接的硬件處理器404。硬件處理器404可以是例如通用微處理器。
計(jì)算機(jī)系統(tǒng)400還包括用于存儲(chǔ)由處理器404執(zhí)行的信息和指令的、耦接到總線402的主存儲(chǔ)器406,諸如隨機(jī)存取存儲(chǔ)器(RAM)或其他動(dòng)態(tài)存儲(chǔ)設(shè)備。主存儲(chǔ)器406還可以被用于在由處理器404執(zhí)行的指令的執(zhí)行期間存儲(chǔ)臨時(shí)變量或其他中間信息。這樣的指令當(dāng)被存儲(chǔ)在對于處理器404來說可訪問的非暫態(tài)存儲(chǔ)媒介中時(shí),使計(jì)算機(jī)系統(tǒng)400變?yōu)楸欢ㄖ埔詧?zhí)行指令中指定的操作的專用機(jī)器。
計(jì)算機(jī)系統(tǒng)400還包括用于為處理器404存儲(chǔ)靜態(tài)信息和指令的、耦接到總線402的只讀存儲(chǔ)器(ROM)408或其他靜態(tài)存儲(chǔ)設(shè)備。諸如磁盤或光盤之類的存儲(chǔ)設(shè)備410被提供并且被耦接到總線402以用于存儲(chǔ)信息和指令。
計(jì)算機(jī)系統(tǒng)400可以經(jīng)由總線402被耦接到諸如陰極射線管(CRT)之類的顯示器412以用于向計(jì)算機(jī)用戶顯示信息。包括字母數(shù)字和其他鍵的輸入設(shè)備414被耦接到總線402以用于向處理器904傳送信息和命令選擇。另一種類型的用戶輸入設(shè)備是用于向處理器404傳送方向信息和命令選擇以及用于控制顯示器412上的光標(biāo)移動(dòng)的光標(biāo)控制器416,諸如鼠標(biāo)、跟蹤球或光標(biāo)方向鍵。該輸入設(shè)備通常具有允許設(shè)備在平面上指定位置的在兩個(gè)軸——第一軸(例如,x)和第二軸(例如,y)上的兩個(gè)自由度。
計(jì)算機(jī)系統(tǒng)400可以使用與計(jì)算機(jī)系統(tǒng)結(jié)合使得計(jì)算機(jī)系統(tǒng)400成為專用機(jī)器或者將計(jì)算機(jī)系統(tǒng)400編程為專用機(jī)器的定制的硬連線邏輯、一個(gè)或多個(gè)ASIC或FPGA、固件和/或程序邏輯來實(shí)現(xiàn)本文描述的技術(shù)。根據(jù)一個(gè)實(shí)施例,響應(yīng)于處理器404執(zhí)行包含在主存儲(chǔ)器406中的一個(gè)或多個(gè)指令的一個(gè)或多個(gè)序列,本文描述的技術(shù)由計(jì)算機(jī)系統(tǒng)400執(zhí)行。這些指令可以從諸如存儲(chǔ)設(shè)備410之類的另一個(gè)存儲(chǔ)介質(zhì)被讀取到主存儲(chǔ)器406中。包含在主存儲(chǔ)器406中的指令的序列的執(zhí)行使得處理器404執(zhí)行本文所描述的過程步驟。在可替代的實(shí)施例中,硬連線電路可以代替軟件指令或與軟件指令結(jié)合使用。
如在此所使用的術(shù)語“存儲(chǔ)媒介”是指存儲(chǔ)使得機(jī)器以特定方式操作的數(shù)據(jù)和/或指令的任何非暫態(tài)媒介。這樣的存儲(chǔ)媒介可以包括非易失性媒介和/或易失性媒介。非易失性媒介包括例如光盤或磁盤,諸如存儲(chǔ)設(shè)備410。易失性媒介包括動(dòng)態(tài)存儲(chǔ)器,諸如主存儲(chǔ)器406。常見形式的存儲(chǔ)媒介包括例如軟盤、柔性盤、硬盤、固態(tài)驅(qū)動(dòng)器、磁帶或任何其他磁數(shù)據(jù)存儲(chǔ)介質(zhì)、CD-ROM、任何其他光數(shù)據(jù)存儲(chǔ)介質(zhì)、具有孔的圖案的任何物理介質(zhì)、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他存儲(chǔ)器芯片或記憶卡。
存儲(chǔ)媒介不同于傳輸媒介,但是可以結(jié)合傳輸媒介被使用。傳輸媒介參與在存儲(chǔ)媒介之間傳送信息。例如,傳輸媒介包括同軸線纜、銅線和光纖,這些傳輸媒介包含包括總線402的線。傳輸媒介還可以采取聲波或光波的形式,諸如在無線電波和紅外數(shù)據(jù)通信期間生成的那些聲波或光波。
將一個(gè)或多個(gè)指令的一個(gè)或多個(gè)序列承載到處理器404以用于執(zhí)行可以涉及各種形式的媒介。例如,指令可以初始地被承載在遠(yuǎn)程計(jì)算機(jī)的磁盤或固態(tài)驅(qū)動(dòng)器上。遠(yuǎn)程計(jì)算機(jī)可以將指令加載到它的動(dòng)態(tài)存儲(chǔ)器并且使用調(diào)制解調(diào)器通過電話線發(fā)送指令。計(jì)算機(jī)系統(tǒng)400的本地調(diào)制解調(diào)器可以接收電話線上的數(shù)據(jù)并且使用紅外傳輸器將數(shù)據(jù)轉(zhuǎn)換成紅外信號(hào)。紅外檢測器可以接收紅外信號(hào)中承載的數(shù)據(jù)而合適的電路可以將數(shù)據(jù)放置在總線402上??偩€402將數(shù)據(jù)承載到主存儲(chǔ)器406,處理器404從主存儲(chǔ)器406檢索指令并且執(zhí)行指令。由主存儲(chǔ)器406接收的指令可以可選擇地或者在由處理器404執(zhí)行之前或者在由處理器404執(zhí)行之后被存儲(chǔ)在存儲(chǔ)設(shè)備410上。
計(jì)算機(jī)系統(tǒng)400還包括耦接到總線402的通信接口418。通信接口418提供耦接到網(wǎng)絡(luò)鏈路420的雙向數(shù)據(jù)通信,網(wǎng)絡(luò)鏈路420被連接到本地網(wǎng)絡(luò)422。例如,通信接口418可以是綜合業(yè)務(wù)數(shù)字網(wǎng)(ISDN)卡、線纜調(diào)制解調(diào)器、衛(wèi)星調(diào)制解調(diào)器或者調(diào)制解調(diào)器以提供到相應(yīng)類型的電話線的數(shù)據(jù)通信連接。作為另一示例,通信接口418可以是局域網(wǎng)(LAN)卡以提供到兼容的LAN的數(shù)據(jù)通信連接。無線鏈路也可以被實(shí)現(xiàn)。在任何這樣的實(shí)施方式中,通信接口418發(fā)送和接收承載表示各種類型的信息的數(shù)字?jǐn)?shù)據(jù)流的電信號(hào)、電磁信號(hào)或光信號(hào)。
網(wǎng)絡(luò)鏈路420通常通過一個(gè)或多個(gè)網(wǎng)絡(luò)提供到其他數(shù)據(jù)設(shè)備的數(shù)據(jù)通信。例如,網(wǎng)絡(luò)鏈路420可以通過本地網(wǎng)絡(luò)422提供到主機(jī)計(jì)算機(jī)424或到由網(wǎng)絡(luò)服務(wù)提供商(ISP)426操作的數(shù)據(jù)裝置的連接。ISP 426又通過現(xiàn)在通常被稱為“因特網(wǎng)”428的全球分組數(shù)據(jù)通信網(wǎng)提供數(shù)據(jù)通信服務(wù)。本地網(wǎng)絡(luò)422和因特網(wǎng)428都使用承載數(shù)字?jǐn)?shù)據(jù)流的電信號(hào)、電磁信號(hào)或光信號(hào)。通過各種網(wǎng)絡(luò)的信號(hào)和在網(wǎng)絡(luò)鏈路420上并通過通信接口418的信號(hào)是傳輸媒介的示例形式,所述信號(hào)承載到計(jì)算機(jī)系統(tǒng)400的數(shù)字?jǐn)?shù)據(jù)以及來自計(jì)算機(jī)系統(tǒng)400的數(shù)字?jǐn)?shù)據(jù)。
計(jì)算機(jī)系統(tǒng)400可以通過網(wǎng)絡(luò)(多個(gè)網(wǎng)絡(luò))、網(wǎng)絡(luò)鏈路420和通信接口418來發(fā)送消息和接收包括程序代碼的數(shù)據(jù)。在因特網(wǎng)示例中,服務(wù)器430可以通過因特網(wǎng)428、ISP 426、本地網(wǎng)絡(luò)422和通信接口418來傳送用于應(yīng)用程序的請求的代碼。
接收的代碼可以在處理器404接收時(shí)由其執(zhí)行,和/或存儲(chǔ)在存儲(chǔ)設(shè)備410或者其他非易失性存儲(chǔ)中以用于以后執(zhí)行。
在上述說明書中,參考可以根據(jù)實(shí)施方式而不同的許多具體細(xì)節(jié)描述了本發(fā)明的實(shí)施例。因此,說明書和附圖應(yīng)被視為是說明意義上的而不是限制意義上的。本發(fā)明的范圍以及申請人意圖將什么作為本發(fā)明的范圍的唯一且排他的指示物是以權(quán)利要求發(fā)布的具體形式從本申請中發(fā)布的一組權(quán)利要求的字面范圍和等價(jià)范圍,包括任何后續(xù)補(bǔ)正。