- 浏览: 1204182 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (361)
- java综合 (33)
- 项目管理 (10)
- 工作流 (6)
- spring (11)
- hibenate (17)
- struts (0)
- javascript,html,css,ajax,jquery (11)
- IDE (9)
- 生活 (0)
- 工作 (0)
- 杂记 (1)
- 数据库 (96)
- 服务器 (5)
- 可视编辑 (0)
- freemarker (6)
- 操作系统 windows (13)
- web页面 (6)
- jms (15)
- 调优 (4)
- 测试和bug管理 (2)
- 原理 (1)
- 項目-atf (17)
- 安全 (3)
- xml (4)
- 操作系统 liunx (21)
- 网络 (22)
- office (11)
- 设计 (2)
- 软件 (1)
- 数据库 mysql (6)
- 胖客户端-flex (1)
- 正则 (9)
- oracle- liunx (3)
- sql2000 (2)
- 模式 (1)
- 虚拟机 (2)
- jstl (2)
- 版本控制 打包工具 (0)
- AOP (1)
- demo (1)
- 小软件 (2)
- 感恩 (1)
- iphone 4 (1)
- 反欺诈业务经验整理 (0)
最新评论
-
sea0108:
mark
java内存模型 -
XingShiYiShi:
方便把:testPNR();具体实现发出来吗?谢谢
用正则表达式解析 航信的电子客票和pnr报文 -
wh359126613:
如果js和webservice不在同一个服务器上,有跨域问题如 ...
使用javascript调用webservice示例 -
雨飛雁舞:
...
oracle 动态性能(V$)视图 -
ouyang1224:
好东西
oracle 动态性能(V$)视图
alter table xxx shrink space 和 alter table xxx move
move命令是将数据从原来的段移到目标段的命令。
[move命令]
SQL> alter table emp move; ORA-01652: unable to extend temp segment by 8 in tablespace AUTOSEG_TST AUTOSEG_TST表空间没有足够的空闲空间。 SQL> select f.tablespace_name,d.file_name,f.bytes/1024 KBytes,f.blocks,d.autoextensible from dba_free_space f,dba_data_files d,dba_tables t where f.tablespace_name = d.tablespace_name and f.tablespace_name = t.tablespace_name and t.owner='SCOTT' and t.table_name='EMP'; TABLESPACE_NAME FILE_NAME KBYTES BLOCKS AUTOEXT --------------- ---------------------------------------- ------- ------- ------- AUTOSEG_TST /export/home/ora10g/oradata/AUTOSEG1.DBF 64 8 NO |
[shrink命令]
即使对象所在表空间几乎没有空闲空间,shrink命令也能执行。
SQL> alter table emp shrink space; Table altered. |
# 差异点4. 不需要重建index
[move命令]
table具有主键index的时候,如果使用move命令就必须重建index。
SQL> alter table dept move; Table altered. SQL> select owner,index_name,status from dba_indexes where table_owner='SCOTT' and table_name='DEPT'; OWNER INDEX_NAME STATUS ----- ---------- -------- SCOTT PK_DEPT UNUSABLE ←(不能使用index) SQL> select /*+ index(dept pk_dept) */ * from dept where rownum=1; ORA-01502: index 'SCOTT.PK_DEPT' or partition of such index is in unusable state |
执行move命令之后无法使用index,所以无法利用index查找。要解决这个问题让index恢复可以使用的状态,必须对index进行rebuild。
SQL> alter index pk_dept rebuild; Index altered. SQL> select /*+ index(dept pk_dept) */ * from dept where rownum=1; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK |
[shirnk命令]
执行shrink命令的时候就不需要rebuild index。
SQL> alter table dept shrink space; Table altered. SQL> select /*+ index(dept pk_dept) */ * from dept where rownum=1; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK SQL> select owner,index_name,status from dba_indexes where table_owner='SCOTT' and table_name='DEPT'; OWNER INDEX_NAME STATUS ----- ---------- -------- SCOTT PK_DEPT VALID ←(index可以使用) |
# 差异点5. cascade选项
前面用shrink命令让dept表缩小,cascade命令会让相关的pk_dept索引也同时缩小。
[shrink命令 -没有选项-]
--dept表shrink之前 SQL> select owner,segment_name,bytes,blocks,extents from dba_segments where segment_name = 'PK_DEPT'; OWNER SEGMENT_NAME BYTES BLOCKS EXTENTS ----- ------------ ---------- ---------- ---------- SCOTT PK_DEPT 18874368 2304 33 SQL> alter table dept shrink space; Table altered. |
--dept表shrink之后 SQL> select owner,segment_name,bytes,blocks,extents from dba_segments where segment_name = 'PK_DEPT'; OWNER SEGMENT_NAME BYTES BLOCKS EXTENTS ----- ------------ ---------- ---------- ---------- SCOTT PK_DEPT 18874368 2304 33 |
大家可以看到相关的pk_dept索引缩小了。
结论
我们已经针对Oracle 10g新功能shrink命令进行两次检验,主要都是介绍shrink命令的优点,下面追加相关限制事项。
1.无法解除行迁移
2.必须是local管理的自动段管理
3.不可以是下面的段:
-集群(cluster)、集群化表
-包含long列的物件
-LOB段
-包含函数索引(function index)的表
在我们的检验环境下,move命令的执行时间很短。所以,还是根据情况选择不同命令使用会比较好。这次就介绍到这里。
发表评论
-
并发行级锁超2秒报警监控sql
2010-07-20 16:18 1953并发行级锁超2秒报警监控sql -
数据设计规范v
2010-06-22 19:47 0数据设计规范v -
Oracle 有趣排序包括那些
2010-06-20 16:51 1463按拼音排序 select * from table ... -
Oracle sql 性能优化调整
2010-06-20 16:15 1407Oracle sql ... -
Delete、Drop、Truncate的比较(转)
2010-05-31 13:39 1488Delete、Drop、Truncate的比较 关键字: d ... -
Oracle误操作解决方案(转)
2010-05-31 13:35 1402Oracle误操作解决方案 文章分类:数据库 一.误删除数 ... -
一个递归调用的存储过程
2010-04-19 01:51 1860一个递归调用的存储过程 -
oracle index学习总结
2009-12-08 10:44 19660oracle index 1.index需要储存空间 ... -
Jdbc 和hibernate
2009-11-16 23:38 1891Jdbc 和hibernate 一、Jdbc是java ... -
去掉 powerDesigner 中表设计时的 name和code联动的功能
2009-11-16 17:04 3516去掉 powerDesigner 中表设计时的 name和co ... -
oracle数据库索引未被使用的问题及其解决2007
2009-11-15 01:42 2141一次,在进行WEB页面上进行历史数据文件检查时,发现数据库访问 ... -
RMAN配置及备份与恢复练习
2009-09-27 18:06 16331.创建表空间SQL>create tablespace ... -
误删除数据后怎么立即恢复(不考虑全库备份和利用归档日志)
2009-09-27 18:01 3394要达到删除数据,有以下几种方式都可以:1、delete2、dr ... -
IMP数据到指定的表空间
2009-09-27 12:47 9121IMP数据到指定的表空间 一直以来,我都认为只要指定用户的默 ... -
ORACLE UPDATE 语句语法与性能分析
2009-09-27 09:49 1891为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在 ... -
oracle job 例子
2009-09-22 12:38 3075一、设置初始化参 ... -
oracle 时间加减综合
2009-09-17 11:43 1991加法 select sysdate,add_mon ... -
详细介绍ORACLE sqlplus命令
2009-09-09 16:42 2073一、ORACLE的启动和关闭1、在单机环境下要想启动或关闭OR ... -
AWR介绍与SYSAUX空间关系 SYASAUX表空间满了 系统慢
2009-09-08 09:45 8010AWR介绍与SYSAUX空间关系 2007-11-05 14 ... -
to_char 'NLS_DATE_LANGUAG参数
2009-09-02 18:41 1501select to_char(sysdate, 'Day'), ...
相关推荐
本文将深入探讨Oracle中的碎片整理,主要关注`ALTER TABLE T MOVE`和`ALTER TABLE T SHRINK SPACE`两个命令。 首先,我们来理解什么是Oracle数据库中的碎片。碎片分为两种类型:内部碎片和外部碎片。内部碎片是指...
- 不需要额外的空闲空间,而ALTER TABLE MOVE通常需要与当前表一样大小的空闲空间。 总之,合理地整理表碎片不仅可以提高数据库的整体性能,还能有效减少资源浪费。在实践中,根据具体情况选择合适的整理方法尤为...
清理表空间方法有好多,可以move,可以shrink,可以导出导入,也可以建临时表,当然还有在线重定义。具体怎么做,以及各种方法的优劣,很多博客的文章都说了,我就不做复制粘贴了。 重点想说一下实际情况应用处理...
1. **SHRINK SPACE**:除了用于解决性能问题外,还可以使用`SHRINK SPACE`来回收未使用的空间,减少表的存储需求。 ```sql ALTER TABLE table_name SHRINK SPACE COMPACT; ``` 2. **REORGANIZE**:通过重新...
通过 `ALTER DATABASE DATAFILE SHRINK SPACE` 或 `ALTER TABLE MOVE` 可以减少表空间占用的空间。 5. **设置表空间为只读或只写**: `ALTER TABLESPACE SET READ ONLY` 或 `ALTER TABLESPACE SET READ WRITE` ...
- **存储浪费**:如果表中存在大量的删除和更新操作,那么高水位线以下的空间可能会被标记为已使用但实际上是空闲的,这将导致存储资源的浪费。 ### Oracle高水位处理脚本分析 #### 脚本解读 1. **分析表统计信息*...
例如,如果一个表最初有很多数据,后来进行了大量删除操作,那么这部分未使用的空间虽然被标记为可重用,但仍然占据着表的存储空间,这会导致表占用的物理空间远大于实际存储的数据量,从而造成空间的浪费。...
Oracle的存储结构由块(Block)、区(Extent)、段(Segment)和表空间(Tablespace)组成。块是最小的存储单元,通常为8KB,区是由连续块组成的,用于扩展存储空间。段由一系列区构成,每个对象(如表或索引)都有自己的段...
MOVE PARTITION`可以在不同表空间之间移动分区。 - **修改分区**:使用`ALTER TABLE ... SPLIT PARTITION`来分裂一个分区成两个。 - **重命名分区**:通过`ALTER TABLE ... RENAME PARTITION`更改分区名称。 - **...
最后,给出了几种降低 HWM 的方法,包括 alter table move、shrink space、数据复制、exp/imp 以及 deallocate unused 等方法。 适合人群:具备 Oracle 数据库基础的数据库管理员和技术人员。 使用场景及目标:帮助...
`is_root`, `have_submounts`, 和 `shrink_dcache_parent`等函数与目录树的管理有关。`is_root`用于检查一个目录是否是根目录,`have_submounts`检测一个目录下是否有子挂载点,而`shrink_dcache_parent`用于收缩父...
16.2.6 理解std::move 610 16.2.7 转发 612 16.3 重载与模板 614 16.4 可变参数模板 618 16.4.1 编写可变参数函数模板 620 16.4.2 包扩展 621 16.4.3 转发参数包 622 16.5 模板特例化 624 小结 ...
16.2.6 理解std::move 610 16.2.7 转发 612 16.3 重载与模板 614 16.4 可变参数模板 618 16.4.1 编写可变参数函数模板 620 16.4.2 包扩展 621 16.4.3 转发参数包 622 16.5 模板特例化 624 小结 ...
FreeList是Oracle用于管理空闲块的数据结构,它跟踪在表段中未分配的空闲空间。当一个事务删除数据时,这些块并不会立即被回收,而是被添加到FreeList中供后续插入操作使用。FreeList的管理对于OLTP(Online ...
在Linux操作系统中,VFS(Virtual File System)是内核的核心组成部分之一,它为各种不同的文件系统提供了一个统一的接口,使得用户空间的应用程序可以不关心底层文件系统的具体实现,而能够一致地访问文件和目录。...
- `d_move`:移动目录项。 - `__d_path`:获取目录路径。 - `is_subdir`:检查是否为子目录。 - `find_inode_number`:查找inode编号。 - `d_drop`:丢弃目录项。 - `d_add`:添加目录项。 - `dget`:增加目录项的...
例:表删除将同时删除表的数据和表的定义 sql>drop table test c、表空间的创建、删除 六、ORACLE逻辑备份的SH文件 完全备份的SH文件:exp_comp.sh rq=` date +"%m%d" ` su - oracle -c "exp system/manager ...
- **d_move**:移动目录项到另一个目录。 - **__d_path**:构造路径名。 - **is_subdir**:判断一个目录是否为另一个目录的子目录。 - **find_inode_number**:查找inode编号。 - **d_drop**:释放目录项。 - ...
使用`std::merge`或`std::move`。 #### TIP 11: 交换容器 使用`std::swap`函数。 #### TIP 12: 获取容器的大小和最大大小 调用`size()`和`max_size()`成员函数。 #### TIP 13: 比较容器的大小 使用`std::greater_...
- **`d_move()`**:移动目录项到新的位置。 - **`__d_path()`**:构建路径名。 - **`is_subdir()`**:判断是否为子目录。 - **`find_inode_number()`**:查找inode编号。 - **`d_drop()`**:删除一个目录项。 - **`d...