查看oracle数据库用户下的所有空表
浏览:5147次 出处信息
今天在群里有人问如何查看某个用户下的所有空表,有人回答是写PL/SQL,如下
SQL> DECLARE
2 v_table tabs.table_name%TYPE;
3 v_sql VARCHAR2(888);
4 v_q NUMBER;
5 CURSOR c1 IS
6 SELECT table_name tn FROM tabs;
7 TYPE c IS REF CURSOR;
8 c2 c;
9 BEGIN
10 DBMS_OUTPUT.PUT_LINE('以下为空数据表的表名:');
11 FOR r1 IN c1 LOOP
12 v_table :=r1.tn;
13 v_sql :='SELECT count(*) q FROM '||v_table||' where rownum = 1';
14 OPEN c2 FOR v_sql;
15 LOOP
16 FETCH c2 INTO v_q;
17 EXIT WHEN c2%NOTFOUND;
18 IF v_q=0 THEN
19 DBMS_OUTPUT.PUT_LINE(v_table);
20 END IF;
21 END LOOP;
22 CLOSE c2;
23 END LOOP;
24 EXCEPTION
25 WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error occurred');
26 END;
27 /
PL/SQL 过程已成功完成。
SQL> set serveroutput on
SQL> /
以下为空数据表的表名:
T_FILE_INFO_RAW
T_DOSSIER_INFO_RAW
T_FONDS_INFO_RAW
其实不用那么麻烦,而且表如果很多的话,执行会很慢
先收集下用户的信息
SQL> exec dbms_stats.gather_schema_stats(user);
PL/SQL 过程已成功完成。
SQL> select table_name,num_rows from user_tables where num_rows=0;
TABLE_NAME NUM_ROWS
-------------------- ----------
T_FILE_INFO_RAW 0
T_DOSSIER_INFO_RAW 0
T_FONDS_INFO_RAW 0
验证是否准确
SQL> select count(*) from T_FILE_INFO_RAW;
COUNT(*)
----------
0
SQL> select count(*) from T_DOSSIER_INFO_RAW;
COUNT(*)
----------
0
SQL> select count(*) from T_FONDS_INFO_RAW;
COUNT(*)
----------
0
向T_FONDS_INFO_RAW表里插入些数据,在验证下
SQL> insert into T_FONDS_INFO_RAW (FILE_SUM) values(1111);
已创建 1 行。
SQL> insert into T_FONDS_INFO_RAW select * from T_FONDS_INFO_RAW;
已创建 1 行。
SQL> /
已创建2行。
SQL> /
已创建4行。
SQL> commit;
提交完成。
SQL> exec dbms_stats.gather_schema_stats(user);
PL/SQL 过程已成功完成。
SQL> select table_name,num_rows from user_tables;
TABLE_NAME NUM_ROWS
-------------------- ----------
T_FILE_INFO_RAW 0
T_DOSSIER_INFO_RAW 0
T_FONDS_INFO_RAW 8
SQL> select count(*) from T_FONDS_INFO_RAW; COUNT(*)---------- 8
这种方法比起写PL/SQL要方便得多。
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:执行计划中常见index访问方式
后一篇:oracle索引扫描 >>
文章信息
- 作者:streamsong 来源: 信春哥,系统稳,闭眼上线不回滚
- 标签: 空表
- 发布时间:2012-04-22 14:53:50
近3天十大热文
-
[928] WordPress插件开发 -- 在插件使用 -
[134] 解决 nginx 反向代理网页首尾出现神秘字 -
[53] 整理了一份招PHP高级工程师的面试题 -
[52] 如何保证一个程序在单台服务器上只有唯一实例( -
[51] 海量小文件存储 -
[51] 用 Jquery 模拟 select -
[50] 全站换域名时利用nginx和javascri -
[50] Innodb分表太多或者表分区太多,会导致内 -
[49] CloudSMS:免费匿名的云短信 -
[47] jQuery性能优化指南