2017-05-08 60 views
1

爲了能夠在Oracle數據庫上調試PL/SQL代碼,必須具有默認情況下未授予的DEBUG權限(GRANT DEBUG CONNECT SESSION TO用戶名)。現在我開發PL/SQL程序時沒有顯式調試(跟蹤DBMS_OUTPUT.PUT_LINE()錯誤),因爲我目前沒有DEBUG權限。 DWH DBA拒絕在沒有給出理由的情況下給予我這種許可。在與他交談之前,我想知道他拒絕給我這個許可的原因是什麼。擁有這些權限的(安全或性能)含義是什麼?Oracle PL/SQL調試權限影響

回答

1

DBA受過培訓或隨着時間的推移一般會拒絕向用戶授予權限的所有請求。

爲什麼?因爲它通常導致暴露數據庫,並且他們的#1工作是保護數據庫。

因此,當要求特權時,您需要爲其制定商業案例。一般來說,人們會認爲你只會在一個開發實例中調試你的代碼,而不是生產程序。如果您在PRODUCTION中要求獲得此權限,他或她可能會告訴您不要在PRODUCTION中進行調試!

至於開銷或特權的'成本' - 編譯用於調試的PL/SQL確實會增加開銷。換句話說,執行你的程序會花費更多。數據庫正在收集比通常情況更多的信息。你不希望你的pl/sql在生產環境中有這樣的開銷 - 它只能減慢它的速度。

爲了贏得您的理解,假設您正在討論一個開發實例 - 我認爲在代碼中使用DBMS_OUTPUT也會造成問題。您必須記住在投入生產之前關閉它,並且效率低下。所以把好處賣給DBA,減少DBMS_OUTPUT代碼在生產中的擔心。

+0

你說「編譯用於調試的PL/SQL確實會增加開銷」。好的,那就是在調試階段,但是當調試完成並且軟件包已經完成並正確編譯時,沒有任何開銷。爲了使用DBMS_OUTPUT跟蹤我的錯誤,並且沒有調試功能,我必須比調試更多地運行我的包。這對我來說也是一個實際的開銷,因爲它也是fof db。 – sbrbot

+0

不,當你編譯調試時 - 執行時的開銷會一直存在,直到你再次編譯它 - 然後刪除調試信息 – thatjeffsmith

+0

抱歉,再次閱讀你的評論,是的,在第二次編譯後,開銷消失 – thatjeffsmith