2017-05-08 7 views
1

OracleデータベースでPL/SQLコードをデバッグできるようにするには、デフォルトで付与されていないDEBUG権限(GRANT DEBUG CONNECT SESSION TO username)が必要です。現在、私はDEBUGパーミッションを持っていないので、明示的なデバッグ(DBMS_OUTPUT.PUT_LINE()によるエラーのトレース)なしでPL/SQLプロシージャを開発します。 DWH DBAは、この理由を与えずにこの許可を私に与えることを拒否しました。彼と話す前に、私はこの許可を私に与えることを拒否する理由が何であるか知りたいと思います。これらのアクセス許可を持つことの(セキュリティまたはパフォーマンス)影響は何ですか?Oracle PL/SQLのデバッグ権限の意味

答えて

1

DBAは、一般にユーザーに権限を付与するためのすべての要求を拒否するように訓練されています。

なぜですか?一般的にはデータベースの公開につながり、#1の仕事はデータベースを保護するためです。

特権を求めるときには、ビジネスケースを作成する必要があります。一般的には、本番のコードではなく、DEVELOPMENTインスタンスでコードをデバッグするだけだと思います。 PRODUCTIONでこのprivを要求している場合、PRODUCTIONでデバッグしていないと言っているかもしれません。

オーバーヘッドや特権の「コスト」に関しては、デバッグのためにPL/SQLをコンパイルするとオーバーヘッドが増加します。つまり、プログラムを実行するにはより多くのコストがかかります。データベースは通常より多くの情報を収集しています。プロダクション環境でこのオーバーヘッドを持つことは望ましくありません。遅くすることしかできません。

あなたのケースを勝ち取るために、開発インスタンスについて話しているとすれば、私はあなたのコードにDBMS_OUTPUTを持つことも問題になると主張します。あなたは生産に移る前にそれをオフにすることを忘れてはいけません。それは非効率的です。したがって、DBAに利益を販売し、DBMS_OUTPUTコードを減らして安心して運用してください。

+0

「PL/SQLをデバッグするためにコンパイルするとオーバーヘッドが増えます。それはデバッグ段階ですが、デバッグが完了してパッケージが完全にコンパイルされている場合、オーバーヘッドはありません。 DBMS_OUTPUTを使用してエラーをトレースし、デバッグ機能を持たないためには、デバッグよりもずっとパッケージを実行する必要があります。それはfof dbとしての開発における私にとって実用的なオーバーヘッドです。 – sbrbot

+0

いいえ、COMPILE FOR DEBUGを実行すると、実行時のオーバーヘッドが残ります。これは、DEBUG情報を削除します。 – thatjeffsmith

+0

あなたのコメントをもう一度読みます.2回目のコンパイル後にオーバーヘッドが消えます。 – thatjeffsmith

関連する問題