多用户表空间下统计各表数据量
2016-07-29 00:00
239 查看
--当前是在sinobnet账号下 FOR SYSAREA IN(SELECT * FROM sinobnet.SYS_AREA A WHERE LOWER(A.PUBLISHDB)=LOWER(SERVICE) ORDER BY AREACODE ASC) LOOP dbms_output.put_line(SYSAREA.areacode||SYSAREA.AREANAME); --先删除指定日期的当前统计数据 DELETE FROM TABLE_COUNT TC WHERE TC.OP_DATE=P_STATDATE AND TC.NAME=SYSAREA.USERNAME; FOR TN IN (SELECT table_name FROM all_tables where owner=upper(SYSAREA.USERNAME)) loop --dbms_output.put_line(TN.TABLE_NAME); execute immediate 'SELECT COUNT(*) FROM '||SYSAREA.USERNAME||'.'||TN.TABLE_NAME INTO TABLE_COU; insert into table_count ( id, op_date, table_count, table_name, create_date, service, name ) values ( table_count_seq.nextval, trunc(P_STATDATE), TABLE_COU, TN.TABLE_NAME, SYSDATE, LOWER(SERVICE), SYSAREA.username ); end loop; COMMIT; end loop;
最重要的是当前的账号,能访问当前实例下的所有用户表空间。有权限才能查询
重要知识点:
1、获取某个账号下所有的表 select table_name from all_tables where owner=upper('表名')
2、隐式游标 for x in (select * from 表名) loop
3、execute immediate 语句拼装执行
相关文章推荐
- 跟我一起写 Makefile(三)
- 非对称加密算法-RSA算法
- Java构造时成员初始化的陷阱
- UTF-8 GBK UTF8 GB2312之间的区别和关系
- 信息摘要算法-CRC(循环冗余校验)
- 用GDB调试程序(一)
- linux下编写动态链接库文件
- java的System.getProperty()方法可以获取的值
- BT雷人的程序语言
- jnative在linux下对c程序的动态链接库的调用问题及解决方案
- 编程修养(五)
- FastDFS HOWTO - 文件及目录结构
- STL 的string类怎么啦?
- apache的rewriteMap,动态绑定域名
- 编程修养(二)
- 哈希表心得
- 互联网科普-什么是天猫
- 解决maven3和myeclipse8.6结合后配置文件无法自动拷贝到对应目录问题
- 编程十诫
- nginx负载两个项目