博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年8月1日

摘要: 在一个高可用系统中,如果需要改变一个表的定义是一件比较棘手的问题,尤其是对于7×24系统。Oracle提供的基本语法基本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就无法完成了。而且,对于被大量DML语句访问的表,幸运的是,Oracle从9i版本开始提供了在线重定义表功能,通过调用DBMS_REDEFINITION包,可以在修改表结构的同时允许DML操作。在线重定义表具有以下功能:修改表的存储参数;可以将表转移到其他表空间;增加并行查询选项;增加或删除分区;重建表以减少碎片;将堆表改为索引组织表或相反的操作;增加或删除一个列。调用DBMS_REDEF 阅读全文

posted @ 2012-08-01 18:18 徐正柱- 阅读(374) 评论(0) 推荐(0) 编辑

摘要: Oracle的普通表没有办法通过修改属性的方式直接转化为分区表,必须通过重建的方式进行转变,下面介绍三种效率比较高的方法,并说明它们各自的特点。方法一:利用原表重建分区表。步骤:SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, TIME DATE);表已创建。SQL> INSERT INTO T SELECT ROWNUM, CREATED FROM DBA_OBJECTS;已创建6264行。SQL> COMMIT;提交完成。SQL> CREATE TABLE T_NEW (ID, TIME) PARTITION BY RANGE 阅读全文

posted @ 2012-08-01 15:41 徐正柱- 阅读(473) 评论(0) 推荐(0) 编辑

摘要: select rowid,dbms_rowid.rowid_object(rowid) data_object_id#,dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid) block#,dbms_rowid.rowid_row_number(rowid) row#,b.emp_id,B.EMP_NAMEfrom dim_employee b---where b.rowid='AAAQwWAAEAAAhvfAAD' 阅读全文

posted @ 2012-08-01 11:04 徐正柱- 阅读(399) 评论(0) 推荐(0) 编辑