Oracle不同數(shù)據(jù)庫(kù)間對(duì)比分析腳本
Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā)應(yīng)用中經(jīng)常對(duì)數(shù)據(jù)庫(kù)管理員有這樣的需求,對(duì)比兩個(gè)不同實(shí)例間某模式下對(duì)象的差異或者對(duì)比兩個(gè)不同實(shí)例某模式下表定義的差異性,這在涉及到數(shù)據(jù)庫(kù)軟件的開(kāi)發(fā)應(yīng)用中是經(jīng)常遇到的。一般數(shù)據(jù)庫(kù)軟件的開(kāi)發(fā)都是首先在開(kāi)發(fā)數(shù)據(jù)庫(kù)上進(jìn)行,開(kāi)發(fā)到一定程度后,系統(tǒng)投入運(yùn)行,此時(shí)軟件處于維護(hù)階段。針對(duì)在系統(tǒng)運(yùn)行中遇到的錯(cuò)誤、bug等,還有應(yīng)用系統(tǒng)的升級(jí),經(jīng)常需要調(diào)整后臺(tái)程序,數(shù)據(jù)庫(kù)開(kāi)發(fā)人員經(jīng)常遇到這樣一種尷尬的事情,維護(hù)到一定時(shí)期,開(kāi)發(fā)庫(kù)和運(yùn)行庫(kù)之間出現(xiàn)了一些差異,而這些差異又是什么。還有一種情況就是如果應(yīng)用在很多地方同時(shí)使用,每次的后臺(tái)升級(jí),那些數(shù)據(jù)庫(kù)作了升級(jí),那些還沒(méi)有作升級(jí),如果沒(méi)有詳細(xì)記錄的話,也會(huì)造成我們的尷尬事情。
另外,如果要搭建Oracle的高級(jí)表復(fù)制環(huán)境,在規(guī)劃好了復(fù)制的架構(gòu)以及復(fù)制的表后,在正式將需要復(fù)制的表加入到復(fù)制組之前,一個(gè)重要工作就是檢查這些需要復(fù)制的表在主節(jié)點(diǎn)和主定義節(jié)點(diǎn)間的差異性。如果這些表定義間存在任何細(xì)微的差別,如某個(gè)字段在一個(gè)節(jié)點(diǎn)是允許Null,而在另一個(gè)節(jié)點(diǎn)是Not Null,在將表加入到復(fù)制組時(shí)都會(huì)出現(xiàn)這樣的錯(cuò)誤,“ORA-23309 object string.string of type string exists”,其實(shí)造成這個(gè)錯(cuò)誤的原因就是復(fù)制主定義節(jié)點(diǎn)和主節(jié)點(diǎn)之間表的定義存在某些差異,系統(tǒng)認(rèn)為是兩個(gè)不同的表,但是在兩個(gè)數(shù)據(jù)庫(kù)中具有同樣的名稱(chēng)。如果需要復(fù)制的表很多,手工對(duì)比兩個(gè)節(jié)點(diǎn)復(fù)制表之間的差異是需要很大工作量,而且不一定準(zhǔn)確。
業(yè)界有名的數(shù)據(jù)庫(kù)軟件輔助產(chǎn)品提供商美國(guó)Embarcadero公司(www.embarcadero.com)在其全套數(shù)據(jù)庫(kù)解決方案中就相應(yīng)提供了一個(gè)叫Change Manager的產(chǎn)品,該產(chǎn)品一個(gè)很大的用途就是對(duì)比分析不同實(shí)例間的差異。Oracle公司的OEM(oracle enterprise manager)包中也相應(yīng)提供了一個(gè)工具叫做DB-Diff,也用來(lái)比較兩個(gè)數(shù)據(jù)庫(kù)間的差異。
其實(shí)對(duì)于普通的數(shù)據(jù)庫(kù)開(kāi)發(fā)在某種程度上說(shuō)根本不需要上面提到的這些工具軟件,況且這些產(chǎn)品不是隨便可以得到并且使用的。針對(duì)上面提到的這些問(wèn)題,提供了兩個(gè)SQL腳本,可以輕松實(shí)現(xiàn)對(duì)比分析兩個(gè)不同數(shù)據(jù)庫(kù)實(shí)例間對(duì)象的差異以及表定義的差異。
一、對(duì)比兩個(gè)不同實(shí)例下某模式中對(duì)象差異
在運(yùn)行下面的腳本之前,必須首先創(chuàng)建當(dāng)然數(shù)據(jù)庫(kù)用戶(hù)和需要對(duì)比的兩個(gè)實(shí)例間的數(shù)據(jù)庫(kù)聯(lián)接。下面是運(yùn)行該腳本的一個(gè)例子。在SQL/PLUS下運(yùn)行該腳本,系統(tǒng)出現(xiàn)如下提示:
對(duì)象屬主(模式): repadmin
第一個(gè)實(shí)例的數(shù)據(jù)庫(kù)聯(lián)接名稱(chēng) (包括 @):@ora_zs
第一個(gè)實(shí)例的數(shù)據(jù)庫(kù)聯(lián)接名稱(chēng) (包括 @):@ora_sjjk
[NextPage]
其中程序要求輸入對(duì)象屬主,也就是對(duì)比那個(gè)用戶(hù),這里是repadmin用戶(hù)。然后是需要對(duì)比的實(shí)例聯(lián)接名稱(chēng),這里是ora_zs和ora_sjjk,最后給出對(duì)比報(bào)告。
附:PL/SQL程序腳本清單:
二、對(duì)比兩個(gè)不同模式下表定義的差異
運(yùn)行方法和前面第一個(gè)腳本一樣,這里不再詳述。下面是一個(gè)運(yùn)行實(shí)例結(jié)果:
對(duì)象屬主(模式): db_zgxt
第一個(gè)實(shí)例的數(shù)據(jù)庫(kù)聯(lián)接名稱(chēng) (包括 @):@ora_cx
第一個(gè)實(shí)例的數(shù)據(jù)庫(kù)聯(lián)接名稱(chēng) (包括 @):@ora_zs
上一頁(yè)
- 隨機(jī)獲取oracle數(shù)據(jù)庫(kù)中的任意一行數(shù)據(jù)(rownum)示例介紹
- Oracle中使用Rownum分頁(yè)詳細(xì)例子
- oracle的rownum深入解析
- Oracle中如何把表和索引放在不同的表空間里
- SQL數(shù)據(jù)庫(kù)與oracle數(shù)據(jù)庫(kù)鏡像有什么不同對(duì)比
- oracle scott 解鎖步驟
- C# Oracle數(shù)據(jù)庫(kù)操作類(lèi)實(shí)例詳解
- oracle列合并的實(shí)現(xiàn)方法
- Oracle查詢(xún)語(yǔ)句中rownum與rowid的不同之處分析
相關(guān)文章
Oracle 數(shù)據(jù)庫(kù)優(yōu)化實(shí)戰(zhàn)心得總結(jié)
優(yōu)化sql語(yǔ)句、優(yōu)化io、表設(shè)計(jì)優(yōu)化、充分利用系統(tǒng)cpu資源、優(yōu)化數(shù)據(jù)庫(kù)連接、充分利用數(shù)據(jù)的后臺(tái)處理方案減少網(wǎng)絡(luò)流量,實(shí)施系統(tǒng)資源管理分配計(jì)劃等等,感興趣的朋友可以參考下哈2013-06-06oracle通過(guò)行范圍查詢(xún)?nèi)?至10行
這篇文章主要介紹了oracle通過(guò)行范圍查詢(xún)?nèi)?至10行,以EMP表為范例,需要的朋友可以參考下2014-08-08Win Oracle 監(jiān)聽(tīng)文件配置參考代碼實(shí)例
這篇文章主要介紹了Win Oracle 監(jiān)聽(tīng)文件配置參考代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10oracle數(shù)據(jù)排序后獲取前幾行數(shù)據(jù)的寫(xiě)法(rownum、fetch方式)
項(xiàng)目中用到Oracle分組查詢(xún)?nèi)∶拷M排序后的前N條記錄,group?by?只能返回每個(gè)組的單條統(tǒng)計(jì),下面這篇文章主要給大家介紹了關(guān)于oracle數(shù)據(jù)排序后獲取前幾行數(shù)據(jù)的寫(xiě)法(rownum、fetch方式),需要的朋友可以參考下2022-12-12plsql 連接oracle數(shù)據(jù)庫(kù)詳細(xì)配置的方法步驟
這篇文章主要介紹了plsql 連接oracle數(shù)據(jù)庫(kù)詳細(xì)配置的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Oracle數(shù)據(jù)泵的導(dǎo)入與導(dǎo)出實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)泵的導(dǎo)入與導(dǎo)出的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Oracle Session每日統(tǒng)計(jì)功能實(shí)現(xiàn)
客戶(hù)最近有這樣的需求,想通過(guò)統(tǒng)計(jì)Oracle數(shù)據(jù)庫(kù)活躍會(huì)話數(shù),并記錄在案,利用比對(duì)歷史的活躍會(huì)話的方式,實(shí)現(xiàn)對(duì)系統(tǒng)整體用戶(hù)并發(fā)量有大概的預(yù)估,本文給大家分享具體實(shí)現(xiàn)方法,感興趣的朋友一起看看吧2022-02-02關(guān)于Oracle12C默認(rèn)用戶(hù)名system密碼不正確的解決方案
這篇文章主要介紹了關(guān)于Oracle12C默認(rèn)用戶(hù)名system密碼不正確的解決方案 ,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10