一日使用OEM检查数据库(10g)数据文件、表空间时,发现页面弹出很慢,大概需要十几分钟!

以前在9i中使用OEM检查数据文件、表空间时,页面弹出很快。后来发现是由于10g 的recyclebin的原因。

1、使用sys用户登录

2、SQL>select count(*) from sys.recyclebin$;

9657

SQL>select count(*) from recyclebin;

0

3、SQL>purge recyclebin; --purge当前用户在回收站中的对象

Done.

4、SQL>select count(*) from recyclebin;

0

SQL>select count(*) from sys.recyclebin$;

9657

5、SQL>purge dba_recyclebin; --purge所有用户在回收站中的对象

Done

6、SQL>select count(*) from recyclebin;

0

SQL>select count(*) from sys.recyclebin$;

0

7、再次使用OEM查询数据文件、表空间,页面弹出很快。

8、关闭回收站

SQL>alter system set recyclebin=off scope=both sid='*';

purge掉回收站的内容后再次查询表空间页面,弹出很快。

在eygle的一篇文章中提到:

关于dba_free_space视图的构成,9i 、10g发生了变化。在Oracle10g中,如果启用flash drop功能,在drop表时,数据库不会直接删除,而是将其放在回收站中,当空间出现短缺时,才会逐渐回收这部分空间。当对象删除之后,这部分空间会记入free space,也就是说被包含在dba_free_space的查询结果之中。

我们看一下这个视图的变化,在Oracle9i之中,这个视图构建如下:

SQL> set long 9999
SQL> set pagesize 99
SQL> select text from dba_views where view_name=upper('&view_name');
Enter value for view_name: dba_free_space
old 1: select text from dba_views where view_name=upper('&view_name')
new 1: select text from dba_views where view_name=upper('dba_free_space')

TEXT
--------------------------------------------------------------------------------
select ts.name, fi.file#, f.block#,
f.length * ts.blocksize, f.length, f.file#
from sys.ts$ ts, sys.fet$ f, sys.file$ fi
where ts.ts# = f.ts#
and f.ts# = fi.ts#
and f.file# = fi.relfile#
and ts.bitmapped = 0
union all
select /*+ ordered use_nl(f) use_nl(fi) */
ts.name, fi.file#, f.ktfbfebno,
f.ktfbfeblks * ts.blocksize, f.ktfbfeblks, f.ktfbfefno
from sys.ts$ ts, sys.x$ktfbfe f, sys.file$ fi
where ts.ts# = f.ktfbfetsn
and f.ktfbfetsn = fi.ts#
and f.ktfbfefno = fi.relfile#
and ts.bitmapped <> 0 and ts.online$ in (1,4) and ts.contents$ = 0

而在Oracle10g中,这个视图增加了关于recyclebin的部分:

SQL> set long 9999
SQL> set pagesize 99
SQL> select text from dba_views where view_name=upper('&view_name');
Enter value for view_name: dba_free_space
old 1: select text from dba_views where view_name=upper('&view_name')
new 1: select text from dba_views where view_name=upper('dba_free_space')

TEXT
--------------------------------------------------------------------------------
select ts.name, fi.file#, f.block#,
f.length * ts.blocksize, f.length, f.file#
from sys.ts$ ts, sys.fet$ f, sys.file$ fi
where ts.ts# = f.ts#
and f.ts# = fi.ts#
and f.file# = fi.relfile#
and ts.bitmapped = 0
union all
select /*+ ordered use_nl(f) use_nl(fi) */
ts.name, fi.file#, f.ktfbfebno,
f.ktfbfeblks * ts.blocksize, f.ktfbfeblks, f.ktfbfefno
from sys.ts$ ts, sys.x$ktfbfe f, sys.file$ fi
where ts.ts# = f.ktfbfetsn
and f.ktfbfetsn = fi.ts#
and f.ktfbfefno = fi.relfile#
and ts.bitmapped <> 0 and ts.online$ in (1,4) and ts.contents$ = 0
union all
select /*+ ordered use_nl(u) use_nl(fi) */
ts.name, fi.file#, u.ktfbuebno,
u.ktfbueblks * ts.blocksize, u.ktfbueblks, u.ktfbuefno
from sys.recyclebin$ rb, sys.ts$ ts, sys.x$ktfbue u, sys.file$ fi
where ts.ts# = rb.ts#
and rb.ts# = fi.ts#
and rb.file# = fi.relfile#
and u.ktfbuesegtsn = rb.ts#
and u.ktfbuesegfno = rb.file#
and u.ktfbuesegbno = rb.block#
and ts.bitmapped <> 0 and ts.online$ in (1,4) and ts.contents$ = 0
union all
select ts.name, fi.file#, u.block#,
u.length * ts.blocksize, u.length, u.file#
from sys.ts$ ts, sys.uet$ u, sys.file$ fi, sys.recyclebin$ rb
where ts.ts# = u.ts#
and u.ts# = fi.ts#
and u.segfile# = fi.relfile#
and u.ts# = rb.ts#
and u.segfile# = rb.file#
and u.segblock# = rb.block#
and ts.bitmapped = 0

这就是Oracle10g的回收站(recyclebin)和自由空间管理的变化。

在Oracle10g中,有时候查询dba_free_space视图异常缓慢,就是因为recyclebin中对象太多的缘故。

10g 回收站(RECYCLE BIN)导致查询表空间的利用率时很慢相关推荐

  1. windows10快速打开回收站(Recycle Bin)

    方法一: win + e打开资源管理器(我的电脑),搜索栏输入回收站,英文版系统输入Recycle Bin. 方法二: 在控制面板中,添加回收站图标,右键创建桌面快捷方式,设置快捷键即可

  2. oracle虚拟机回收站在那里,Oracle中的回收站(Recycle Bin)

    什么是Recycle Bin 回收站(Recycle Bin)实际上是包含删除对象信息的数据字典表.删除表和其他相关对象,比如索引.约束和嵌套表,实际上没有被真的删除,还是继续占用空间.直到被从回收站 ...

  3. ORA-38301:can not perform DDL/DML over objects in Recycle Bin

    一个智障操作,drop一个用户,下面的东西比较多,删得比较慢,然后shell突然关了. 就导致了,删不掉,又不能创建新的用户.出版本要得比较急,就先创建新的用户测试去了. 今天要弄个东西,又想起这个事 ...

  4. oracle查询表空间和用户名,教你查询Oracle中的表空间

    教你查询Oracle中的表空间 提到表空间大家可能都不会陌生,它是数据库中最大的逻辑单位与存储空间单位,数据库系统通过表空间为数据库对象分配空间.表空间在物理上体现为磁盘数据文件,每一个表空间由一个或 ...

  5. Oracle 10 Recycle Bin回收站

    这个功能从10g开始有了. (1)什么是Recycle Bin 实际上,Recycle Bin只是一个保存被drop的对象的一个数据字典表.所以,可以通过如下语句查询回收站中的信息:select * ...

  6. MySQL单机版Recycle Bin回收站功能

    最近调研了阿里的Recycle Bin回收站功能,可以保证数据不丢失. 为了防止开发或运维人员的误操作,比如DROP TABLE/DATABASE.TRUNCATE TABLE,这类DDL语句不具有可 ...

  7. 使用Network Recycle Bin启用映射网络驱动器上的回收站

    前言 在内网环境中我们经常会使用NAS或者Samba在Windows中映射网络驱动器,方便局域网用户实时共享交换数据.但当存储在网络或映射网络上的任何文件被删除时,该文件将被永久删除.它不会去到本地计 ...

  8. oracle 10g磁盘管理,Oracle 10g UNDO表空间过大导致磁盘空间不足的解决

    在Oracle 10g数据库的应用中,出现了UNDO表空间过大导致磁盘空间不足而崩溃的现象(ORA-30036: unable to extend segment by 8 in undo table ...

  9. RocketMQ 部署不当导致磁盘空间不释放

    背景 生产环境采用 RocketMQ 三主三从集群搭建,6 个实例部署在 3 台 Linux 服务器上(节省资源),每台服务器部署一主一从,生产上运行一段时间后,发现磁盘空间报警,发现df与du显示的 ...

最新文章

  1. 三代测序(SMRT Sequencing)
  2. 2021城市大脑与智能产业趋势简报第五期
  3. 算法-------矩阵中的最长递增路径(Java版本)
  4. python类库的查找
  5. 2021暑假每日一题 【week7 完结】
  6. java 数组 参数 ppt,Java自学课件-数组.ppt
  7. Delphi中的容器类(3)
  8. 重置单例对象Singleton Swift
  9. 【转】卡巴斯基2011导入key专用工具+卡巴斯基提取key工具(激活码转换key)
  10. 冰河木马学习之监听服务端失败
  11. python生成三对角矩阵_块三对角矩阵python
  12. yunu.php,1.1 本地安装云优
  13. 微信公众号之微信退款
  14. 打马赛克就安全了吗?GitHub热榜的“AI消除马赛克”,上线三天收获近万star
  15. csv文件用什么打开_什么是CSV文件,如何打开它?
  16. vscode中 5k多个挂起的更改 怎么解决?
  17. Android集成极光聊天SDK
  18. 计算机哪里应用了静电场原理,实验二静电场物理模拟
  19. 市场调研-全球与中国云文档管理软件市场现状及未来发展趋势
  20. 四轴飞行器-基于STM32微控制器(电子入门必看)

热门文章

  1. asp.net应用程序无法连接oracle数据库,2020:ASP连接Oracle数据库问题的解决过程
  2. 不花钱的pdf编辑器_PDF补丁丁,一款能修改PDF的插件,只有8M~
  3. 二叉树构造c语言实现,递归创建二叉树c语言实现+详细解释
  4. oracle 使用imp,Oracle中的Imp和Expt用法
  5. Timeline中让你事半功倍的工具链
  6. Leecode刷题热题HOT100(17)——电话号码的字母组合
  7. OpenShift 4 - 提升客户端访问 API Server 安全
  8. 开始使用ASP.NET核心运行状况检查
  9. 理解函数的相关概念python_Python函数的概念和使用
  10. java 文件crc校验_Java 对文件进行 CRC32 校验