建立Oracle同義字帶來的3種意外驚喜 Oracle資料庫中提供了同義字管理的功能。Oracle同義字是資料庫方案對象的一個別名,經常用於簡化對象訪問和提高對象訪問的安全性。在Oracle資料庫中的大部分資料庫物件,如表、視圖、同義字、序列、預存程序、函數、JAVA類、包等等,資料庫管理員都可以根據實際情況為他們定義同義字。通過Oracle資料庫同義字管理,可以給資料庫管理員與應用程式開發人員帶來不少驚喜。
Bbs.Svn8.Com
驚喜一:應用程式開發可以不管資料庫的具體對象名。 Svn8.Com
在應用程式中,要不斷的調用Oracle資料庫的對象,如表、視圖、對象等等。為此,在管理軟體開發的過程中,若應用程式已經完成了某部分功能的開發。此時,資料庫管理員若一定需要更改某個資料庫物件的命名。那麼,此時應用程式也需要調整。這在實際工作中,會很不方便。特別是有些應用程式如果提供了功能自訂平台的話,會非常的麻煩。如在一個ERP軟體中,有報表自訂功能。在系統中,原來就有一張供應商產品明細表。但是,使用者覺得這張報表資訊不夠齊全。使用者希望能夠顯示出某個零件所對應的成品。此時,使用者可以更改原有的資料庫物件來完成這個自訂。但是,這往往不被建議這麼做。因為若不小心修改錯誤,那麼就很難再修改回來。所以自訂平台中,若需要對原有報表進行比較大的變更時,往往建議使用者另外建立一個視圖,來收集自己所需要的資訊。若這麼做的話,那麼使用者不僅需要定義資料庫物件,而且還要重新調整前台應用程式的報表格式。顯然這工作量有多大。 Www.Svn8.Com
而現在有了Oracle同義字功能的話,這一切都會變得方便。因為前台應用程式可以不用作調整,而只需把資料庫物件同義字進行重新定義即可。這既保障了前台應用程式的可恢複性;同時也降低了工作量。這就是Oracle資料庫同義字給我們帶來的第一個驚喜。
參考資料:www.svn8.com
驚喜二:避免應用程式直接存取資料庫物件,提高資料庫安全性。 Bbs.Svn8.Com
在開發資料庫應用程式的時候,應當普遍遵守的一個規則是盡量避免直接飲用資料庫的表、視圖、函數或者其他對象。因為這會在很大程度上破壞資料庫的安全性。
Svn中文網
如在前台應用程式中直接調用資料庫物件,那麼攻擊者只需要對應用程式所引用的對象進行分析,就可以很容易的瞭解後台資料庫的基本邏輯結構。這顯然會為攻擊者提供很大的便利。所以,為了保障資料庫的安全,前台應用程式最好通過同義字來訪問後台資料庫。如此的話,攻擊者就很難通過前台應用程式的調用,來分析後台資料庫的對象,以及對象之間的關係。 Www.Svn8.Com
驚喜三:簡化資料庫物件的訪問。 Bbs.Svn8.Com
有時候,我們某個資料庫物件的名字可能會很長,如AD_USER_ROLE_NAME_TRL。若每次調用這個資料庫物件的時候,都要輸入這麼長的對象名,肯定會讓資料庫管理員很頭疼。但是,若名字定義的太短了呢,可讀性就不好。其他一些資料庫,只有犧牲可讀性,把資料庫物件的名字盡量縮短。 參考資料:www.svn8.com
不過在Oracle資料庫中,則可以不用這個煩惱。因為我們可以給這個資料庫物件設定一個Oracle同義字,就好像別名一樣。如此的話,在訪問的時候,只需要通過同義字訪問即可,而不需要輸入這麼長的對象名。 Svn中文網
除了上面三個應用之外,在分散式資料庫系統中,為儲存在遠端資料庫中的對象建立同義字,使使用者可以像使用本機物件一樣對遠程對象進行操作,就不需要提供網路連接名進行限定了。顯然,這也會給一些分散式資料庫管理員帶來很大的便利。
Svn中文網
Oracle同義字有兩種類型,分別是公用同義字與方案同義字。
Svn中文網
1)公用Oracle同義字:由一個特殊的使用者組Public所擁有。顧名思義,資料庫中所有的使用者都可以使用公用同義字。公用同義字往往用來標示一些比較普通的資料庫物件,這些對象往往大家都需要引用。在引用這些對象時,並不需要在其前面添加一個Public所有者名字作為限定。否則的話,如果在一個公用同義字前加上一個Public,就是畫蛇添足,系統反而會給出一個錯誤提示。不過在實際應用中,筆者不建議使用者採用公用同義字。因為現在系統中,公用同義字已經有很多。若使用者仍然為資料庫定義公用同義字的話,不能夠起到簡化資料庫物件訪問的作用。
2)方案Oracle同義字:它是是跟公用同義字所對應,他是由建立他的使用者或者方案所有。故也被稱為私人同義字。當然,這個同義字的建立者,可以控制其他使用者是否有權使用屬於自己的方案同義字。方案同義字經常在應用程式開發中使用,為應用開發提供命名上的解決方案。如當一個資料庫物件,如一張表,被重新命名或者被複製成新的表時,並且新名字與老名字都需要使用的情況下,資料庫管理員就可以使用方式情節同義字,即為老名字和新名字都建立專用同義字,不過他們都同時指向同一個資料庫物件。 Svn8.Com
其實建立方案同義字也很簡單。不過其必須要有一個前期條件,就是必須要擁有一定的許可權,如CREATE SYNONYM許可權,若是要在他人的方案中建立同義字的話,則還必須擁有CREATE ANY SYNONYM許可權等等。這些是必須遵循的首要條件。否則的話,就不能夠建立同義字。 Svn8.Com
另外需要注意的是,即使在資料庫物件不存在的情況下,也可以為預計要建立的資料庫物件設定同義字。這個特性很好用,它可以協助資料庫Team Dev或者應用程式Team Dev進行更高的協作。如只要資料庫管理員跟應用程式預先做好對象的命名與同義字的定義工作,那麼即使資料庫管理員還沒有開發好某個資料庫物件,前台應用程式開發人員也可以通過引用同義字的方式引用為建立的資料庫物件。如此的話,就不會因為某一步工作沒有完成而給其他人的工作帶來什麼負面影響。 Www.Svn8.Com
本文來自Svn中文網[www.svn8.com]轉寄請保留本站地址:http://www.svn8.com/sql/Oracle/2010042930950_2.html