我正在尝试恢复用户在我的数据库中使用的卷。但我找不到怎么做。 这是我的代码:
FUNCTION EspaceUtilise (v_user IN VARCHAR2) RETURN NVARCHAR2 AS requetes NVARCHAR2(4000);
BEGIN
DECLARE
unused_bytes NUMBER;
total_bytes NUMBER;
CURSOR c_infosUser IS SELECT * FROM all_users where USER_ID = v_user;
v_rqt NVARCHAR2(4000);
BEGIN
OPEN c_infosUser;
FETCH c_infosUser INTO v_rqt;
WHILE c_infosUser%FOUND LOOP
-- Get user volume here
FETCH c_infosUser INTO v_rqt;
END LOOP;
CLOSE c_infosUser;
RETURN ;
END;
END;
我尝试使用方法“SUM”和“DBMS_SPACE”,但我无法正常使用它。
答案 0 :(得分:0)
用户占用两个空间:表和索引。使用情况按细分跟踪。有两个数据字典视图:USER_SEGMENTS
,显示已连接用户的消耗; DBA_SEGMENTS
,显示所有用户的消耗,并需要更高级别的特权访问。 (Segments是数据字典视图的子集之一,没有ALL_
版本。)
最简单的查询版本是:
select sum(bytes) as tot_segment_size
from dba_segments
where owner = 'WHOEVER';
该视图包含您可能想要使用的其他各种列。 Find out more
如果您真的想要将该查询包装在一个函数中,您将需要对您的用户直接的数据字典视图(或SELECT ANY DICTIONARY角色)的相应权限,即不通过作用。