指定されたdbユーザーのテーブルスペースのスペースが不足していることをユーザーに警告する必要があるWebアプリケーションに取り組んでいます。アプリケーションはdbのシステムユーザーの資格情報を知らないため、dba_users、dba_free_space..etcなどのビューをクエリできません。
私の質問は、Oracleに、ユーザーがテーブルスペースに残っているスペースの量を確認する方法はありますか?
ありがとう!
指定された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番目のパッケージを作成することをお勧めします。
これは、ユーザーが次のことを行う可能性が非常に高いため、非常に複雑になる可能性があります。
したがって、かなり単純なケースでない限り、ユーザーがデータベースをはるかに深いレベルで操作する方法を十分に認識し、データベース全体の観点から空き領域を確認する必要があります。