2017-10-06 48 views
1

在使用Oracle數據庫時,我經常讀到不應該使用SYS來操作數據庫(創建表,約束,序列,同義詞等)。爲什麼不推薦?我的一些同事爭辯說,只要你使用完全限定的描述符,使用SYS應該沒有問題。這是真的? 通過將數據庫作爲SYS進行操作可能會導致哪些情況會導致哪些問題?爲什麼在操作Oracle數據庫時不推薦使用「SYS」?

+3

問問你的同事他們是否在他們的計算機上作爲'root'工作。作爲'SYS'工作與'root'相同 - 你只做維護工作,但不寫電子郵件或文檔。 –

回答

1

通過將SYSS操作爲 數據庫,在哪些情況下可能會導致哪些問題?

兩者SYSSYSTEMdefault用戶,創建數據庫的創建。雖然他們有很多權力 - 因爲他們被授予DBA role - 他們仍然是普通用戶。因爲SYS擁有數據字典,所以他被認爲比SYSTEM更特別一些。

但是SYS具有SYSDBA權限,SYSTEM沒有。這使得SYS成爲非常強大的用戶成爲可能。 如果您嘗試將shutdown數據庫設置爲普通SYS,則區別將變得清晰:您將得到insufficient privileges。但是,如果以SYSDBA連接,則可能。

注意,SYSDBA不是一個角色,它是一個privilege

SYS也是特別的,不可能在sys模式中創建觸發器。此外,當sys連接到數據庫時,不會執行登錄觸發器。

SYS

SYS是數據庫的所有者和數據字典的所有者。

永遠不要在SYS模式中創建對象。

屬於SYS的對象無法導出。

SYSTEM

SYSTEM是特權管理用戶,並且通常擁有Oracle提供比字典其他表。不要在SYSTEM下創建自己的對象。

1

由於SYS擁有數據庫。

它可以做任何事情。如果您的同事忘記將目標對象作爲目標架構的前綴,則可能會損壞SYS架構和/或損壞數據庫。

如果有太多人知道​​SYS密碼,我會擔心。因爲它會造成審計問題。當出現問題時,除非他們自己負責,否則很難知道誰是負責任的。不要說責備文化是一種好文化,但是當人們知道自己是負責任的時候,他們會更加小心。

這不僅僅是一件安全的事情。這不僅是你需要擔心的意外腐敗。具有SYS密碼的不良演員可以破壞數據庫,竊取代碼(IPR),當然也可以竊取機密數據。

也許你只是在談論發展,並且你的組織在生產中正確地做事情。我確實希望如此。

使用SYS就像穿過鐵路軌道的捷徑。可能你會沒事的,但爲什麼冒這個險?

相關問題