首页 > 编程知识 正文

oracle查看分区表信息,oracle自动分区

时间:2023-05-05 04:50:47 阅读:167153 作者:1394

使用Oracle分区表类型

分区表的有用性

我们的oracle表中的数据最终会保存到磁盘文件中。 缺省情况下,表中的所有数据都保存在一起,但表中的数据越多,对表的操作就越慢。 另一方面,分区表将一个表中的数据保存在不同的位置。 这将带来以下好处。

1 .减少了表中数据损坏的可能性,数据分散到了不同的地方。 此外,还可以对不同的分区分别进行备份和恢复操作。

2 .为了提高io性能,可能将表分开后保存到其他磁盘。 现在,可以并行读取表中的数据。

表中的数据大于2G时,建议使用分区表。

分区表的类型

既然把一个表中的数据分散到不同的地方,你可能会想,用什么标准来划分呢? 总共有这样四种标准。

Oracle分区表分为四类。 范围分区表; 列表分区表; 散列分区表; 组合分区表

范围分区表

从一列的值判断,将不同的行保存在不同的地方

假设您创建了一个分区表,并使用列id的值来确定分区

createtablepart_TB(idnumber,infovarchar2) 500 ) (partitionbyrange(id ) ) ) ) ) ) ) ) ) )。

partition part1values less than (100 ) tablespaceusers,

partition part2values less than (200 ) tablespacesystem,

partition part3values less than (max value ) tablespacesystem

在表格中插入以下两行数据

insertintopart_TBvalues(38,’vlaue sis 38’); 保存到分区第1部分

insertintopart_TBvalues(520,’vlaue sis 520’); 保存到分区第2部分

搜索数据

分区表可以作为普通表进行操作。 select * from part_tb; 返回两行数据

但是,也有特殊的操作,可以直接指定要搜索哪个分区的信息

slect * from part _ TB partition (part1); 在这种情况下,仅返回id小于100的数据

修改分区

(注:此时更改分区对所有类型的分区表都有效。)

添加分区

如果在创建表后突然想在原始表中添加分区,则可以

altertablepart _ tbaddpartitionpart4values less than (300;

但是,执行发行会报告错误,并提供提示

ora-14074: partitionboundmustcollatehigherthanthatofthelastpartition

因为以前做表的时候用了lessthan(maxvalue )。 没有这个的话东东可以追加

那么,如果出现这种情况,该如何解决呢? 有两种方法。 一个是从添加中删除分区part3,另一个是剥离分区。

删除分区

altertablepart _ tbdroppartitionpart 3;

分割分区:分割区

分区: merge整合

列表列表的分区表

列表分区也与范围分区类似,但范围分区一般适用于某些数字范围,而列表分区通常用于确定某些字符串。

如果创建了表,请判断城市信息并对其进行分区

createtableuser_info(idnumber,user_namevarchar2(500 ),city varchar2(100 ) ) (partitionbylist (city ) ) )

分区部件1值(Beijing ) tablespaceusers,

分区部件2值(Changsha ) tablespacesystem,

分区部件3值(default )表空间系统

插入数据

insertintouser_infovalues(1,’arwen’,’Beijing’); 第1部分

insertintouser_infovalues(1,’weiwen’,’Changsha’); 第2部分

搜索数据

select * fromuser _ info partition (部件2;

在这里,如果超大型的表中有用户信息的话,如果是普通的表的话,找某一类用户的信息会不会需要半天呢? 如果定为分区表,不是可以马上检测出结果吗?

散列散列分区表

前文所述的范围划分表、列表划分表都可以以某一列具有确定的信息为依据。 但是,如果某一列的信息杂乱无章的话,在随机的区分下想怎么整理呢? 这可以用散列来区分。

假设您要创建以下散列分区表

create table order _ info (order_number number,infovarchar2(100 ) (partitionbyhash ) order _ number ) ) )。

partition part 1表空间用户,

partition part 2表空间系统

插入数据

insertintoorder_infovalues(12,’buy car’);

insertintoorder_infovalues(888,’buy house’);

搜索数据

select * from order _ info partition (部件1;

因为数据是随机访问的,所以不能保证哪一行存储在哪个分区中

组合分区表

综合以上三种划分方法,大的划分之下又有小的划分。

Oracle 10g提供了以下两种组合方法

高贵的电灯胆复合分区(range-hash ) )。

范围-列表复合分区范围列表

在Oracle 11g中

添加了范围、列表范围。

list-list、list-hash和11g还支持间隔分区和虚拟列分区

举一个简单的例子来看看范围列表复合分区(range-list )。

create table compound (arrange _ id number,list_infovarchar2(500 ) )

partitionbyrange(arrange_id ) subpartitionbylist (list _ info ) )。

分区部件1价值最大挑战(100 ) )。

(subpartition part 11 values (‘car’)、

subpartition part 12 values (default )

请参阅。

partition part2values less than (200 )。

);

插入数据

insertintocompoundvalues(50,’car’;

insertintocompoundvalues(60,’books’;

搜索数据

select * fromcompoundpartition (part1) ) ) ) ) ) ) ) ) ) select * fromcompoundpartition (part1) ) ) ) ) ) ) ) ) ) 65

select * fromcompoundsubpartition (part 11 ) ) ) ) ) ) ) select * fromcompoundsubpartition (part 11 ) ) )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。