Oracle 11g笔记——分区表

一、分区表

分区技术,Oracle允许把一个大表分成几部分,每部分叫一个分区,然后把每个部分放在不同的物理磁盘,以提高整个数据库的性能。

每个分区还可以再分成几份,这样产生的分区叫子分区(Subpartition)。分区表逻辑上还是一个整体。

1、优点:

(1)分区技术使数据库的可管理性变得更加容易,

如:用户可以往一个单独的分区中装载数据,而对其它分区没有任何影响;用户可以在一个单独的分区上创建索引。

(2)分区可以提高表的查询性能,SQL语句的WHERE子句会过滤掉不需要的分区,Oracle不会再扫描那些不需要的分区。

(3)分区技术减少数据的不可用时间,用户可以单独地维护一个分区中的数据,而不影响其它分区中数据的使用。

(4)分区技术在数据库级完成,几乎不需要对应用程序做任何修改。

2、分类:

(1)范围分区

根据表中列值的范围将整个表分成不同的部分,如:按照时间进行范围分区

(2)列表分区

使用列值将表划分成几部分

(3)哈希分区:作用哈希函数把表分成几部分

(4)复合分区:同时使用两种分区方法对表进行分区

3、创建示例

(1)范围分区表

SQL>create table sales(invoice_no number,sale_year int not null,sale_month int not null,sale_day int not null)

partition by range (sale_year)

(partition p1 values less than (2000) tablespace USERS,

partition p2 values less than (2001) tablespace LMTBSB,

partition p3 values less than (2002) tablespace BIGTBS_01,

partition p4 values less than (2003) tablespace TSSEG_MANUAL);

(2)哈希分区(根据哈希值把表分成几个分区。法一:指定分区数量;法二、指定分区名字)

a.指定分区数量,关键字partitions指定分区的数量

SQL>create table dept(deptno number,deptname varchar(32))

partition by hash(deptno) partitions 4;

指定分区数为4,所有分区都放在相同的表空间中。

b.按指定分区的名字进行分区

SQL>create table dept(deptno number,deptname varchar(32))

partition by hash(deptno)

(partition p1 tablespace USERS,

partition p2 tablespace LMTBSB,

partition p3 tablespace BIGTBS_01,

partition p4 tablespace TSSEG_MANUAL);

(3)列表分区

SQL>create table sales(item integer,qty integer,store_name varchar(30),city varchar2(20),sale_date date)

partition by list (city)

(partition region_east values(‘杭州‘,‘上海‘) tablespace USERS,

partition region_west values(‘成都‘,‘重庆‘) tablespace LMTBSB,

partition region_south values(‘广州‘,‘桂林‘) tablespace BIGTBS_01);

4、其它示例

(1)得到一个分区表的所有子分区

SQL>select table_name,partition_name,subpartition_name,tablespace_name

from dba_tab_subpartitions

where table_name=‘COMPOSITE_SALES‘

order by table_name,partition_name

(2)将表的一个分区从一个表空间移动至另外一个表空间

a.确认分区SP1在哪个表空间

SQL>select table_name,partition_name,subpartition_name,tablespace_name

from dba_tab_subpartitions

where table_name=‘sales‘ and table_owner=‘test‘

查询得知:SP1在P1表空间中

b.将分区SP1移至表空间P

SQL>alter table sales move partition sp1 tablespace TP;

c.移动分区,会使索引无效,需要重建索引,如:

SQL>alter index sales3_pk rebuild;

(3)查看一个表是不是表空间

SQL>select owner,table_name,partitioned from dba_tables where owner=‘test‘ and table_name=‘sales3‘;

查看用户test的表sales3是不是分区表。

若partitioned=yes表示这个表是分区表

(4)得到创建分区的SQL语句

SQL>select dbms_metadata.get_ddl (‘TABLE‘,‘sales3‘,‘test‘) from dual;

新增一个范围分区,注:新增的分区边界值必须大于已存大的分区边界

SQL>alter table sales3 add partition p1999 values less then (1999);

(5)合并分区,注:合并以后的分区的名字不能是边界值较低的那个分区的名字,但可以是另外一个分区的名字

SQL>alter table sales3 merge partitions sp1,sp3 into partitions sp3

(6)分区交换

SQL>alter table sales3 exchange partition sp1 with table tar_sales;

或:

SQL>alter table sales3 exchange partition sp3 with table tar_sales including indexes without validation;

注:进行分区交换时,分区表上有索引,目标表上也应有索引

查看索引IND_MAP由哪些列组成:

SQL>select index_owner,index_name,table_name,column_name from dba_ind_columns where index_owner=‘test‘ and index_name=‘IND_MAP‘;

时间: 2024-10-02 20:10:48

Oracle 11g笔记——分区表的相关文章

Oracle 11G 笔记:无法导出空表的解决办法

最近在用ORACLE 11G .对数据导出导入的时候发现一个问题:oracle 不会对无数据的空表进行导出.查资料发现,原来这种情况只出现在Oracle 11g 中,处理办法如下: sqlcommand:  alter system set deferred_segment_creation=false; 意思是禁止推迟创建表的段,也就是表创建后不管有没有数据都要分配空间.该参数修改后对该时间点以前创建的表无用.所以还是要对以前的表分配空间. sql:  Select 'alter table

CentOS安装oracle 11G笔记

系统:CentOS64 + oracle11G x86_64 1.关闭防火墙, # vi /etc/selinux/config 修改SELINUX=disabled,然后重启.如果不想重启系统,使用命令setenforce 0 2.建立脚本build.sh, # vim build.sh #注意以root登陆执行 将下列代码粘贴进去: #!/bin/bash #安装依赖库文件 yum -y install binutils compat-libcap1 \ yum -y install com

Oracle 11g笔记——RAC简介、意义

一.RAC简介 1.高可用性 是指整合了硬件和软件技术的综合解决方案.它保证在不丢失数据的前提下,应用程序(服务)能够不间断运行,也就是服务的有效性或服务的可持续访问性. 特征:可靠性:可靠的硬件和可靠的软件 可恢复性:提供各种机制,确保能从失败中恢复丢失的数据和失败的进程 错误自动检测:能自动探测各种错误,并采取相应措施 可持续性:当某些组件失败时,仍然能够继续对外界提供服务 Oracle HA解决方案:Oracle Golden Gate.Oracle Data Guard.Oracle S

oracle 入门笔记---分区表的分区交换

本文参考来自作者:蓝紫 详细内容请阅读原文 : http://www.cnblogs.com/lanzi/archive/2013/01/24/2875838.html 在oracle 11.2环境下测试 --drop table tab_a purge; --创建分区表 create table tab_a ( r_id number(19) primary key, r_name varchar2(300), r_pat  integer ) partition by list (r_pat

Oracle 11g笔记——索引组织表

一.索引组织表(Index-Organized Table, IOT) 索引组织表是一类特殊的表,它将索引和表的数据存储在一起.普通表的数据以无序(Heap)的方式存放在数据库中. 而索引组织表按照主键进行排序,以二叉树的形式对表的数据进行存储. 索引组织表不存储ROWID,它通过主键来访问数据. 索引组织表适合通过主键对数据进行访问的应用. 1.优点 (1)快速的随机访问.索引和表的数据存储在一起,如果对表进行更新,Oracle只更新索引结构. (2)快速的范围扫描.索引组织表已经按照主键对数

Oracle 11g笔记——索引

索引类型 二叉树索引.B树索引(B-tree Indexes) B树索引是使用最多的一种索引.默认情况下,创建的索引都是B树索引.使用B树结构来存放索引.B树底层是叶子节点,叶子节点存放索引值和行标识(ROWIND) 二叉树聚簇索引(B-tree Cluster Indexes) 哈希聚簇索引(Hash Cluster Indexes) 反向索引(Reverse Key Indexes) 反向索引也属于B树索引,它把索引值按字节反转过来.反向索引适合集群 位图索引(Bitmap Indexes)

oracle 11g rac 笔记(VMware 和esxi主机都可以使用)

这个只是笔记,防止丢失,没事见整理 在vmware安装目录 创建磁盘: vmware-vdiskmanager.exe -c -s 1000Mb -a lsilogic -t 2 D:\VMWARE\racsharedisk\ocr.vmdk vmware-vdiskmanager.exe -c -s 1000Mb -a lsilogic -t 2 D:\VMWARE\racsharedisk\ocr2.vmdk vmware-vdiskmanager.exe -c -s 1000Mb -a l

oracle读书笔记之Oracle 11g R2 DBA操作指南(前三章)

Oracle 11g R2 DBA操作指南是我学习的第一本讲述oracle数据库知识的书籍,在此记录下自己的学习笔记,对于书中的知识点本人通过实际操作进行验证. 1.Oracle数据库基础 1.1.关系数据库 1.1.1.关系数据库模型 1.关系数据库模型三个核心概念:关系.属性.域 2.关系:由行列组成的表 属性:关系中的列 域:列取值的集合 3.每一行称为一个元组 4.关系数据模型的规则: ⑴一个表中列的顺序是任意的 ⑵每个元组的属性值不能形同,每一个元组对应的属性将包含一个值 5.键:通过

oracle 11g 分区表创建(自动按年分区)

前言:工作中有一张表一年会增长100多万的数据,量虽然不大,可是表字段多,所以一年下来也会达到 1G,而且只增不改,故考虑使用分区表来提高查询性能,提高维护性. oracle 11g 支持自动分区,不过得在创建表时就设置好分区. 如果已经存在的表需要改分区表,就需要将当前表 rename后,再创建新表,然后复制数据到新表,然后删除旧表就可以了. 一.为什么要分区(Partition) 1.一般一张表超过2G的大小,ORACLE是推荐使用分区表的. 2.11g 中的分区表新特性:Partition