プロが教えるわが家の防犯対策術!

Oracleのパッケージの仕様で、
パッケージの中で定義されている関数が実行されるたびに、
メモリがたまっていき、開放されないと聞いたのですが、
本当にそうなのでしょうか?

たとえば
CREATE OR REPLACE PACKAGE BODY PackA
IS

FUNCTION FuncA( pv_Para IN VARCHAR2 )
RETURN VARCHAR2
IS
BEGIN
RETURN 'TEST';
END FuncA;

END PackA;

AユーザがPackA.FuncAを実行し、
そのあと、BユーザがPackA.FuncAを実行すると、
それぞれ別にメモリが使用され、Oracleが自動的に開放してくれない。
ということなんですが、本当なんでしょうか???

開発環境は
WindowsNT 4.0
Oracle 8.1.7
です。

よろしくお願いします。

A 回答 (1件)

> AユーザがPackA.FuncAを実行し、


> そのあと、BユーザがPackA.FuncAを実行すると、
> それぞれ別にメモリが使用され、Oracleが自動的に開放してくれない。
> ということなんですが、本当なんでしょうか???
についてちょっと考えてみました。
パッケージは、ユーザ毎に定義が可能なので、同じ名前のパッケージ
でもユーザが異なれば、プロシージャの内容が異なる可能性があるので
別の領域を使用すると言う事ではないでしょうか?
メモリの開放についてですが、パッケージ (Stored Procedure) って、
Shared Pool で動くので、「自動的に開放」と言う事にはならないと
思います。
プロシージャを実行する時に、所有者を指定して実行すれば同じ領域を
使用するのではないでしょうか? (多分)
    • good
    • 0
この回答へのお礼

助かりました。
ありがとうございました。

お礼日時:2003/01/22 16:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!