--查询每个用户下表的行数
SET serveroutput ON;
DECLARE
i VARCHAR(200);
v_sql VARCHAR(2000);
t_owner VARCHAR(200);
t_count number;
CURSOR v_owners
IS
SELECT owner||'.'||table_name aa FROM dba_tables where tablespace_name not in ('SYSAUX','SYSTEM') and iot_name is null;--去掉系统表和iot
BEGIN
for i in v_owners loop
v_sql:='select count(*) from '|| i.aa;
execute immediate v_sql into t_count;
dbms_output.put_line(i.aa||'='||t_count);
end loop;
END;
--统计每个用户下有多少张表
SET serveroutput ON;
DECLARE
i VARCHAR(200);
v_sql VARCHAR(2000);
t_owner VARCHAR(200);
t_count number;
CURSOR v_owners
IS
SELECT DISTINCT owner FROM dba_tables;
BEGIN
for i in v_owners loop
dbms_output.put_line(i.owner);
v_sql:='select count(*) from dba_tables where owner='||q'(')'||i.owner||q'(')';
execute immediate v_sql into t_count;
dbms_output.put_line(t_count);
end loop;
END;
本文提供两段Oracle SQL脚本,分别用于查询每个用户下表的行数及统计每个用户的表数量。通过定义游标遍历所有者及其表名,并执行动态SQL来获取所需统计数据。
1146

被折叠的 条评论
为什么被折叠?



