在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创建分区表的过程涉及多个环节,需要细心规划和执行。在实际应用中,还需要考虑分区的策略、维护分区的规则以及可能对应用程序造成的影响。正确使用分区表可以显著提升数据库的性能和可...
创建分区表实例的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分区表中的Hash分区是一种基于哈希算法的分区策略,适用于...在实际应用中,创建和扩展Hash分区表时,应结合业务需求和数据特性,综合考虑分区键的选择、分区数的设定以及扩展策略,以实现最佳的性能和管理效果。
在创建分区表时,可以使用序号分区或日期分区。例如,我们可以使用以下SQL语句创建一个使用序号分区的表: ``` create table dinya_test ( transaction_id number primary key, item_id number(8) not null, ...
Oracle数据库中的分区表是一种高级的表组织形式,它将大表分成多个较小的部分,每个部分称为一个分区,以提高查询性能和管理效率。当表的大小超过2GB时,官方推荐使用分区表,因为它们在处理大量数据时具有显著优势...
文件是本人oracle10g分区表自动按时间创建、删除分区的存储过程,测试代码,通过job调用存储过程,每天午夜12点运行一次。妥妥!跟大家分享下!
本文将详细介绍在Oracle中如何创建分区表,包括各种分区类型及其应用场景,并通过具体示例进行说明。 #### 二、分区类型及定义 在Oracle中,主要有以下四种类型的分区方法: 1. **范围分区 (Range Partitioning)*...
【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...
操作方法包括创建、插入、更新、删除和查询分区表,以及重构分区,如合并、拆分和交换分区。在SQL DML命令中,对分区表的操作与非分区表相同,用户无需感知分区的存在。 总的来说,Oracle表分区是大型数据库系统中...
创建分区表时,需要指定分区键、分区类型以及具体的分区边界或列表值。 接着,"2.分区索引示例.sql"探讨了与分区相关的索引策略。在分区表上创建索引可以进一步提升查询效率,因为索引也可以被分区。全局索引覆盖...
### Oracle表分区、建表空间与用户管理 #### 一、表空间的创建与管理 在Oracle数据库中,**表空间**(Tablespace)是物理存储的逻辑容器,它由一个或多个数据文件组成。创建一个新的表空间对于数据库的管理非常重要...
通过创建一个简单的演示环境,我们演示了如何创建分区表、生成数据以及如何使用这些工具来完成数据的导入导出。这种能力对于DBA来说是非常重要的,尤其是在处理大型数据集时。希望本文能够帮助读者更好地理解和掌握...
- 分区表的管理可能比非分区表复杂,尤其是当涉及到大量分区时。 - 对于频繁更改分区键的场景,分区表的维护成本较高。 #### 四、分区类型及示例 ##### 1. 范围分区 范围分区是根据一个列的值的范围来决定数据存储...
本文详细介绍了将 Oracle 普通表转换为分区表的方法,包括备份创建表脚本、查看数据类型、创建分区表、迁移数据和更新索引和约束等步骤。通过将普通表转换为分区表,可以提高查询效率、减少存储空间和提高数据管理...
7. **脚本使用说明**:通常,该脚本会包含SQL语句,用于创建分区表和定义分区策略。DBA需要根据实际业务需求,调整脚本中的参数,如分区字段、分区数量、分区边界等。 8. **注意事项**:在使用自动分区脚本时,需...