知识大全 如何移动表达到减小数据文件大小的目的
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移动数据文件到新分区的过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!此过程用s
安全检查表(SCL)是实施安全检查的一种十分有效的工具,它可以最大限度地减小个人行为对检查结果的影响,使安全检查工作更加系统、全面、客观。下列文件与资料中,一般不作为安全检查表编制依据的是()。
电力安全生产知识竞赛题:安全检查表(SCL)是实施安全检查的一种十分有效的工具,它可以最大限度地减小个人行为对检查结果的影响,使安全检查工作更加系统、全面、客观。下列文件与资料中,一般不作为安全检查表
安全检查表(SCL)是实施安全检查的一种十分有效的工具,它可以最大限度地减小个人行为对检查结果的影响,使安全检查工作更加系统、全面、客观。下列文件与资料中,一般不作为安全检查表编制依据的是()。
电力安全生产知识竞赛题:安全检查表(SCL)是实施安全检查的一种十分有效的工具,它可以最大限度地减小个人行为对检查结果的影响,使安全检查工作更加系统、全面、客观。下列文件与资料中,一般不作为安全检查表
.()顺序文件只能顺序查找优点是批量检索速度快不适于单个记录的检索顺序文件不能象顺序表那样插入删除和修改因文件中的记录不能象向量空间中的元素那样移动只能通过复制整个文件实现上述操作 ()索引非顺
Oracle数据文件大小的限制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! oracle数据文
算法 顺序表的插入运算时间主要消耗在了数据的移动上在第i个位置上插入x从ei到en都要向下移动一个位置共需要移动ni+个元素设在第i个位置上作插入的概率为Pi则平均移动数据元素的次数 > 由
SQLServer压缩日志及数据库文件大小 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 请按步
重要提示 调整的工作前一定要对数据进行备份切记 基本概念 oracle系统内部给出一个叫作表空间的逻辑磁盘空间早期的系统主要用于存放表的数据所以叫作表空间表空间是一个逻辑空间每个空间至少与一
oracle入门知识 一个表空间只能属于一个数据库每个数据库最少有一个控制文件(建议个分别放在不同的磁盘上) 每个数据库最少有一个表空间(SYSTEM表空间) 建立SYSTEM表空间的目的是