oracle 10g在线重定义新特性:关联对象自动重命名(一)

10g的在线重定义解决这个问题。如果对象是利用COPY_TABLE_DEPENDENTS创建的,那么这些关联的对象在重定义操作完成后,自动改为原始的名称。如果是手工创建的关联对象,则可以利用REGISTER_DEPENDENT_OBJECT过程,所有执行了REGISTER_DEPENDENT_OBJECT过程的关联对象,都会在重定义操作完成后自动重命名。

这篇文章来看COPY_TABLE_DEPENDENTS的例子。

首先看看9i下的例子:

SQL> SELECT * FROM V$VERSION;

BANNER

----------------------------------------------------------------

Oracle9i Enterprise Edition Release9.2.0.4.0 -Production

PL/SQL Release 9.2.0.4.0 - Production

CORE    9.2.0.3.0       Production

TNS for 32-bit Windows: Version 9.2.0.4.0 - Production

NLSRTL Version 9.2.0.4.0 - Production

SQL> CREATE TABLE T AS SELECT ROWNUM ID, A.* FROM USER_OBJECTS A;

表已创建。

SQL> ALTER TABLE T ADD CONSTRAINT PK_T PRIMARY KEY (ID);

表已更改。

SQL> ALTER TABLE T ADD CHECK (ID > 0);

表已更改。

SQL> CREATE INDEX IND_T_NAME ON T (OBJECT_NAME);

索引已创建。

SQL> CREATE OR REPLACE TRIGGER TRI_T

2  BEFORE INSERT ON T

3  FOR EACH ROW

4  BEGIN

5  NULL;

6  END;

7  /

触发器已创建

SQL> CREATE TABLE T_INTER

2  PARTITION BY HASH (ID)

3  PARTITIONS 4

4  AS SELECT ROWNUM ID, A.*

5  FROM USER_OBJECTS A

6  WHERE 1 = 2;

表已创建。

SQL> ALTER TABLE T_INTER ADD CONSTRAINT PK_T_INTER PRIMARY KEY (ID);

表已更改。

SQL> ALTER TABLE T_INTER ADD CHECK (ID > 0) DISABLE;

表已更改。

SQL> CREATE INDEX IND_T_INTER_NAME ON T_INTER (OBJECT_NAME);

索引已创建。

SQL> CREATE OR REPLACE TRIGGER TRI_T_INTER

2  BEFORE INSERT ON T_INTER

3  FOR EACH ROW

4  BEGIN

5  NULL;

6  END;

7  /

触发器已创建

SQL> SET SERVEROUT ON SIZE 1000000

SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(USER, 'T')

PL/SQL过程已成功完成。

SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'T', 'T_INTER')

PL/SQL过程已成功完成。

SQL> SELECT TABLE_NAME, INDEX_NAME

2  FROM USER_INDEXES

3  WHERE TABLE_NAME IN ('T', 'T_INTER');

TABLE_NAME                     INDEX_NAME

------------------------------ ------------------------------

T_INTER                        IND_T_INTER_NAME

T                              IND_T_NAME

T                              PK_T

T_INTER                        PK_T_INTER

SQL> SELECT TABLE_NAME, CONSTRAINT_NAME

2  FROM USER_CONSTRAINTS

3  WHERE TABLE_NAME IN ('T', 'T_INTER');

本文URL地址:http://www.bianceng.cn/database/Oracle/201410/45466.htm

时间: 2024-11-02 13:44:07

oracle 10g在线重定义新特性:关联对象自动重命名(一)的相关文章

Oracle 10G First Release的新特性简介(下)

oracle Oracle 10G First Release的新特性简介(下) By Fenng 2003-07-10 注:近日Oracle已经正式宣布该版本的Oracle命名为10G,其中的G为Grid之意.特此更正. 高可用性的加强 1.缩短应用和数据库升级的宕机时间 通过使用standby数据库.允许在不同版本的standby和产品数据库间切换.现有的联机重定义功能能够支持一步克隆所有相关的数据库对象. 2.回闪(Flashback)任何错误 该版本的Oracle也扩展了Flashbac

Oracle 10G First Release的新特性简介(上)

oracle Oracle 10G First Release的新特性简介(上)   By Fenng 2003-6-8   Oracle(www.oracle.com)公司早已经宣称,Oracle 9i数据库只是一个过渡性的产品,真正的技术革新很可能在下一版,也就是通常说的10i(内部可能的版本号是2003,以下简称10i,估计在正式发行的时候会有一个新的名字)中体现出来.很多技术人员可能都会比较关心Oracle 10i究竟能有哪些新功能,是否能提供一些激动人心的新特性?我们在这里对Oracl

oracle 10g在线重定义新特性:关联对象自动重命名(二)

9i的在线重定义存在一个问题,执行完在线重定义后,表的名称虽然保持不变,但是索引.约束.触发器等关联对象的名称会发生变化,有时候这会带来一定的问题,而要在事后手工修改,会比较麻烦. 10g的在线重定义解决这个问题.如果对象是利用COPY_TABLE_DEPENDENTS创建的,那么这些关联的对象在重定义操作完成后,自动改为原始的名称.如果是手工创建的关联对象,则可以利用REGISTER_DEPENDENT_OBJECT过程,所有执行了REGISTER_DEPENDENT_OBJECT过程的关联对

【快讯】在线体验Oracle Database 12.2 SQL新特性

 Oracle Database 12.2 已经让广大粉丝望眼欲穿,虽然文档已然发布,但是实验无从做起. 现在,可以通过 Oracle Live SQL 站点(文末原文链接指向该站点),在线体验Oracle 12.2 ,虽然我们仅能通过SQL去操作验证,但是这一大类的新特性已经够开发者.SQL爱好者体验的了. Oracle Live SQL近日升级到12.2版本,从为数不多可以查询的视图V$VERSION中可以看到版本信息,12.2.0.1.0 也将是12.2的第一个公开发布版本: 由此我们可以

oracle 12c R1执行计划新特性-table access by index rowid batched和INMOMEORY OPTION

oracle 12c R1执行计划在索引回表阶段oracle推出了batched特性,类似于oracle 11g中在nested loop中被驱动表回表时的向量IO,也是为了有效的解决表中数据无序性(索引的聚簇因子),下面看实际测试用例: 数据库版本:12.1.0.2版本 sys@CRMDB2> explain plan for SELECT offering_inst_id,        offering_id,        owner_party_role_type,        ow

C#3.0语言新特性之对象和集合初始化器

在C#3.0中,一个对象创建表达式可以包含一个对象或集合初始化器,用于初 始化新创建的对象的成员或新创建的集合的元素. 对象创建表达式: new type (argument-list(可选)) 对象或集合初试化器(可选) new type 对象或集合初试化器 一个对象创建表达式可以省略构造器参数列表,并将其连同圆括号一起替换 为一个对象或集合初始化器.省略构造器参数列表并将其连同圆括号一起替换为 一个对象或集合初始化器等价于指定一个空的参数列表. 在执行一个带有对象或集合初始化器的对象创建表达

将Oracle 10g内置的安全特性用于PHP

当今大多数 Web 应用程序都需要至少采用某种基本的安全策略.例如,提供用口令保护的内容的网站.仅具有管理员后端的网站.网志和个人杂志.电子商务网站.企业内联网,等等. 构建这些类型的 Web 应用程序最常用的设计方法是将安全策略整合到 Web 应用程序的业务逻辑中,即由应用程序决定某个用户是否有权访问数据库中的某个数据.在这种情形下,数据库的角色仅为存储数据和依请求提供数据.换句话说,如果 Web 应用程序命令数据库提供特定信息,则数据库会直接执行该命令而不检查用户的权限. 在该文中,您将学习

Oracle 11g r2数据泵新特性简介(五)数据泵对版本的支持

Oracle的11gr2版本中,并没有对数据泵做出多大的改动,主要是增加了对原始版本参数的支持,并且去掉了一些小的限制. 这一篇介绍数据泵对版本的支持. 在11.2中,Oracle增加了版本的功能,而数据泵也支持对指定版本的导出,或将对象导入到指定的版本中. SQL> conn yangtk/yangtk 已连接. SQL> select sys_context('USERENV', 'CURRENT_EDITION_NAME') from dual; SYS_CONTEXT('USERENV

Oracle 11g r2数据泵新特性简介(四)数据泵导入新增的DATA_OPTIONS

Oracle的11gr2版本中,并没有对数据泵做出多大的改动,主要是增加了对原始版本参数的支持,并且去掉了一些小的限制. 这一篇介绍数据泵导入新增的DATA_OPTIONS参数. 在11.2之前,数据泵的导入只提供了一个DATA_OPTIONS--SKIP_CONSTRAINT_ERRORS,而在11.2中,DATA_OPTIONS又增加了一个可用的值:DIABLE_APPEND_HINT. 一般来说我们希望数据泵使用直接路径的方式导入,因为导入的效率会很高.但是有的时候,我们并不需要采用直接路