指定されたdbユーザーのテーブルスペースのスペースが不足していることをユーザーに警告する必要があるWebアプリケーションに取り組んでいます。アプリケーションはdbのシステムユーザーの資格情報を知らないため、dba_users、dba_free_space..etcなどのビューをクエリできません。
私の質問は、Oracleに、ユーザーがテーブルスペースに残っているスペースの量を確認する方法はありますか?
ありがとう!
データストレージで利用できるビューはdba_free_spaceなどだけだと信じていたので、この件についての私の無知を許してください。
ログに記録されたユーザーには、user_free_space ..ビューがあることに気付きました。言及されたクエリの修正バージョン ここ が私の質問の答えになります。
クエリは次のとおりです:(ログに記録されたユーザーのDEFAULT_TABLESPACEに残っているスペースを取得する)
SELECT
ts.tablespace_name,
TO_CHAR(SUM(NVL(fs.bytes,0))/1024/1024, '99,999,990.99') AS MB_FREE
FROM
user_free_space fs,
user_tablespaces ts,
user_users us
WHERE
fs.tablespace_name(+) = ts.tablespace_name
AND ts.tablespace_name(+) = us.default_tablespace
GROUP BY
ts.tablespace_name;
MB単位で空き領域を返します
必要な権限を持つユーザーとして保存パッケージを作成します。新しいユーザーを作成する必要がある場合があります。パッケージを必要とするすべてのユーザーに、パッケージのEXECUTEを付与します。パッケージには、DBAビューにアクセスするために必要なすべての手順と機能が含まれている必要がありますが、「多すぎる」情報にアクセスしないように注意深くコーディングする必要があります。ロジックをカプセル化するために、非特権ユーザーのアカウントに2番目のパッケージを作成することをお勧めします。
ユーザーが次のことを行う可能性が非常に高いため、これは潜在的に非常に複雑です。
したがって、かなり単純なケースがない限り、ユーザーがデータベースをはるかに深いレベルで操作する方法を十分に認識し、データベース全体の観点から空き領域を確認する必要があります。