`

oracle联机重定义表示例

阅读更多

oracle联机重定义表示例 
Oracle 9i 之后可以进行联机重定义表(Online Redefine Tables,或"在线重定义表").该特性从某种程度上提供了一定的高可用性.通过该功能可以做到:

修改表的存储参数
移动该表到相同 Schema 下的 不同表空间内
添加并行查询支持
添加或删除分区
重建表以便减少碎片
在普通表和索引组织(index-organized)表之间互相转换
添加或删除列
做一个从普通表到分区表之间的转换操作.可以用 DBA 用户操作.如果是普通用户需要有DBMS_REDEFINITION 包的可执行权限以及如下权限:

* CREATE ANY TABLE
* ALTER ANY TABLE
* DROP ANY TABLE
* LOCK ANY TABLE
* SELECT ANY TABLE 下面通过一个例子来简单演练一把.假定目前产品库有一个非分区表 TEST. 准备对把该表联机修改为分区表.

我们的测试表结构(ID列为PK):

SQL> DESC TEST
Name Null? Type
----------------------------------------- -------- -------------------
ID NOT NULL VARCHAR2(16)
USER_NAME VARCHAR2(16)
GMT NOT NULL TIMESTAMP(6)
1) 验证该表是否可以进行联机重定义(如果不可以会给出具体原因):


SQL> exec DBMS_REDEFINITION.can_REDEF_TABLE('SCOTT','TEST',1);

 

2) 创建中间临时表并划分分区:


CREATE TABLE test_p(
ID VARCHAR2(16) NOT NULL,
user_name VARCHAR2(16),
gmt TIMESTAMP(6) NOT NULL
)
PARTITION BY RANGE (gmt) (
PARTITION test_p200511 VALUES LESS THAN(TO_DATE('2005-12-01','yyyy-mm-dd')) ,
PARTITION test_p200512 VALUES LESS THAN(TO_DATE('2006-01-01','yyyy-mm-dd')) );3) 开始重定义表

BEGIN
DBMS_REDEFINITION.start_redef_table
('SCOTT','TEST','TEST_P',
'ID ID,
USER_name USER_name,
GMT GMT',
DBMS_REDEFINITION.cons_use_pk
);
END;
-- 注意条件 dbms_redefinition.cons_use_pk, 如果是根据 ROWID 做联机重定义,则用 dbms_redefinition.cons_use_rowid .

4) 创建索引限制以及触发器等.注:在10g 中,如果这些定义变化了.可以通过 DBMS_REDEFINITION.REGISTER_DEPENDENT_OBJECT() 来创建.如果这些对象定义不变化,则调用 DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS() 即可.

ALTER TABLE test_p
ADD CONSTRAINT test_p_pk PRIMARY KEY (ID)
USING INDEX
TABLESPACE indx;
5) 同步表内容 . 如果需要同步的数据特别大,则可能考虑通过 prebuilt table 的方法先建立物化视图. EXEC DBMS_REDEFINITION.sync_interim_table ('SCOTT', 'test', 'test_p');
6) 结束重定义过程


EXEC DBMS_REDEFINITION.finish_redef_table ('scott', 'test', 'test_p');
7) 删除临时表 TEST_P.


drop table test_p;
*) 如果想中途停止重定义过程,则通过如下指令退出该过程:

EXEC dbms_redefinition.abort_redef_table('SCOTT', 'test','test_p');
进一步熟悉该过程的机理可以通过查询:

SELECT sql_text FROM v$sqlarea WHERE sql_text LIKE '%TEST_P%';联机重定义表必须考虑的问题: 会占用源表两倍的空间.此外还要考虑物化视图 Log 的空间以及带来的其他开销.

参考信息:Oracle9i Database Administrator's Guide Release 2 (9.2) 第十五章.10g 关于联机重定义表的改进可以参考 Oracle Database 10g Online Data Reorganization & Redefinition

本文来自[Svn中文网]转发请保留本站地址:http://www.svn8.com/sql/Oracle/2010051131961.html

分享到:
评论

相关推荐

    oracle最大可用性体系架构

    MAA的技术组成包括自动存储管理(ASM)、RMAN与快速恢复区、闪回技术、联机重配置、滚动升级以及联机重定义等。这些技术能够帮助企业在发生意外停机、计划停机、系统故障、数据故障和变更时,通过自动化手段迅速恢复...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一)

     第33章 使用重定义联机表  第34章 修正损坏块  第35章 使用日里民挖掘  第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 ...

    oracle 9i 新特性

    - **联机重定义表**:Oracle9i支持在线重定义表,无需停机即可进行表结构的修改,提高了系统的可用性。 除了上述特性,Oracle9i还包括其他管理特性,如增强的数据仓库功能、高级安全特性、网络性能优化等。这些新...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二)

     第33章 使用重定义联机表  第34章 修正损坏块  第35章 使用日里民挖掘  第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 ...

    Toad-for-Oracle-DBA培训教程

    优化模块提供了对象统计信息收集、图形化联机重定义、表和索引的大小估计、查询计划展现、对象Pin到内存中、DBMS_Profiler结果的图形化展现、SQL语句自动优化器、批量重组对象、创建新表重组单个表、修复行链接、...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    清除、重定位或重命名联机重做日志文件 7-11 联机重做日志的配置 7-12 用 OMF 管理联机重做日志 7-13 获取组和成员的信息 7-14 归档重做日志文件 7-16 小结 7-18 8 管理表空间和数据文件 目标 8-2 概述 8-3 数据库...

    Oracle 11g SQL和PL SQL从入门到精通〖送源代码〗

     第33章使用重定义联机表  第34章修正损坏块  第35章使用日里民挖掘  第36章使用管道  第37章使用精细访问控制  第38章使用精细审计  第39章使用预警事件  第40章转换ROWID  第41章其他常用包 习题答案

    oracle9i 精简版

    9. **联机重定义(Online Redefinition)**:在不中断服务的情况下,可以在线修改表的结构,降低了系统维护的风险和停机时间。 10. **分区(Partitioning)**:对大表进行分区,提高查询和维护性能,尤其适用于大...

    Oracle 11g SQL和PL SQL从入门到精通part2 pdf格式电子书 下载(二)

     第33章 使用重定义联机表  第34章 修正损坏块  第35章 使用日里民挖掘  第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 ...

    oracle学习经典教程

    文档提到了多种分区表的操作方法,包括插入、交换分区、使用在线重定义、导出导入等,并讨论了分区表索引的分类和特定问题。 最后,文档阐述了Oracle中的锁机制。锁用于保证多用户环境下的数据完整性,防止多个事务...

    Oracle 11g SQL和PL SQL从入门到精通.part1

     第33章 使用重定义联机表  第34章 修正损坏块  第35章 使用日里民挖掘  第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 ...

    oracle9i310.mis.rar

    6. **联机重定义(Online Redefinition)**:允许在不影响业务的情况下在线修改表结构,提高了数据库维护的灵活性。 7. **高级安全特性**:包括细粒度审计、透明数据加密等,增强了数据安全性。 8. **性能优化**:...

    Oracle数据库错误消息.pdf

    使用Oracle支持的数据类型重试。 20. EXP-00019:处理参数失败。检查命令行参数并参考联机帮助。 21. EXP-00020:分配内存失败。减少导出缓冲区大小或增加运行时内存。 22. EXP-00021:只能在全数据库模式下增量...

    ORACLE大表分区

    使用联机重定义 只有C方案才能保证数据的完全一致性; -- 但是经过测试发现方案B和C都存在分区过程的不透明性,对EXCEPTION不好控制,另外C方案比较适合手工操作,不适合自动运行; -- B方案比较适合将非分区表中的数据放...

    Oracle 数据库性能优化

    LogMiner是Oracle用来解析归档日志或联机重做日志的一个工具,主要用于捕捉表和索引的数据更改情况。在性能调优过程中,LogMiner可以帮助我们发现数据修改的模式,从而优化相关操作。 **1.7 关于materialized view...

    Oracle数据库讹误专题.doc

    - **定义**:指数据块的格式不符合Oracle数据库的标准格式要求,使得数据块无法被正确解读。 - **表现**:数据块格式错误,如头部信息损坏或数据结构混乱。 - **原因**: - 硬件故障:如硬盘损坏、内存故障等。 ...

    Oracle数据库错误消息

    - **解决方案**:使用正确的导出模式重试,确保符合Oracle导出工具的规范要求。 ### EXP-00013 回答'Y'、'N'、RETURN或'.'退出 - **错误描述**:用户输入了无效的命令响应。 - **解决方案**:遵循提示信息,仅输入...

    oracle数据库经典题目

    一、填空 1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程。 2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)... Oracle数据库中角色分为系统预定义的角色和用户自定义的...

Global site tag (gtag.js) - Google Analytics