Oracle10g 如何为用户(Oracle)获取表空间中的可用空间
我正在开发一个web应用程序,需要警告用户给定db用户表空间中的空间不足。 应用程序不知道数据库系统用户的凭据,因此我无法查询诸如dba_用户、dba_空闲空间等视图 我的问题是,在Oracle中有没有一种方法可以让用户知道他们的表空间中还有多少空间留给他们Oracle10g 如何为用户(Oracle)获取表空间中的可用空间,oracle10g,tablespace,Oracle10g,Tablespace,我正在开发一个web应用程序,需要警告用户给定db用户表空间中的空间不足。 应用程序不知道数据库系统用户的凭据,因此我无法查询诸如dba_用户、dba_空闲空间等视图 我的问题是,在Oracle中有没有一种方法可以让用户知道他们的表空间中还有多少空间留给他们 谢谢 以具有必要权限的用户身份创建存储包。您可能需要创建一个新用户。将包上的EXECUTE授予任何需要它的用户。这些包需要具有访问DBA视图所需的所有过程和功能,但应仔细编码以避免访问“过多”信息。您可能想在非特权用户的帐户中编写第二个包来
谢谢 以具有必要权限的用户身份创建存储包。您可能需要创建一个新用户。将包上的EXECUTE授予任何需要它的用户。这些包需要具有访问DBA视图所需的所有过程和功能,但应仔细编码以避免访问“过多”信息。您可能想在非特权用户的帐户中编写第二个包来封装逻辑。请原谅我对这个问题的无知,因为我认为只有dba\u free\u space等才是数据存储可用的视图 我意识到对于登录的用户,有用户可用空间。。他们的看法。 上述查询的修改版本将是我问题的答案 查询如下:(获取登录用户的默认_表空间上的剩余空间)
它将返回MB的可用空间这可能非常复杂,因为用户很可能:
因此,除非你有一个非常简单的案例,否则你真的必须非常清楚用户在更深层次上与数据库交互的方式,并从更全面的数据库角度看待可用空间。谢谢,我想我找到了另一个解决方案。谢谢,我不知道。我知道user_表和类似的视图,但不知道。它将返回可用空间(MB),乘以
user_users
中具有特定表空间作为默认表空间的用户数量。因此,只有当user\u用户在每个加入的表空间中只包含一行时,它才能正常工作。
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;