查看oracle数据库用户下的所有空表
浏览:4649次 出处信息
今天在群里有人问如何查看某个用户下的所有空表,有人回答是写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天十大热文
- [71] Twitter/微博客的学习摘要
- [65] find命令的一点注意事项
- [65] IOS安全–浅谈关于IOS加固的几种方法
- [63] android 开发入门
- [62] Go Reflect 性能
- [62] 如何拿下简短的域名
- [61] Oracle MTS模式下 进程地址与会话信
- [60] 流程管理与用户研究
- [57] 图书馆的世界纪录
- [57] 读书笔记-壹百度:百度十年千倍的29条法则