`
yinchunjian
  • 浏览: 283130 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

oracle创建分区表

阅读更多

在ORACLE里如果遇到特别大的表,可以使用分区的表来改变其应用程序的性能。

以system身份登陆数据库,查看 v$option视图,如果其中Partition为TRUE,则支持分区功能;否则不支持。Partition有基于范围、哈希、综和三种类型。我们用的比较多的是按范围分区的表。


在ORACLE里如果遇到特别大的表,可以使用分区的表来改变其应用程序的性能。

以system身份登陆数据库,查看 v$option视图,如果其中Partition为TRUE,则支持分区功能;否则不支持。Partition有基于范围、哈希、综和三种类型。我们用的比较多的是按范围分区的表。

我们以一个2001年开始使用的留言版做例子讲述分区表的创建和使用:

1 、以system 身份创建独立的表空间(大小可以根据数据量的多少而定)

create tablespace g_2000q4 datafile '/home/oradata/oradata/test/g_2000q4.dbf' size 50M default storage (initial 100k next 100k minextents 1 maxextents unlimited pctincrease 1);

create tablespace g_2001q1 datafile '/home/oradata/oradata/test/g_2001q1.dbf' size 50M default storage (initial 100k next 100k minextents 1 maxextents unlimited pctincrease 1);

create tablespace g_2001q2 datafile '/home/oradata/oradata/test/g_2001q2.dbf' size 50M default storage (initial 100k next 100k minextents 1 maxextents unlimited pctincrease 1);

2 、用EXPORT工具把旧数据备份在guestbook.dmp中

把原来的guestbook表改名

alter table guestbook rename to guestbookold;

以guestbook 身份创建分区的表

create table guestbook(
	id		number(16) primary key,
	username		varchar2(64),
	sex		varchar2(2),
	email		varchar2(256),
	expression	varchar2(128),
	content		varchar2(4000),
	time		date,
	ip		varchar2(64)
) 
  partition by range (time)
  (partition g_2000q4 values less than (to_date('2001-01-01','yyyy-mm-dd'))
    tablespace g_2000q4
      storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0), 
   partition g_2001q1 values less than (to_date('2001-04-01','yyyy-mm-dd'))
    tablespace g_2001q1
      storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0),
   partition g_2001q2 values less than (to_date('2001-07-01','yyyy-mm-dd'))
    tablespace g_2001q2
      storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0)
   );

(说明:分区的名称可以和表空间的名称不一致。这里是每个季度做一个分区,当然也可以每个月做一个分区)

3、IMPORT导入数据,参数ignore=y

4、分区表的扩容:

到了2001 年下半年,建立新的表空间:

create tablespace g_2001q3 datafile '/home/oradata/oradata/test/g_2001q3.dbf' size 50m default storage (initial 100k next 100k minextents 1 maxextents unlimited pctincrease 1);

为表添加新分区和表空间:

alter table guestbook add partition g_2001q3
values less than (to_date('2001-10-01','yyyy-mm-dd')
tablespace g_2001q3
storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0);

5、删除不必要的分区

将2000年的数据备份(备份方法见 6、EXPORT 分区),将2000年的分区删除。

alter table guestbook drop partion g_2000q4;

删除物理文件

%rm /home/oradata/oradata/test/g_2000q4.dbf

6、EXPORT 分区:

% exp guestbook/guestbook_password tables=guestbook:g_2000q4 rows=Y file=g_2000q4.dmp

7、IMPORT分区:

例如在2001 年,用户要查看2000 年的数据,先创建表空间

create tablespace g_2000q4 datafile '/home/oradata/oradata/test/g_2000q4.dbf' size 50m default storage (initial 100k next 100k minextents 1 maxextents unlimited pctincrease 1);

为表添加新分区和表空间:

alter table guestbook add partition g_2000q4
values less than (to_date('2001-01-01','yyyy-mm-dd')
tablespace g_2001q3
storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0);

导入数据

%imp guestbook/guestbook_password file=g_2000q4.dmp tables=(guestbook:g_2000q4) ignore=y

(说明:如果不指明导入的分区,imp会自动按分区定义的范围装载数据)

分享到:
评论

相关推荐

    oracle创建分区表.pdf

    通过上述步骤,可以看出Oracle创建分区表的过程涉及多个环节,需要细心规划和执行。在实际应用中,还需要考虑分区的策略、维护分区的规则以及可能对应用程序造成的影响。正确使用分区表可以显著提升数据库的性能和可...

    利用kettle自动创建oracle表分区

    创建分区表实例的SQL语句如下: ``` create table DE_TEST( name_tag varchar2(10), day_tag DATE) PARTITION BY RANGE (day_tag) ( PARTITION DE_TEST_20170405 VALUES LESS THAN (TO_DATE('2017-04-06 00:00:...

    oracle表中已经有数据还能创建分区吗

    oracle创建分区表

    Oracle分区表详解

    ### Oracle 分区表详解 #### 一、Oracle 分区简介 Oracle 的分区技术是一种用于管理和优化超大型表和索引的有效手段。通过将一个大型的表或者索引分割成多个较小且可管理的部分,分区技术能够显著提升数据库的性能...

    oracle分区表之hash分区表的使用及扩展

    Oracle分区表中的Hash分区是一种基于哈希算法的分区策略,适用于...在实际应用中,创建和扩展Hash分区表时,应结合业务需求和数据特性,综合考虑分区键的选择、分区数的设定以及扩展策略,以实现最佳的性能和管理效果。

    Oracle数据库分区表操作方法

    在创建分区表时,可以使用序号分区或日期分区。例如,我们可以使用以下SQL语句创建一个使用序号分区的表: ``` create table dinya_test ( transaction_id number primary key, item_id number(8) not null, ...

    oracle普通表转化为分区表的方法

    Oracle数据库中的分区表是一种高级的表组织形式,它将大表分成多个较小的部分,每个部分称为一个分区,以提高查询性能和管理效率。当表的大小超过2GB时,官方推荐使用分区表,因为它们在处理大量数据时具有显著优势...

    oracle10g分区表自动按时间创建删除分区存储过程

    文件是本人oracle10g分区表自动按时间创建、删除分区的存储过程,测试代码,通过job调用存储过程,每天午夜12点运行一次。妥妥!跟大家分享下!

    ORACLE分区表的创建

    本文将详细介绍在Oracle中如何创建分区表,包括各种分区类型及其应用场景,并通过具体示例进行说明。 #### 二、分区类型及定义 在Oracle中,主要有以下四种类型的分区方法: 1. **范围分区 (Range Partitioning)*...

    Oracle分区表用法

    【Oracle分区表用法】 Oracle分区表是一种高级的数据库管理技术,它将大型表的数据分散存储在不同的物理区域,以提升查询效率和系统的整体性能。本文将详细介绍分区表的概念、作用、优缺点,以及各种类型的分区表...

    Oracle 分区表 分区索引

    #### 四、创建分区表和索引 ##### 创建Range分区 ```sql CREATE TABLE sales ( sale_date DATE, amount NUMBER ) PARTITION BY RANGE (sale_date) ( PARTITION sales_q1_2020 VALUES LESS THAN (TO_DATE('2020-04...

    Oracle表分区详解(优缺点)

    操作方法包括创建、插入、更新、删除和查询分区表,以及重构分区,如合并、拆分和交换分区。在SQL DML命令中,对分区表的操作与非分区表相同,用户无需感知分区的存在。 总的来说,Oracle表分区是大型数据库系统中...

    Oracle分区表培训

    创建分区表时,需要指定分区键、分区类型以及具体的分区边界或列表值。 接着,"2.分区索引示例.sql"探讨了与分区相关的索引策略。在分区表上创建索引可以进一步提升查询效率,因为索引也可以被分区。全局索引覆盖...

    Oracle表分区 建表空间 创建用户

    ### Oracle表分区、建表空间与用户管理 #### 一、表空间的创建与管理 在Oracle数据库中,**表空间**(Tablespace)是物理存储的逻辑容器,它由一个或多个数据文件组成。创建一个新的表空间对于数据库的管理非常重要...

    导入导出 Oracle 分区表数据

    通过创建一个简单的演示环境,我们演示了如何创建分区表、生成数据以及如何使用这些工具来完成数据的导入导出。这种能力对于DBA来说是非常重要的,尤其是在处理大型数据集时。希望本文能够帮助读者更好地理解和掌握...

    oracle表分区详解

    - 分区表的管理可能比非分区表复杂,尤其是当涉及到大量分区时。 - 对于频繁更改分区键的场景,分区表的维护成本较高。 #### 四、分区类型及示例 ##### 1. 范围分区 范围分区是根据一个列的值的范围来决定数据存储...

    oracle 普通表转分区表方式

    本文详细介绍了将 Oracle 普通表转换为分区表的方法,包括备份创建表脚本、查看数据类型、创建分区表、迁移数据和更新索引和约束等步骤。通过将普通表转换为分区表,可以提高查询效率、减少存储空间和提高数据管理...

    oracle自动建立表分区脚本

    7. **脚本使用说明**:通常,该脚本会包含SQL语句,用于创建分区表和定义分区策略。DBA需要根据实际业务需求,调整脚本中的参数,如分区字段、分区数量、分区边界等。 8. **注意事项**:在使用自动分区脚本时,需...

Global site tag (gtag.js) - Google Analytics