為Oracle資料庫表選擇一個合適的歸宿

來源:互聯網
上載者:User

  眾所周知,Oracle資料庫表都是儲存在資料表空間當中。從理論上來說,表可以放置在任何一個資料表空間當中。但是在實際工作中,處於效能、安全方面的考慮,資料庫工程師往往不會這麼隨意。他們在建立資料庫之前,會先對錶空間進行規劃,要為Oracle資料庫選擇一個合適歸宿。由於這個沒有技術方面的限制,故也沒有統一的規則各尋。智者見智,仁者見仁。這更是考驗資料庫工程師水平的一個問題。

  由於這沒有統一的標準,公說公有理,婆說婆有理。為此筆者下面提的幾個建議,或許也並不一定是真理。這些只是筆者工作經驗的總結,各位讀者可以有選擇的參考。

  規則一:不要把使用者的表放置在System資料表空間。

  當資料庫安裝完畢後,資料庫據系統會預設建立三個資料表空間,分別為System、Sysaus、Temp的標空間。前面兩個位系統資料表空間,後面一個為暫存資料表空間。這兩個資料表空間往往系統有特殊的用途。故通常情況下,在系統資料表空間中應該只存放包含資料字典和Oracle系統對象等等相關的表。如果資料庫管理員在系統資料表空間中建立表(包括其他方案對象如視圖等等)的話,將會影響資料庫的效能。為此,無論是Oracle官方還是筆者都強烈建議,資料庫管理員不要在系統資料表空間中建立其他的資料表等資料庫物件。也就是說,除了系統安裝時預設建立的對象之外,Oracle資料庫工程師不要往這些系統資料表空間中放入任何資料庫方案對象。預設情況下,資料庫在許可權方面沒有進行這方面的控制,故主要靠使用者自覺。為了防止將表建立在系統資料表空間中,筆者有如下幾個建議。

  一是參與資料庫開發的使用者如果有多個的話,最好給每個使用者都設定一個預設的資料表空間(當然這個資料表空間不能夠是系統資料表空間)。因為使用者在建立資料庫表的時候,預設情況下是儲存在其設定的預設資料表空間上。故只要為使用者佈建預設資料表空間,則使用者往往不會因為疏忽等原因而把資料庫表誤放入系統資料表空間了。

  二是可以進行相關的許可權控制。如在資料庫開發時期,可以限制其他資料庫使用者往這系統資料表空間中存放資料庫物件的權利。有時會為了防止意外,可以設定一個使用者有這個往系統資料表空間中放東西的權利。如此其他使用者需要往System等系統資料表間中建立資料庫表或者其他資料庫物件時,則只能夠有一個使用者來完成。這可以最大限度的限制系統資料表空間的乾淨。防止使用者表放入到系統資料表空間,從而提高資料庫的運行效率。

  三是在資料庫交付使用之前,資料庫工程師最好再進行一次檢查,看看系統資料表空間中是否有非系統資料表的資料表。在交付之前資料庫工程師還可以做調整。如果交付後使用者已經往系統中儲存了資料才發現這個錯誤的話,那麼調整起來工作量將會很大。

  總之一個基本的原則就是系統資料表空間中不能夠存放使用者表等資料庫物件,否則的話會降低資料庫的效能。同時也不要將系統對象移動到其他的非系統資料表空間上。這個畫蛇添足的做法也會降低資料庫的效能。

  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.