如何比較兩個 Schema 的異同

2021-04-15 04:28:04 字數 941 閱讀 9990

有的時候, dba 需要迅速找出來同乙個 oracle 資料庫上或者不同資料庫的兩個 schema 的差異.這種情況應該比較常見,比如測試資料庫發布到產品資料庫的時候,需要 dba 做頻繁的檢查。

應對的辦法之一是通過 toad 這樣的 gui 工具來查詢.具體操作應該是很簡單的。oracle 自帶的 oem 工具也有這樣的功能( oracle 變化管理工具包,不過不是免費的)。對於不喜歡圖形工具的 dba

來說, 用手工的方式更容易接受一些。如果已經建立了 database link ,可以通過類似如下的 sql 簡單的發現一些差異:

select * from user_tables@a

minus

select * from user_tables@b;

可以考慮先從 使用者的 objects 入手,然後表->欄位->索引 等等.

在 asktom 上有乙個關於 schema 比較的討論

,以及一些參予討論的人提交的 sql 指令碼。

今天測試了乙個 perl 指令碼 schemadiff

, 這個工具分兩個部分組成,乙個執行 perl 指令碼加上乙個配置檔案。配置檔案比較簡單。看看就可以清楚。比較結果能夠輸出為 ascii 文字與 html 兩種格式。文字的結果比較類似 unix 命令 diff 的輸出.相對來說,比較直觀的了.需要說明的是,使用這個指令碼需要安裝 ddl::oracle 包。間接拒絕了對 perl 不熟悉的朋友.

anysql 有乙個 ocidiff

工具.我沒有使用過,看他的說明是只比較表結構的,不知道現在是否已經包括了對其它資料物件的改進.

上面大致說了幾種方法,我比較喜歡的是 sql 指令碼:永遠是跨平台的. perl 指令碼作為備用,需要詳細檢查的時候, schemadiff

就派上了用場. 我用的時候發現這個指令碼似乎沒有單獨針對分割槽表的檢查.回頭修改一下看看.

btw: mysql 的方法應該也是類似的

如何比較兩個演算法的效率

在學演算法的時候,經常會涉及分析演算法的複雜度和效率的問題,按照書本上的理論通常也能夠大概推出個結論。通常都是根據演算法中重要的語句去推算,例如for 迴圈語句等。那麼有沒有可以用程式去真正上機實驗的辦法呢?其實方法也是很簡單,如果我們用的是c語言,可以利用 include 檔案中的ftime 函式...

php比較兩個變數的值 php如何交換兩個變數的值

本篇文章主要給大家介紹php交換兩個變數的值的具體實現方法。交換兩個變數是指相互交換變數的值。通常,這是通過記憶體中的資料完成的。交換兩個變數的方法有兩種 下面我們就通過具體的 示例為大家介紹php交換兩個變數值的方法。方法一 使用第三個變數交換兩個數字 如下 a 15 b 27 echo 交換前的...

兩個物件屬性的比較

兩個物件的引用比較可以用equal 但是兩個物件的屬性比較就比較麻煩一些,寫乙個方法,僅供參考 1 public static bool propertyequals object aobject1,object aobject2 2 27 28else if vobject1 is list vo...