我在一個相當新的項目中,我們仍在修改Oracle 11g數據庫表的設計。因此,我們經常刪除並重新創建表,以確保我們的表創建腳本在我們進行更改時按預期工作。如何使一個GRANT持久存儲被刪除並重新創建的表?
我們的數據庫由2個模式組成。一個模式具有一些表格,其中INSERT
觸發器會導致數據有時被複制到我們的第二個模式中的表中。這要求我們使用管理員帳戶(例如sysdba
和GRANT
)訪問第一個模式的數據庫登錄到第二個模式的必要表,例如,
GRANT ALL ON schema_two.SomeTable TO schema_one;
我們的問題是,每次我們作出改變到我們的數據庫設計,並希望刪除並重新創建數據庫表,我們GRANT
-ed到schema_one
走了,當表被刪除的訪問。因此,這又產生了另一個煩人的步驟,其中我們必須使用管理員帳戶登錄,以在每次刪除和重新創建這些表中的一個時重新訪問該訪問權GRANT
。
這不是一個大問題,但我很想從我們的開發和測試程序中消除儘可能多的步驟。有沒有辦法以GRANT
訪問表的方式使得GRANT
-ed權限在表被刪除並重新創建之後存活?如果這不可能,那麼是否有更好的方法來解決這個問題?
是的 - 對我們來說,這是表格創建腳本的一部分。我還必須錯過問題描述中的某些內容。 – DaveE 2010-05-24 22:31:34
謝謝;我實際上不知道「SELECT ANY TABLE」特權;我知道沒有''GRANT ALL ON schema_one。*''等同於我沒有意識到我可以給這樣的模式權限。 – 2010-05-25 14:04:13
雖然這可能不是你想要製作的東西,或者應該假設你會被允許擁有,除非你擁有該env。我不確定爲什麼你不能在創建表的同一個腳本中進行授權; schema_two應該能夠將自己的對象的權限授予任何人,並且當您進行生產安裝時,它也會爲您節省一個步驟。有沒有理由不能這樣做? – 2010-05-25 14:15:06