- 浏览: 1023261 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (529)
- 服务器 (8)
- jsp (1)
- java (6)
- AIX (1)
- solaris (3)
- linux学习 (53)
- javaScript (2)
- hibernate (1)
- 数据库 (74)
- sql语句 (8)
- oracle 学习 (75)
- oracle 案例 (42)
- oracle 管理 (42)
- Oracle RAC (27)
- oracle data guard (12)
- oracle 参数讲解 (14)
- Oracle 字符集 (8)
- oracle性能调优 (24)
- oracle备份与恢复 (12)
- oracle Tablespace (9)
- oracle性能诊断艺术 (1)
- oracle 11g学习 (5)
- oracle streams (1)
- oracle upgrade and downgrade (4)
- db2学习 (13)
- db2命令学习 (2)
- mysql (28)
- sql server (30)
- sql server 2008 (0)
- 工具 (10)
- 操作系统 (3)
- c++ (1)
- stock (1)
- 生活 (5)
- HADOOP (2)
最新评论
-
massjcy:
...
如何将ubuntu文件夹中文名改为英文 -
skypiea:
谢谢。。。
终于解决了。。。
Oracle 10.2.0.4(5)EM不能启动的解决方案(Patch 8350262) -
qwe_rt:
引用vi /etc/sysconfig/network 请问 ...
Linux操作系统下配置静态IP上网 -
liuqiang:
sudo killall -9 apache2
ps 和 kill 命令详解 -
dazuiba:
引用*绝杀 kill -9 PID 当使用此命令时,一定要通过 ...
ps 和 kill 命令详解
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命令的执行时间很短。所以,还是根据情况选择不同命令使用会比较好。这次就介绍到这里。
发表评论
-
数据库设计规范
2011-11-24 10:40 6877数据库设计(Database Desi ... -
Linux下用OCCI或OCI连接Oracle
2011-07-26 12:00 2907首先,去oracle官网下载C ... -
PowerDesigner快捷键
2011-03-19 00:10 1103一般快捷键F4 打开检查模型窗口,检查模型F5 如果图 ... -
oracle和sql server功能对比
2011-01-05 22:05 1818Oracle Database 10g对比SQL Server ... -
Parse CPU to Parse Elapsd%的理解
2010-11-28 18:37 6767Parse CPU to Parse Elapsd%是指sql ... -
DB2客户端连接服务端的方法(转载)
2010-07-14 22:40 917在DB2中从客户端访问服 ... -
四大数据库的比较(SQL Server、Oracle、Sybase和DB2)
2010-07-14 21:54 1532本篇引用于公司数据库 ... -
Oracle迁移到DB2常用转换
2010-07-01 13:12 1161因为项目需要,要将Oracle上的东西转移到DB2,于是收集整 ... -
输出object的DDL的方法
2010-06-23 01:07 1431最近一段时间,由于经常要通过ssh访问远程环境。所以图形工具使 ... -
oracle的license和正版使用问题
2010-06-08 01:08 19481, 正版Oracle 产品和盗版的区别 直奔主题,这是许多研 ... -
oracle opatch 工具的使用(oracle小补丁安装)(转)
2010-05-30 13:49 2261从9.2版开始,Oracle公司设计实现了个别补丁安装管理工具 ... -
mysql常用函数
2009-12-29 10:25 956一、数学函数ABS(x) ... -
SP2-0618和_SP2-0611错误处理
2009-12-27 23:48 1072AUTOTRACE是一项 SQL*Plus 功能,自动跟踪为 ... -
几分钟学会Oracle Audit
2009-12-03 15:49 21711、什么是审计 简单来讲,就是把对数据库的操作记录下来。不管 ... -
alter system switch logfile和alter system archive log current的区别
2009-12-03 12:19 1111alter system switch logfile 是强制 ... -
由HWM引出的drop,delete,truncate的异同点比较
2009-12-02 14:18 1239今天在做HWM时,说truncate表后HWM会降低,但是dr ... -
主流数据库的比较
2009-12-02 10:29 1291开发数据库应用,选择一个好的数据库是非常重要的。目前, 商品 ... -
Oracle MTS相关问题
2009-09-09 22:34 1323Oracle MTS的相关问题 一、什么是MTS MTS ... -
10g: SYSAUX 里面都有些什么东西
2009-09-04 12:38 1833Isabella says:SYSAUX 暴涨有 ... -
ORACLE的PL/SQL一
2009-08-26 17:03 1151一、什么是PL/SQL? P ...
相关推荐
本文将深入探讨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 数据库基础的数据库管理员和技术人员。 使用场景及目标:帮助...
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...