2015-01-14 119 views
0

是否可以通過模式在Oracle中對錶進行分區?按模式對Oracle表進行分區

我想要使用的具體示例是創建一個名爲「billing」的公共表空間,該公共表空間包含一個主事務表,該事務表具有事務所共有的所有元素(trans id,date,transaction completed等)而且還有一個用於存儲哪個Web應用程序創建該事務的「應用程序ID」的附加列。

換句話說,我想有幾個不同的Web應用程序和他們自己的模式來引用相同的公共事務表,但被「應用程序ID」過濾,只讓他們能夠看到由該應用程序創建的事務Web應用程序。例如,假設我們有兩個擁有自己的表空間(tablespace_1和tablespace_2)的Web應用程序,他們都可以看到公共的「billing.transactions」表,但每個表空間只能看到相對於其模式的事務,即tablespace_1只能看到具有「應用程序ID」爲1的事務,而tablespace_2只能看到「應用程序ID」爲2的事務。

這甚至可能嗎?

爲了記錄,我使用Oracle 11g。

+0

你可以用意見做到這一點。即使該應用程序對基礎表沒有權限,該應用程序也可以在該視圖上獲得SELECT權限。 –

+0

我想過,但缺點是我必須爲每個表空間創建一個視圖,如果我更改了基礎事務表,我將不得不更新它。在做了一些研究之後,我偶然發現了我認爲可行的解決方案。它被稱爲「虛擬專用數據庫」。這讓我可以動態控制哪些應用程序可以看到哪些數據,而不需要維護單獨的視圖。 – phelar

回答

0

好吧,在做了一些Google搜索之後,我設法想出了我想要的解決方案。它被稱爲「虛擬專用數據庫」。

這讓我自動將模式用戶的應用程序ID添加到查詢中,並通過模式用戶強制執行完整性,以便他們只能插入/更新/選擇他們應該能夠看到的事務。