设为首页 加入收藏

TOP

Oracle使用联机重定义来给表增加新列与分区
2017-06-26 10:22:58 】 浏览:4387
Tags:Oracle 使用 联机 定义 增加 分区

表emp_redef将按以下规则来进行联机重定义:
.增加新列mgr,hiredate,sal与bonus
.新列bonus被初始化为0
.列department_id的值由10开始增加
.表将被重定义为范围分区表,分区键为employee_id。


联机重定义操作如下:
1.用要执行联机重定义操作的用户登录数据库


2.验证表emp_redef是否可以执行联机重定义。在这种情况下,可以使用主键或伪主键来来进行验证。


3.创建一个中间表hr.int_emp_redef


4.开始重定义操作


5.复制依赖对象(自动对表hr.int_emp_redef创建任何触发器,索引,物化视图日志,授权与约束)


注意,在调用这个过程时ignore_errors参数需要设置为TRUE。原因是中间表创建了主键约束,并且当执行copye_table_dependents过程来试图从原始表复制主键约束与索引时会发生错误。可以忽略这些错误,但必须执行下一步操作中的查询来查看是否还存在其它错误。


6.查询dba_redefinition_errors视图来查看错误信息


上面的错误信息是说中间表的last_name与job_id列为not null,而原因表为null,这种错误可以忽略。


7.同步中间表hr.int_emp_redef


8.完成重定义操作


表hr.emp_redef只会以排他模式被锁定很短的时间来结束重定义操作。在操作完成后,表hr.emp_redef将使用hr.int_emp_redef表的所有属性来重定义。


可以看到表hr.emp_redef已经成功能联机重定义


9.等任何查询中间表的语句执行完成后将其删除,而且中间表在重定义后其结构就变成了原始表的表结构


到此,联机重定义表hr.emp_redef就操作完成。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MySQL性能优化注意事项以及索引 下一篇Redis中的数据对象

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目