我正在研究一個Web應用程序,我需要警告用戶他們的空間不足以滿足給定的數據庫用戶表空間。 應用程序不知道數據庫的系統用戶的憑據,所以我不能查詢像dba_users,dba_free_space ..等等的意見。如何爲用戶獲得表空間中的可用空間(Oracle)
我的問題是,Oracle有沒有辦法讓用戶找出他們在表空間剩餘多少空間?
謝謝!
我正在研究一個Web應用程序,我需要警告用戶他們的空間不足以滿足給定的數據庫用戶表空間。 應用程序不知道數據庫的系統用戶的憑據,所以我不能查詢像dba_users,dba_free_space ..等等的意見。如何爲用戶獲得表空間中的可用空間(Oracle)
我的問題是,Oracle有沒有辦法讓用戶找出他們在表空間剩餘多少空間?
謝謝!
原諒關於這個問題我的無知,因爲我認爲僅適用於數據存儲是DBA_FREE_SPACE等我意識到,對於登錄的用戶中,有user_free_space觀點..
..意見他們。 查詢提到here的修改版本將是我的問題的答案。
查詢如下:(獲取留在登錄用戶的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視圖所需的所有過程和功能,但應仔細編碼以避免訪問「太多」信息。您可能想要在非特權用戶的賬戶中編寫第二個包來封裝邏輯。
謝謝,我想我找到了另一個解決方案。 – Emrah 2011-05-16 18:10:42
這可能是非常複雜的,因爲它很可能對於用戶來說:
因此,除非您有一個相當簡單的情況,否則您必須非常清楚用戶與數據庫在更深層次上交互的方式,並從更多的數據庫整體角度來看待可用空間。
謝謝,不知道。我知道user_tables和類似的意見,但不知道那個。 – redcayuga 2011-05-20 19:12:27