暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle 分区表-系统分区-联机重新定义表

原创 不吃草的牛_Nick 2023-05-26
337

系统分区是一种独特的分区方法,其中的数据是由应用程序控制而不是由数据库控制存放放置的。数据库仅让你把表分成分区,而不管每个分区中包含什么。应用程序控制进入各分区的内容。在插入数据到系统分区表时,必须明确指定分区。因此,如果你试图插入数据到某个系统分区的表而没有指定数据进入的具体分区,那么插入将会失败。

使用系统分区的最大优点是对基表可以创建和维护等同分区的表。

1.创建系统分区表
CREATE TABLE test (c1 integer, c2 integer)
PARTITIONED BY SYSTEM
(
PARTITION p1 tablespace tbs_1;
PARTITION p2 tablespace tbs_2;
PARTITION p3 tablespace tbs_3;
PARTITION p4 tablespace tbs_4;
);

子句PARTITIONED BY SYSTEM指定了表使用系统分区。

2.插入数据
在使用INSERT或MERGE语句插入数据时,必须指定新行要放入的分区。下面是一个插入系统分区表的例子:
insert into test partition (p1) values (4,5);

此例子指定对分区p1插入新数据。

3.删除和更新数据
与插入操作不一样,在系统分区表中删除和更新数据不需要使用明确的分区语法,即在DELETE或UPDATE命令中不用给出分区名。不过,Oracle建议你指定分区,以便数据库使用分区修剪,避免扫描整个表。

4.限制
系统分区不支持CREATE TABLE AS SELECT和INSERT INTO TABLE AS语句。原因是系统分区不使用某种分区方法,因此行与分区之间不存在映射。


联机重新定义表:

不能联机重新定义的表的类型只有很少的限制。下面列出了关键限制:
★ 重新定义具有物化视图日志的表之后,必须完全刷新依赖的物化视图。
★ 索引组织表(IOT)的溢出表必须与基本IOT同时重新定义。
★ 具有细粒度访问控制的表不能联机重新定义。
★ 包含BFILE列的表不能联机重新定义。
★ 包含LONG和LONG RAW列的表可以重新定义,但必须将LONG和LONG RAW列转换为CLOB和BLOB,
★ SYS和SYSTEM模式中的表不能联机重新定义。
★ 临时表不能联机重新定义。

execute dbms_redefinition.can_redef_table('SCOTT','CUSTOMER');
execute dbms_redefinition.start_redef_table('SCOTT','CUSTOMER','CUSTOMER_INTERIM');
execute dbms_redefinition.finish_redef_table('SCOTT','CUSTOMER','CUSTOMER_INTERIM');
execute dbms_redefinition.abort_redef_table('SCOTT','CUSTOMER','CUSTOMER_INTERIM');

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论