Oracle 12.2如何使用联机重定义对表进行多处改变
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,小编给大家分享一下Oracle 12.2如何使用联机重定义对表进行多处改变,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!下面的例子将演示如何使用联机重定义操作来对表进行多处改变,原始
千家信息网最后更新 2025年11月10日Oracle 12.2如何使用联机重定义对表进行多处改变
小编给大家分享一下Oracle 12.2如何使用联机重定义对表进行多处改变,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
下面的例子将演示如何使用联机重定义操作来对表进行多处改变,原始表jy.original的创建语句如下:
SQL> create table jy.original( 2 col1 number primary key, 3 col2 varchar2(10), 4 col3 clob, 5 col4 date) 6 organization index;Table created.
表jy.original将按以下规则进行重定义:
.表启用高级行压缩方法进行压缩
.LOB列将被改变为SecureFiles LOB存储
.表的存储表空间将由test改变为example,并且表的块大小由8KB改变为 16KB。
.表将基于col1列进行分区
.将增加列col5
.列col2将被删除
.列col3与col4会被重命名,并且它们的位置会发生改变
.列col3的数据类型将从date改变为timestamp
.表将由索引组织表改变为堆表
.表的碎片将会被整理
为了演示碎片整理,使用下面的语句来向表加载数据:
SQL> declare 2 v_clob clob; 3 begin 4 for i in 0..999 loop 5 v_clob := null; 6 for j in 1..1000 loop 7 v_clob := v_clob||to_char(i,'0000'); 8 end loop; 9 insert into jy.original values(i,to_char(i),v_clob,sysdate+i); 10 commit; 11 end loop; 12 commit; 13 end; 14 /PL/SQL procedure successfully completed.
执行下面的语句来使用表被碎片化
SQL> delete from jy.original where (col1/3) <> trunc(col1/3);666 rows deleted.SQL> commit;Commit complete.
SQL> set serveroutput on;SQL> declare 2 l_fs1_bytes number; 3 l_fs2_bytes number; 4 l_fs3_bytes number; 5 l_fs4_bytes number; 6 l_fs1_blocks number; 7 l_fs2_blocks number; 8 l_fs3_blocks number; 9 l_fs4_blocks number; 10 l_full_bytes number; 11 l_full_blocks number; 12 l_unformatted_bytes number; 13 l_unformatted_blocks number; 14 begin 15 dbms_space.space_usage( 16 segment_owner => 'JY', 17 segment_name => 'ORIGINAL', 18 segment_type => 'TABLE', 19 fs1_bytes => l_fs1_bytes, 20 fs1_blocks => l_fs1_blocks, 21 fs2_bytes => l_fs2_bytes, 22 fs2_blocks => l_fs2_blocks, 23 fs3_bytes => l_fs3_bytes, 24 fs3_blocks => l_fs3_blocks, 25 fs4_bytes => l_fs4_bytes, 26 fs4_blocks => l_fs4_blocks, 27 full_bytes => l_full_bytes, 28 full_blocks => l_full_blocks, 29 unformatted_blocks => l_unformatted_blocks, 30 unformatted_bytes => l_unformatted_bytes 31 ); 32 33 dbms_output.put_line('0-25% free = '||l_fs1_blocks||' and bytes = '||l_fs1_bytes); 34 dbms_output.put_line('25-50% free = '||l_fs2_blocks||' and bytes = '||l_fs2_bytes); 35 dbms_output.put_line('50-75% free = '||l_fs3_blocks||' and bytes = '||l_fs3_bytes); 36 dbms_output.put_line('75-100% free = '||l_fs4_blocks||' and bytes = '||l_fs4_bytes); 37 dbms_output.put_line(' full blocks = '||l_full_blocks||' and bytes = '||l_full_bytes); 38 end; 39 /0-25% free = 0 and bytes = 025-50% free = 3 and bytes = 2457650-75% free = 0 and bytes = 075-100% free = 0 and bytes = 0full blocks = 10 and bytes = 81920PL/SQL procedure successfully completed.1.用要执行联机重定义操作的用户登录数据库
SQL> conn jy/jy@jypdbConnected.
2.验证原始表是否可以执行联机重定义
SQL> begin 2 dbms_redefinition.can_redef_table( 3 uname => 'jy', 4 tname => 'original', 5 options_flag => dbms_redefinition.cons_use_pk); 6 end; 7 /PL/SQL procedure successfully completed.
3.创建中间表jy.int_original
SQL> create table jy.int_original( 2 col1 number, 3 col3 timestamp, 4 col4 clob, 5 col5 varchar2(3)) 6 lob(col4) store as securefile (nocache filesystem_like_logging) 7 partition by range (col1) ( 8 partition par1 values less than (333), 9 partition par2 values less than (666), 10 partition par3 values less than (maxvalue)) 11 tablespace example 12 row store compress advanced;Table created.
4.开始联机重定义操作
SQL> begin 2 dbms_redefinition.start_redef_table( 3 uname => 'jy', 4 orig_table => 'original', 5 int_table => 'int_original', 6 col_mapping => 'col1 col1, to_timestamp(col4) col3, col3 col4', 7 options_flag => dbms_redefinition.cons_use_pk); 8 end; 9 /PL/SQL procedure successfully completed.
5.复制依赖对象
SQL> declare 2 num_errors pls_integer; 3 begin 4 dbms_redefinition.copy_table_dependents( 5 uname => 'jy', 6 orig_table => 'original', 7 int_table => 'int_original', 8 copy_indexes => dbms_redefinition.cons_orig_params, 9 copy_triggers => true, 10 copy_constraints => true, 11 copy_privileges => true, 12 ignore_errors => true, 13 num_errors => num_errors); 14 end; 15 /PL/SQL procedure successfully completed.
6.可选操作同步中间表
SQL> begin 2 dbms_redefinition.sync_interim_table( 3 uname => 'jy', 4 orig_table => 'original', 5 int_table => 'int_original'); 6 end; 7 /PL/SQL procedure successfully completed.
7.完成联机重定义操作
看完了这篇文章,相信你对"Oracle 12.2如何使用联机重定义对表进行多处改变"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
数据
碎片
语句
面的
原始
篇文章
存储
演示
高级
位置
例子
大小
完了
对象
数据库
方法
更多
来使
用户
知识
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
华为服务器能安装微信吗
达梦数据库15天测试
浏览器提示服务器正在运行中
小学生预防沉迷网络安全教育内容
明锐互联网科技
数据库调u
工作室服务器如何选择
对拷线是否会影响网络安全
企业网络技术服务公司名称
小学班级网络安全方案
鄞州敏捷软件开发公司
水星wifi服务器未响应
网络安全管理类联考英语
手抄报初一网络安全
服务器搭建配置与应用
40台电脑有必要弄服务器不
学校网络技术维护管理制度
软件开发编程规范及原则
工商银行软件开发35岁
网络安全周例会纪要
软件开发创新指标
江西专业软件开发服务有哪些
冬奥期间网络安全
深圳市浩源网络技术有限公司
简述数据库系统组成
游戏服务器主要有哪些功能
天运服务器
邯郸软件开发方案
网络安全谨防诈骗作文
服务器安全kpi考核