分享更有价值
被信任是一种快乐

oracle在线重定义表有什么功能

文章页正文上

这篇文章主要讲解了“oracle在线重定义表有什么功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle在线重定义表有什么功能”吧!在线重定义表具有以下功能:修改表的存储参数;可以将表转移到其他表空间;增加并行查询选项;增加或删除分区;重建表以减少碎片;将堆表改为索引组织表或相反的操作;增加或删除一个列。原理:增量物化视图刷新目的:清理表中碎片,释放空间(重建表以减少碎片)重定义方法:存在两种重定义方法,一种是基于主键、另一种是基于ROWID。ROWID的方式不能用于索引组织表,而且重定义后会存在隐藏列M_ROW$$。默认采用主键的方式。前提条件:1)查看表中是否含有主键,在线重定义需要表中存在主键select a.constraint_name, a.column_name from dba_cons_columns a, dba_constraints bwhere a.constraint_name = b.constraint_name and b.constraint_type = ‘P’ and a.table_name in(‘ZWD_JDMSG_GD’,’ZB2C_KUCUN_LOG’);2)如果在执行在线重定义的过程中出现任何的失败操作,那么需要执行dbms_redefinition.abort_免费主机域名redef_table来回退;1、检查是否能够重定义EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(‘用户名’, ‘源表’, DBMS_REDEFINITION.CONS_USE_PK); –主键方式EXEC DBMS_RED免费主机域名EFINITION.CAN_REDEF_TABLE(‘用户名’, ‘源表’, DBMS_REDEFINITION.CONS_USE_ROWID); –ROWID方式2、获取源表建表语句SET SERVEROUTPUT ONSET LINESIZE 1000SET FEEDBACK OFFset long 99999 set pagesize 4000select dbms_metadata.get_ddl(‘TABLE’,’ZWD_JDMSG_GD’,’SAPSR3′) from dual;3、创建中间表(根据源表创建语句)4、查看依赖对象SELECT * from dba_dependencies where REFERENCED_NAME in (‘ZWD_JDMSG_GD’,’ZB2C_KUCUN_LOG’);5、调用dbms_redefinition包执行表的在线重定义。EXEC DBMS_REDEFINITION.start_redef_table(‘SAPSR3′,’ZWD_JDMSG_GD’,’T_TEMP’);或者–null代表所有的列名与原表一样begindbms_redefinition.start_redef_table(‘用户’,‘原表’,‘中间表’,null,dbms_redefinition.cons_use_rowid);end;6、复制依赖对象到中间表,后几个参数分别表示从原表复制索引、触发器、约束、权限、某一项复制出错跳过、复制过程中的出错数目、复制统计信息、复制物化视图日志(各选项凭需要取用,完毕后需检查num_errors的值,有错一定要查看,酌情处理)DECLAREnum_errors PLS_INTEGER;BEGINDBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(‘用户’, ‘原表’,‘临时表’, DBMS_REDEFINITION.CONS_ORIG_PARAMS, TRUE, TRUE, TRUE, TRUE, num_errors, TRUE, TRUE);END;7、查看报错信息select object_name,base_table_name,ddl_txt from DBA_REDEFINITION_ERRORS;8、 将中间表中的数据和原始表中的数据进行同步操作(这一步不是必须的)。如果在执行dbms_redefinition.start_redef_table和dbms_redefinition.finish_redef_table之间有大量的DML操作发生,那么执行一次dbms_redefinition.sync_interim_table来减少最后一步执行dbms_redefinition.finish_redef_table时的锁定时间。EXEC dbms_redefinition.sync_interim_table(‘DBSYAN’,’T_TEST’,’T_TEMP’);9、结束在线重定义过程EXEC dbms_redefinition.finish_redef_table(‘DBSYAN’,’T_TEST’,’T_TEMP’);执行完FINISH_REDEF_TABLE()过程后,原始表重定义后具有了中间表的属性、索引、约束、授权和触发器。中间表上disabled的约束在原始表上处于enabled状态。10、检查原表的表空间是否改变,检查其数据、结构、索引等依赖对象是否正确11、执行失败,进行回退EXEC dbms_redefinition.abort_redef_table (‘DBSYAN’,’T_TEST’,’T_TEMP’);注意:对于采用了ROWID方式重定义的表,包括了一个隐含列M_ROW$$。推荐使用下列语句经隐含列置为UNUSED状态或删除ALTER TABLE TABLE_NAME SET UNUSED (M_ROW$$);ALTER TABLE TABLE_NAME DROP UNUSED COLUMNS;感谢各位的阅读,以上就是“oracle在线重定义表有什么功能”的内容了,经过本文的学习后,相信大家对oracle在线重定义表有什么功能这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是云技术,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: Linux如何查看端口占用并

这篇文章主要为大家展示了“Linux如何查看端口占用并”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux如何查看端口占用并”这篇文章吧。netstat -apn|grep 8080[oracle@test d…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册