联机数据重组和重定义



随着企业越来越基于 Web 和电子商务,由于应用停机成本极高,高可用性计算解决方案变得越来越重要。根据最近的 Gartner Group 研究,对涉及电子商务的企业而言,停机的成本很容易达到每小时数百万美元。因此,在当今众多的任务关键型环境中,数据库可用性和可管理性变得日趋重要。增强可用性和可管理性的一种方式是,允许用户在数据重组操作期间完全访问数据库。

Oracle Database 12c 中的联机重组和重定义特性为管理员修改表物理属性并转换数据和表结构提供了前所未有的灵活性,同时允许用户完全访问数据库。该功能改善了数据可用性、查询性能、响应时间和磁盘空间利用率(所有这些在任务关键型环境中都非常重要),并且可以使应用升级过程更加容易、安全和快速。

联机重定义某个表时,在重定义过程中,可对该表执行所有的读写操作。在应用升级期间,管理员可以启动重定义过程,然后定期同步临时表,使临时表包含对原始表所做的最新更改。这将缩短完成最终重定义步骤的时间。管理员在完成重定义过程之前还可以验证和使用临时表中的数据。这对管理员而言是一种非常有用的特性,管理员必须确保升级过程顺利进行,然后控制何时从原始表切换到刚刚重定义的表中。切换过程非常简单,并且与表的大小或重定义的复杂度无关。重定义过程可以有效地创建新表并改善其数据块布局的效率。

Oracle 联机数据重组可以使用 Enterprise Manager 或 SQL*Plus 命令行界面完成。根据所需的联机重组类型,可以使用 DBMS_REDEFINITION 软件包或 SQL CREATE/ALTER TABLE 和 INDEX 命令执行,如下表所示。


数据重组特性比较

 

 

操作


 
 

 

Oracle Database 11g


 

 

Oracle Database 12c


 
使用 DBMS_REDEFINITION 软件包进行联机重组  

 

  • 表包含物化视图日志或物化视图
  • 如果重定义在逻辑上未影响到对象,则不重新编译相关对象

  

  • 在一个会话中重定义多个分区
  • 重定义用虚拟专用数据库 (VPD) 策略定义的表
  • 使用 REDEF_TABLE 进行简单的一条命令重定义

 

联机创建索引  
  • DML 无锁联机索引创建,允许进行透明创建,不依赖于负载。
   
联机重建索引  
  • DML 无锁联机索引重建,允许进行透明重建,不依赖于负载。
   
联机移动分区/子分区    
  • 将一个分区/子分区从一个表移至另一个表,不影响正在进行的 DML
默认值快速添加列  
  • 与以往将默认值写入现有记录中,然后访问表中的每一行不同,现在仅在数据字典中维护默认值。这样,完成“添加列”只需不到 1 秒钟的时间。注:仅非空列上才支持此特性。
  • NULL 列支持默认值快速添加列。
不可见索引  
  • 不可见索引是令索引不可用甚至删除索引的一种方法。可针对任意 DML 操作维护一个不可见索引,但仅当您明确指定该索引时,优化器才会使用它。这些索引允许针对特定操作快速测试新索引,不会影响整个应用。
 
DDL 增强  
  • 如果底层资源忙碌并且在系统和会话级别受支持,DDL 操作可以等待一段时间 (DDL_LOCK_TIMEOUT),该值可由用户配置。
  • 添加/修改约束、添加列、创建/重建索引只需共享锁,而无需 DML 锁。
以下 DDL 操作不影响正在进行的 DML:
  • DROP INDEX ONLINE
  • DROP CONSTRAINT ONLINE
  • SET UNUSED COLUMN ONLINE
  • ALTER INDEX UNUSABLE ONLINE
  • ALTER INDEX [VISIBLE | INVISIBLE]


更多信息


文档

白皮书

文章