知识大全 如何移动表达到减小数据文件大小的目的

Posted 空间

篇首语:忧劳可以兴国,逸豫可以亡身。。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何移动表达到减小数据文件大小的目的相关的知识,希望对你有一定的参考价值。

  通过move tablespace来完成resize datafile     HWM的概念就不在此阐述了     测试环境为Oracle g for Linux 其它版本的一样     我们先创建两个表空间 分别为t_tbs和t_tbs 分别有一个数据文件 大小都是 M    再创建一个test_user用户 给这个用户上述两个表空间的无限限额 并且设置默认表空间是t_tbs     [zhangleyi@as zhangleyi]$ sqlplus / as sysdba    SQL*Plus: Release Production on Tue Apr : :     Copyright (c) Oracle  All rights reserved     Connected to:  Oracle Database g Enterprise Edition Release Production  With the Partitioning OLAP and Data Mining options    SYS at orcl >alter user test_user default tablespace t_tbs;    User altered     SYS at orcl >alter user test_user quota unlimited on t_tbs;    User altered     SYS at orcl >alter user test_user quota unlimited on t_tbs ;    User altered    用test_user登录 创建表    TEST_USER at orcl >create table t_obj as select * from dba_objects where rownum< ;    Table created     TEST_USER at orcl >insert into t_obj select * from t_obj;     rows created     TEST_USER at orcl >/     rows created     TEST_USER at orcl >/  insert into t_obj select * from t_obj  *  ERROR at line :  ORA : unable to extend table TEST_USER T_OBJ by in tablespace T_TBS    TEST_USER at orcl >mit;    Commit plete     TEST_USER at orcl >select sum(blocks) Total Blocks sum(bytes) Total Size from dba_extents where owner= TEST_USER and segment_name= T_OBJ ;    Total Blocks Total Size               好 上面我们创建了一个表 并且插入了很多数据 通过dba_extents视图我们可以看到总共用的block数和总共的大小     下面我们用delete删除全部数据 并且插入新的 条数据    TEST_USER at orcl >delete from t_obj;     rows deleted     TEST_USER at orcl >insert into t_obj select * from dba_objects where rownum< ;     rows created     TEST_USER at orcl >mit;    Commit plete     TEST_USER at orcl >select sum(blocks) Total Blocks sum(bytes) Total Size from dba_extents     where owner= TEST_USER and segment_name= T_OBJ ;    Total Blocks Total Size               再次查看dba_extents视图 发现占用的空间并没有减少     我们尝试resize这个数据文件 file#为 的是t_tbs表空间下面的数据文件    SYS at orcl >alter database datafile resize M;  alter database datafile resize M  *  ERROR at line :  ORA : file contains used data beyond requested RESIZE value    SYS at orcl >alter database datafile resize ;    Database altered     我们发现想resize到 M不可以 但是resize到 就可以了 因为上面查看出来的Total Size是 这个值大于 M而小于     然后我们move这张表到t_tbs 表空间 这个表空间下面的数据文件file#是     EST_USER at orcl >alter table t_obj move tablespace t_tbs ;    Table altered     TEST_USER at orcl >select sum(blocks) Total Blocks sum(bytes) Total Size from dba_extents     where owner= TEST_USER and segment_name= T_OBJ ;    Total Blocks Total Size               我们检查dba_extents视图 发现Total Size已经变化了 此时已经可以说明move表是会重新进行block的整理的 同时也重置了HWM     下面我们resize这个数据文件   SYS at orcl >alter database datafile resize M;    Database altered     SYS at orcl >host  [zhangleyi@as ORCL ]$ cd /oracle/oradata/ORCL /datafile/  [zhangleyi@as datafile]$ ls l  总用量    rw r    zhangleyi dba      月 : cattbs dbf   rw r    zhangleyi dba      月 : o _mf_example_ p gpoj_ dbf   rw r    zhangleyi dba      月 : o _mf_sysaux_ p kny_ dbf   rw r    zhangleyi dba      月 : o _mf_system_ p kno_ dbf   rw r    zhangleyi dba      月 : o _mf_temp_ p fzsd_ tmp   rw r    zhangleyi dba      月 : o _mf_undotbs _ p kog_ dbf   rw r    zhangleyi dba      月 : o _mf_users_ p kqv_ dbf   rw r    zhangleyi dba      月 : TEST DBF   rw r    zhangleyi dba      月 : test dbf    可以看到我们的目的已经达到了     在真实应用中 我们可以将一个表空间中的所有object 全部move到一个新的表空间中 然后drop掉原来的表空间 再从磁盘上删除原来表空间中的数据文件     至于如何得知HWM 我们可以通过analyze之后的数据字典得到 那么如果不进行analyze的话 我们也可以运行下面这个脚本     这个脚本可以用于检查一个object占有的总共block数和处于HWM之上的block数 这当然也就知道了HWM是在什么位置     DECLARE  v_total_blocks NUMBER;  v_total_bytes NUMBER;  v_unused_blocks NUMBER;  v_unused_bytes NUMBER;  v_last_used_extent_file_id NUMBER;  v_last_used_extent_block_id NUMBER;  v_last_used_block NUMBER;  BEGIN  dbms_space unused_space( SCOTT BIGEMP TABLE v_total_blocks v_total_bytes v_unused_blocks v_unused_bytes v_last_used_extent_file_id v_last_used_extent_block_id v_last_used_block);  dbms_output put_line( Total Blocks: ||TO_CHAR(v_total_blocks));  dbms_output put_line( Blocks above HWM: ||TO_CHAR(v_unused_blocks));  END;  /    Total Blocks:   Blocks above HWM:     PL/SQL procedure successfully pleted    Executed in seconds cha138/Article/program/Oracle/201311/18020

相关参考

知识大全 如何移动数据文件的位置?

  在Oracle数据库中有多种方式可以移动数据文件的位置之前介绍过一种方法:OracleHowTo:在非归档模式下如何更改数据文件位置    其实可以采用的方法有多种本文继续补充几种常用方法:   

知识大全 讲解Oracle移动数据文件到新分区的过程

讲解Oracle移动数据文件到新分区的过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!此过程用s

安全检查表(SCL)是实施安全检查的一种十分有效的工具,它可以最大限度地减小个人行为对检查结果的影响,使安全检查工作更加系统、全面、客观。下列文件与资料中,一般不作为安全检查表编制依据的是()。

电力安全生产知识竞赛题:安全检查表(SCL)是实施安全检查的一种十分有效的工具,它可以最大限度地减小个人行为对检查结果的影响,使安全检查工作更加系统、全面、客观。下列文件与资料中,一般不作为安全检查表

安全检查表(SCL)是实施安全检查的一种十分有效的工具,它可以最大限度地减小个人行为对检查结果的影响,使安全检查工作更加系统、全面、客观。下列文件与资料中,一般不作为安全检查表编制依据的是()。

电力安全生产知识竞赛题:安全检查表(SCL)是实施安全检查的一种十分有效的工具,它可以最大限度地减小个人行为对检查结果的影响,使安全检查工作更加系统、全面、客观。下列文件与资料中,一般不作为安全检查表

知识大全 数据结构考研分类复习真题 第十一章 答案[6]

  .()顺序文件只能顺序查找优点是批量检索速度快不适于单个记录的检索顺序文件不能象顺序表那样插入删除和修改因文件中的记录不能象向量空间中的元素那样移动只能通过复制整个文件实现上述操作  ()索引非顺

知识大全 Oracle数据文件大小的限制

Oracle数据文件大小的限制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  oracle数据文

知识大全 数据结构之顺序表上基本运算的实现[8]

  算法  顺序表的插入运算时间主要消耗在了数据的移动上在第i个位置上插入x从ei到en都要向下移动一个位置共需要移动ni+个元素设在第i个位置上作插入的概率为Pi则平均移动数据元素的次数  >  由

知识大全 SQL Server 压缩日志及数据库文件大小

SQLServer压缩日志及数据库文件大小  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  请按步

知识大全 修改oracle的数据文件

  重要提示  调整的工作前一定要对数据进行备份切记  基本概念  oracle系统内部给出一个叫作表空间的逻辑磁盘空间早期的系统主要用于存放表的数据所以叫作表空间表空间是一个逻辑空间每个空间至少与一

知识大全 新手必须了解的oracle入门知识

  oracle入门知识  一个表空间只能属于一个数据库每个数据库最少有一个控制文件(建议个分别放在不同的磁盘上)  每个数据库最少有一个表空间(SYSTEM表空间)  建立SYSTEM表空间的目的是