当前位置:  数据库>oracle

Oracle 碎片整理方法

    来源: 互联网  发布时间:2017-04-07

    本文导语: 采用两种方法: ---- 我们知道,段由区域组成。在有些情况下,有必要对段的碎片进行整理。要查看段的有关信息,可查看数据字典 ,区域的信息可查看数据字典 。如果段的碎片过多,。这个过程可以用 Import/Export (输入 / ...

采用两种方法:

---- 我们知道,段由区域组成。在有些情况下,有必要对段的碎片进行整理。要查看段的有关信息,可查看数据字典 ,区域的信息可查看数据字典 。如果段的碎片过多,。这个过程可以用 Import/Export (输入 / 输出)工具来完成。

---- Export ()命令有一个(压缩)标志,。若这个表关闭,则使用 Import ()工具重新生成。这样,它的数据会放入一个新的、较大的初始段中。例如:


---- 若输出成功,则从库中删除已输出的表,然后从输出转储文件中输入表:










tmp_val VARCHAR2 (500);

BEGIN

FOR REC IN (SELECT TABLE_NAME FROM USER_TABLES )
LOOP
tmp_val:='';
BEGIN
EXECUTE IMMEDIATE tmp_val;
DBMS_OUTPUT.put_line (tmp_val);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Error: ' || tmp_val || '!');
END;
END LOOP;

FOR REC IN (SELECT INDEX_NAME FROM USER_INDEXES ) WHERE STATUS='UNUSABLE'
LOOP
tmp_val:='';
BEGIN
EXECUTE IMMEDIATE tmp_val;
DBMS_OUTPUT.put_line (tmp_val);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Error: ' || tmp_val || '!');
END;
END LOOP;
END;
























 

数据库碎片是影响数据库性能的一个大因素,应及时发现并整理碎片。

 

       当创建一个数据库实例时,会分成称为表空间(tablespace)的多个逻辑段(segment),如系统(system)表空间,临时(temporary)表空间等。一个表空间可以包含多个数据范围(extent)和一个或多个自由范围块,即自由空间(free space)。 

       表空间、段、范围、自由空间的逻辑关系如下: 

 

 

 

2.1 导致系统性能减弱 

       如上所述,当要满足一个空间要求时,数据库将首先查找当前最大的自由范围,而"最大"自由范围逐渐变小,要找到一个足够大的自由范围已变得越来越困难,从而导致表空间中的速度障碍,使数据库的空间分配愈发远离理想状态; 

 

2.2  浪费大量的表空间 

       部分extent无法得以自动合并,浪费了大量的表空间。 

 

      由于自由空间碎片是由几部分组成,如范围数量、最大范围尺寸等,我们可用FSFI(free space fragmentation index:自由空间碎片索引)值来直观体现: 

    FSFI=100*sqrt(max(extent)/sum(extents))*1/sqrt(sqrt(count(extents)))

      

       可以看出,FSFI的最大可能值为100(一个理想的单文件表空间)。随着范围的增加,FSFI值缓慢下降,而随着最大范围尺寸的减少,FSFI值会迅速下降。

 

可以使用如下SQL可以用来计算FSFI值:

 

比如,在某数据库运行上面SQL,得到以下FSFI值: 

TABLESPACE_NAME                      FSFI

------------------------------ ----------

QS_OA                          54.3794714

RBS                            59.4603558

SYSAUX                         84.0138802

SYSTEM                         70.5946502

UNDOTBS1                       20.0110492

USERS                                 100

XEZF_INDEX                     32.1055286

8 rows selected.


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下安装oracle后使用命令行启动的方法 linux启动oracle
  • ORACLE 中修改用户密码的方法
  • Linux下完全卸载ORACLE 10G的方法
  • 将Oracle 8i数据成功移植Oracle 10g的方法
  • Oracle Connect to Idle Instance解决方法
  • oracle增加表空间大小两种实现方法
  • linux下用ODBC链接Oracle怎么连啊?跪求具体方法!!!
  • Linux系统下查看oracle SID的方法
  • oracle 彻底删除方法
  • window中oracle环境变量设置方法分享
  • Oracle 忘记密码的找回方法
  • oracle的job不能运行问题的解决方法
  • Linux下Oracle 10G DBCA等汉字乱码解决方法
  • Oracle中serveroutput参数一次设置永久保存方法
  • Oracle指定IP访问数据库方法
  • Oracle SID存在解決方法
  • 登录oracle数据库时密码忘记的解决方法
  • PB7 连接 Oracle 的设置方法
  • Oracle删除后不能重新安装的解决方法
  • oracle删除文件后数据库启动不了的处理方法
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3